Какие устройства Android поддерживают jni?

Я разработал приложение для Android, которое использует JNI (собственный интерфейс java) для Archos 43.

У меня не было проблем, и я смог запустить приложение плавно. Позже я попытался запустить то же приложение на Samsung I9100G Galaxy S II, а также на Samsung I9100 Galaxy S II.

Мне удалось запустить приложение на I9100G, но не на I9100.

Причина в том, что часть приложения JNI не поддерживалась на I9100.

Я попытался выяснить причину этого и обнаружил, что I9100G использует Ti OMAP 4430 chipset и PowerVR SGX540 as GPU whereas I9100 uses Exynos 4210 chipset and Mali-400MP as GPU.

Подозреваю, что причина может быть в смене чипсета (поскольку Archos 43 также использует Ti OMAP). Но никаких дальнейших результатов по моему поиску получить не удалось.

обновить. Приложение использует Bluetooth. При попытке подключиться к настраиваемому оборудованию (CH) я не могу получить ответ от CH при запуске приложения на I9100. Часть связи Bluetooth написана с использованием jni.

Итак, мой вопрос: могу ли я запустить приложение с JNI на I9100 из-за набора микросхем, и если да, то почему?

Также более общий вопрос: какие устройства поддерживают приложения Android JNI и какие основные функции необходимы в устройстве для запуска приложения Android JNI? (Я потратил значительную часть своего времени, пытаясь найти ответы на все эти вопросы, и любая помощь будет принята с благодарностью.)

Спасибо.


person user1721904    schedule 05.10.2012    source источник
comment
Я работал над приложением, которое использует JNI, и без проблем использовал Samsung Galaxy S-2 GT-I9100 (с Android 4.0.3) для тестирования.   -  person Saurabh Verma    schedule 05.10.2012
comment
Какова роль jni в приложении?   -  person user1721904    schedule 05.10.2012
comment
Сканирование и индексация некоторых данных   -  person Saurabh Verma    schedule 05.10.2012
comment
Я предполагаю, что это может зависеть от архитектуры процессора, а не от поддержки Jni. Например, arm vs arm-v7 или neon или другие расширения ...   -  person Sdra    schedule 05.10.2012


Ответы (2)


Все устройства Android «поддерживают» JNI, именно так реализована большая часть ОС: сервисы и фреймворки Java, использующие собственные библиотеки через JNI. Однако существуют разные архитектуры, и если у вас есть собственный модуль, вам нужно убедиться, что вы создали его для каждой архитектуры, которую хотите поддерживать. Даже если вы ориентируетесь только на устройства ARM, существуют ARMv5 и ARMv7. ARMv5 должен работать на всех, но работает медленнее.

Устройства Galaxy SII, вероятно, используют ту же архитектуру, поэтому вы столкнулись с другой проблемой / ошибкой. Какие ошибки вы получили? Отправьте logcat, если он доступен. Может быть, вы пытаетесь получить доступ к оборудованию, которого нет на одном из устройств? Или ссылка на системные библиотеки, которые по какой-то причине отсутствуют?

person Nikolay Elenkov    schedule 05.10.2012
comment
Приложение использует Bluetooth. При попытке подключиться к настраиваемому оборудованию (CH) я не могу получить ответ от CH при запуске приложения на I9100. Часть связи Bluetooth написана с использованием jni. - person user1721904; 05.10.2012
comment
Затем вы должны сначала сосредоточиться на отладке этой части. Возможно, проблема в драйвере или Android (если на устройствах разные версии). - person Nikolay Elenkov; 05.10.2012
comment
Оба устройства работают под управлением Android версии 2.3.3, и приложение не работает на устройствах, поддерживающих что-либо меньшее, чем ARMv7. - person user1721904; 05.10.2012
comment
Хорошо, поэтому вам нужно найти основную проблему. Скорее всего, это не сам JNI. - person Nikolay Elenkov; 05.10.2012
comment
Часть приложения без jni работает на любом устройстве с версией Android выше 2.3. Только коммуникационная часть, написанная на jni, может работать только на определенных устройствах. - person user1721904; 05.10.2012
comment
Как я уже сказал, вам нужно выяснить, почему. Это не потому, что это JNI / собственный код, это потому, что он что-то делает (или не делает). Проверить, как он вылетает, проверить, все ли нужные библиотеки на месте, сделать дамп и т. Д. - person Nikolay Elenkov; 05.10.2012

Теперь, когда вы сообщили, что проблема может быть связана с BT на 2.3.3, все это имеет смысл. Интерфейс Android Bluetooth до 4.0 не был стандартизирован, и, скорее всего, ваш код специфичен для TI OMAP. Итак, если вы хотите поддерживать другие наборы микросхем, вам необходимо взаимодействовать с другими драйверами или целевыми устройствами с ICS и выше.

person Alex Cohn    schedule 05.10.2012
comment
Не могли бы вы уточнить, какие меры могут быть приняты? - person user1721904; 08.10.2012
comment
Скачал бы исходники цианогена для I9100 и найду, как они общаются по Bluetooth. - person Alex Cohn; 08.10.2012