一直以来,对于某些频繁进行
打包
工作的业务部开发人员来说,打包工作不仅繁琐冗余而且费时费力。如何快速、高效的解决频繁出包以及提高生产效率解放生产力是我们一直在思考的问题。有没有一种办法比如我只想要双击桌面快捷方式然后就打包成APK 接着在保存到自定义盘符路径? 答案是有的。我们知道Android Studio
是基于Gradle来进行快速构建项目,Gradle
本质是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具。 由于一些论坛上的文章是基于Android2.X版本来进行解释说明但是笔者通过这几天的实战(Android Studio版本是3.0以上)发现网上的一些办法已经用不了且新版本自然而然增加了一些之前未提及的新特性,所以本文主要是针对Android Studio3.0版本以上以及Gradle进行一些基本的内容介绍以及如何通过组合技巧实现快速打包;以及针对某一些特定的开发场景如何通过 Java + Gradle去思考并解决问题)。- 引自其他技术人员文章
来自灵魂画手的灵魂描述:

场景
当前测试环境
IDE:Androidstudio 3.2.0
Gradle:gradle4.6 (https\://services.gradle.org/distributions/gradle-4.6-all.zip)

配置
1.项目的app
下的build.gradle
文件下配置
gradle下android{}的配置 如上配置 签名文件放到app根目录下即可
由于Android 7.0加入了新的签名机制(也就是V2签名) 因此我们可以直接在debug和release标签中加入
v1SigningEnabled true 、v2SigningEnabled true 规避使用风险
android {
//自动化打包签名文件配置
signingConfigs {
release {
storeFile file('/xxxx.jks') //签名文件app根目录下,app.keystore为你签名文件的全称,例如:xxxx.jks
storePassword "xxxx" //签名文件密码
keyAlias "xxxx" //签名文件别名
keyPassword "xxxx" //签名文件别名密码
v1SigningEnabled true
v2SigningEnabled true
}
debug {
storeFile file('/xxxx.jks')
storePassword "xxxx"
keyAlias "xxxx"
keyPassword "xxxx"
v1SigningEnabled true
v2SigningEnabled true
}
}
buildTypes {
release {
minifyEnabled false
signingConfig signingConfigs.release
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
signingConfig signingConfigs.debug
}
}
}
Gradle本地环境变量配置
gradle自动化打包依赖于AndroidStudio中Terminal命令进行打包,其中gradle是最重要的指令者
所以要先在环境变量中加入Gradle声明才可以操作gradle命令。
1.环境变量配置

在系统变量中新增变量:GRADLE_HOME
1.gradle路径必须到bin的根目录
2.添加gradle版本根据自己项目当前使用的版本决定配置的gradle的路径
本文中使用的是Gradle4.6版本,文件夹路径则为gradle-4.6/bin
sp20200304_162238.png
sp20200304_162311.png
//gradle路径
C:\Users\Dell\.gradle\wrapper\dists\gradle-4.6-all\bcst21l2brirad8k2ben1letg\gradle-4.6\bin
- 系统环境变量
path
加入GRADLE_HOME
。这里加在了最前面,以‘;’
分隔

2.环境变量配置结果测试
cmd/Terminal命令测试:
gradle -v
注意:如果依然显示无法找到,请关闭Androidstudio,并且重启电脑后生效。

Android studio 自带的命令窗口进行打包操作
//Release 版本
gradle assembleRelease
//Debug版本
gradle assembleDebug


拓展
1.对输出的apk文件定义输出的位置和名字
android {
buildTypes {
release {
minifyEnabled false
signingConfig signingConfigs.release
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//....
//....
//....
//自定义打包时apk名字和输出位置
android.applicationVariants.all { variant ->
variant.outputs.all { output ->
def fileName
if (outputFileName != null && outputFileName.contains('.apk')) {
if (variant.buildType.name.equals('release')) {
//输出示例:apk名字-版本号-版本名-输出时间-运行环境(debug/release/...).apk
fileName= "apk名字-${defaultConfig.versionCode}-${defaultConfig.versionName}-${releaseTime()}-release.apk"
// 自定义输出路径
variant.getPackageApplication().outputDirectory = new File(project.rootDir.absolutePath + File.separator + "release")
println "-----输出apk地址------:" + outputFile.parentFile.absolutePath + java.io.File.separator + fileName
} else if (variant.buildType.name.equals('debug')) {
fileName= "apk名字-${defaultConfig.versionCode}-${defaultConfig.versionName}-${releaseTime()}-debug.apk"
//也可以在此添加debug版本的输出位置和输出名字
//...
//...
}
outputFileName = fileName
}
}
}
}
debug {
signingConfig signingConfigs.debug
}
}
}
2.重新编译项目后,在Terminal中进行命令打包即可,可以查看新输出位置。

注意
- 尽量使用AndroidStudio3.0+版本
- 尽量适配6.0+版本以上手机
毕竟现在Android发布版本较多,对于6.0以下也已不再普遍常用,请尽快使用AndroidStudio3.0+/4.0+,磨刀不误砍柴工。
网友评论