macOS Catalina(10.15)でRenderScriptが壊れる


10

MacOS Catalinaにアップデートしました。今朝、Androidプロジェクトに取り組んでいたところ、突然次の例外が発生しました:「エラー:原因:エラー= 86、実行可能ファイル内の不正なCPUタイプ」。

macOS 10.15に更新したことと、プロジェクト用のAPKをビルドしようとしたため(renderscriptのものを再構築したため)、それは疑わしいものです。以下は、与えられた完全なスタックトレースです。

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の開始時に問題が発生しました

代わりに、Androidスタジオに強制的に64ビット準拠のバージョンのライブラリを使用させる方法はありますか?プロジェクトの大部分はRenderscriptに依存しているので、どんな助けでもありがたいです。

その他の注意事項:

  1. 私はこのプロジェクトでandroidXを使用していません。それは、それがrenderscriptを台無しにしてから、Google Playの64ビット要件に適合しないためです。

  2. 私のgradleファイルのrenderscript部分は次のようになります:

    renderscriptTargetApi 22
    renderscriptSupportModeEnabled true
    

回答:


6

同じ問題を抱えている人にとっては、これはバグです。renderscriptを使用する場合、リンカーは32ビットファイルを使用します。複数のバグが記録されています。追跡したい場合は、https//issuetracker.google.com/issues/142590626で何が起こっているかを追跡できます

彼らはすぐにそれを修正する親指を保持しています!

更新:最新のビルドツールバージョン29.0.3で修正されています。また、Android Studio 3.6にアップデートして使用する必要があります。

ボーナス:AndroidX AS WELLにアップデートしようとしている他の人にとって-RenderscriptはAndroid6で壊れる可能性があります。renderscriptSupportModeEnabledをfalseに設定する(私が知る限り)回避策がありますが、すべてのデバイス(たとえば、Xiomi Redmi go-Android 8.1-の場合は壊れてしまいます)では修正されません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.