日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 多渠道配置

發布時間:2024/3/12 Android 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 多渠道配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

多渠道打包早已不是什么新技術,網上一搜千千萬萬數不盡數,但是對于沒使用過的開發者,看了網上復制又復制的文章卻是一頭霧水,完全找不到符合自己需求的多渠道配置,以下總結:

需求:

  • 不同渠道,配置不同包名。
  • 不同渠道,不同app名稱。
  • 不同渠道,icon需要對應。
  • 不同渠道,版本號需要單獨指定。
  • 代碼擼起來:
    gradle的多渠道配置,利用productFlavors 需要幾個包就配置幾個馬甲,在android{} 里面添加如下:

    productFlavors {baidu {}xiaomi {}huawei {}}

    配置三個渠道,然后 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: app

    defaultConfig下添加`

    flavorDimensions "versionName"

    根據需求配置:
    AndroidManifest.xml 的application里面需先配置 meta:

    <meta-dataandroid:name="CHANNEL"android:value="${CHANNEL_VALUE}" /> productFlavors {baidu{applicationId "com.allen.channel.baidu"versionName "1.0.1"resValue "string", "app_name", "百度"manifestPlaceholders = [CHANNEL_VALUE: "baidu",app_icon : "@mipmap/app_icon"]}xiaomi{applicationId "com.allen.channel.xiaomi"versionName "1.0.2"resValue "string", "app_name", "小米"manifestPlaceholders = [CHANNEL_VALUE: "xiaomi",app_icon : "@mipmap/app_icon"]}huawei{applicationId "com.allen.channel.huawei"versionName "1.0.3"resValue "string", "app_name", "華為"manifestPlaceholders = [CHANNEL_VALUE: "huawei",app_icon : "@mipmap/app_icon"]}}

    說明:
    applicationId:顧名思義,指定對應馬甲的包名。
    versionName:這個不用說。
    resValue:指定馬甲的應用名稱,注意:如果馬甲中指定了app的名稱,項目中的strings.xml文件的app_name必須刪除

    <resources><string name="app_name">安安</string> </resources>

    manifestPlaceholders:指定馬甲的icon,需要在src目錄下新建相對應渠道的文件夾:

    該目錄下可以存放res等資源文件,如華為馬甲為例:

    manifestPlaceholders = [CHANNEL_VALUE: "huawei",app_icon : "@mipmap/app_icon"]

    在“huawei”渠道目錄下的mipmap文件夾中有一張app_icon的圖片,實例:

    發現我把其他渠道的icon名稱都配了“app_icon”,這個不是固定,自定義的。主目錄下的app_icon是默認的,AndroidManifest.xml默認配置。

    AndroidManifest如下:

    打包
    簽名包需要在gradle配置signingConfigs:

    signingConfigs {release {storeFile file('channel.jks')storePassword '123456'keyAlias 'channel'keyPassword '123456'}debug {storeFile file('channel.jks')storePassword '123456'keyAlias 'channel'keyPassword '123456'}}

    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 多渠道配置的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。