2016-06-14 4 views
1

Итак, у меня есть .so, который включен в некоторые сборки, но не для других.На Android, который определяет abi, который используется для построения

My prebuild script удаляет .so, связанный .jar удаляет библиотеку из build.gradle.

Библиотека от третьего лица, и у меня нет контроля над запросом x86 или arm-v7. Он предоставляется мне только под руку.

Когда я создаю без поддержки библиотеки, я получаю ошибки в Xamarin Test, что для apk нет поддержки x86.

Что на самом деле контролирует, что api поддерживает apk.

ответ

0

Оказывается, что мой сценарий сборки предварительно фактически не удалить файл .so.

Это

гт -rf/ядро ​​/ SRC/основные/jniLibs

Не

гт -rf ядро ​​/ SRC/основные/jniLibs

2

Using Native Libraries документация на разработчиков портала Xamarin объясняет половину этого:

https://developer.xamarin.com/guides/android/advanced_topics/using_native_libraries/

The АБИС поддерживаемые Android приложения определяются наличием .so файлов внутри вашего APK, под lib/<ABI> папок где ABI может быть одним или несколькими armeabi, armeabi-v7a, arm64-v8a, mips, mips64, x86, x86_64 (текущие семь ABI).

Я лично использую приложение из Google Play Store, который помогает помочь в том, что файлы будут развернуты:

https://play.google.com/store/apps/details?id=com.xh.nativelibsmonitor.app

Так что же происходит, что большинство устройств, как правило, поддерживают несколько АБИС. Таким образом, вы получите список поддерживаемых ABI, которые Android Package Manager использует для установки файлов .so, которые предпочитает устройство.

В принципе, наилучшей практикой здесь является обеспечение размещения оптимизированных библиотек в каждой из <ABI> папок, перечисленных выше. Просто знайте, что, когда приложение будет установлено на устройстве, будет установлена ​​только одна из поддерживаемых архитектур.

Огромное спасибо http://ph0b.com/android-abis-and-so-files/ как человеко-удобочитаемый ресурс.

В противном случае более технический ресурс: https://developer.android.com/ndk/guides/abis.html

+0

Я не используя Xamarin SDK но мы пытаемся использовать инструменты тестирования Xamarin. Я считаю, что я удалил все элементы, которые должны использовать ABI, но я все еще получаю сообщение об ошибке, что APK поддерживает только руку. – draksia

+0

Это применимо и к Native Android. Ответ применяется к тому, что контролирует то, что abi поддерживается устройством. В вашей заявке указано, что тестируемое устройство не находит с поддержкой x86. Таким образом, APK не предоставляет никаких поддерживаемых , которые он ищет. –

+0

Если я не использую abi и просто java, то каждый тип должен поддерживаться правильно? – draksia