Как работает свойство minSdkVersion
, смотрите цитаты из официальной документации :
- Если существует версия платформы для ABI, равная
minSdkVersion
, CMake использует эту версию.
В противном случае
- если существуют версии платформы ниже
minSdkVersion
для ABI, CMake использует самую высокую из этих версий платформы. Это разумный выбор, потому что отсутствующая версия платформы обычно означает, что не было никаких изменений в API нативной платформы с предыдущей доступной версии.
- В противном случае, CMake использует следующую доступную версию платформы выше
minSdkVersion
.
И это когда-либо упоминалось в ответе на другой ваш вопрос: Android Studio CMake / Ninja не используется для создания проекта NDK .
Я использую minSdkVersion = 21 для поддержки arm64. Я хотел бы изменить minSdkVersion на основе abiFilters, т.е. использовать 16 для v7 и 21 для arm64.
Насколько я понимаю, вы пытаетесь поддерживать более старые (уровень API ниже 21) 32-разрядные устройства без 64-разрядных собственных двоичных файлов. Я хотел бы сказать, что «productFlavor
» - правильное направление. Например. вы можете настроить конфигурацию Gradle, как показано ниже, для достижения ожидаемого результата:
android {
...
flavorDimensions "api", "mode"
productFlavors {
minApi16 {
dimension "api"
minSdkVersion 16
versionCode android.defaultConfig.versionCode
versionNameSuffix "-minApi16"
ndk {
abiFilters 'armeabi-v7a'
}
}
minApi21 {
dimension "api"
minSdkVersion 21
versionCode android.defaultConfig.versionCode
versionNameSuffix "-minApi21"
ndk {
abiFilters 'arm64-v8a'
}
}
}
...
}
minSdkVersion 16
и minSdkVersion 21
помогут вам выбрать наиболее подходящую версию NDK.
Редактировать # 1
Как выбрать разные minSdkVersion
для разных андроидов ABI?
minSdkVersion
- это свойство, указывающее минимальную версию Android, на которую может быть установлено ваше приложение. Для одного APK это безусловная характеристика. Итак:
- Если вы хотите, чтобы имел один единственный APK для поддержки всех устройств, начиная с API 16, тогда вам нужно установить
minSdkVersion
на 16.
- Если вы хотите, чтобы имел один APK для поддержки как 32-битных, так и 64-битных устройств, вы должны предоставить полный набор ALL общих библиотек для обеих 32 и 64-битный
Или же вы должны предоставить различные APK, разделенные по ABI и minSdkVersion
.