ProductFlavors介绍
我们在开发过程中,肯定会遇到这样的问题:咱们从原来的app上重新拉出来一个新的项目,简单调下接口,一个月之后上产品。开始还好,简单改动没什么;但是当我们不断的优化项目的时候,我们就会发现,做的很多事情,都需要重新复制过去。如果是多人开发的项目就更加麻烦,总会有人忽略掉一些关键问题,造成bug。其实gradle早就已经提供了方便解决方案:ProductFlavors
android {
defaultConfig {
flavorDimensions "default"
}
productFlavors{
A{
manifestPlaceholders = [APP_NAME: "A"]
}
B{
manifestPlaceholders = [APP_NAME: "B"]
}
}
}
<application
android:name=".application.Applocation"
android:allowBackup="false"
android:icon="@drawable/a"
android:label="${APP_NAME}"
android:persistent="true"
android:roundIcon="@drawable/a_bg"
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:replace="android:icon,android:theme,android:allowBackup,android:label,android:roundIcon">
只需要这样,我们就能够再不同大产品打包时,产生不同的名称。其中 flavorDimensions 在新版本中必须要加。 [APP_NAME: "B"] 也可以是 [APP_NAME: "@string/a"] 的形式。
除此之外,我们还可以进行多种资源的定义:资源对象,自定义变量等。
productFlavors{
A{
manifestPlaceholders = [APP_NAME: "A"]
resValue "string", "name", '"A"'
buildConfigField "String" , "channel" , '"1"'
applicationIdSuffix ".a"//applicationId后生成后缀
dimension 'app'
}
B{
manifestPlaceholders = [APP_NAME: "B"]
resValue "string", "name", '"B"'
buildConfigField "String" , "channel" , '"2"'
applicationIdSuffix ".b"
dimension 'app'
}
进行这些简单的配置之后,我们打包的时候,就可以出现不同产品的打包选项了。但这只是一些最基本的配置,我们在产品线明确之后,逻辑处理不同UI的情况。我们还需要进行一些其他的配置。
我们可以在src文件夹下,创建不同的产品文件夹:A、B:

我们就可以在A/B文件夹内创建不同的页面或者逻辑代码,AS在打包的过程中,会自动引用不同的文件。

红粉易妆娇态女,无钱难作好儿郎