64-битный Android, 32-битное приложение с 32-битной собственной библиотекой

Допустим, у нас есть 64-битное оборудование с 64-битным ядром Linux и 64-битным Android.
Таким образом, Zygote будет работать как 64-битный процесс с собственным экземпляром DVM.

Теперь предположим, что существует стороннее приложение, которое содержит 32-битную собственную библиотеку, которая загружается во время выполнения с использованием system.loadlibrary вызов.

Я думаю, что когда мы попытаемся запустить это приложение, zygote сможет запустить процесс, а DVM сможет интерпретировать файл classes.dex, даже если apk был создан для 32-битной машины. Но произойдет сбой, когда приложение попытается загрузить 32-битную собственную библиотеку, поскольку на устройстве bionic libc и другие библиотеки будут все 64-битными.

Это понимание правильно?

1 ответ

Как я знал, 32-битные нативные библиотеки будут успешно работать на 64-битной ОС, если ОС поддерживает много 32-битных библиотек ( 32-битный dll Java Native Interface на 64-битной системе), а в системе Android ограничение ОС составляет 32 бита ( https://android.stackexchange.com/questions/36291/is-android-a-32-bit-or-64-bit-os), поэтому вам нужно скомпилировать 32 -битные собственные библиотеки.

Таким образом, 32-битные библиотеки должны быть 32-битными, если они работают на 64-битной ОС.

Другие вопросы по тегам