flutter打包
ios
简单命令
flutter clean
rm -rf ios/Flutter/App.framework
先在项目目录下运行
flutter build ios --release
再到xcode下进行打包
如果不进行build命令,则在xcode下会报错:
flutter Could not find an option named "track-widget-creation".
具体打包方法:
https://github.com/bingoogolapple/bingoogolapple.github.io/issues/46
作者:Zszen
链接:https://www.jianshu.com/p/93a261ebdf67
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Flutter-Build An Android Release Apk
上一篇已经说过了,使用Android Studio
中Build>Generate Signed Apk
总是报错,无法打包release版的apk!
幸好,flutter
提供了其他方式
下面是完整的打包过程,官方参考;如果要打包iOS
参考
检查AndroidManifest.xml中的application
、uses-permission
、applicationId
、versionCode
、versionName
、minSdkVersion
、targetSdkVersion
、替换图标等等就不赘述了!开发过Android的都知道
-
准备
要打release
包,首先你得有个签名文件,没有的话cmd 执行keytool
:
keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
-genkey 在用户主目录中创建一个key.jks文件
-v 显示密钥库中的证书详细信息
-alias 产生别名
-keyalg 指定密钥的算法
-keystore 指定密钥库的名称(产生的各类信息将不在.jks文件中
-validity 指定创建的证书有效期多少天
-keysize 指定密钥长度
然后根据提示输入密钥库的口令、姓氏、省份、组织
等等信息
-
- 也可以通过
AndroidStudio
创建签名文件
1.Build>Generate Signed Apk
2.点击Create New...
3.在下面的窗口中填写信息
- 也可以通过
-
配置
key.properties
在<app dir>/android/
目录下,创建一个key.properties
文件PS:<app dir>代表工程的根目录,下同
需要填写的内容
storePassword=<password from previous step>
keyPassword=<password from previous step>
keyAlias=key
storeFile=<location of the key store file, e.g. /Users/<user name>/key.jks>
storePassword keystore 密码
keyPassword key密码
keyAlias key别名
storeFile .jks文件路径
-
配置Gradle
gradle
文件路径<app dir>/android/app/build.gradle
-
- 找到
android {
,在这一行上面配置key.properties
信息
- 找到
def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
-
- 继续向下,找到
buildTypes {
,在上面配置signingConfigs
:
- 继续向下,找到
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
buildTypes
更改为:
buildTypes {
release {
signingConfig signingConfigs.release
}
}
-
开始打包了
cd
到<app dir>
,执行flutter
指令flutter build apk //默认打包release包
或者flutter build --release
打包的过程很快就完成了,会提示release包的路径,adb
命令即可安装
当然也可以直接在<app dir>
先执行flutter install
安装到电脑连接的手机上!
总体过程并不是很难,主要就是生成key
文件,配置Gradle
;我个人还是倾向于希望Android Studio
修复Bug,可以通过点击Build>Generate Signed Apk
来生成!
Flutter Android 签名打包
查看APP包的签名
为了检查flutter打包的签名信息,
-
找到应用的apk文件,修改后缀改成zip包;
-
在压缩文件中找到META-INF目录下找到 CERT.RSA文件;
-
shift+鼠标右键打开cmd命令行;
-
输入命令:keytool -printcert -file CERT.RSA
Flutter 配置Android 签名
创建 keystore
如果您有现有keystore,请跳至下一步
Terminal运行以下命令来创建一个:
keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
-validity 10000代表有效期天数
如果上述命令报错“系统找不到指定的路径”,请指明路径
例如:
keytool -genkey -v -keystore D:/mykey.jks -keyalg RSA -keysize 2048 -validity 1
0000
D:/mykey.jks为生成的keystore路径文件
执行该命令,如图:
引用应用程序中的keystore
在Flutter中的andoid项目中,
创建一个路径为android下的key.properties的文件,其中包含对密钥库的引用:
#密钥库口令
storePassword=<password from previous step>
#密钥口令
keyPassword=<password from previous step>
#别名
keyAlias=key
#keystore的路径
storeFile=<location of the key store file, e.g. /Users/<user name>/key.jks>
note: <>符号去掉,keyAlias直接写你设置的别名,比如上面创建的keystore的alias 为key
gradle中配置签名
在/app/build.gradle中
def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
android {
....
signingConfigs{
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
// Signing with the debug keys for now, so `flutter run --release`works.
// signingConfig signingConfigs.debug
signingConfig signingConfigs.release
//混淆
minifyEnabled true
useProguard true
//Zipalign优化
zipAlignEnabled true
// 移除无用的resource文件
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
ndk {
//设置只支持armeabi-v7a 平台,与签名无关,可以自己配置
abiFilters "armeabi-v7a"
}
}
}
}
构建一个发布版apk(打包)
上述步骤完成以后
Terminal中运行:
flutter build apk
(flutter build
默认会包含 --release
选项)
打包好的发布APK位于<app dir>/build/app/outputs/apk/app-release.apk
在设备上安装发行版APK
按照以下步骤在已连接的Android设备上安装上一步中构建的APK
使用命令行:
-
用USB您的Android设备连接到您的电脑
-
cd<app dir>
. -
运行
flutter install
.详细参考:发布Android版APP
参考:
包](https://www.jianshu.com/p/888ac3b7df01)