繁体   English   中英

RenderScript 在 macOS Catalina (10.15) 上损坏

[英]RenderScript broken on macOS Catalina (10.15)

我已经更新到 MacOS Catalina。 今天早上,当我在处理我的 Android 项目时,它突然开始给出以下异常:“错误:原因:错误 = 86,可执行文件中的 CPU 类型错误”。

我怀疑它是因为我更新到 macOS 10.15 并且因为我试图为我的项目构建 APK(所以它重建了渲染脚本的东西)。 这是给出的完整堆栈跟踪:

org.gradle.process.internal.ExecException: A problem occurred starting process 'command '/Users/name/Library/Android/sdk/build-tools/28.0.3/arm-linux-androideabi-ld''
    at org.gradle.process.internal.DefaultExecHandle.execExceptionFor(DefaultExecHandle.java:232)
    at org.gradle.process.internal.DefaultExecHandle.setEndStateInfo(DefaultExecHandle.java:209)
    at org.gradle.process.internal.DefaultExecHandle.failed(DefaultExecHandle.java:356)
    at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:86)
    at org.gradle.internal.operations.CurrentBuildOperationPreservingRunnable.run(CurrentBuildOperationPreservingRunnable.java:38)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
    at java.lang.Thread.run(Thread.java:748)
Caused by: net.rubygrapefruit.platform.NativeException: Could not start '/Users/name/Library/Android/sdk/build-tools/28.0.3/arm-linux-androideabi-ld'
    at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:27)
    at net.rubygrapefruit.platform.internal.WrapperProcessLauncher.start(WrapperProcessLauncher.java:36)
    at org.gradle.process.internal.ExecHandleRunner.startProcess(ExecHandleRunner.java:97)
    at org.gradle.process.internal.ExecHandleRunner.run(ExecHandleRunner.java:70)
    ... 7 more
Caused by: java.io.IOException: Cannot run program "/Users/name/Library/Android/sdk/build-tools/28.0.3/arm-linux-androideabi-ld" (in directory "/Users/name/Documents/Projects/onlinetrucks_android/MyApplication/app"): error=86, Bad CPU type in executable
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
    at net.rubygrapefruit.platform.internal.DefaultProcessLauncher.start(DefaultProcessLauncher.java:25)
    ... 10 more
Caused by: java.io.IOException: error=86, Bad CPU type in executable
    at java.lang.UNIXProcess.forkAndExec(Native Method)
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
    at java.lang.ProcessImpl.start(ProcessImpl.java:134)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
    ... 11 more

在进行 Gradle 同步时,我得到了

warning: Linking two modules of different target triples: /Users/name/Library/Android/sdk/build-tools/28.0.3/renderscript/lib/bc/x86/libclcore.bc' is 'armv7--linux-android' whereas '/Users/name/Documents/Projects/onlinetrucks_android/MyApplication/app/build/generated/res/rs/debug/raw/bc32/singlesource.bc' is 'armv7-none-linux-gnueabi'

Execution failed for task ':app:compileDebugRenderscript'.

启动进程'command'/Users/name/Library/Android/sdk/build-tools/28.0.3/arm-linux-androideabi-ld''时出现问题

有没有办法强制 Android 工作室尝试使用 64 位兼容版本的库来代替? 任何帮助将不胜感激,因为项目的很大一部分取决于 Renderscript。

补充说明:

  1. 我在这个项目中没有使用 androidX,因为它弄乱了渲染脚本,然后导致它不兼容 Google Play 的 64 位要求。

  2. 我的 gradle 文件中的渲染脚本部分如下所示:

     renderscriptTargetApi 22 renderscriptSupportModeEnabled true

对于任何有同样问题的人来说,这是一个错误。 使用渲染脚本时,linker 使用 32 位文件。 已记录多个错误。 如果你想跟踪,你可以关注这里发生的事情: https://issuetracker.google.com/issues/142590626

握着大拇指,他们很快就修好了!

更新:他们已在最新的 buildtools 版本 29.0.3 中修复它。 您还需要更新到 Android Studio 3.6 才能使用它。

奖励:对于其他尝试更新到 AndroidX 的人来说,Renderscript 可能会在 Android6 上中断。 有一个解决方法(据我所知),您将 renderscriptSupportModeEnabled 设置为 false - 但它不能为所有设备修复它(例如 Xiomi Redmi go - Android 8.1 - 然后对我来说中断)。

我正在使用 Android studio 4.0,只需更新 gradle 版本即可解决此问题。

在应用程序的 build.gradle 中:

-    ext.gradle_version = '3.5.3'
+    ext.gradle_version = '4.0.0'

在 gradle/wrapper/gradle-wrapper.properties 中:

-  distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip
+  distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM