我曾经有过以下项目风味:
最初唯一的区别是applicationId/packageName.现在有一个不同的java文件.准确地说是自定义ArrayAdapter.解决方案是创建src/Apple和src/Orange继承src/main.我删除从Java文件src/main并把拷贝到src/Apple和src/Orange和适当修改它.世界上一切都很好.
快进几周,现在大约有10个不同的Apple和Orange之间的java文件.再说......没什么大不了的.易于操作.在src/Apple和中分隔java文件src/Orange.
快进到今天.我需要稍微修改一下,因为我希望每个都有免费的高级版本.免费版和高级版仅因URL而异.我打算简单地创建一个名为的新类型:
我有一个困境.从现在起src/Apple,src/Orange有10个不同的文件已被更改...如果我更改任何java文件,AppleFree我必须确保我做同样的事情ApplePremium.我有点处于十字路口,希望我的问题在这一点上有意义.我提出了三种可能的解决方案,但我不确定如何实现它们/什么是正确的方法/解决方案不是我想要的.
使用if语句
if (BuildConfig.FLAVOR==appleFree) {//use free Url} else {// use premium url}
问题:两个Urls在技术上都编译成了apk.我不想要这个.
让src/AppleFree和src/ApplePremium以某种方式从src/Apple父目录继承.
问题:不知道我会怎么做.
在build.gradle中添加免费和高级网址是这样的吗?
productFlavors {
appleFree {
applicationId "com.example.apple.free"
versionName "1.0"
url "http://freeurl.com"
versionCode 1
}
applePremium {
applicationId "com.example.apple.premium"
versionName "1.0"
url "http://premiumurl.com"
versionCode 1 …Run Code Online (Sandbox Code Playgroud) android gradle android-studio build.gradle android-gradle-plugin