ApkSign
ApkSign 为apk提供快速签名,解放双手,实现自动化流程。解决 “腾讯乐固”加固后没签名等各种需要快速签名的应用场景
Gradle插件使用方式
配置build.gradle
在位于项目的根目录 build.gradle
文件中添加 ApkSign插件的依赖, 如下:
buildscript {
dependencies {
classpath 'com.zf.plugins:ApkSign:1.0.2'
}
}
并在当前App的 build.gradle
文件中apply这个插件
apply plugin: 'apksign'
配置插件(最简易配置)
apkSignConfig {
items {
ddebug {
//需要签名的APK 路径
inputApkFilePath file("build/outputs/apk/tap_unsign.apk").absolutePath
}
// ...... 可以添加更多选项
}
}
插件全部配置
apkSignConfig {
//统一配置 优先级低于自定义配置------------start-----------------------
//可选,默认为false。签名完成后,是否打签名后的apk所在目录,只支持windows
isOpenOutputDir true
//可选,自定义签名jar包位置
signJarFilePath new File("E:\\Android\\sdk\\build-tools\\28.0.3\\lib\\apksigner.jar").absolutePath
//可选,自定义apk包对齐命令位置
zipalignExeFilePath new File("E:\\Android\\sdk\\build-tools\\28.0.3\\zipalign.exe").absolutePath
//可选,自定签名jar包,apk对齐命令所使用的版本,
buildToolsVersion '28.0.3'
//可选,自定义签名文件
signingInfo {
storeFilePath "sign.jks"
storePassword "XXXXX"
keyAlias "XXXXXX"
keyPassword "XXXXXX"
}
//可选,使用android项目里,名称为`debug`的签名配置
signingName 'debug'
//统一配置-------------end----------------------
items {
release {
//release 自定义配置优先统一配置------------start-----------------------
//可选,默认为统一配置里的值。签名完成后,是否打签名后的apk所在目录,只支持windows
isOpenOutputDir true
//可选,自定签名jar包,apk对齐命令所使用的版本,
buildToolsVersion '28.0.3'
//可选,自定义签名jar包位置
signJarFilePath new File("E:\\Android\\sdk\\build-tools\\28.0.3\\lib\\apksigner.jar").absolutePath
//可选,自定义apk包对齐命令位置
zipalignExeFilePath new File("E:\\Android\\sdk\\build-tools\\28.0.3\\zipalign.exe").absolutePath
//可选,自定义签名文件
signingInfo {
storeFilePath "sign.jks"
storePassword "XXXXX"
keyAlias "XXXXXX"
keyPassword "XXXXXX"
}
//可选,使用android项目里,名称为`debug`的签名配置
signingName 'debug'
//release 自定义配置优先统一配置------------end-----------------------
//必选,需要签名的APK 路径
inputApkFilePath file("build/outputs/apk/tap_unsign.apk").absolutePath
//可选,指定签名apk文件的输出目录,默认为输入apk所在目录
outputApkDirPath file("build/outputs/apk").absolutePath
}
// ...... 可以添加更多选项
}
}
配置项具体解释:
-
当
signJarFilePath
,buildToolsVersion
都配置时,优化级为signJarFilePath
>buildToolsVersion
;当两个配置项都不配置时,默认使用 android项目里的buildToolsVersion
。 -
signJarFilePath
,buildToolsVersion
都配置时,优化级为signJarFilePath
>buildToolsVersion
;当两个配置项都不配置时,默认使用 android项目里的buildToolsVersion
。 -
signingInfo
,signingName
都配置时,优化级为signingInfo
>signingName
;当两个配置项都不配置时,默认使用 android项目里的默认debug签名。 -
signingName='release'
签名信息配置的名称,android { signingConfigs { release { storeFile signingInfo.storeFile storePassword signingInfo.storePassword keyAlias signingInfo.keyAlias keyPassword signingInfo.keyPassword v1SigningEnabled true v2SigningEnabled true } } }
生成apk签名包:
./gradlew apkSign${你的签名配置名称(首页字母大小)}
如上面的配置,生成签名包需要执行如下命令:
./gradlew apkSignRelease