" project.copy"没有在MacOS High Sierra上工作

时间:2017-10-18 06:23:18

标签: android-studio android-gradle build.gradle macos-high-sierra

在我的Android Studio项目中,我有一个小脚本,它使用不同的语言资源创建,适用于Android的strings.xml和适用于iOS的.lproj

直到现在,一切正常,但后来我升级到了MacOS High Sierra。现在在我的Android Studio项目中,创建我的String值的gradle-Task失败,导致在将values-da移动到string.xml文件夹时无法打开res/文件夹。

失败的部分在这里:

project.fileTree(dir: scriptPath).visit {
    FileVisitDetails details ->
        if (details.file.name.startsWith("values-")) {
            println "copying " + details.file.absolutePath + " to " + resPath;
            //It fails here at .copy
            project.copy {
                from details.file.absolutePath
                into resPath + "/" + details.file.name
                // copy english resources to base values folder
                if (details.file.name.equals("values-en")) {
                    into resPath + "/values"
                }
            }

            details.file.deleteDir();
        }
} 

我的第一个猜测是,这可能与新的Filesystem有关。有没有人有类似的问题?我可以证实我可能是由High Sierra造成的,因为我的同事在更新到High Sierra后遇到同样的问题。

这里"出了什么问题" -Message:

* What went wrong:
A problem occurred evaluating project ':app'.
> Could not read directory path '/Some/path/from/User/values-da'.

以下是我使用--stacktrace运行任务时获得的Stacktrace:

Caused by: org.gradle.api.GradleException: Could not read directory    path '/Some/path/from/User/values-da'.
08:14:17.474 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.file.collections.jdk7.Jdk7DirectoryWalker$1.postVisitDirectory(Jdk7DirectoryWalker.java:109)
08:14:17.474 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.file.collections.jdk7.Jdk7DirectoryWalker$1.postVisitDirectory(Jdk7DirectoryWalker.java:58)
08:14:17.475 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.file.collections.jdk7.Jdk7DirectoryWalker.walkDir(Jdk7DirectoryWalker.java:58)
08:14:17.475 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.file.collections.DirectoryFileTree.walkDir(DirectoryFileTree.java:163)
08:14:17.475 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.file.collections.DirectoryFileTree.visitFrom(DirectoryFileTree.java:147)
08:14:17.475 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.file.collections.DirectoryFileTree.visit(DirectoryFileTree.java:132)
08:14:17.476 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.file.collections.FileTreeAdapter.visit(FileTreeAdapter.java:110)
08:14:17.476 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.file.AbstractFileTree.visit(AbstractFileTree.java:123)
08:14:17.476 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.file.CompositeFileTree.visit(CompositeFileTree.java:64)
08:14:17.476 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.file.CompositeFileTree.visit(CompositeFileTree.java:58)
08:14:17.476 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.file.FileTree$visit.call(Unknown Source)
08:14:17.476 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at build_4z109ko3musne9trwmjez6vxh$_run_closure6.doCall(/Users/mtuchner/fotoplus-android/frontend-android/app/build.gradle:230)
08:14:17.477 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.ClosureBackedAction.execute(ClosureBackedAction.java:70)
08:14:17.477 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.util.ConfigureUtil.configureTarget(ConfigureUtil.java:160)
08:14:17.477 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.util.ConfigureUtil.configureSelf(ConfigureUtil.java:136)
08:14:17.477 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.AbstractTask.configure(AbstractTask.java:528)
08:14:17.477 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.internal.tasks.DefaultTaskContainer.create(DefaultTaskContainer.java:137)
08:14:17.478 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.api.tasks.TaskContainer$create.call(Unknown Source)
08:14:17.478 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at build_4z109ko3musne9trwmjez6vxh.run(/Users/mtuchner/fotoplus-android/frontend-android/app/build.gradle:184)
08:14:17.478 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:90)
08:14:17.478 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]   ... 62 more

1 个答案:

答案 0 :(得分:0)

我可以通过一个小小的改变解决我的问题。 在发布了我已经看过的堆栈跟踪后," .postVisitDirectory" JDK7FileProvider的方法抛出错误。

文档说,在访问FileTree之后总是调用此方法。所以我接受了删除操作并退出当前访问并将其放在self.physicsWorld.gravity = CGVector( dx: CGFloat((data?.acceleration.x)!) * 10, dy: CGFloat((data?.acceleration.y)!) * 10) 后面的一个闭包中,然后再次编译。

这里是代码:

.visit{}