Android JNI: 32-битная совместимость с 64-битными устройствами?
У меня есть несколько библиотек, которые используют нативные компоненты, библиотеки построены с NDK для 32-битных архитектур Arm.
Теперь у нас есть 64-битные процессоры на современных устройствах, поэтому мне интересно, будут ли работать библиотеки. В моей ситуации у меня нет файлов исходного кода нативной библиотеки, только файлы SO, я не могу собрать их для 64-битных версий.
Так будут ли 32-битные библиотеки работать на 64-битных процессорах? или я должен их перестроить?
**
РЕДАКТИРОВАТЬ
** В моем сценарии у меня есть следующее:
1- Я раздаю APK вручную, еще не публиковал в Google Play.
2. В проекте есть две собственные библиотеки: одна с поддержкой 64 и 32 бит, а другая только с 32 битами.
Есть ли способ заставить приложение работать на 64-битных устройствах без необходимости публикации в Google Play на данный момент? Могу ли я удалить 64-битные библиотеки, чтобы менеджер пакетов загружал 32-битные?
1 ответ
32-битные библиотеки будут отлично работать на 64-битных процессорах.
Пока библиотеки устанавливаются правильным / официальным способом (т. Е. Не загружаются вручную или не извлекаются из какой-либо нестандартной части в APK, но правильно упаковываются в APK), менеджер пакетов будет обнаруживать, что процесс использует 32-разрядные библиотеки, и процесс должен быть запущен в 32-битном режиме. Если нет, процесс будет запущен в 64-битном режиме, и позже он не сможет загрузить 32-битные библиотеки. (Если ваш APK будет содержать некоторые.so файлы, но не все, в 64-битном режиме, он будет только устанавливать их, и процесс будет запущен в 64-битном режиме. Поэтому, если все.so файлы не доступны для определенного ABI, не включайте ни одного из них).
Поэтому, если у вас есть 64-битная версия одной из собственных библиотек, просто удалите ее и поставляйте только 32-битную версию, пока у вас не появятся 64-битные версии всех них.