Интеграция работы с нативным кодом на С/С++ для android в Eclipce (на примере, под Ubuntu). – часть 2
10/06/2011 Добавить комментарий
Компиляция проекта.
1)Заходим в свойства проекта и выбираем пункт С/С++ Build. Убираем галочку Use default build comand и вписываем команду для сборки С/С++ части – «ndk-build»
Переходим на закладку Behavior и выставляем следующие галочки:
Убираем галочку clean — ndk чистит проект автоматически и не поддерживает данную комманду, ndk-build также не поддерживает команду all, поэтому ее стираем.
Нажимаете кнопку Apply и вам выдает ошибку в коде С++, потому что Eclipce не видит необходимых библиотек.
2) Добавляем пути. В этом же окне в категории C/C++ General->Paths and Symbols в закладке Includes в категории С и С++ указываем пути к библиотекам необходимой таргет версии ${ndk_dir}/platforms/android-${target_version}/arch-arm/usr/include. Где ${ndk_dir} директория ndk, а ${target_version} — цифра таргет версии.
А в закладке С++ добавляем путь к заголовочным stdlib файлам {ndk_dir}/sources/cxx-stl/gnu-libstdc++/include
3)Нажимаем Apply и соглашаемся собрать проект, в консоли видим следующее:
**** Build of configuration Default for project NativeExample ****
ndk-build
Gdbserver : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver
Gdbsetup : libs/armeabi/gdb.setup
Install : libnative_lab.so => libs/armeabi/libnative_lab.so
Что сигнализирует нам что нативная библиотека скомпилировалась и собралась удачно. В проекте при этом появилась папка obj в которую поместили нашу скомпилированную библиотеку libnative_lab.so
4)Помещаем вызов нашей библиотеки например в метод onCreate вашей активити:
String string="blablabla";
NativeLib lib = new NativeLib();
String result = lib.function(string.getBytes());
Log.i("NativeExample", result);
И нажимаем кнопку Run. И опять продолжение следует…


