【问题标题】:Access project related data from Gradle command从 Gradle 命令访问项目相关数据
【发布时间】:2016-07-13 05:42:20
【问题描述】:

我需要来自基于 gradle 的 android 项目的项目相关数据,例如项目名称、应用程序版本及其主要模块。我尝试了各种任务,例如项目、属性,但没有一个能提供我需要的具体信息。

有没有办法在命令行中使用 gradle 查找版本代码、应用名称和主要 android 模块?

【问题讨论】:

  • 您是否正在寻找从命令行运行时将打印版本代码和应用程​​序名称的任务?另外,'main android module'是什么意思?
  • 我想要它而不需要编辑/更新源代码。
  • 你是否从 gradle 命令行 SET 或 GET 数据?
  • 我正在设置 jenkins 作业以进行声纳代码分析。我正在使用声纳运行器使用 bash 命令运行分析,在该命令中我需要设置项目名称和我们要扫描的主模块的名称。因此,为了使其通用而不需要用户的任何输入,我需要从源代码本身获取它。

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


【解决方案1】:

使用“BuildConfig”全局变量你会得到

布尔调试

字符串 APPLICATION_ID

字符串 BUILD_TYPE

字符串风味

int VERSION_CODE

字符串 VERSION_NAME

例如:- BuildConfig.APPLICATION_ID

如果你在 gradle 中定义了任何全局数据,比如

debug {

            buildConfigField "String", "BASE_URL", '"http://172.16.1.175:8080/api/"'
            debuggable true
        }

您还将获得此详细信息

BuildConfig.BASE_URL

【讨论】:

    【解决方案2】:

    你可以使用 resValue 来获取价值

    Gradle

     defaultConfig {
                //other config
                resValue "String","versionCode","1"
    
            }
    

    你的班级

    context.getString(R.string.versionCode);
    

    【讨论】:

      【解决方案3】:

      您可能可以为此编写自己的自定义 gradle 任务。在您的应用程序 build.gradle 中添加此代码 sn-p,您可以在其中定义您的 android 插件并从控制台运行它。您可以根据需要格式化输出并使用构建脚本中的其他数据。

      task hello<<{ println("versionCode = ${android.defaultConfig.versionCode}") println("applicationId = ${android.defaultConfig.applicationId}") println("minSDK = ${android.defaultConfig.minSdkVersion}") }

      【讨论】:

        【解决方案4】:

        我不知道它是否适合,您可以创建一个通用的 init gradle 文件,您可以从命令行运行该文件,因此它不是源代码操作,您可以在其中打印出所有必要的数据。但是 gradle 输出很脏。

        这是 /Users/username 中的 init.gradle 的 sn-p

        allprojects{
            afterEvaluate({//listen for project evaluation
                println(project.name)//it is supposed to be 2 projects "ProjName" and "app"
                if(project.name.equalsIgnoreCase("app")){//or any other condtion to check if it is inner android project
                    project.task("getVersion",{
                        println("versionCode = ${android.defaultConfig.versionCode}")
                    })
                }
            });
        }
        

        你像./gradlew --I /Users/username/init.gradle一样开始这个脚本 这就是我的输出

        music
        app
        versionCode = 1
        :help
        
        Welcome to Gradle 2.4.
        
        To run a build, run gradlew <task> ...
        
        To see a list of available tasks, run gradlew tasks
        
        To see a list of command-line options, run gradlew --help
        
        To see more detail about a task, run gradlew help --task <task>
        
        BUILD SUCCESSFUL
        
        Total time: 6.929 secs
        
        This build could be faster, please consider using the Gradle Daemon:     http://gradle.org/docs/2.4/userguide/gradle_daemon.html
        

        所以这是可以做的,另一个可用的选项是在 bash 中解析 build.gradle 文件或 manifest.xml,或者编写自己的控制台实用程序,以更清晰的输出来完成它。 我希望我能帮上忙。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多