2015-05-28 9 views
1

Я знаю разницу в родной библиотеке между x86 и armeabi-v7a.Какой смысл использовать разные банки в Android?

Однако я нашел приложение, содержащее библиотеку jar в x86 и armeabi-v7a. Как я знаю, программы Java являются межплатформенными или независимыми от платформы. Так что же было бы с разными банками?

+2

Вы заглянули в эти JAR? Я предполагаю, что они содержат скомпилированные прикладные двоичные файлы. – CommonsWare

+0

@CommonsWare Я заглянул в эти JARs с помощью zip-инструмента. Существуют только файлы классов. что такое ** скомпилированные бинарные файлы приложения **? –

ответ

2

Библиотека, вероятно, использует Renderscript или интерфейсы с Android NDK в некотором роде. Как только вы покинете мир Java и погрузитесь в мир C/C++, ваш код может стать зависимым от платформы при использовании предварительно скомпилированного кода.

При использовании NDK вы должны скомпилировать отдельную версию своего кода для разных архитектур при создании, и Android выберет правильный вариант, основанный на архитектуре системы. Таким образом, каждый файл jar, скорее всего, содержит предварительно скомпилированный код, например, CommonsWare.

редактировать

Некоторые примеры предварительно скомпилированных кода:

  • Database library - Этот человек написал библиотеку базы данных в C++, потому что это быстрее, чем с помощью Java.
  • Digital Image Processing - Специализированный код, который может выполнять действия над растровыми изображениями, выполняет быстрее на C, чем на Java.

Все эти предварительно скомпилированные фрагменты кода скомпилированы для разных архитектур в двоичные файлы, чтобы их можно было запустить без необходимости их интерпретации в первую очередь. К ним обычно обращаются из кода C/C++, который не был предварительно скомпилирован, но живет где-то в приложении, которое включает в себя предварительно скомпилированный код. Он позволяет ключевым функциям жить изолированно в этих двоичных файлах.

+0

Можете ли вы взять несколько примеров о ** предварительно скомпилированном коде **? Благодарю. –

+0

@JerikcXIONG да, я добавил – roarster

+0

Означает ли это, что вы можете опубликовать приложение, которое содержит предварительно скомпилированные исполняемые файлы для разных архитектур, и когда придет время, андроид выберет, какой исполняемый файл использовать? Или вам нужно создавать разные версии приложения, каждый из которых поддерживает другую архитектуру? – Simas