RenderScript在macOS Catalina(10.15)上损坏 [英] RenderScript broken on macOS Catalina (10.15)

查看:197
本文介绍了RenderScript在macOS Catalina(10.15)上损坏的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I've updated to MacOS Catalina. This morning while I was working on my Android project, it suddenly started giving the following exception: "ERROR: Cause: error=86, Bad CPU type in executable".

我怀疑是因为我更新到了macOS 10.15,又因为我试图为我的项目构建APK(因此它重新构建了renderscript的东西).这是给定的完整堆栈跟踪:

I suspect it it because I updated to macOS 10.15 AND because I tried to build the APK for my project (so it rebuilt the renderscript stuff). Here is the full stack trace given:

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同步时,我得到

and on doing a Gradle Sync, I get

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'.

启动过程'命令'/Users/name/Library/Android/sdk/build-tools/28.0.3/arm-linux-androideabi-ld''出现问题

A problem occurred starting process 'command '/Users/name/Library/Android/sdk/build-tools/28.0.3/arm-linux-androideabi-ld''

是否有一种方法可以强制Android Studio尝试使用库的64位兼容版本?任何帮助将不胜感激,因为该项目的很大一部分取决于Renderscript.

Is there a way to force Android studio to try and use the 64-bit compliant versions of the libraries instead? Any help would be appreciated, as a huge part of the project depends on Renderscript.

其他说明:

  1. 我在此项目中不使用androidX,因为它会弄乱renderscript,然后导致它与Google Play的64位要求不兼容.

  1. I do not use androidX in this project, as it messes up renderscript and then causes it to NOT be compatible for Google Play's 64-bit requirement.

我的gradle文件中的renderscript部分看起来像:

The renderscript part in my gradle file looks like:

renderscriptTargetApi 22
renderscriptSupportModeEnabled true

推荐答案

对于具有相同问题的任何人,这都是一个错误.使用渲染脚本时,链接器使用32位文件.已记录多个错误.如果您想跟踪,可以跟踪此处发生的情况: https://issuetracker.google.com/issues/142590626

To anyone having the same issue, this is a bug. When using renderscript, the linker uses the 32 bit file. Multiple bugs have been logged. If you want to keep track, you can follow what is happening over here: https://issuetracker.google.com/issues/142590626

抱着大拇指,他们很快就会解决!

Holding thumbs that they fix it soon!

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

UPDATE: They have fixed it in the latest buildtools version 29.0.3. You also need to update to Android Studio 3.6 to use it.

奖金:对于其他尝试更新至AndroidX AS WELL的人-Renderscript可能会在Android6上中断.有一种解决方法(据我所知),您在哪里将renderscriptSupportModeEnabled设置为false-但这并不能解决所有设备的问题(例如Xiomi Redmi go-Android 8.1-然后对我不利).

BONUS: For anyone else trying to update to AndroidX AS WELL - Renderscript might break on Android6. There is a workaround (as far as I can tell) where you set renderscriptSupportModeEnabled to false - but it doesnt fix it for ALL devices (eg. Xiomi Redmi go - Android 8.1 - then breaks for me).

这篇关于RenderScript在macOS Catalina(10.15)上损坏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆