2015-11-25 7 views
1

У меня есть несколько библиотек, которые используют собственные компоненты, библиотеки построены с NDK для 32-битных армейских архитектур.Android JNI: 32-разрядная совместимость с 64-битными устройствами?

теперь у нас есть 64-разрядные процессоры на современных устройствах, поэтому мне интересно, будут ли библиотеки работать. В моей ситуации у меня нет файлов исходного кода для родной библиотеки, а именно SO-файлов, я не могу их создать для 64-битных.

Так будут ли 32-битные библиотеки работать на 64-битных процессорах? или мне нужно их перестроить?

**

EDIT

** В моем случае у меня есть следующие:

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-разрядных версий всех из них.

+0

Большое спасибо, не могли бы вы проверить раздел «Редактировать» в вопросе и посоветовать мне, что делать? –

+0

Отредактирован ответ, чтобы уточнить, что вы можете просто удалить 64-разрядную версию других библиотек, пока у вас не будет 64-разрядных версий всех из них. – mstorsjo

+0

Большое спасибо, я попробую это и вернусь к вам –