(安卓) 多渠道打包
阿新 • • 發佈:2019-01-26
1.新增友盟統計依賴庫
dependencies {
compile 'com.umeng.sdk:common:latest.integration'
compile 'com.umeng.sdk:analytics:latest.integration'
}
如果無法正常整合請新增如下配置:
allprojects {
repositories {
mavenCentral()
}
}
2.Manifest中配置許可權和Key:
也就是清單檔案中
<uses-permission android:name="android.permission.INTERNET"/> <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"/> <application......> //這裡的value="5a446bf5f29d987bd200008a"是在友盟裡面自己賬號生成的,看圖 <meta-data android:value="5a446bf5f29d987bd200008a" android:name="UMENG_APPKEY"/> <meta-data android:value="${UMENG_CHANNEL_VAULE}" android:name="UMENG_CHANNEL"/> </application>
3.app build.gradle動態配置Manifest的佔位符和預設值
也就是在專案的build.gradle(Module:app)中配置:
defaultConfig {
multiDexEnabled true // 突破方法數65535限制
manifestPlaceholders = [UMENG_CHANNEL_VAULE: "umeng"]
}
4.配置簽名檔案資訊,注意:signingConfigs要在buildTypes之前
signingConfigs { release { keyAlias 'key0' keyPassword '123456' storeFile file('release.jks') storePassword '123456' } }
5.新增渠道資訊
productFlavors {
yingyongbao{
}
xiaomi{
}
}
為了簡單可以用指令碼去替換重複程式碼
productFlavors.all {flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VAULE: name] }
最後點選 Build下的 Generate Signed APK 進行打包 在Flavors選中需要打包的 點選Finish就可以了。看圖:
6.可以配置多渠道打包輸出的名字,比如打包的名字就是渠道名字
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
applicationVariants.all { variant ->
variant.outputs.each{ output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith(".apk")) {
def fileName = "${variant.productFlavors[0].name}"+".apk"
output.outputFile = new File(outputFile.parent, fileName);
}
}
}
}
}
7.其他技巧:
①可以給不同渠道的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 {
okhttp {
applicationIdSuffix "okhttp"
resValue "string", "app_name", "okhttp"
}
jpush {
applicationIdSuffix "jpush"
resValue "string", "app_name", "jpush"
}
}
多渠道打包就是因為目前市場上 app應用商店太多,所以對於這一情況就有了多渠道打包,可以讓使用者在不用的應用商店下載app