Android——APP多渠道打包
1.添加友盟统计依赖库
compile ‘com.umeng.analyticslatest.integration’
allprojects {
repositories {
mavenCentral()
}
}
2.Manifest中配置权限和Key
< uses-permission android :name= “android.permission.INTERNET” />
< uses-sdk android :minSdkVersion= “8” ></ uses-sdk >
< uses-permission android :name= “android.permission.ACCESS_NETWORK_STATE” />
< uses-permission android :name= “android.permission.ACCESS_WIFI_STATE” />
< uses-permission android :name= “android.permission.READ_PHONE_STATE” />
< meta-data android :value= “5a446bf3f29d987e88000061” android :name= “UMENG_APPKEY” />
< meta-data android :value= “${UMENG_CHANNEL_VALUE}“ android :name= “UMENG_CHANNEL” />
3.app build.gradle动态配置Manifest的占位符和默认值
defaultConfig {
flavorDimensions “versionCode”
… multiDexEnabled true // 突破方法数65535限制
manifestPlaceholders = [UMENG_CHANNEL_VALUE:”umeng”]
}
4.配置签名文件信息,注意:signingConfigs要在buildTypes之前
signingConfigs {
debug {}
release {
keyAlias ‘key0’
keyPassword ‘123456’
storeFile file ( ‘release.jks’ )
storePassword ‘123456’
}
buildTypes {
release {
minifyEnabled false proguardFiles getDefaultProguardFile(‘proguard‑android.txt’), ‘proguard‑rules.pro’
signingConfig signingConfigs.release
}
}
5.添加渠道信息
productFlavors {
xiaomi{ manifestPlaceholders = [UMENG_CHANNEL_VAULE: “xiaomi”]
}
wandoujia\{ manifestPlaceholders = \[UMENG\_CHANNEL\_VAULE: "wandoujia"\] \}
}
为了简单可以用脚本去替换重复代码
productFlavors.all { flavor ‑> flavor.manifestPlaceholders = [UMENG_CHANNEL_VAULE: name]
}
7.在Android studio的Terminal中使用命令gradlew assembleRelease进行打包(mac或Linux下使用./gradlew assembleRelease),会在app的build下生成对应渠道的apk包
8.可以配置多渠道打包输出的名字,比如打包的名字就是渠道名字
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile ( ‘proguard-android.txt’ ), ‘proguard-rules.pro’
signingConfig signingConfigs. release
// 指定我们 release 包输出文件名就是我们渠道的名字
applicationVariants. all { variant ->
variant .outputs. each { output ->
def outputFile = outputFileName
if (outputFile != null && outputFile.name.endsWith( “.apk” )) {
def fileName = “ ${ variant .productFlavors[ 0 ].name} “ + “.apk”
outputFileName = new File (outputFile.parent, fileName);
}
}
}
}
}
Android3.0
- 使用 all() 替换 each()
- 使用 outputFileName 替换 output.outputFile
9.其他技巧:
①可以给不同渠道的apk赋不同的应用名
productFlavors {
xiaomi{
// manifestPlaceholders = [UMENG_CHANNEL_VALUE: “xiaomi”] resValue “string”, “app_name”, “xiaomi”
}
wandoujia\{ // manifestPlaceholders = \[UMENG\_CHANNEL\_VALUE: "wandoujia"\] resValue "string", "app\_name", "wandoujia"
}
}
②给测试打不同功能点可以安装在同一个手机上的测试包
productFlavors {
// xiaomi{ manifestPlaceholders = [UMENG_CHANNEL_VALUE: “xiaomi”] // resValue “string”, “app_name”, “xiaomi”
// }
// // wandoujia{ manifestPlaceholders = [UMENG_CHANNEL_VALUE: “wandoujia”] // resValue “string”, “app_name”, “wandoujia”
// }
okhttp {
applicationIdSuffix “okhttp” resValue “string”, “app_name”, “okhttp”
}
jpush \{
applicationIdSuffix “jpush” resValue “string”, “app_name”, “jpush”
}
}
还没有评论,来说两句吧...