溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android 多渠道定制化打包

發布時間:2020-06-21 18:59:02 來源:網絡 閱讀:1770 作者:腦洞不夠大 欄目:移動開發

這里要用到 productFlavors ,productFlavors 可以用來自定義應用構建版本

1.區分渠道,使用對應的包名

Android 多渠道定制化打包

在 build.gradle文件中 android 目錄下添加 以下代碼即可

  productFlavors {

         //默認,不設置 applicationId ,繼承 defaultConfig 中的配置
        flavors_default  {

        }

        //開發版本, applicationId 替換為 com.xxx.dev
        flavors_dev  {
            applicationId "com.xxx.dev"

        }
         //發布版本, applicationId 替換為 com.xxx.release
        flavors_release  {
            applicationId "com.xxx.release"

        }
    }

2.區分渠道,使用對應 App名稱,應用圖標,常量 ,圖片資源等

  • 替換 AndroidManifest.xml 中的屬性

該方案通過在 AndroidManifest.xml 文件中 application 標簽下指定 <mate-data> 設置占位符來實現動態替換屬性值。

Android 多渠道定制化打包

在 build.gradle文件中

Android 多渠道定制化打包

注:此方式可以能會引起異常如下

    Error:Execution failed for task ':app:processDebugManifest'.
        >Manifest merger failed with multiple errors, see logs  

此問題產生原因大概有三個:

1.清單文件有錯,這種錯不會在編譯時指出來,當然as中還是可以看到的

2.引入的三方包存在相同的label icon 等名字

解決:清單文件用tools

Android 多渠道定制化打包

然后添加 replace字段
如 tools:replace="icon,label" 即可

Android 多渠道定制化打包

  • 替換 資源文件 drawable,String,assets目錄下的文件等

在 main 的同級目錄下創建以渠道名命名的文件夾,然后創建資源文件(路徑要與 main 中的一致),然后打包的時候 gradle 就會自己替換或者合并資源。

例如, App 的默認 icon 路徑為 main\res\mipmap-hdpi\ic_launcher.png ,那么 flavors_dev的路徑就為 flavors_dev\res\mipmap-hdpi\ic_launcher.png ,打包 flavors_dev 渠道的時候會自動替換圖片。同理assets中文件如下:

Android 多渠道定制化打包

  • 區分渠道,動態修改指定的常量

使用 BuildConfig 的變量
當我們定義如下字段之后,編譯后自動生成文件,在 app/build/source/BuildConfig/dev/com.xxx.dev/BuildConfig 目錄,
打開這個文件,我們就能看到我們所定義的字段了。

1.設置字段 使用 buildConfigField

Android 多渠道定制化打包

設置好后編譯一下,咦,什么鬼,怎么出錯了?

Android 多渠道定制化打包

明明設置的字符串怎么會這樣,好了這是我們需要注意的地方,設置值需要這樣寫

Android 多渠道定制化打包

它的意思是 "default" 這個整體是屬于一個字符串,然后在編譯一下

Android 多渠道定制化打包

恩,ok

2.使用字段

Android 多渠道定制化打包

3.使用Gradle命令打包

常用命令 看這里

  • gradlew assembleDebug

    打包所有渠道的 debug 版本

  • gradlew assembleRelease

    打包所有渠道的 release 版本

  • gradlew assembleflavors_devRelease

    單獨打包 flavors_dev 的 release 版本

  • gradlew assembleflavors_devDebug

    單獨打包 flavors_dev 的 Debug 版本

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女