RenderScript unter macOS Catalina defekt (10.15)

10

Ich habe auf MacOS Catalina aktualisiert. Während ich heute Morgen an meinem Android-Projekt arbeitete, gab es plötzlich die folgende Ausnahme: "FEHLER: Ursache: Fehler = 86, fehlerhafter CPU-Typ in ausführbarer Datei".

Ich vermute es, weil ich auf macOS 10.15 aktualisiert habe UND weil ich versucht habe, die APK für mein Projekt zu erstellen (also hat es das Renderscript-Zeug neu erstellt). Hier ist die vollständige Stapelverfolgung angegeben:

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

und wenn ich eine Gradle-Synchronisierung mache, bekomme ich

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'

und

Execution failed for task ':app:compileDebugRenderscript'.

Beim Starten des Prozesses 'Befehl' /Users/name/Library/Android/sdk/build-tools/28.0.3/arm-linux-androideabi-ld '' ist ein Problem aufgetreten.

Gibt es eine Möglichkeit, Android Studio zu zwingen, stattdessen die 64-Bit-kompatiblen Versionen der Bibliotheken zu verwenden? Jede Hilfe wäre willkommen, da ein großer Teil des Projekts von Renderscript abhängt.

Zusätzliche Bemerkungen:

  1. Ich verwende androidX in diesem Projekt nicht, da es das Rendercript durcheinander bringt und es dann NICHT mit der 64-Bit-Anforderung von Google Play kompatibel macht.

  2. Der Renderscript-Teil in meiner Gradle-Datei sieht folgendermaßen aus:

    renderscriptTargetApi 22
    renderscriptSupportModeEnabled true
Zee
quelle

Antworten:

6

Für jeden, der das gleiche Problem hat, ist dies ein Fehler. Bei Verwendung von Renderscript verwendet der Linker die 32-Bit-Datei. Es wurden mehrere Fehler protokolliert. Wenn Sie den Überblick behalten möchten, können Sie verfolgen, was hier passiert: https://issuetracker.google.com/issues/142590626

Halten Sie Daumen, dass sie es bald beheben!

UPDATE: Sie haben es in der neuesten Buildtools-Version 29.0.3 behoben. Sie müssen auch auf Android Studio 3.6 aktualisieren, um es verwenden zu können.

BONUS: Für alle anderen, die versuchen, auch auf AndroidX zu aktualisieren - Renderscript kann unter Android6 nicht funktionieren. Es gibt eine Problemumgehung (soweit ich das beurteilen kann), bei der Sie renderscriptSupportModeEnabled auf false setzen - dies wird jedoch nicht für ALLE Geräte behoben (z. B. Xiomi Redmi go - Android 8.1 - bricht dann für mich ab).

Zee
quelle