Android NDK: Как собрать для ARM64-v8a с minimumSdkVersion = 19

У меня есть проект библиотеки Android, часть которого написана на C/C++ через Android NDK. Я хочу создать собственный код для всех архитектур. Если я устанавливаю minSdkVersion на 21, все работает нормально. но мне нужно иметь более низкий minSdkVersion (SDK 19), если я установлю minSdkVersion на 19, версия ARM64-v8a не будет собрана. Я знаю, что нет устройств ARM64-v8a с SDK 19. Как я могу добиться, чтобы все платформы были построены в одном APK и имели minSdkVersion 19?


person emKaroly    schedule 12.12.2016    source источник


Ответы (1)


На самом деле в "minimumSdkVersion" опечатка. Правильный атрибут: "minSdkVersion".

Однако библиотека arm64-v8a должна быть успешно собрана для API 19. , потому что скрипты сборки NDK автоматически берут правильный набор заголовков и библиотек платформы.

Если вы используете скрипты сборки Gradle, попробуйте установить его в качестве одного из целевых ABI:

ndk { abiFilters 'arm64-v8a', 'armeabi-v7a' }

Затем явно укажите целевую платформу для нативной сборки.
Если вы используете CMake, то в скрипте gradle установите:

externalNativeBuild { cmake { arguments '-DANDROID_PLATFORM=android-19' } }

Если вы используете ndk-build, то в своем Application.mk установите:

APP_PLATFORM := android-19


Надеюсь, это поможет. Пожалуйста, напишите подробности, если не будет строиться.

person Sheikh    schedule 14.12.2016
comment
Вы правы, это minSdkVersion, но сборка не создает библиотеки arm64-v8a, если я устанавливаю для minSdkVersion значение 19. И только изменение его обратно на 21 заставляет gradle создавать эти файлы arm64 .so - person emKaroly; 15.12.2016
comment
Я обнаружил, что ранее в Android Studio 2.0.x была ошибка. См. здесь ошибку. Что вы используете? Представить подробную информацию. - person Sheikh; 15.12.2016
comment
Я использую Android Studio 2.2.3 и экспериментальный плагин Gradle 0.8.2. Итак, в основном, что мне нужно сделать, это установить для minSdkVersion значение 21 и индивидуально установить 19 для каждой платформы, кроме arm64-v8a. - person emKaroly; 15.12.2016
comment
О, у экспериментального плагина хватает проблем. Да, в основном, вам нужно будет отделить вашу сборку. Вот интересная ссылка, как ребята борюсь с экспериментальным плагином. - person Sheikh; 16.12.2016
comment
Ну, я тоже борюсь с экспериментальным плагином. Я хотел бы перевести проект на стабильную версию. Я также задал несколько вопросов об этом, но без особого успеха. вопрос1 вопрос2 - person emKaroly; 16.12.2016