android - 如何在Gradle中删除任务名称中的斜杠

标签 android gradle task

我正在尝试运行一个旧的Android项目,但是build.gradle(:app)文件中有错误。

ndk_projects.each { File file ->

//noinspection GroovyAssignabilityCheck
 task "copy $file" (dependsOn: "build $file", type:Copy) {
     from "$buildDir/tmplibs"
     into "$buildDir/libs"
 }


//noinspection GroovyAssignabilityCheck
 task "build $file" (dependsOn: ["copy $OpenNI2_path",  "copy $OpenCL_path"], type:Exec) {
     workingDir file
     commandLine "${ndkDir}/ndk-build",
             "NDK_PROJECT_PATH=${buildDir}/intermediates/ndk"  ,
             "NDK_APPLICATION_MK=${file.absolutePath}/jni/Application.mk" ,
             "APP_BUILD_SCRIPT=${file.absolutePath}/jni/Android.mk",
             "NDK_LIBS_OUT=${buildDir}/tmplibs"
             environment NDK_MODULE_PATH: ndk_projects[0].absolutePath + "/jni" + ":" + OpenCL_path + "/obj/local/"
 }

}

错误显示task name must not contain any of the following characters: [/, \, :, <, >, ", ?, *, |].。因为它使用文件路径作为任务名称,所以我应该更改它。一个简单的解决方法是删除路径中的所有斜杠并将其用作任务名称。但是,我对Gradle语法了解为零。有人可以告诉我该怎么做吗?谢谢。

最佳答案

Gradle使用Groovy,它通常与Java兼容。 Groovy在String上具有replaceAll方法,您可以在此处将其与正则表达式配合使用:

task "build ${file.path.replaceAll("[/\\\\:<>\"?*|]", ' ')}" (...) {
    // ...
}

如果需要,您可以替换较少的字符,这会将所有无效字符替换为一个空格。

关于android - 如何在Gradle中删除任务名称中的斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60920984/

相关文章:

android - AndroidManifest.xml中的using-library标签与Gradle中的useLibrary

C# 命名任务 正确的方法是什么?

.net - C# 中使用 Task 和 Task<TResult> 有什么区别

java - webview加载完成后如何显示?

android - 使用 URI 从网络获取图像

android - NoClassDefFoundError: android.app.ANRManagerProxy

c# - 在非异步方法中返回异步任务的正确方法

android - 对特定 View 使用上下文操作栏时无法解析方法 startActionMode()

android - 我在运行应用程序时收到 SQLCipher 错误

java - 如何使用gradle创建Dropwizard项目?