文章目录
- 一、网络权限配置
- 1、Android 网络权限配置
- 2、iOS 网络权限配置
- 二、HTTP 明文传输配置
- 1、Android 开启 HTTP 明文传输
- 方案一 : 简洁配置 全局放行所有 http 仅开发调试 不建议生产环境使用
- 方案二 : 规范方案 精准配置域名 生产环境推荐
- 2、iOS 开启 HTTP 明文传输
- 方案一 : 简洁配置 全局放开所有 HTTP 调试使用 上架会被拒
- 方案二 : 指定域名放行 HTTP 生产环境使用 上架会通过
- 三、应用名称配置
- 1、Android 配置应用名称
- 2、iOS 配置应用名称
参考文档 :
- Flutter 官方文档 : https://docs.flutter.dev/install/quick
- 使用出现网络问题 , 参考 在中国网络环境下使用 Flutter 文档 ;
一、网络权限配置
Android 必须加 INTERNET 权限,建议开启 HTTP 明文 ;
iOS 必须加 NSAppTransportSecurity 允许联网 ;
配置完必执行 flutter clean 再运行 ;
1、Android 网络权限配置
在 Flutter 根目录 的android/app/src/main/AndroidManifest.xml文件中 , 在<manifest>标签内 添加 网络权限 配置 :
<!-- 联网必备权限 --><uses-permissionandroid:name="android.permission.INTERNET"/><!-- 网络状态检测(可选,判断有无网) --><uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>配置位置示例 :
<manifestxmlns:android="http://schemas.android.com/apk/res/android"><!-- 网络必备权限 --><uses-permissionandroid:name="android.permission.INTERNET"/><!-- 可选:获取网络状态 --><uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/><applicationandroid:networkSecurityConfig="@xml/network_security_config"android:name="${applicationName}"android:icon="@mipmap/ic_launcher"></application></manifest>配置位置 参考下图 :
2、iOS 网络权限配置
在 Flutter 根目录 的ios/Runner/Info.plist文件中 , 在<dict>标签下 , 添加网络权限配置 :
改配置 允许 HTTP 明文传输 , 如下配置 上架 AppStore 会被拒 ;
<key>NSAppTransportSecurity</key><dict><!-- 允许 HTTP 请求 --><key>NSAllowsArbitraryLoads</key><true/></dict>配置位置示例 :
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPEplistPUBLIC"-//Apple//DTD PLIST 1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plistversion="1.0"><dict><!-- 网络权限配置 --><key>NSAppTransportSecurity</key><dict><!-- 允许 HTTP 请求 --><key>NSAllowsArbitraryLoads</key><true/></dict></dict></plist>配置位置参考下图 :
二、HTTP 明文传输配置
1、Android 开启 HTTP 明文传输
方案一 : 简洁配置 全局放行所有 http 仅开发调试 不建议生产环境使用
在 Flutter 根目录 的android/app/src/main/AndroidManifest.xml文件中 , 为<application>标签 添加属性 配置 :
<applicationandroid:usesCleartextTraffic="true"...>配置位置示例 :
<manifestxmlns:android="http://schemas.android.com/apk/res/android"><applicationandroid:usesCleartextTraffic="true"></application></manifest>配置位置 参考下图 :
方案二 : 规范方案 精准配置域名 生产环境推荐
创建android/app/src/main/res/xml/network_security_config.xml配置文件, 进行如下配置 :
<?xml version="1.0" encoding="utf-8"?><network-security-config><!-- 只放行指定域名http(生产推荐,替换为自己域名) --><domain-configcleartextTrafficPermitted="true"><domainincludeSubdomains="true">192.168.1.100</domain><domainincludeSubdomains="true">xxx.test.com</domain></domain-config></network-security-config>下面的 XML 配置文件中 , 只需要配置下面这一个即可 , 仅做参考 :
<base-config cleartextTrafficPermitted="true">是 全局允许所有 HTTP 请求 ;<domain-config cleartextTrafficPermitted="true">是 放行指定的 HTTP 请求 ;
<?xml version="1.0" encoding="utf-8"?><network-security-config><!-- 全局允许所有明文HTTP(调试) 仅做参考 --><base-configcleartextTrafficPermitted="false"><trust-anchors><certificatessrc="system"/><certificatessrc="user"/></trust-anchors></base-config><!-- 只放行指定域名http(生产推荐,替换为自己域名) --><domain-configcleartextTrafficPermitted="true"><domainincludeSubdomains="true">192.168.1.100</domain><domainincludeSubdomains="true">xxx.test.com</domain></domain-config></network-security-config>创建配置文件 :
在android/app/src/main/AndroidManifest.xml文件中 配置 :
<manifestxmlns:android="http://schemas.android.com/apk/res/android"><applicationandroid:networkSecurityConfig="@xml/network_security_config"></application></manifest>2、iOS 开启 HTTP 明文传输
方案一 : 简洁配置 全局放开所有 HTTP 调试使用 上架会被拒
在 Flutter 根目录 的ios/Runner/Info.plist文件中 , 在<dict>标签下 , 添加如下配置 :
<key>NSAppTransportSecurity</key><dict><key>NSAllowsArbitraryLoads</key><true/><!-- WebView单独放行http图片/资源 --><key>NSAllowsArbitraryLoadsInWebContent</key><true/></dict>方案二 : 指定域名放行 HTTP 生产环境使用 上架会通过
在 Flutter 根目录 的ios/Runner/Info.plist文件中 , 在<dict>标签下 , 添加如下配置 :
<key>NSAppTransportSecurity</key><dict><key>NSExceptionDomains</key><dict><!-- 放行单个域名http,子域名一并生效 --><key>192.168.1.100</key><dict><key>NSExceptionAllowsInsecureHTTPLoads</key><true/><key>NSIncludesSubdomains</key><true/></dict><key>xxx.test.com</key><dict><key>NSExceptionAllowsInsecureHTTPLoads</key><true/><key>NSIncludesSubdomains</key><true/></dict></dict></dict>可以在 Xcode 可视化配置 , 打开ios/Runner.xcworkspace→Runner→Info→Add Row→App Transport Security Settings , 按需添加子项 ;
三、应用名称配置
1、Android 配置应用名称
在 Flutter 根目录 的android/app/src/main/AndroidManifest.xml文件中 , 在<application>标签内 修改android:label属性配置 :
<manifestxmlns:android="http://schemas.android.com/apk/res/android"><applicationandroid:label="应用名称"></application></manifest>2、iOS 配置应用名称
在 Flutter 根目录 的ios/Runner/Info.plist文件中 , 在<dict>标签下 , 修改CFBundleDisplayName配置 :
<?xml version="1.0"encoding="UTF-8"?><!DOCTYPE plist PUBLIC"-//Apple//DTD PLIST 1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict><key>CFBundleDisplayName</key><string>应用名称</string></dict></plist>