接下來進入主題,讓你享受非通常的感受;這個方式針對as 3.0以上,若是有人還在用3.0如下的as,打包方式不一樣,歡迎留言!java
首先,來到你的AndroidMainfest.xml文件下android
<meta-data android:name="ATMAN_CHANNEL" android:value="${ATMAN_CHANNEL_VALUE}" />
複製代碼
這裏的ATMAN_CHANNEL 和ATMAN_CHANNEL_VALUE 都是本身本身自定義的。用於在代碼裏獲取你須要的那些渠道號。bash
其次來到你的App下build.gradle的android根標籤下加上你要的渠道號;這裏我就打開了2個渠道:brain,uc;按你本身的須要,我這裏是展現app
flavorDimensions "mark" //至關於一個標記
productFlavors {
brain { dimension "mark" }
uc { dimension "mark" }
// yingyongbao { dimension "mark" }
// xiaomi { dimension "mark" }
// "360m" { dimension "mark" }
// oppo { dimension "mark" }
//
// huawei { dimension "mark" }
// meizu { dimension "mark" }
// vivo { dimension "mark" }
// sougou { dimension "mark" }
// lianxiang { dimension "mark" }
// zongbao { dimension "mark" }
}
productFlavors.all {
flavor -> flavor.manifestPlaceholders = [ATMAN_CHANNEL_VALUE: name]
}
複製代碼
接下來就是打包了,爲了apk包名清晰,我們把打出來的包名規範下,在上面配置多渠道的地方加上測試
//自定義打包時apk名字
android.applicationVariants.all { variant ->
variant.outputs.all {
// abc_渠道名_版本名.apk 還能夠拼接其餘app內容:variant.versionCode variant.buildType.name
outputFileName = "GreenVolley_${variant.name}_${variant.versionName}_${new Date().format("yyyy-MM-dd")}.apk"
}
}
複製代碼
看到這裏你也知道,出來的包名是什麼了。gradle
在你Android Studio 右上角有個Gradle的按鈕,點擊打開: ui
打開後,接下來的操做步驟是;點擊你的項目名,而後點擊app,再點擊build,最後打開以下圖:spa
接下來舉個例子,若是是要數據統計這些渠道號,確定是要獲取這些渠道號的值,你只須要這樣:code
//測試多渠道打包
ApplicationInfo appInfo = null;
try {
appInfo = App.getContext().getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
String app_version = appInfo.metaData.getString("ATMAN_CHANNEL");
LogUtils.i("我試試看吧當前是什麼", app_version + "=========");
複製代碼
其實教程早已經結束,這只是驗證一下。若是是區分環境,你大可這樣作,uc標籤下是一個環境,當渠道號獲取爲uc的時候,你在代碼裏再取這個環境的域名。(若是對你有幫助,請點個贊鼓勵下技術小學生吧)orm