WHS GIS Engineer

Gradle从入门到放弃

2019-04-18
WHS

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。 面向Java应用为主。当前其支持的语言限于Java、Groovy、Kotlin和Scala,计划未来将支持更多的语言。 官方下载地址

常用命令

# 执行 java 单元测试
gradle app:test
# 执行 android 单元测试
gradle app:connectedAndroidTest
# 查看编译时依赖树
gradle app:dependencies --configuration compile
# 查manifest merge问题
gradle processReleaseManifest --stacktrace
# g

常用脚本

//生成时间
def releaseTime() {
    if (BuildType.name.equals("release")){
        return new Date().format("yyyyMMdd", TimeZone.getTimeZone("GMT+08:00"))
    }else {
        return new Date().format("yyyyMMdd_HHmmss", TimeZone.getTimeZone("GMT+08:00"))
    }
}

//设置apk生成路径
    applicationVariants.all { variant ->
        if (variant.buildType.name != "debug") {
          variant.packageApplicationProvider.get().outputDirectory = new File(projectDir.absolutePath+"/apk/"+variant.buildType.name)
        }

        variant.outputs.forEach { apkData ->
            //这个修改输出APK的文件名
            apkData.outputFileName = "平台开发版_" +
                    variant.versionName + "_" +
                    variant.buildType.name + "_" +
                    variant.versionCode + "_" +
                    new Date().format("yyyyMMdd", TimeZone.getTimeZone("GMT+08:00")) +
                    ".apk"
        }
    }

常见的问题

  1. It is currently in use by another Gradle instance
    • 解决方式 关闭AS,执行以下命令,等待命令执行成功,重新clean,build后成功解决该问题。 ``` find ~/.gradle -type f -name “*.lock” | while read f; do rm $f; done

find ~/.gradle -type f -name “*.lock” -delete ```

参考链接

优化构建速度


Comments