android gradle配置多渠道打包
阿新 • • 發佈:2019-01-11
1.gradle檔案中定製productFlavors:
//為同一個應用建立不同的版本,比如一個國內版本,一個國外版 productFlavors { home { manifestPlaceholders = [ CHANNEL:”0"] applicationId 'com.xxx.xxx' minSdkVersion 21 } abroad { manifestPlaceholders = [ CHANNEL:”1"] applicationId 'com.xxx.xxx' minSdkVersion 14 } }
2.AndroidManifest.xml :
gradle編譯的時候,會根據這個配置,把manifest裡對應的meta-data佔位符替換成指定的值。
<!-- 自用渠道號設定 -->
<meta-data
android:name="CHANNEL"
android:value="${CHANNEL}”/>
3.Android執行期取出來渠道值:
public static String getChannel(Context context) { String channel = ""; PackageManager pm = sContext.getPackageManager(); try { ApplicationInfo ai = pm.getApplicationInfo( context.getPackageName(), PackageManager.GET_META_DATA); String value = ai.metaData.getString("CHANNEL"); if (value != null) { channel = value; } } catch (Exception e) { // 忽略找不到包資訊的異常 } return channel; }