Android Studio多渠道打包

因爲國內Android應用分發市場的現狀,我們在發佈APP時,一般需要生成多個渠道包,上傳到不同的應用市場。這些渠道包需要包含不同的渠道信息,在APP和後臺交互或者數據上報時,會帶上各自的渠道信息。這樣,我們就能統計到每個分發市場的下載數、用戶數等關鍵數據

普通做法

通常情況下的做法是在AndroidManifest中增加渠道號

 <meta-data
            android:name="channel"
            android:value="baidu"/>

然後在代碼中獲取該渠道號

private String getChannel(Context context) {
        try {
            PackageManager pm = context.getPackageManager();

            ApplicationInfo appInfo = pm.getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);
            return appInfo.metaData.getString("channel");

        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        return "";
    }

如需要切換小米渠道,則再次更改爲

 <meta-data
            android:name="channel"
            android:value="xiaomi"/>

然後再次打包。如此一來,重複的工作量大大增加。於是就有了AndroidStudio上的多渠道打包

Android Studio上的多渠道打包

  1. AndroidManifest.xml文件中,還是依舊的meta-data標籤,只是屬性改爲動態的屬性
<meta-data
            android:name="channel"
            android:value="${APP_CHANNEL_VALUE}"/>
  1. build.gradle中的android標籤內增加如下代碼,其中APP_CHANNEL_VALUE後面的值就是渠道號的值
productFlavors{
        xiaomi{
            manifestPlaceholders = [APP_CHANNEL_VALUE:"xiaomi"]
        }
        baidu{
            manifestPlaceholders = [APP_CHANNEL_VALUE:"baidu"]
        }
    }

如果提示All flavors must now belong to a named flavor dimension點此查看解決辦法

  1. 在我們使用Build-Generate Signed Bundle or APK時,點擊Next,就會出現以下界面,全選即可,打包就在默默的進行了

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章