Android 自动化打渠道包
2020-05-21 本文已影响0人
猿小蔡
本文基于Android studio3.4,JDK1.8,gradle-5.1.1-all。
前言
我们经常都会打包上线,然后大多数情况下也都是会有多渠道。按照以前的打包方式,太麻烦了,所以本文阅读了Android-解放双手之Gradle自动化打包实战(原创)一文后,设置了自己的打包方式。
设置签名的配置
首先要有签名的文件, 在这里插入图片描述在这里插入图片描述
在这里创建签名文件。怎么创建这里就不说明了。
签名配置有两种方式
第一种方式:
在app的build.gradle中,也就是这个位置, 在这里插入图片描述打开之后,在android中 android
这个位置添加以下代码
signingConfigs {
config {
keyAlias xxxxx
keyPassword xxxxx
storeFile file('D:/xxxx.jks')
storePassword xxxxx
v1SigningEnabled true
v2SigningEnabled true
}
}
其中的keyAlias ,keyPassword,storePassword 都是在设置的签名文件中设置的。
第二种方式:
在app下新建一个signing.properties文件。
在这里插入图片描述
内容截图
在这里插入图片描述
STORE_FILE = xxxx
STORE_PASSWORD = xxxx
KEY_ALIAS = xxxxx
KEY_PASSWORD = xxxxx
xxx就是第一种方式所要填的xxx。
在app的build.gradle中编写以下代码
在这里插入图片描述//读取签名配置文件
def getSigningProperties() {
def propFile = file('signing.properties')
if (propFile.canRead()) {
def Properties props = new Properties()
props.load(new FileInputStream(propFile))
if (props != null && props.containsKey('STORE_FILE') && props.containsKey('STORE_PASSWORD') &&
props.containsKey('KEY_ALIAS') && props.containsKey('KEY_PASSWORD')) {
android.signingConfigs.config.storeFile = file(props['STORE_FILE'])
android.signingConfigs.config.storePassword = props['STORE_PASSWORD']
android.signingConfigs.config.keyAlias = props['KEY_ALIAS']
android.signingConfigs.config.keyPassword = props['KEY_PASSWORD']
} else {
println 'signing.properties found but some entries are missing'
android.buildTypes.release.signingConfig = null
}
} else {
println 'signing.properties not found'
android.buildTypes.release.signingConfig = null
}
}
然后使用这个文件,在android中编写以下代码
在这里插入图片描述//签名配置
signingConfigs {
config {
storeFile
storePassword
keyAlias
keyPassword
v1SigningEnabled true
v2SigningEnabled true
}
}
getSigningProperties()
多渠道设置
在 在这里插入图片描述在这里插入图片描述
添加后就可以设置多渠道了,这里不多说明了。
制定打正式包的输出路径
在 在这里插入图片描述applicationVariants.all {
//判断是release还是debug版本
def buildType = it.buildType.name
//获取当前时间的"YYYY-MM-dd"格式。
def createTime = new Date().format("YYYY-MM-dd", TimeZone.getTimeZone("GMT+08:00"))
//如果是正式包,将其输入到指定文件夹
if (buildType == "release") {
it.getPackageApplication().outputDirectory = new File('D:\\APP'+ "/${defaultConfig.versionName}/${it.productFlavors[0].name}-${createTime}")
}
}
自动化打包
之前打包的方式,Android Studio 顶部Tab , Build —— Generate Sign Apk。其实不需要设置之前的签名配置,这样也是可以打包的。但是设置了之后,不需要这样打包了,太麻烦了。在app的build.gradle配置了签名后,可以这样打多渠道包。在Android studio 的右侧栏, 在这里插入图片描述点击这个gradle。
在这里插入图片描述选择assembleRelease即可打包全部的正式包了。需要打单独的渠道包,可以单独点击。