2015-11-09 3 views
0

Я пытаюсь импортировать сторонний .so в проект моей андроид-студии, но я не знаю, как это сделать.импорт .so в android studio error

Моя среда:

Ubuntu 14,04, Android-студия1,4, Gradle2.4, NDK r10e

так, Есть ли кто-нибудь может мне помочь? Большое спасибо.

, что я сделал:

  1. загрузить исходный код CCV (github.com/liuliu/ccv), а затем использовать руки-Linux-androideabi-GCC, чтобы получить файл libccv.so.
  2. скопировать файл libccv.so в папке/SRC/функция ccv_read_impl Главный/jniLibs/armeabi
  3. ИНТ основной деятельности, System.loadLibrary («ССГ»), а затем вызвать ККТ в.

но IDE говорит:

неопределенная ссылка на 'ccv_read_impl'

моя структура проекта выглядит так:

my project structure

в @sonic Сайед, добавляю системы. loadLibrary ("ccv") в моей MainActivity, но ошибка все еще существует.

Как я пытаюсь использовать простой .so, чтобы проверить, как его использовать. Я пишу функцию C add: int result (int a, int b) и делаю это libadd.so.the другие все как указано выше;

Информация

ошибка выглядит так: the error info and the code I call the function

+0

* «не сработало для меня» * является своего рода расплывчатым, не так ли? Не могли бы вы проанализировать шаг за шагом, где ваши результаты будут отличаться от ожидаемых? –

+0

да. У меня есть права на редактирование. – shiy10

+0

> но IDE говорит: * Неопределенная ссылка на 'ccv_read_impl' *. Где именно это говорит IDE? Может быть, лучше всего добавить скриншот с этим сообщением –

ответ

0

Помимо кривой обучения, как организовать среду с Android Studio, я боюсь, у вас есть основные контрольно-пропускной пункт здесь: в ccv librarydoes not have a suppored Java wrapper. Вы можете построить двоичный файл для Android, но вы не можете вызывать его функции непосредственно с Java.

Общая обертка может быть огромной инвестицией, но большой вклад в сообщество.С другой стороны, если вашему приложению требуется очень специфический ответ от Computer Vision, возможно, вы можете создать специализированную обертку JNI. Тем не менее, это не задача plug-and-play.

+1

Спасибо, что вы мне это поняли, я ошибался в этом ... – shiy10

2

Ресурс используется, кажется, хорошо.

Однако вы должны иметь ваш .so внутри /app/src/main/jniLibs/armeabi-v7 (если jniLibs или armeabi-v7 папки не существует, создайте их).

Вы можете проверить, есть ли у вашего пакета apk .so, запустив unzip -l path_to_your_apk. У вас должна быть одна строка, например your_lib.so.

Наконец, убедитесь, что вы загружаете свою библиотеку во время выполнения. Вы должны позвонить в какой-то момент System.loadLibrary("your_lib");

Вы также можете прочитать NDK guide из Google.

+0

ОК, я прочитаю путеводитель. – shiy10

Смежные вопросы