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-битной ОС.