在/android/app/src/main/res 目录下,替换ic_launcher.png为正式的项目图标。
在/android/app/src/main/AndroidManifest.xml文件中,修改Application标签下android:label的值的应用名称
keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
在命令行输入以上命令后,按照提示输出对应信息。然后会在当前目录生成key.jks签名文件。
注意不要把签名文件放在开源的源码管理系统中
在/android目录下创建key.properties文件,包含了keystore使用配置参数。
storePassword = <前一步的keystore密码>
keyPassword = <前一步的别名密码>
keyAlias = key //别名
storeFile =
在/android/app/build.gradle文件配置签名信息。
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
android {
...
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
buildType {
release {
signConfig signingConfigs.release
}
}
默认情况下,Flutter不会混淆和压缩Android原生代码,当项目使用的第三方依赖库需要添加混淆配置时,需要添加Flutter相关类的禁止混淆策略。
创建/android/app/proguard-rules.pro文件,并添加以下规则:
## Flutter相关类
-keep class io.flutter.app.** {*;}
-keep class io.flutter.plugin.** {*;}
-keep class io.flutter.util.** {*;}
-keep class io.flutter.view.** {*;}
-keep class io.flutter.** {*;}
-keep class io.flutter.plugins.** {*;}
上面这些配置会保护Flutter引擎类库不会混淆。
编辑/android/app/build.gradle文件,在release编译类型下添加混淆和压缩配置。
android {
...
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
useProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
检查/android/app目录下的build.gradle文件,
Google Play Store更期望使用app bundle格式。
在命令行输入以下命令:
cd
flutter build appbundle //flutter build默认是release构建
构建结果在 /build/app/outputs/bundle/release/app.aab
默认情况下,app bundle包含了针对 armeabi-v7a 和 arm64-v8a 平台构建的Dart代码和Flutter引擎。
1.1 在GitHub仓库下载buildtool
1.2 根据app bundle文件生成一系列apk
1.3 在真机上安装apk文件
考虑到某些应用市场不支持App bundle格式,所以需要构建成apk格式。
在命令行输入以下命令:
cd
flutter build apk --split-per-abi
上述打包命令会在/build/app/outputs/apk/release目录下生成两个apk文件:
移除 --split-per-abi参数后,会生成支持所有ABI平台的Apk文件,这样会导致文件体积变大。
Flutter暂不支持x86平台 说明
cd
flutter install
下面流程讲述了如何打包iOS应用,发布到App Store和TestFlight上。
App Store Connect 用来管理应用的声明周期,包括定义应用名称、描述、截图、价格,并管理释放到App Store和TestFlight
Bundle ID是每一个应用的唯一标识,也是在Apple注册的唯一标识。
更详细的说明见https://help.apple.com/app-store-connect/#/dev2cd126805
在这一步,将需要在Xcode工作空间检查一些重要的配置。更详细的步骤和说明见https://help.apple.com/xcode/mac/current/#/dev91fe7130a
检查下面的设置:
标识部分:
签名部分:
分发信息部分:
配置完成后的样子大概如下所示:
[外链图片转存失败(img-Yotek9U2-1562153812236)(https://flutter.dev/images/releaseguide/xcode_settings.png)]
替换默认占位icon
输入命令:
在Xcode配置应用版本并执行构建
最后,创建构建存档,上传到App Store Connect
大概30分钟后,你会收到一份邮件,通知你的构建已经验证成功并可以在TestFlight上释放给测试人员,或者直接释放你的应用到App Store。
TestFlight允许开发者发布他们的应用给内部或外部的测试人员。
有关更多详细信息,请参阅使用TestFlight分发应用程序。
Apple将在应用审核流程完成后通知您。您的应用程序将根据您在“ 版本发布”部分中指定的说明进行发布。
有关更多详细信息,请参阅通过App Store分发应用程序。