官方文檔:https://developer.Android.com/tools/publishing/app-signing.html
1. 默認為debug mode,使用的簽名文件在: $HOME/.android/debug.keystore
2. Release Mode 簽名:
build.gradle:
1 android { 2 signingConfigs { 3 releaseConfig { 4 keyAlias 'stone' 5 keyPassword 'mypwd' 6 storeFile file('/Users/stone/Documents/project_AS/myapplication/stone.keystore') 7 storePassword 'mypwd' 8 } 9 } 10 buildTypes { 11 release { 12 ... 13 signingConfig signingConfigs.release 14 } 15 } 16 17 }
signingConfigs 即簽名配置。 配置名releaseConfig{ //配置內容 }
在buildTypes中指定release時的signingConfigs對應的配置名
執行gradle 命令, $ gradle assembleRelease
編譯並發布。 在build/outputs/apk/ 下能看到未簽名的apk 和 已經簽名的apk
如果未用簽名文件,使用debug mode的debug簽名。那就會生成一個debug簽名的apk
3. 簽名密碼寫在gradle中不安全:
signingConfigs { //gradle assembleRelease myConfig { storeFile file("stone.keystore") storePassword System.console().readLine("\nKeystore password: ") keyAlias "stone" keyPassword System.console().readLine("\nKey password: ") } }
這樣在命令 執行 命令時,就會被要求輸入密碼
4. 使用Android Studio 簽名打包
菜單 Build > Generate Signed APK
5. 使用Android Studio 自動簽名打包
a. 打開project structure (cmd+;)
b. 選中需要構建的moudle,打開Signing,添加config
執行完成后,會在build.gradle中自動加上 signingConfigs{ config {...} }的信息
c. 打開build types > release
在signing Config中選擇定義的配置
zip align enabled 默認為true, 用於啟用優化Apk的操作
d. $ gradle build
會在build/outputs/apk/ 目錄下輸出 在build types中定義的 編譯類型
如:
myapplication-debug-unaligned.apk
myapplication-debug.apk
myapplication-release-unaligned.apk
myapplication-release-unsigned.apk
myapplication-release.apk
6. 使用Android SDK 和 JDK 的命令 簽名打包APK
創建簽名
keytool -genkey -v -keystore stone.keystore -alias stone -keyalg RSA -keysize 2048-validity 10000 生成簽名文件
為apk簽名
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore stone.keystore unsigned.apk stone 不生成新文件
檢測apk是否簽名
jarsigner -verbose -certs -verify signed.apk
優化apk
zipalign -f -v 4 signed_unaligned.apk signed_aligned.apk
轉自:http://blog.csdn.net/jjwwmlp456/article/details/44942109#comments