RenderScript quebrado no macOS Catalina (10.15)

10

Eu atualizei para o MacOS Catalina. Esta manhã, enquanto eu trabalhava no meu projeto Android, de repente ele começou a dar a seguinte exceção: "ERRO: Causa: error = 86, tipo de CPU inválido no executável".

Eu suspeito disso porque atualizei para o macOS 10.15 E porque tentei criar o APK para o meu projeto (por isso, reconstruiu o material renderscript). Aqui está o rastreamento completo da pilha fornecido:

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

e ao fazer um Gradle Sync, recebo

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'

e

Execution failed for task ':app:compileDebugRenderscript'.

Ocorreu um problema ao iniciar o processo 'command' /Users/name/Library/Android/sdk/build-tools/28.0.3/arm-linux-androideabi-ld ''

Existe uma maneira de forçar o Android studio a tentar usar as versões compatíveis de 64 bits das bibliotecas? Qualquer ajuda seria apreciada, pois grande parte do projeto depende do Renderscript.

Notas Adicionais:

  1. Eu não uso o androidX neste projeto, pois atrapalha a renderização e, em seguida, faz com que NÃO seja compatível com os requisitos de 64 bits do Google Play.

  2. A parte renderscript no meu arquivo gradle se parece com:

    renderscriptTargetApi 22
    renderscriptSupportModeEnabled true
    
Zee
fonte

Respostas:

6

Para quem tem o mesmo problema, isso é um bug. Ao usar o renderscript, o vinculador usa o arquivo de 32 bits. Vários bugs foram registrados. Se você deseja acompanhar, pode acompanhar o que está acontecendo aqui: https://issuetracker.google.com/issues/142590626

Segurando os polegares, eles corrigem isso em breve!

ATUALIZAÇÃO: Eles o corrigiram na versão mais recente do buildtools 29.0.3. Você também precisa atualizar para o Android Studio 3.6 para usá-lo.

BÔNUS: Para qualquer outra pessoa que esteja tentando atualizar para o AndroidX COMO BEM - o Renderscript pode quebrar no Android6. Existe uma solução alternativa (até onde eu sei) em que você define o renderscriptSupportModeEnabled como false - mas não o corrige para TODOS os dispositivos (por exemplo, o Xiomi Redmi go - Android 8.1 - para mim).

Zee
fonte