这对我来说并不新鲜,在Google为Android Studio 2.2.2发布Gradle插件之前,我已经这样做了好几个月,并破坏了文件查找功能。Android Gradle Build - 如何将环境变量注入资产目录中的属性文件?
使用案例:
我了Android工作室从詹金斯内以及运行gradle这个版本。我需要一些构建信息传递给构建,然后希望它被代码使用。这些值包括系统信息,构建变体,构建日期和关联构建风格的IP地址。
之前,我从2.1.3
android.applicationVariants.all { variant ->
variant.mergeResources.doLast {
File propsFile = file("${buildDir}/intermediates/assets/${variant.dirName}/config.properties")
println("Filtering resource file: " + propsFile)
String content = propsFile.getText('UTF-8')
println("File contents: " + content)
content = content.replaceAll(/@[email protected]/, buildDate)
.replaceAll(/@[email protected]/, buildMode)
.replaceAll(/@[email protected]/, serverUrl)
propsFile.write(content, 'UTF-8')
}
}
切换到摇篮2.2.2上面的代码中查找在intermediate/assets/${variant.dirName}
路径config.properties文件。然后处理该文件以用传递给replaceAll方法的变量替换标记有@ .. @的标记。现在
我的问题是:
的代码应该与2.2.2更新的摇篮插件版本工作。然而,我观察到较新的版本不产生在中间目录中的资源文件夹,并因此上述代码失败来查找文件并抛出以下错误:
Execution failed for task ':app:mergeDebugResources'.
> /home/pawan/git/MyApplication/app/build/intermediates/assets/debug/config.properties (No such file or directory)
显而易见的是较新的版本已改变的方式建立作业。现在问题是,我应该如何从这一点开始呢?如何实现预期的功能?任何解决方法或修复?
你试过无效缓存,重启重建项目? –
@ArsenSench是的,我做到了。这没有效果。 – Pawan