Android多渠道打包の根據(jù)渠道來加載相應(yīng)的資源文件及Java代碼
方案需求
由于不同渠道,對(duì)項(xiàng)目會(huì)進(jìn)行一定的修改,比如圖片、文字等,所以需要根據(jù)渠道來加載相應(yīng)的資源文件,以達(dá)到顯示相應(yīng)渠道定制的app,同時(shí)不需要新建module方式進(jìn)行實(shí)現(xiàn)
根據(jù)渠道,定制資源
- 配置渠道,在項(xiàng)目gradle中進(jìn)行渠道配置
productFlavors {
demo1 {
applicationId 'com.hehe.demo1'
}
demo2 {
applicationId 'com.hehe.demo2'
}
}
-
新建文件夾,找到app\src\路徑,新建文件夾為剛剛配置的渠道名,即demo1 、demo2,注意文件夾名字必須和build.gradle里的渠道名對(duì)應(yīng),demo1 、demo2目錄與main目錄同級(jí)。
新建渠道目錄.png -
添加需要替換的資源,在打包時(shí),如果資源的名稱與app\src\main目錄下res的資源一樣,則會(huì)進(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代碼同理,就不在此說明了。。。
其他方法也可以實(shí)現(xiàn),如新建module,對(duì)應(yīng)渠道添加相應(yīng)的module依賴,也能實(shí)現(xiàn)該效果,不過module過多的話,會(huì)導(dǎo)致項(xiàng)目編譯速度變得慢。
- 非常慢!
- 非常非常慢?。?/li>
- 非常非常非常慢?。。?/li>
Android自動(dòng)打包
這個(gè)可以結(jié)合我前面兩篇關(guān)于Android集成Jenkins實(shí)現(xiàn)自動(dòng)打包功能

