Зачем использовать код armeabi-v7a над кодом armeabi?



в моем текущем проекте я использую несколько файлов. so. Они расположены в папке armeabi и armeabi-v7a. К сожалению, один из файлов. so-это 6MB, и мне нужно уменьшить размер файла. Вместо того, чтобы иметь файл fat APK, я хотел бы использовать только файлы armeabi и удалить папку armeabi-v7a.



согласно документации NDK, код armeabi-v7a является расширенным кодом armeabi, который может содержать дополнительные инструкции процессора. Это все выходит за рамки моего опыта, но я вопрос, почему хотелось бы иметь как armeabi-v7a, так и код armeabi. Должна же быть веская причина иметь и то и другое, верно?



на моих тестовых устройствах все это, кажется, работает нормально. Они имеют процессор ARM V7, в это. Это безопасно предположить, что все работает сейчас?

679   3  

3 ответов:

зависит от того, что делает ваш собственный код, но v7a поддерживает аппаратные операции с плавающей запятой, что имеет огромное значение. armeabi будет отлично работать на всех устройствах, но будет намного медленнее и не будет использовать возможности процессора новых устройств. Сделайте некоторые тесты для вашего конкретного приложения, но удаление двоичных файлов armeabi-v7a, как правило, не очень хорошая идея. Если вам нужно уменьшить размер, вы можете иметь два отдельных APK для более старых (armeabi) и более новых (armeabi-v7a) устройства.

EABI = встроенный двоичный интерфейс приложения. Это такие спецификации, которым исполняемый файл должен соответствовать для выполнения в конкретной среде выполнения. Он также определяет различные аспекты компиляции и компоновки, необходимые для взаимодействия между инструментов, используемых для архитектуры ARM. В этом контексте, когда мы говорим о норм мы говорим об архитектуре ARM и ОС GNU/Linux. Android следует за маленькой конечностью ARM GNU / Linux ДВОИЧНЫЙ.

приложение armeabi будет работать на ARMv5 (например, ARM9) и ARMv6 (например, ARM11). Вы можете использовать оборудование с плавающей запятой, если вы создаете свое приложение, используя правильные параметры GCC, такие как - mfpu=vfpv3-mfloat-abi=softfp который говорит компилятору генерировать инструкции с плавающей запятой для оборудования VFP и включает соглашения о вызовах с плавающей запятой. armeabi не поддерживает соглашения о вызовах с жестким плаванием (это означает, что регистры FP не используются для хранения аргументов для функции), но Операции FP в HW по-прежнему поддерживаются.

приложение armeabi-v7a будет работать на устройствах Cortex A#, таких как Cortex A8, A9 и A15. Он поддерживает многоядерные процессоры и поддерживает - mfloat-abi=hard. Итак, если вы создадите свое приложение с помощью - mfloat-abi=hard, многие из ваших вызовов функций будет быстрее.

вместо того, чтобы иметь файл fat APK, я хотел бы использовать только файлы armeabi и удалить папку armeabi-v7a.

противоположность является гораздо лучшей стратегией. Если у вас есть minSdkVersion до 14 и загрузить apk в play store, вы заметите, что вы будете поддерживать то же количество устройств, если вы поддерживаете armeabi или нет. Таким образом, нет устройств с Android 4 или выше, которые бы выиграли от armeabi на всех.

вероятно, поэтому Android NDK даже не поддерживает armeabi больше в соответствии с редакцией r17b.1

Comments

    Ничего не найдено.