Android 多渠道定製化打包

這裏要用到 productFlavors ,productFlavors 能夠用來自定義應用構建版本android

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

Android 多渠道定製化打包

在 build.gradle文件中 android 目錄下添加 如下代碼便可android-studio

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> 設置佔位符來實現動態替換屬性值。app

Android 多渠道定製化打包

在 build.gradle文件中 ide

Android 多渠道定製化打包

注:此方式能夠能會引發異常以下gradle

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

此問題產生緣由大概有三個:ui

1.清單文件有錯,這種錯不會在編譯時指出來,固然as中仍是能夠看到的debug

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

解決:清單文件用toolsorm

Android 多渠道定製化打包

而後添加 replace字段
如 tools:replace="icon,label" 便可 xml

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中文件以下:

image

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

使用 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 版本

相關文章
相關標籤/搜索