升級Android Studio 3.2.1後,有NDK的專案遭遇錯誤ABIs [armeabi] are not supported for platform...

升級Android Studio 3.2.1後,如果你的專案有用到NDK的部分可能會遇到下列問題
ABIs [armeabi] are not supported for platform. Supported ABIs are [arm64-v8a, armeabi-v7a, x86, x86_64].
Error configuring CMake server (.....).
 (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!

這時候就是說ndk部分要修改[armeabi]成[arm64-v8a, armeabi-v7a, x86, x86_64]之一

找到module的build.gradle,因為我專案的NDK lib是arm 32bit,所以ndk部分改成
        ndk {
            abiFilters 'armeabi-v7a'
        }
        externalNativeBuild {
            cmake {
                abiFilters 'armeabi-v7a'

另外如果你的cmake原本有指定toolchain,也需要改一下,像是我的之前toolchain使用gcc,STL使用gnustl_static,他就會報"GCC is no longer supported. See
  https://android.googlesource.com/platform/ndk/+/master/docs/ClangMigration.md."
這版AS目前的ndk toolchain會用clang,而STL會用c++_static,不指定toolchain和stl就會自動套用。
        externalNativeBuild {
            cmake {
                arguments "-DANDROID_TOOLCHAIN=clang -DANDROID_STL=c++_static"

最後是CMakeList.txt部分,如果你有預先編譯(prebuilt)的lib,放置在jniLibs底下讓AS自己拷貝過去的話,要改成這些prebuilt lib的目錄,像我的arm 32bit就要從armeabi目錄改到armeabi-v7a,這樣AS才會將這些prebuilt lib放入進APK

留言