ПРЕДУПРЕЖДЕНИЕ: ABIs [armeabi-v7a, armeabi], установленный флаг "android.injected.build.abi", содержит "ARMEABI", не нацеленный на этот проект
У меня была эта проблема в последний раз после обновления версии NDK до последней версии в Android Studio. Я также нашел решение, чтобы это исправить. Если у кого-то есть эта проблема, я надеюсь, что это лучший вопрос и ответ для вас. Пожалуйста, проверьте мой ответ.
Ответы
Ответ 1
Я нашел решение, прочитав примечание к выпуску NDK, редакция 16.
-
Если вы настраиваете свой проект с помощью Application.mk
просто добавьте следующее в файл Application.mk
:
APP_STL := c++_shared
-
Если вы используете CMake
через Gradle, добавьте в свой build.gradle следующее:
externalNativeBuild {
cmake {
cppFlags ""
arguments "-DANDROID_STL=c++_shared"
}
}
Чтобы быть в курсе новых выпусков и примечаний, следуйте этой истории изменений NDK, чтобы применить их с новыми изменениями.
Я надеюсь, что это может исправить вашу проблему.
Ответ 2
Согласно документации Android это известная проблема, связанная с тем, что плагин gradle по-прежнему включает неподдерживаемые ABI. armbeabi был объявлен устаревшим в NDKr16 и удален в r17, отсюда и предупреждение. Для исправления перечислите поддерживаемые архитектуры в splits.abi
:
...
splits {
abi {
...
reset()
include "x86", "armeabi-v7a", ...
}
}
Ответ 3
Получили ту же проблему и исправили путем изменения файла модуля build.gradle, добавив ниже настройки:
android {
...
splits {
abi {
enable true
reset()
include 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a' //select ABIs to build APKs for
universalApk true //generate an additional APK that contains all the ABIs
}
}
project.ext.versionCodes = ['armeabi': 1, 'armeabi-v7a': 2, 'arm64-v8a': 3, 'mips': 5, 'mips64': 6, 'x86': 8, 'x86_64': 9]
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
output.versionCodeOverride =
project.ext.versionCodes.get(output.getFilter(com.android.build.OutputFile.ABI), 0) * 1000000 + android.defaultConfig.versionCode
}
}
}
Для справки, удачи.