Вероятно, использование «правильной» версии NDK - лучший выбор, а не использование слишком старой версии NDK.Одним из преимуществ использования версии NDK «ловить время» является адаптация к изменениям Android ABI , а также улучшения для изменений компилятора наряду с развитием версии Android API.Например,
- GCC больше не поддерживается.Он удален в NDK r18.
- Удалена поддержка ARMv5 (armeabi), MIPS и MIPS64.Попытка построить любой из этих ABI приведет к ошибке, начиная с r17.
Кроме того, почти всегда есть некоторые исправления ошибок и улучшения безопасности для каждой новой ревизии.Лично я не думаю, что есть большая добавленная ценность для того, чтобы придерживаться старой версии NDK.
Есть ли преимущество в не обновлении целевого NDK, который мы строим против
Возможно, преимущество в том, что вы не обновляете версию NDK, - делает ваш проект совместимым с теми историческими устройствами, которые скоро исчезнут .
Вы можете проверить примечания к выпуску NDK, чтобы понять его развитие.https://developer.android.com/ndk/downloads/revision_history
Что касается вашего беспокойства об armeabi-v7a, вот как оно официально заявлено https://developer.android.com/ndk/guides/abis#v7a.
- Редактировать -
Чтобы уточнить несколько вещей:
NDK ревизия: каждая ревизия обычно добавляет / удаляет функции и поддерживаемые платформы.В настоящее время последняя версия - r18b .По сравнению с r16b он удаляет платформы android-14 и android-15 .
minSdkVersion
: установить свойство minSdkVersion
в блоках defaultConfig
или productFlavors
вашего файла build.gradle
уровня модуля.Это гарантирует, что ваша библиотека используется только приложениями, установленными на устройствах с адекватной версией Android.
ANDROID_PLATFORM
Переменная CMake: эта переменная используется для указания имени целевого AndroidПлатформа.Например, android-18 указывает Android 4.3 (уровень API 18).У вас есть ДВА опции для настройки платформы Android, для которой вы строите, одна - это переменная CMake, другая - miniSdkVersion
.Также обратите внимание, что у CMake есть своя собственная логика выбора версии платформы best , НЕ обязательно равной указанной minSdkVersion
.
- Если существует версия платформы для ABI, равная
minSdkVersion
, CMake использует эту версию. - В противном случае, если существуют версии платформы ниже, чем
minSdkVersion
для ABI CMake использует самую высокую из этих версий платформы.Это разумный выбор, потому что отсутствующая версия платформы обычно означает, что с предыдущей доступной версии не было никаких изменений в API нативной платформы. - В противном случае, CMake использует следующую доступную версию платформы выше
minSdkVersion
.
Итак, когда вы обновляете вашу версию NDK и дважды проверяете, что ваша необходимая платформа Android существует в каталоге платформ NDK, например, android-ndk-r16b/platforms
,
Рекомендации: https://developer.android.com/ndk/guides/cmake