JNI с андроидом? - PullRequest
1 голос
/ 18 мая 2011

Эй, ребята! В последнее время я работаю над приложением c ++, которое должно работать на Android 2.1 и 2.2. поэтому мне интересно, если у меня есть законченное приложение на c ++, я могу просто поместить его в файл * .so, а затем создать проект Android и просто загрузить эту библиотеку, используя System.loadLibrary (blalba.so); это будет работать?

1 Ответ

1 голос
/ 18 мая 2011

Да, вам придется перекомпилировать все нативные библиотеки специально для Android. Да, вам нужен исходный код для всех сторонних собственных библиотек, которые вы планируете использовать просто потому, что обычно, когда мы компилируем и связываем эти библиотеки за пределами Android, они связаны с glibc, но, к сожалению, Android не использует glibc из-за проблем с лицензией и производительностью. Android использует разбавленную версию glibc под названием libc . Он имеет соответствующие имена символов для glibc для большинства обычных функций. Но, насколько я знаю, libc не имеет какой-либо функциональности, связанной со строками, и определенно не имеет поддержки posix. Если ваши нативные библиотеки используют какую-либо устаревшую функциональность, вам придется найти обходной путь для них, используя альтернативную функциональность, поддерживаемую libc, и соответствующим образом кодируя свои библиотеки.

Кроме того, как вы правильно заметили, вам придется использовать NDK для взаимодействия Java (Android app / fwk) с собственным миром (C ++).

Хотя по моему опыту это звучит довольно просто, компиляция нативных библиотек на Android (портирование Android) традиционно занимала много времени без какой-либо гарантии успеха.

...