适用于Android的Gradle跨平台构建脚本

时间:2017-01-21 15:46:15

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

我有一个针对我的Android应用程序的build.gradle,然后是一些用于各种子任务的helper.gradle文件。其中一些辅助任务调用shell脚本。因为这个应用程序一直在Linux和Mac机器上开发,所以shell脚本运行良好。

我最近在混合中添加了一个Windows开发机器,并且gradle构建配置在调用shell脚本时失败。

task helperTask1 << {
    exec {
        workingDir rootProject.getProjectDir()
        commandLine 'sh', './scripts/helperScript1.sh'
    }
}

在某些时候,我会在Windows机器上启动并运行Cygwin,但是我有什么选择来编译我的应用程序?

  1. 有没有办法有效地在各自的平台上调用helperTask1_Linux和helperTask1_Windows任务?
  2. 是否有更多“gradle”方式调用shell脚本,以便我的gradle文件定义更高级别的步骤?

1 个答案:

答案 0 :(得分:1)

以下是我这样做的方式:

  1. 定义属性'ant.condition.os'。该属性的值取决于操作系统。
  2. 使用交换机中的属性值来调用windows或linux脚本。
  3. ant.condition(property: "os", value: "windows") { os(family: "windows") }
    ant.condition(property: "os", value: "unix"   ) { os(family: "unix")    }
    
    task myTask() {
        switch (ant.properties.os) {
            case 'windows':
                commandLine 'cmd', '/c', 'myscript.cmd'
                break;
            case 'unix':
                commandLine './myscript.sh'
                break;
        }
    }