相关疑难解决方法(0)

如何从Android Studio中的根风格继承两种构建风格?

我曾经有过以下项目风味:

  1. 苹果
  2. 橙子

最初唯一的区别是applicationId/packageName.现在有一个不同的java文件.准确地说是自定义ArrayAdapter.解决方案是创建src/Applesrc/Orange继承src/main.我删除从Java文件src/main并把拷贝到src/Applesrc/Orange和适当修改它.世界上一切都很好.

快进几周,现在大约有10个不同的Apple和Orange之间的java文件.再说......没什么大不了的.易于操作.在src/Apple和中分隔java文件src/Orange.

快进到今天.我需要稍微修改一下,因为我希望每个都有免费的高级版本.免费版和高级版仅因URL而异.我打算简单地创建一个名为的新类型:

  1. AppleFree
  2. ApplePremium
  3. OrangeFree
  4. OrangePremium

我有一个困境.从现在起src/Apple,src/Orange有10个不同的文件已被更改...如果我更改任何java文件,AppleFree我必须确保我做同样的事情ApplePremium.我有点处于十字路口,希望我的问题在这一点上有意义.我提出了三种可能的解决方案,但我不确定如何实现它们/什么是正确的方法/解决方案不是我想要的.

解决方案1:

使用if语句 if (BuildConfig.FLAVOR==appleFree) {//use free Url} else {// use premium url}

问题:两个Urls在技术上都编译成了apk.我不想要这个.

解决方案2:

让src/AppleFree和src/ApplePremium以某种方式从src/Apple父目录继承.

问题:不知道我会怎么做.

解决方案3:

在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

17
推荐指数
1
解决办法
5856
查看次数