Второе, что я гарантировал, это то, что выравнивание сегментов ELF поддерживает размер страницы памяти 16 КБ. Я использовал команду llvm-objdump-18 на своем компьютере с Ubuntu Linux и выполнил следующую команду из корня проекта (когда проект был скомпилирован для отладки и приложение работало в режиме отладки):
Код: Выделить всё
find | grep '\.so$' | xargs -I{} -exec llvm-objdump-18 -p "{}" | grep 'LOAD'
Код: Выделить всё
LOAD off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**16
LOAD off 0x0000000001dd0240 vaddr 0x0000000001de0240 paddr 0x0000000001de0240 align 2**16
LOAD off 0x00000000026f2370 vaddr 0x0000000002712370 paddr 0x0000000002712370 align 2**16
LOAD off 0x0000000002784490 vaddr 0x00000000027b4490 paddr 0x00000000027b4490 align 2**16
LOAD off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**16
LOAD off 0x0000000001dd0240 vaddr 0x0000000001de0240 paddr 0x0000000001de0240 align 2**16
LOAD off 0x00000000026f2370 vaddr 0x0000000002712370 paddr 0x0000000002712370 align 2**16
LOAD off 0x0000000002784490 vaddr 0x00000000027b4490 paddr 0x00000000027b4490 align 2**16
Третье, в чем я убедился, — это то, что мое приложение отлично работает на виртуальном устройстве Android (AVD), поддерживающем размер страницы памяти 16 КБ, путем настройки нового API 36 AVD. Кажется, мое приложение работает хорошо, не приводя к каким-либо ошибкам.
Я читал предложения о том, что мне также нужно, чтобы ndkVersion был не ниже r28 или выше, чтобы мое приложение полностью поддерживало размер страницы памяти 16 КБ. Или, поскольку моя текущая версия ndkVersion "27.0.12077973" также правильно скомпилировала библиотеки .so, поддерживающие страницы размером 16 КБ, могу ли я быть уверен, что мое приложение будет работать без соответствующих ошибок на устройствах 16 КБ? Поскольку компиляция с выравниванием 16 КБ не используется по умолчанию для ndkVersions ниже r28, как моя используемая версия скомпилировалась правильно?
Ссылки:
- Поддержка размеров страниц 16 КБ
Подробнее здесь: https://stackoverflow.com/questions/797 ... equirement
Полная версия