从Gradle访问Java或string.xml中的变量

时间:2016-09-17 14:29:24

标签: android android-gradle build.gradle android-resources

我在String.xml中有一个String值

<string name="id">4</string>

我有一个包含变量

的类
public static int Id=1;

现在我需要的是我想在gradle中获取这两个值中的任何一个,它将检查条件并根据条件重命名我的应用程序。下面给出的是gradle代码的一部分

def identifier //here i need to get value from the java or xml 
switch(identifier)
 {
  case 1: 
   temp="ApplicationNewName";break;
  }
 newName=newName.replace("-release",temp);
output.output.File=new File(output.outputFile.parent,newName);

我的问题是,我可以访问java文件中初始化的变量或gradle文件中的字符串xml吗?

2 个答案:

答案 0 :(得分:0)

您向后处理此问题,Gradle让您能够在脚本中设置这些变量,然后您可以在整个Android代码中进一步访问这些变量。以下是有关如何设置构建配置变量的相关答案:https://stackoverflow.com/a/17201265/2168085

听起来您也尝试从单个代码库构建不同的应用程序,或构建这些应用程序的变体。如果是这种情况那么你应该真正研究build flavors来解决这个问题。基本上,构建风格允许您从单个主代码库构建不同的应用程序,并将变体或新功能应用于不同的风格。这可以像拥有免费和付费版本的应用程序或完整的白色标签代码库一样基本,您可以在同一主代码库中构建非常不同的应用程序。在Android中,这些通常称为build variants,开发人员文档提供了有关如何入门的大量有用信息:https://developer.android.com/studio/build/build-variants.html

答案 1 :(得分:-1)

applicationVariants.all { variant ->
        def appName
        if (project.hasProperty("applicationName")) {
            appName = "${applicationName}"
        } else {
            appName = parent.name
        }
        variant.outputs.all { output ->
            def newApkName
            newApkName = "${appName}_${variant.versionCode}_${variant.versionName}.apk"
            outputFileName = new File(newApkName)
        }
    }