我讲到的打包方法就是基于友盟统计实施的。
一、需要在AndroidManifest.xml中配置如下值:
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
二、在app的build.gradle的android{}中添加如下内容:
flavorDimensions "default"
//渠道包第2种方式
productFlavors {
wandoujia {}
huawei{}
xiaomi{}
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
}
也可以单独设置:
flavorDimensions "default"
productFlavors {
huawei {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "huawei "]
}
xiaomi {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi "]
}
wandoujia {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
}
}
三、自定义APK名称,多渠道打包
//自定义APK名称,多渠道打包
android.applicationVariants.all { variant ->
variant.outputs.all { output ->
variant.productFlavors.each { flavor ->
def project = "mydemo"
def separator = "_"
def buildType = variant.variantData.variantConfiguration.buildType.name
def versionName = variant.versionName
def versionCode = variant.versionCode
def date = new Date()
def formattedDate = date.format('yyyyMMdd')
def apkName = project + separator + "v" + versionName + separator + versionCode + separator + buildType + separator + flavor.name + ".apk"
if (buildType == "release") {
apkName = project + separator + "v" + versionName + separator + versionCode + separator + buildType + separator + flavor.name + separator + formattedDate + ".apk"
}
output.outputFileName = apkName
}
}
}
四、配置签名信息,代码如下:
signingConfigs {
release {
v1SigningEnabled true
v2SigningEnabled false
keyAlias 'keyalias'
keyPassword 'libin666'
storeFile file('./src/main/keystore/mydemo.jks')
storePassword 'libin666'
}
debug {
v1SigningEnabled true
v2SigningEnabled false
keyAlias 'keyalias'
keyPassword 'libin666'
storeFile file('./src/main/keystore/mydemo.jks')
storePassword 'libin666'
}
}
五、执行打包命令
到这一步,所有配置已经完成,从此以后我们就可以用一行命令打出N个包啦!
我们只需在Android Studio的命令行Terminal下输入以下命令即可:
linux下打包全部的Release版渠道包:
./gradlew assembleRelease
windows下打包全部的Release版渠道包
gradlew.bat assembleRelease
如果想要Debug的包:
gradlew.bat assembleDebug
如果只要豌豆荚的包:
gradlew.bat assemblewandoujia
如果只要豌豆荚的Release版:
gradlew.bat assemblewandoujiaRelease
六.命令行打包时打包居然失败,报错如下:
* What went wrong:
A problem occurred configuring project ':app'.
> Could not generate a proxy class for class com.android.build.gradle.tasks.BuildArtifactReportTask.
经查是因为本地jdk环境变量配置问题,因为本地安装jdk的时候顺手配置了jre,android studio是内置jre的,所以用ide编译的时候,没有任何问题,但是使用gradlew命令,往壳工程打包的时候就出错了,原因就是俩个jre环境冲突了,这个锅暂时让as3.4.2来背吧,知道了根源,解决简单了
修改了java_home,虽然有点暴力,但重启了下as后居然打包成功了。