4 votes

Architecture du processeur hôte inconnue : arm64, Android NDK SiliconM1 Apple MacBook Pro

J'ai un projet qui fonctionne bien sous Windows os mais quand j'ai changé d'ordinateur portable et ouvert un projet existant dans MacBook Pro M1. Je ne parviens pas à exécuter un projet Android existant dans MacBook pro M1. J'ai d'abord eu le message suivant

Échec de l'exécution de la tâche ':app:kaptDevDebugKotlin'. > Un échec s'est produit lors de l'exécution de org.jetbrains.kotlin.gradle.internal.KaptExecution > java.lang.reflect.InvocationTargetException (pas de message d'erreur)

Cette erreur était due à la base de données Room. J'ai appliqué un correctif qui consistait à ajouter la bibliothèque ci-dessous avant la base de données Room et j'ai également changé l'emplacement de mon JDK de la structure de fichiers de JRE à JDK.

kapt "org.xerial:sqlite-jdbc:3.34.0"

   //Room components
    kapt "org.xerial:sqlite-jdbc:3.34.0"
    implementation "androidx.room:room-ktx:$rootProject.roomVersion"
    kapt "androidx.room:room-compiler:$rootProject.roomVersion"
    androidTestImplementation "androidx.room:room-testing:$rootProject.roomVersion"

après ça, j'ai maintenant un problème qui est Architecture du processeur hôte inconnue : arm64

il y a un SDK dans mon projet qui utilise cette ligne ci-dessous.

android {
    externalNativeBuild {
        ndkBuild {
           path 'Android.mk'
        }
    }
    ndkVersion '21.4.7075529'

}

[CXX1405] erreur lors de la construction avec ndkBuild en utilisant /Users/mac/Desktop/Consumer-Android/ime/dictionaries/jnidictionaryv2/Android.mk : La commande de construction a échoué. Erreur lors de l'exécution du processus /Users/mac/Library/Android/sdk/ndk/21.4.7075529/ndk-build avec arguments {NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=/Users/mac/Desktop/Consumer-Android/ime/dictionaries/jnidictionaryv2/Android.mk APP_ABI=arm64-v8a NDK_ALL_ABIS=arm64-v8a NDK_DEBUG=1 APP_PLATFORM=Android-21 NDK_OUT=/Users/mac/Desktop/Consumer-Android/ime/dictionaries/jnidictionaryv2/build/intermediates/cxx/Debug/4k4s2lc6/obj NDK_LIBS_OUT=/Users/mac/Desktop/Consumer-Android/ime/dictionaries/jnidictionaryv2/build/intermediates/cxx/Debug/4k4s2lc6/lib APP_SHORT_COMMANDS=false LOCAL_SHORT_COMMANDS=false -B -n} ERROR : Architecture du CPU de l'hôte inconnue : arm64

qui cause ce problème et chaque fois que je commente cette ligne

chemin "Android.mk

il commence à fonctionner correctement, y a-t-il un moyen de contourner ce problème qui m'aiderait à exécuter ce projet avec ce code sans avoir ce problème de NDK ?

Suivi des problèmes sur GitHub

5voto

Atif AbbAsi Points 1702

A résolu ce problème.

Finder -> Aller au dossier (/Users/mac/Library/Android/sdk/ndk/21.4.7075529) -> modifier maintenant ndk-build ouvrez-le dans un éditeur de texte et collez le code ci-dessous script et relancez votre projet.

de

#!/bin/sh
DIR="$(cd "$(dirname "$0")" && pwd)"
$DIR/build/ndk-build "$@"

à

#!/bin/sh
DIR="$(cd "$(dirname "$0")" && pwd)"
arch -x86_64 /bin/bash $DIR/build/ndk-build "$@"

Lien de référence

3voto

hannes ach Points 2031

Pour résoudre ce problème sur un Apple Silicon M1, j'ai trouvé trois options

A

Utilisez une version x86 d'Android Studio. Mais c'est lent

B

convertir votre ndk-build en un cmake construire

C

Changez votre ndk-build pour utiliser Rosetta x86. Recherchez votre ndk installé avec

find ~ -name ndk-build 2>/dev/null

par exemple

vi ~/Library/Android/sdk/ndk/22.1.7171670/ndk-build

et le changement

DIR="$(cd "$(dirname "$0")" && pwd)"
$DIR/build/ndk-build "$@

à

DIR="$(cd "$(dirname "$0")" && pwd)"
arch -x86_64 /bin/bash $DIR/build/ndk-build "$@

enter image description here

J'utilise l'option C et cela fonctionne bien.

Mais vous devriez vous en souvenir, quand cette https://github.com/Android/ndk/issues/1299 est résolu

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X