J'utilise du code JNI dans mon projet avec abiFilters
comme ci-dessous
apply plugin: 'com.Android.application'
Android {
compileSdkVersion 28
defaultConfig {
applicationId "com.example.intel.hellojni"
minSdkVersion 15
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
cppFlags ""
}
}
ndk {
abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
}
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.Android.support:appcompat-v7:+'
implementation 'com.Android.support.constraint:constraint-layout:1.1.3'
androidTestImplementation 'com.Android.support.test:runner:1.0.2'
androidTestImplementation 'com.Android.support.test.espresso:espresso-core:3.0.2'
}
cela fonctionne bien dans un système, mais après avoir déplacé un code vers un autre système, il affiche l'erreur ci-dessous pour l'importation, j'ai vérifié avec le nouveau projet créé qu'il contient la même erreur
ABIs [armeabi, mips] are not supported for platform. Supported ABIs are [armeabi-v7a, arm64-v8a, x86, x86_64].
Build command failed.
Error while executing process F:\sdk\cmake\3.6.4111459\bin\cmake.exe with arguments {-HC:\Users\Intel\Downloads\TestJNI\app -BC:\Users\Intel\Downloads\TestJNI\app\.externalNativeBuild\cmake\debug\armeabi -DANDROID_ABI=armeabi -DANDROID_PLATFORM=Android-15 -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=C:\Users\Intel\Downloads\TestJNI\app\build\intermediates\cmake\debug\obj\armeabi -DCMAKE_BUILD_TYPE=Debug -DANDROID_NDK=F:\sdk\ndk-bundle -DCMAKE_CXX_FLAGS= -DCMAKE_TOOLCHAIN_FILE=F:\sdk\ndk-bundle\build\cmake\Android.toolchain.cmake -DCMAKE_MAKE_PROGRAM=F:\sdk\cmake\3.6.4111459\bin\ninja.exe -GAndroid Gradle - Ninja}
(include) CMakeLists.txt
Open File
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!
si je supprime armeabi
et mips
comme ci-dessous alors ça marche
ndk {
abiFilters "armeabi-v7a", "x86"
}
J'ai déjà installé CMake et NDK pour Android studio.
Comme le message l'indique, ces ABI ne sont plus pris en charge par le NDK. Ceci est mentionné dans le NDK r17 changelog :
La prise en charge d'ARMv5 (armeabi), MIPS et MIPS64 a été supprimée. Toute tentative de création de l'un de ces ABI entraînera une erreur.
Comme d'autres l'ont dit, il n'y a pas un nombre important d'appareils qui bénéficient du ciblage de ces ABI.
armeabi n'est plus pris en charge par NDK. Supprimer l'armeabi du build gradle ou le remplacer par les ABI pris en charge, par exemple 'x86'