Android 使用 Gradle 打包--签名配置
16lz
2021-01-23
一.打包输出路径及名称
gradle3.0.0之前:
//修改生成的apk名字android{ applicationVariants.all { variant -> if (variant.buildType.name.equals('release')) { variant.outputs.each { output -> def parent = './apk/' def buildName def releaseApkName def type = variant.buildType.name; releaseApkName = buildName + '_' + type + "_" + versionName + '_' + getDate() + '.apk' output.outputFile = new File(parent, releaseApkName) } } }}
3.0+之后
android{ applicationVariants.all { variant -> if (variant.buildType.name.equals('release')) {//防止AS无法安装debug包(apk) variant.outputs.all { output -> //打包名字 outputFileName = 'unite_v' + variant.versionName + '_' + variant.productFlavors[0].name + '_' + buildType.name + '.apk' //outputFileName = "${cfg.applicationId}_${variant.mergedFlavor.versionName}_debug_${getTime()}.apk" //打包路径 variant.packageApplication.outputDirectory=new File("./apk" + defaultConfig.versionName) //variant.packageApplication.outputDirectory = new File(project.rootDir.absolutePath + "/apk" + defaultConfig.versionName) } } }}
设置打包时间:
def getTime() { return new Date().format("yyyyMMddHHmm");}
def appName() { return "App名称"}
APP名称:????
project.archivesBaseName
二.自动化签名配置
Android studio会生成的dubug包使用默认的签名,release包需要我们自行配置。我们可以进行配置,实现自动签名。
1.在项目的App目录下的build.gradle中,配置如下:
android { signingConfigs { release { keyAlias 'myalias' keyPassword 'password' storeFile file('D:/mykeystore_release.jks') storePassword 'password' } debug { keyAlias 'myalias' keyPassword 'password' storeFile file('D:/mykeystore_debug.jks') storePassword 'password' } } buildTypes { release { signingConfig signingConfigs.release } debug { signingConfig signingConfigs.debug } }}
2.编译方式:
1.双击Gradle中的assembleDebug或者assembleRelease就可以开始编译
2.或者在Terminal命令行中输入gradlew assembleRelease或者gradlew assembleDebug,然后回车开始编译。
3.配置v1,v2
查看Android的DefaultSigningConfig会发现,默认的mV1SigningEnabled和mV2SigningEnabled为true,对应打包时选择V1和V2,我们也可以通过signingConfigs在自动化编译阶段实现V1和V2签名
android { signingConfigs { release { keyAlias '******' keyPassword '******' storeFile file('../release.keystore') storePassword '******' v1SigningEnabled true v2SigningEnabled true } } }
../表示当前文件目录再往上一层级,release.keystore文件需要放在项目的根目录下,而不是App这个module根目录
4.隐藏签名信息
1.创建属性文件(如“keystore.properties”),可以在项目目录下创建一个属性文件用来存放钥匙的信息:
keystore.properties:
storeFile=../key.jksstorePassword=123keyAlias=keyaliaskeyPassword=123
2.build.gradle配置如下
def keystorePropertiesFile = file("keystore.properties")def keystoreProperties = new Properties()keystoreProperties.load(new FileInputStream(keystorePropertiesFile))android { signingConfigs { release { keyAlias keystoreProperties['keyAlias'] keyPassword keystoreProperties['keyPassword'] storeFile file(keystoreProperties['storeFile']) storePassword keystoreProperties['storePassword'] } }}
5.查看结果
编译成功后可以在如下路径找到编译后的apk安装包
如果自定义了输出路径到对应的文件夹下寻找。
https://blog.csdn.net/u012958716/article/details/54138601
https://www.jianshu.com/p/8dc154f0f89f
更多相关文章
- Android中打开文件选择软件打开(ACTION_VIEW)
- Android 建立文件夹、生成文件并写入文本文件内容
- 文件系统中的保留空间
- Android最全的资源文件(官方翻译)
- Android: 显示SD卡文件列表
- Android通过HTTP协议实现上传文件数据
- Android 将数据库文件保存至sdcard中