2014-12-18 3 views
0

В мой проект включены собственные библиотеки, скомпилированные только для ARMv7. Когда я пытаюсь установить его на Samsung Galaxy Y (у которого есть ARMv6), я получаю ошибку INSTALL_FAILED_CPU_ABI_INCOMPATIBLE.Развертывание скомпилированного кода ARMv7 получает INSTALL_FAILED_CPU_ABI_INCOMPATIBLE

Однако я хочу, чтобы приложение было развернуто для всех устройств, независимо от того, у них есть ARMv7 или нет. Если целевым устройством является ARMv7, использование собственной библиотеки будет плюсом. Вот и все. Для остальных устройств приложение выполнит свою работу без вызова собственных методов. (Из-за libary имеет большой файл .so, я не хочу включать компиляции для других архитектур).

Любые идеи для преодоления этой ошибки? Как я могу сказать Android игнорировать собственные библиотеки, скомпилированные для разных архитектур, и сделать мой APK доступным?

PS. Я ищу soultions, а не «создание Mutiple APK-»

Благодарности

ответ

4

Так, посмотрев корыта документации NDK я нашел эту интересную подсказку (смотрите внутри папки НКА в документации/Programmers_Guide/html/md_3__key__topics__c_p_u__support__chapter_1-section_8__a_b_is .html):

  1. поместить вашу библиотеку в папке активов
  2. во время выполнения обнаружить архитектуру процессора с помощью этого Java вызов: String = арка System.getProperty ("os.arch");
  3. Если результат что-то вроде «armv71» скопировать экспромты из ваших активов в каталоге данных в Lib подкаталог:/данные/данные/< имяпакета_ >/Библиотека/
  4. Теперь вы можете смело называть System.loadLibrary (...)
Смежные вопросы