構建變種版本的目的就是允許爲同一個應用創建不同的版本。
例如:同一個應用做不同的版本:收費版本和免費版本,用戶版本和管理者版本等。
因爲朋友的一個項目要打包多個馬甲包,一起學習了這個Build Variants,感覺很有用,把自己學習的經歷分享出來。
1.首先,需要在src文件夾下新建多個你要製作的馬甲包的資源文件,並且在gradle文件中與productFlavor的命名一致。
需要注意的是:馬甲包的資源文件的命名要一致。
2.在build. gradle中添加配置代碼。
android { productFlavors { debugTest { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "platform", APP_NAME: "631的小仙女"] buildConfigField "String", "APP_NAME", "\"631的小仙女\"" buildConfigField "String", "URL_ROOT", "\"http://www.51shebaotong.com/\"" applicationId "com.jingyudai.shebaodai" versionName "1.0" } chenxiaojuan { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "platform", APP_NAME: "陳小娟"] buildConfigField "String", "APP_NAME", "\"陳小娟\"" buildConfigField "String", "URL_ROOT", "\"http://www.51shebaotong.com/\"" applicationId "com.jingyudai.laiqianshengqi" versionName "1.0" } dengyalan { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "platform", APP_NAME: "鄧亞蘭"] buildConfigField "String", "APP_NAME", "\"鄧亞蘭\"" buildConfigField "String", "URL_ROOT", "\"http://www.baidu.com/\"" applicationId "com.jingyudai.shebaodai" versionName "1.0" } dengsha { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "360", APP_NAME: "鄧莎"] buildConfigField "String", "APP_NAME", "\"鄧莎\"" buildConfigField "String", "URL_ROOT", "\"http://www.sina.com/\"" applicationId "com.jingyudai.shebaodai" versionName "1.0" } liujinxin { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "oppo", APP_NAME: "劉金鑫"] buildConfigField "String", "APP_NAME", "\"劉金鑫\"" buildConfigField "String", "URL_ROOT", "\"http://www.zhihu.com/\"" applicationId "com.jingyudai.shebaodai" versionName "1.0" } } }
3.編譯之後會產生一個buildConfig文件,可以在代碼中直接通過buildConfig調用flavor裏面的內容。例如:
//根據馬甲配置文件得到配置文件的相關信息 BuildConfig在gradle編譯完成後自動創建的 appName.setText(BuildConfig.APP_NAME + BuildConfig.URL_ROOT);
還可以通過${APP_NAME}來訪問配置文件的內容,例如:
<application android:name=".base.MyApplication" android:allowBackup="true" android:icon="@mipmap/ic_logo" android:label="${APP_NAME}" android:supportsRtl="true" android:theme="@style/Theme.AppCompat.Light.NoActionBar"> <activity android:name=".ui.other.SplashActivity" android:screenOrientation="portrait" android:theme="@style/StartAppTheme"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application>
4.除了在build.gradle文件添加flavor之外,如果你的馬甲包需要有更多種配置又不想讓build.gradle文件內容很多,你可以將productFlavor單獨新建一個gradle文件配置讀取。(config.gradle文件內容參照第2條內容代碼),然後在build.gradle中添加引入就行了:
apply from: 'config.gradle'
5.然後就可以調試或者打包測試。
調試選擇:點擊下拉選擇你所需要調試的馬甲包。
打包選擇:
就這樣簡單,一個項目就能打包出多種主題風格的apk了,不用再因爲同一個項目要打包成多個app而去重複新建工程了。這裏我主要是按照我個人的思路來寫的,偏重實際操作,不喜勿噴。