J'ai mis à jour vers MacOS Catalina. Ce matin, alors que je travaillais sur mon Android, il a soudainement commencé à donner l'exception suivante: "ERREUR: Cause: erreur = 86, mauvais type de CPU dans l'exécutable".
Je le soupçonne parce que j'ai mis à jour vers macOS 10.15 ET parce que j'ai essayé de construire l'APK pour mon projet (donc il a reconstruit les trucs de rendu). Voici la trace complète de la pile donnée:
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
et en faisant une Gradle Sync, je reçois
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'
et
Execution failed for task ':app:compileDebugRenderscript'.
Un problème est survenu lors du démarrage du processus 'commande' /Users/name/Library/Android/sdk/build-tools/28.0.3/arm-linux-androideabi-ld ''
Existe-t-il un moyen de forcer Android studio pour essayer d'utiliser les versions compatibles 64 bits des bibliothèques à la place? Toute aide serait appréciée, car une grande partie du projet dépend de Renderscript.
Notes complémentaires:
Je n'utilise pas androidX dans ce projet, car il perturbe le rendu et le rend ensuite incompatible avec les exigences 64 bits de Google Play.
La partie de rendu de mon fichier gradle ressemble à ceci:
renderscriptTargetApi 22
renderscriptSupportModeEnabled true
Pour tous ceux qui ont le même problème, c'est un bug. Lors de l'utilisation du rendu, l'éditeur de liens utilise le fichier 32 bits. Plusieurs bogues ont été enregistrés. Si vous voulez garder une trace, vous pouvez suivre ce qui se passe ici: https://issuetracker.google.com/issues/142590626
Tenant les pouces qu'ils le réparent bientôt!
MISE À JOUR: Ils l'ont corrigé dans la dernière version de buildtools 29.0.3. Vous devez également mettre à jour vers Android Studio 3.6 pour l'utiliser.
BONUS: Pour toute autre personne essayant de mettre à jour vers AndroidX COMME BIEN - Renderscript peut casser sur Android6. Il existe une solution de contournement (pour autant que je sache) où vous définissez renderscriptSupportModeEnabled sur false - mais cela ne le résout pas pour TOUS les appareils (par exemple. Xiomi Redmi go - Android 8.1 - puis s'arrête pour moi) ).