環(huán)境
1.JDK
2.SDK
3.Gradle
本文主要是不需要通過 AndroidStudio 完整編譯打包簽名生成apk的過程,可以通過sdk中的apksigner工具完成镣煮,也在和使用Gradle來完成。
首先使用 keytool 生成一個私鑰持搜,keytool 位于 JDK 中的 bin/ 目錄中,打開命令行輸入:
keytool -genkey -v -keystore ruomiz-release-key.jks
-keyalg RSA -keysize 2048 -validity 10000 -alias ruomiz
會在當前目錄生成一個ruomiz-release-key.jks的文件 采用的RSA非對稱加密,標志名為ruomiz,有效期為10000天拍冠。
構(gòu)建并簽署APK
命令行形式
1.構(gòu)建apk
打開命令行,切換到項目根目錄簇抵,或者在項目根目錄下打開命令行
gradlew assembleRelease
//gradlew assembleDebug 構(gòu)建調(diào)試的APK
執(zhí)行完成后會在 module 的 build/outputs/apk 中創(chuàng)建一個未簽名的 apk庆杜。這個 apk 暫未簽名,需要用私鑰簽名正压。
2.對齊未簽署的APK
使用 zipalign 對齊 APK欣福,在 sdk 的 build-tools 下面,需要把上面生成的 APK 拷貝進去:
zipalign -v -p 4 app-release-unsigned.apk app-release-unsigned-aligned.apk
為了方便查看我將 APK 改了名字
運行成功以后會生成一個對齊的 APK
3.使用私鑰簽署 APK
apksigner 和 zipalign 都在 sdk 的 build-tools 目錄下焦履,將 keytools 生成的簽名文件( jks 文件)拷貝進來:
apksigner sign --ks ruomiz-release-key.jks --out ruomiz-app-release.apk ziptest-release-unsigned-aligned.apk
最后會生成一個 ruomiz-app-release.apk 文件
可以驗證apk是否簽署成功:
apksigner verify ruomiz-app-release.apk
按照上述步驟已經(jīng)生成簽名的APK拓劝。
Gradle簽署 APK
首先需要配置jks的簽名文件,然后將生成的簽名文件(jks)拷貝到項目 module下
在項目模塊 build.gradle 下添加
android {
...
defaultConfig { ... }
signingConfigs {
release {
storeFile file("生成的簽名文件.jks")
storePassword "密鑰庫密碼"
keyAlias "密鑰標志名"
keyPassword "密鑰密碼"
}
}
buildTypes {
release {
signingConfig signingConfigs.release
...
}
}
}
簽名文件需要和build.gradle文件在同一目錄嘉裤。
編譯
進入項目所在根目錄shift+鼠標右鍵 郑临,以命令行形式打開,執(zhí)行:
gradlew assembleRelease
將會在項目 module 的 build/outputs/apk/ 中生成一個 app-release.apk (module_name-release.apk)的 APK屑宠。這個 APK 文件已經(jīng)使用 build.gradle 文件中指定的私鑰簽署和對齊厢洞。
驗證:
可以將生成的 APK 解壓 然后 META-INF 中 有 CERT.RSA 文件,命令行切換目錄到解壓目錄,執(zhí)行:
keytool -printcert -file META-INF/CERT.RSA
會出現(xiàn)jks的簽名信息