一.打包输出路径及名称
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.jks
storePassword=123
keyAlias=keyalias
keyPassword=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