Здравствуйте, эксперты StackOverFlow!
Я очень новичок в программировании для Android, и, к сожалению, мой первый проект в Android связан с использованием библиотек C++. Это сторонние библиотеки, и их нужно использовать. Кроме того, я не знаком с С++. Я успешно установил Android SDK (v4.2.2 и APIv 17) и NDK (android-ndk-r8e). Мне удалось скомпилировать код C++, создать проект eclipse и увидеть приложение, работающее на моем устройстве Android.
Но сегодня я узнал, что мне нужно скомпилировать директиву препроцессора C++, чтобы некоторые функции заработали. Насколько я понимаю, директива препроцессора C++ выполняется до фактической компиляции кода. Теперь, благодаря google, я узнал, что способ выполнения директивы препроцессора заключается в изменении файла makeall.sh, и я сделал следующее:
ARCH="armeabi armeabi-v7a mips x86"
LIBDIR=../../mpcore/lib.android/libs
tmpdir=`mktemp -d /tmp/$0.XXXXX`
for arch in $ARCH; do
/Users/Desktop/android-ndk-r8e/ndk-build LOCAL_CPPFLAGS:=-DUSE_ORIGINAL_BACKGROUND LOCAL_LDFLAGS=-L$LIBDIR/$arch APP_ABI=$arch
cp libs/$arch/libsample.so $tmpdir/libsample.so.$arch
done
for arch in $ARCH; do
cp $tmpdir/libsample.so.$arch libs/$arch/libsample.so
done
rm -rf $tmpdir
где USE_ORIGINAL_BACKGROUND — это имя моей директивы C++.
Когда я запускаю makeall.sh, он хорошо компилируется (по крайней мере, я не вижу никаких ошибок). Затем я открываю свой проект eclipse, обновляю его и создаю APK-файл. Но, к сожалению, я не вижу ожидаемых результатов.
Итак, мой вопрос ко всем: я что-то упустил? То, как я изменил свой makeall.sh, звучит правильно для вас?
Простите меня, если этот вопрос для вас очень элементарный, но он действительно поможет мне научиться и добиться прогресса в изучении Android. Спасибо всем заранее