Android多渠道打包の根據(jù)渠道來加載相應(yīng)的資源文件及Java代碼
方案需求
由于不同渠道,對項目會進(jìn)行一定的修改,比如圖片、文字等,所以需要根據(jù)渠道來加載相應(yīng)的資源文件,以達(dá)到顯示相應(yīng)渠道定制的app,同時不需要新建module方式進(jìn)行實現(xiàn)
根據(jù)渠道,定制資源
- 配置渠道,在項目gradle中進(jìn)行渠道配置
productFlavors {
demo1 {
applicationId 'com.hehe.demo1'
}
demo2 {
applicationId 'com.hehe.demo2'
}
}
-
新建文件夾,找到app\src\路徑,新建文件夾為剛剛配置的渠道名,即demo1 、demo2,注意文件夾名字必須和build.gradle里的渠道名對應(yīng),demo1 、demo2目錄與main目錄同級。
新建渠道目錄.png -
添加需要替換的資源,在打包時,如果資源的名稱與app\src\main目錄下res的資源一樣,則會進(jìn)行替換為當(dāng)前的同名資源
添加需要替換的資源.png
比如我們現(xiàn)在替換app的logo圖片,及名稱
- app\src\main 下的清單文件
<application
android:name=".MyApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
打包結(jié)果,能夠成功替換app的logo及名稱

結(jié)果.png
加載不同的Java代碼同理,就不在此說明了。。。
其他方法也可以實現(xiàn),如新建module,對應(yīng)渠道添加相應(yīng)的module依賴,也能實現(xiàn)該效果,不過module過多的話,會導(dǎo)致項目編譯速度變得慢。
- 非常慢!
- 非常非常慢??!
- 非常非常非常慢!??!
Android自動打包
這個可以結(jié)合我前面兩篇關(guān)于Android集成Jenkins實現(xiàn)自動打包功能

