macOS Catalina (10.15)에서 RenderScript가 중단됨


10

MacOS Catalina로 업데이트했습니다. 오늘 아침 내 Android 프로젝트에서 작업하는 동안 "ERROR : 원인 : error = 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 Sync를 수행하면

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 '프로세스를 시작하는 중에 문제가 발생했습니다.

안드로이드 스튜디오가 64 비트 호환 버전의 라이브러리를 대신 사용하도록 강요 할 수 있습니까? 프로젝트의 상당 부분이 Renderscript에 의존하므로 도움이 필요합니다.

추가 사항 :

  1. 이 프로젝트에서 androidX를 사용하지 않습니다. 렌더 스크립트를 엉망으로 만들고 Google Play의 64 비트 요구 사항과 호환되지 않기 때문입니다.

  2. 내 gradle 파일의 renderscript 부분은 다음과 같습니다.

    renderscriptTargetApi 22
    renderscriptSupportModeEnabled true

답변:


6

같은 문제가있는 사람에게는 이것이 버그입니다. 렌더 스크립트를 사용할 때 링커는 32 비트 파일을 사용합니다. 여러 버그가 기록되었습니다. 추적하려면 https://issuetracker.google.com/issues/142590626에서 진행중인 작업을 수행 할 수 있습니다.

그들이 곧 고칠 엄지 손가락을 잡고!

업데이트 : 최신 빌드 도구 버전 29.0.3에서 수정했습니다. 또한 사용하려면 Android Studio 3.6으로 업데이트해야합니다.

보너스 : AndroidX AS WELL로 업데이트하려는 다른 사용자의 경우 Android6에서 Renderscript가 중단 될 수 있습니다. renderscriptSupportModeEnabled를 false로 설정하는 해결 방법이 있지만 (모든 장치에 대해 수정하지는 않습니다 (예 : Xiomi Redmi go-Android 8.1-중단)).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.