Android 自动化流程开发之 apk签名 插件

1,370 阅读2分钟

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

源码:github.com/903600017/A…