构建变种版本的目的就是允许为同一个应用创建不同的版本。
例如:同一个应用做不同的版本:收费版本和免费版本,用户版本和管理者版本等。
因为朋友的一个项目要打包多个马甲包,一起学习了这个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而去重复新建工程了。这里我主要是按照我个人的思路来写的,偏重实际操作,不喜勿喷。