APP簽名的目的的確保APP的安裝包來(lái)自于原創(chuàng)作者闷畸,且APP沒(méi)有被篡改止毕。
具體步驟如下:
1模蜡、生成簽名文件(*.jks,如有現(xiàn)成的文件請(qǐng)忽略)扁凛,打開(kāi)“終端”忍疾,直接輸入如下命令:
keytool -genkey -v -keystore ~/asign.jks -keyalg RSA -keysize 2048 -validity 10000 -alias asign
其中,asign.jks為文件名谨朝。這里最好修改下文件名卤妒,因?yàn)槭褂昧酥貜?fù)的.jks在生成apk時(shí)會(huì)報(bào)錯(cuò);
validity 10000中的10000是有效天數(shù)字币,可修改则披;
alias asign中的asign為別名,可修改洗出;
然后輸入口令等幾項(xiàng)內(nèi)容士复,最后確認(rèn)無(wú)誤后在[否]: 后面輸入“Y”回車即可。
生成后會(huì)提示:
JKS 密鑰庫(kù)使用專用格式翩活。建議使用 "keytool -importkeystore -srckeystore asign.jks -destkeystore asign.jks -deststoretype pkcs12" 遷移到行業(yè)標(biāo)準(zhǔn)格式 PKCS12阱洪。
請(qǐng)繼續(xù)復(fù)制其內(nèi)容在終端中執(zhí)行:
keytool -importkeystore -srckeystore asign.jks -destkeystore asign.jks -deststoretype pkcs12
執(zhí)行后會(huì)提示:
已將 "asign.jks" 遷移到 Non JKS/JCEKS。將 JKS 密鑰庫(kù)作為 "asign.jks.old" 進(jìn)行了備份菠镇。
查看生成的jks文件:
keytool -list -v -keystore asign.jks
2澄峰、引入簽名文件
在項(xiàng)目目錄/android/app下創(chuàng)建key文件夾,將生成的asign.jks文件Copy/Drag到該目錄下辟犀。
3、在flutter項(xiàng)目目錄android下創(chuàng)建文件key.properties,并添加以下內(nèi)容:
storePassword=**
keyPassword=**
keyAlias=asign
storeFile=key/asign.jks
注:如果密碼及keyAlias和簽名文件中的一致時(shí)堂竟,可能會(huì)報(bào)如下錯(cuò):
* What went wrong:
Execution failed for task ':app:lintVitalRelease'.
> Could not resolve all files for configuration ':app:lintClassPath'. 后面省略
4魂毁、在Gradle中配置簽名文件
打開(kāi)/android/app/build.gradle文件,添加以下內(nèi)容:
def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
添加:
signingConfigs {
release {
keyAlias keystoreProperties["keyAlias"]
keyPassword keystoreProperties["storePassword"]
storeFile file(keystoreProperties["storeFile"])
storePassword keystoreProperties["keyPassword"]
}
}
并將buildTypes修改為:
buildTypes {
release {
// 其中release為signingConfigs中的release出嘹,可修改席楚。
signingConfig signingConfigs.release
}
}
將lintOptions修改為:
lintOptions {
disable 'InvalidPackage' //系統(tǒng)已默認(rèn)配置
checkReleaseBuilds false
abortOnError false
}
5、在Android Studio項(xiàng)目下的終端(也可以先cd到當(dāng)前目錄税稼,然后在系統(tǒng)的終端中執(zhí)行)中烦秩,執(zhí)行打包命令:
flutter build apk
打包好的apk位于/build/app/outputs目錄中。