Android NDK: что я должен установить в Application.mk для APP_ABI?
Мне интересно, какие архитектуры я должен поместить в файл Application.mk моей Android-игры.
Я хочу поддерживать все возможные платформы, которые могут загружать игры в Google Play и других магазинах Android.
Я бы сказал, что я должен установить:
APP_ABI := armeabi x86 (as many x86 devices are coming soon as far as I know)
Но мне интересно, не следует ли устанавливать:
APP_ABI := armeabi armeabi-v7a x86
или
APP_ABI := all
Просьба пояснить.
Ответы
Ответ 1
Вы также можете указать mips
, который будет включен, когда вы используете all
.
armeabi
код может работать на устройствах armeabi-v7a
, но не наоборот. Поэтому вам не нужно armeabi-v7a
, если у вас есть armeabi
, но это позволит вам использовать аппаратные операции с плавающей запятой на некоторых устройствах.
Также обратите внимание, что чем больше архитектур вы включите, тем больше будет ваш APK. И если вы регулярно компилируете для всех платформ, ваши сборки будут занимать больше времени.
Взгляните на docs/CPU-ARCH-ABIS.html в вашей установке NDK для получения дополнительной информации о различных архитектурах.
Ответ 2
Я бы рекомендовал установить, как минимум, armeabi-v7a и x86.
armeabi-v7a охватывает большинство, возможно, всех, новейших устройств ручного управления, и предоставляет вам поддержку с плавающей запятой.
x86 охватывает всю текущую культуру устройств x86 (самой большой из которых является вкладка Galaxy Tab 3). Кроме того, Intel в течение этого года делает большой и очень общественный шаг в пользу доли рынка планшетов и, вероятно, будет более популярной в будущем.
Есть ряд эффектов этого. krsteve верен, это сделает ваши сборки немного медленнее (поскольку вы сейчас строите свою игру дважды, эффективно), и это сделает ваш APK больше (потому что вы вместе включаете двоичные файлы x86 и ARM вместе), однако, в большой схеме вещи, которые двоичные файлы, вероятно, будут затмеваны по размеру вашими активами, а если они не будут, то ваша игра вряд ли будет достаточно большой, чтобы в любом случае пересечь предел размера APK в Google Play.
Подводя итог:
- Используйте armeabi-v7a и x86 или используйте все
- Дополнительный размер apk будет
либо неактуальны или затмеваны вашим размером вашего актива.
-
Время сборки
будет увеличиваться, но это увеличивает количество устройств, которые вы можете поразить, поэтому
что кажется справедливым компромиссом