flutter 在开发过程中,难免会碰到自己签名打包的情况,即使自己不是干 android 的情况,但是由于流程较为简单,我们也要学会,应对特殊情况,当然只有一个开发者的更得会了
查看包名
进入到 android/app/src/main/ 中即可看到 AndroidManifest.xml 文件,这里就可以看到包名,app名字等信息,当然权限也在这里面,和ios的差不多
生成签名文件
//执行下面命令生成 其中 ~/key.jks 就是生成秘钥的路径和文件
keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
//有些人习惯改成 apk.keystore、debug.keystore也不影响,只是一个名字而已
keytool -genkey -v -keystore ~/debug.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias key
执行后如下所示:
就这样就生成到我们的个人文件夹中了
查看SH1发布信息
有些地方会用到我们发布的SH1 信息,例如:百度地图api,我们就可以通过上面获取的 keystore(jks) 文件获取:
keytool -list -v -keystore debug.keystore
如下所示, md5、sha等都有
打包 android apk
在我们的 android 文件夹中有一个 local.properties(替换了以前的key.properties),我们可以通过,给该文件增加我们的 签名文件信息,以便于打包
需要添加下面几行信息,这里面的信息就是我们前面设置的
storePassword = 123456
keyPassword = 123456
keyAlias = key
storeFile = /Users/shuaishuai/key.jks //这里改为自己生成的 key.jks 或 debug.keystore目录
设置之后如下所示
然后进入到下面目录/android/app/build.gradle进一步设置,可以看到里面默认使用的是 local.properties,我们继续使用即可
然后,把 buildTypes 代码块替换为下面代码即可:
//多个签名文件可以新增debug,和release配置一样
signingConfigs {
release {
keyAlias localProperties['keyAlias']
keyPassword localProperties['keyPassword']
storeFile localProperties['storeFile'] ? file(localProperties['storeFile']) : null
storePassword localProperties['storePassword']
}
}
buildTypes {
//多打一个debug包,可以用debug的签名文件,也可以不用
debug {
signingConfig signingConfigs.debug
}
release {
signingConfig signingConfigs.release
}
}
然后执行下面命令打包即可,在 flutter 目录执行
flutter build apk
打包成功后的 apk 就在下面文件夹中 /build/app/outputs/flutter-apk/app-release.apk
前面的那个签名等文件,没有也可以打包哈(至少我这边打包成功了),测试随便用,另外签名文件能作为我们应用的凭证,一旦确认最好就不换了