主线包
主线包需要签名和对齐
# 清空原有构建
./gradlew clean
# 构建,此时生成的apk为app-release-unsigned.apk
./gradlew assembleRelease --stacktrace
# 签名
jarsigner -verbose -keystore my_application_release.jks -signedjar my_apk_signed.apk -keypass root123 -storepass root123 my_apk_release_signed.apk alias_name
# 对齐
zipalign -f -v 4 my_apk_release_signed.apk my_apk_release_signed_aligned.apk
清空原有构建 -> 构建 -> 签名 -> 对齐
debug包
Debug包不需要签名和对齐
# 清空原有构建
./gradlew clean
# 构建,此时生成的apk为app-debug.apk
./gradlew assembleDebug --stacktrace
清空原有构建 -> 构建
多渠道打包
多渠道打包需要签名和对齐。
由于渠道参数是通过命令行传入,顾采用先解包,修改AndroidManifest.xml,再打包的方式,进行渠道打包!
此方法与第三方破解,然后用自己的签名打包的过程一样,不同的是用相同的key进行了签名!
# 清空原有构建
./gradlew clean
# 构建,此时生成的apk为app-release-unsigned.apk
./gradlew assembleRelease --stacktrace
# 解包反编译
java -jar apktool.jar d -f app-release-unsigned.apk -o ./app/build/outputs/apk/apk-release-unsigned
# 修改AndroidManifest.xml中的channel信息
<meta-data android:name="INSTALL_SOURCE" android:value="xiaomi"/>
# 重新打包
java -jar apktool.jar b ./app/build/outputs/apk/apk-release-unsigned -o apk-channel-release-unsigned.apk
# 签名
jarsigner -verbose -keystore my_application_release.jks -signedjar apk-channel-release-unsigned.apk -keypass root123 -storepass root123 apk_channel_release_signed.apk alias_name
# 对齐
zipalign -f -v 4 apk_channel_release_signed.apk apk_channel_release_signed_aligned.apk
清空原有构建 -> 构建 -> 解包反编译 -> 修改AndroidManifest.xml中的channel信息 -> 重新打包 -> 签名 -> 对齐