不同的构建变体中有不同的代码

14

我的应用有两个构建变体,一个是标准的应用版本,另一个是定制应用。

productFlavors {
        customConfig {
            minSdkVersion 14
            applicationId 'es.com.custom'
            targetSdkVersion 22
            versionCode 3
            versionName '3.0.0'
        }
        standard {
            minSdkVersion 14
            applicationId 'es.com.standard'
            targetSdkVersion 22
            versionCode 3
            versionName '3.0.0'
        }

为了进行定制化,我需要实现新功能,但只针对定制化,因此这些新功能将不会在标准版本中提供。我不确定该怎么做。

1.- 两个类,一个具有标准要求,另一个具有自定义要求
2.- 在标准类中执行以下操作:

  if (getPackageName()==customConfig )
    // do the custom things
    else
    //do the standard things
3个回答

10
构建变体是Gradle使用一组特定规则来组合在您的构建类型和产品风味中配置的设置、代码和资源的结果。尽管您不直接配置构建变体,但您确实配置了形成它们的构建类型和产品风味。
 if(BuildConfig.Flavor.equals("customConfig")) 
    {

    }
  else
   {

   }

阅读构建多个Android应用程序版本


2

您需要为每个口味创建源目录,这样您就能维护特定口味的单独文件。

请查看链接以获取帮助。


1
你可以用一种简单的方法实现这个。你的项目中应该已经有一个名为“standard”的文件夹。只需在与“standard”文件夹相同的位置创建另一个名为“customConfig”(或者gradle同步后可能已经创建)的文件夹即可。
在“customConfig”中创建另一个名为“res”的文件夹(你可能已经有了它)。然后创建另一个名为“values”的文件夹,在“values”文件夹中,你可以创建你的值文件。将文件命名为“values.xml”,然后返回到你的项目中。你的“values.xml”文件应该像这样:
<?xml version="1.0" encoding="utf-8"?>
<resources>
     <string name="custom_app_id">es.com.custom</string>s
</resources>

现在,在您的代码中,您可以检查您所处的变量环境:
 if (getPackageName().equals(getString(R.string.custom_app_id)))// for custom
// do the custom things
else
//do the standard things

希望这可以帮助!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接