友盟多渠道打包
添加依赖:
compile 'com.umeng.analytics:analytics:latest.integration'
添加权限和友盟appkey:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<meta-data
android:name="UMENG_APPKEY"
android:value="57f894e6e0f55acf8d00002c" />//填写你的appkey
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />//使用占位符,方便多渠道打包
//生成签名文件
signingConfigs {
release {
keyAlias 'leon'
keyPassword '123456'
storeFile file('../storekeys/common.jks')
storePassword '123456'
}
debug {
}
}
defaultConfig {
applicationId "com.example.leon.autocompletetext"
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0"
//突破应用方法数65535的一个限制
multiDexEnabled true
//占位符
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "umeng"]
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//添加这一行代码
signingConfig signingConfigs.release
}
}
三种打包方式:
第一种:比较麻烦
productFlavors {
xiaomi {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
}
wandoujia {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
}
}
第二种:最常用
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
//指定我们release包的输出文件名就是我们的渠道名称
applicationVariants.all{
variant -> variant.outputs.each{
output -> def outFile = output.outputFile
if(outFile != null && outFile.name.endsWith(".apk")){
def fileName = "${variant.productFlavors[0].name}"+".apk"
output.outputFile = new File(outFile.parent, fileName);
}
}
}
}
}
productFlavors {
xiaomi {//里面什么都不用写
}
wandoujia {}
baidu {}
c360 {}
uc {}
yingyongbao {}
huawei {}
sangxing {}
oppo {}
vivo {}
anzhi {}
meizu {}
ppzhushou {}
}
productFlavors.all{
flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
第三种:可同时安装多个测试包
与第二种代码区别,主要是在productFlavors{}里面,
注意:使用时,必须将strings.xml的app_name注释掉,否则会报错
productFlavors {
okhttp {
//在applicationID后面添加后缀,即打包后的名称
applicationIdSuffix "okhttp"
resValue "string", "app_name", "okhttp"
}
jpush {
applicationIdSuffix "jpush"
resValue "string", "app_name", "jpush"
}
}
windows下打包命令:
gradlew assembleRelease