我可以使用产品风格从一个多功能应用程序中为单个功能制作不同的应用程序吗?

时间:2017-11-16 10:55:55

标签: android android-studio android-gradle build.gradle android-productflavors

目前,我的应用程序包含三个功能,这些功能已在商店中发布。

我想为每个功能创建一个单独的应用程序,但我不想复制和粘贴,因为我将不得不维护多个代码库。

我已阅读有关Product Flavors的内容,可用于从同一代码库创建不同的应用程序。如何创建四个独立的应用程序,同时只维护一个代码库?

具体来说:我在哪里放置包含所有功能的主应用程序的源?

有人可以建议我如何组织我的代码吗?

2 个答案:

答案 0 :(得分:1)

您可以在gradle文件中创建产品风格,如上所述,您共享的链接还需要在创建这些风格时创建不同的包名称,例如。

  

在gradle中

    productFlavors {

            demo{
                applicationId "com.mycompany.myproject.demo"
                versionCode getCustomBuildVersion()
                versionName VERSION_NAME
            }
            full{
                applicationId "com.mycompany.myproject.full"
                versionCode getCustomBuildVersion()
                versionName VERSION_NAME
            }
}

通过这种方式,您可以从相同的代码库生成不同的应用程序。您可以使用和设置标志来启用或禁用某些功能。请查看此链接以获取进一步的帮助:Android using Gradle Build flavors in the code like an if case

  

在你想要改变的活动中,在onCreate()中执行类似的操作:

if (BuildConfig.FLAVOR.equals("demo")){
switchToDemoHomePage()
}
else if(BuildConfig.FLAVOR.equals("full")){
switchToFullHomePage()
}

通过这种方式,您可以根据应用的风格显示/隐藏/更改任何功能/选项/流程

答案 1 :(得分:1)

您可能希望在MAIN中定义产品风格和代码库中的编译器开关,并使用BuildConfig.feature1进行访问 喜欢

productFlavors {

            flavor1{
                 buildConfigField "Boolean", "feature1", true;
                 buildConfigField "Boolean", "feature2", false;

                }
          flavor2{
                 buildConfigField "Boolean", "feature1", false;
                 buildConfigField "Boolean", "feature2", true;

                }
           main{
                 buildConfigField "Boolean", "feature1", true;
                 buildConfigField "Boolean", "feature2", true;

                }
}