Android 多渠道配置
多渠道打包早已不是什么新技術,網上一搜千千萬萬數不盡數,但是對于沒使用過的開發者,看了網上復制又復制的文章卻是一頭霧水,完全找不到符合自己需求的多渠道配置,以下總結:
需求:
代碼擼起來:
gradle的多渠道配置,利用productFlavors 需要幾個包就配置幾個馬甲,在android{} 里面添加如下:
配置三個渠道,然后 Sync Now,發現報錯:
ERROR: All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html Affected Modules: appdefaultConfig下添加`
flavorDimensions "versionName"根據需求配置:
AndroidManifest.xml 的application里面需先配置 meta:
說明:
applicationId:顧名思義,指定對應馬甲的包名。
versionName:這個不用說。
resValue:指定馬甲的應用名稱,注意:如果馬甲中指定了app的名稱,項目中的strings.xml文件的app_name必須刪除
manifestPlaceholders:指定馬甲的icon,需要在src目錄下新建相對應渠道的文件夾:
該目錄下可以存放res等資源文件,如華為馬甲為例:
在“huawei”渠道目錄下的mipmap文件夾中有一張app_icon的圖片,實例:
發現我把其他渠道的icon名稱都配了“app_icon”,這個不是固定,自定義的。主目錄下的app_icon是默認的,AndroidManifest.xml默認配置。
AndroidManifest如下:
打包
簽名包需要在gradle配置signingConfigs:
channel.jks我已放置app目錄下。
雙擊–》
assemble:打出來的包,包含release和debug兩種類型。
assembleDebug:只有debug。
assembleRelease:只有release。
也可以渠道單獨打包,如assembleXiaomi等等可以自己嘗試。
我雙擊assembleRelease之后:
注意位置查看,打出來的都是release。
最后我在MainActivity中獲取渠道測試:
public class MainActivity extends AppCompatActivity {private TextView tv_content;private TextView tv_id;private TextView tv_channel;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tv_id = findViewById(R.id.tv_id);tv_channel = findViewById(R.id.tv_channel);tv_content = findViewById(R.id.tv_content);tv_id.setText(BuildConfig.APPLICATION_ID);tv_channel.setText(BuildConfig.FLAVOR);tv_content.setText(BuildConfig.VERSION_NAME);} }簡單獲取對應的渠道信息。
效果:
總結
以上是生活随笔為你收集整理的Android 多渠道配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《数据库原理》学生表,课程表,选课表的相
- 下一篇: Android: 渠道号获取