日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

多渠道打包

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

多渠道打包方式 2 種:productFlavors、多渠道打包插件(騰訊:Bugly、美團:walle、…)

productFlavors

一、app 目錄下創建渠道文件:channel.txt

注意:渠道名不要為純數字,會導致獲取不到渠道名,例如下面的 360

xiaomi huawei baidu yyb 360

獲取渠道名方法:

public fun getChannel() {val pm: PackageManager = packageManagerval appInfo: ApplicationInfo =pm.getApplicationInfo(packageName, PackageManager.GET_META_DATA)val channel: String = appInfo.metaData.getString("CHANNEL_VALUE").toString()Toast.makeText(this, "當前渠道:$channel", Toast.LENGTH_LONG).show()}

二、app 的 build.gradle 文件中的 application 節點下配置:

flavorDimensions "default"file('channel.txt').readLines().each {channel ->productFlavors.create(channel, {dimension "default"// 編譯后會替換 AndroidMnifest 中的值,將 ${channel1} 替換成配置的渠道名manifestPlaceholders = [channel1: channel]})}

三、AndroidMnifest 中:

<meta-dataandroid:name="CHANNEL_VALUE"android:value="${channel1}" />

四、生成 Build Variants(變種),默認情況下有 debug、release 兩個變種。

雙擊命令同時構建 debug 或 release 多渠道 apk:

五、差異化

創建各渠道要編譯的代碼目錄(也叫資源集):

build.gradle 的 application 節點下配置各渠道的資源集路徑:

sourceSets {xiaomi {java.srcDirs = ['src/_xiaomi/java']res.srcDirs = ['src/_xiaomi/res']}huawei {java.srcDirs = ['src/_huawei/java']res.srcDirs = ['src/_huawei/res']}baidu {java.srcDirs = ['src/_baidu/java']res.srcDirs = ['src/_baidu/res']}yyb {java.srcDirs = ['src/_yyb/java']res.srcDirs = ['src/_yyb/res']}}

例如選中 huaweiDebug,編譯時則會使用 huawei 渠道配置下的資源集目錄:

如果某些渠道下有相同的文件,也可以單獨抽離一個公共使用的資源集,例如這里的 _base 文件夾:

假如這里 huawei、baidu、yyb 渠道中有相同的文件抽離到了 _base 里面,就應該配置如下:

這里應該還可以配合 excludes ,includes 使用,暫未驗證。

sourceSets {xiaomi {java.srcDirs = ['src/_xiaomi/java']res.srcDirs = ['src/_xiaomi/res']}huawei {java.srcDirs = ['src/_base/java','src/_huawei/java']res.srcDirs = ['src/_base/res','src/_huawei/res']}baidu {java.srcDirs = ['src/_base/java', 'src/_baidu/java']res.srcDirs = ['src/_base/res', 'src/_baidu/res']}yyb {java.srcDirs = ['src/_base/java', 'src/_yyb/java']res.srcDirs = ['src/_base/res', 'src/_yyb/res']}}

差異化配置不同渠道下的第三方依賴,前綴與渠道名相同,例如:

huaweiImplementation 'androidx.constraintlayout:constraintlayout:2.0.4'

注意坑:
main 公共目錄下和渠道目錄下不能有相同的 java 類文件,但是可以有相同的 res 資源文件。
渠道目錄下 java 類無法使用 main 公共目錄下 layout 資源。
渠道目錄下會覆蓋 main 目錄下的資源:layout 布局資源;drawable、mipmap 的圖片資源;…
渠道目錄下會合并到 main 目錄下的資源:values 資源;…

未使用到的:
目前暫未使用到的 sourceSets 配置,可參考博客鏈接。
多維度打包博客鏈接。

總結

以上是生活随笔為你收集整理的多渠道打包的全部內容,希望文章能夠幫你解決所遇到的問題。

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