ПРЕДУПРЕЖДЕНИЕ: ABIs [armeabi-v7a, armeabi], установленный флаг "android.injected.build.abi", содержит "ARMEABI", не нацеленный на этот проект

У меня была эта проблема в последний раз после обновления версии NDK до последней версии в Android Studio. Я также нашел решение, чтобы это исправить. Если у кого-то есть эта проблема, я надеюсь, что это лучший вопрос и ответ для вас. Пожалуйста, проверьте мой ответ.

Ответы

Ответ 1

Я нашел решение, прочитав примечание к выпуску NDK, редакция 16.

  1. Если вы настраиваете свой проект с помощью Application.mk просто добавьте следующее в файл Application.mk:

    APP_STL := c++_shared
    
  2. Если вы используете 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
        }
    }
}

Для справки, удачи.