1:生成jni目录
首先说一句网上,大部分博客这么写的:打开控制台,进入项目目录,运行
javah -classpath bin/classes -d jni com.example.hellojni.MainAcitivity
我只想问一句,这些代码您亲自运行成功了吗?您这么写出来责任心何在?
这么写你会遇到这个错误。
实际上可以这么写:
1: javah -classpath src -d jni com.itg.jni.ImageBlur
或写入android.jar的路径直接执行
2:javah -classpath C:\project\Android\adt-bundle-windows-x86_64-20131030\sdk\platforms\android-22\android.jar;bin/classes -d jni com.itg.jni.ImageBlur
然后你会在项目中得到jni文件夹及.h的文件
然后编写C文件。
3:右键jni文件 添加Android.mk文件
写入配置
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := JNI_ImageBlur LOCAL_SRC_FILES := com_itg_jni_ImageBlur.cpp LOCAL_LDLIBS := -ljnigraphics -llog include $(BUILD_SHARED_LIBRARY)
LOCAL_LDLIBS := -ljnigraphics -llog 这一句如果没用到BitMap不要添加。我的需求是,操作图片 如果没有这句汇报
在编译jni的cpp文件时出现:
jni/NDKtest.cpp:21: error: undefined reference to ‘AndroidBitmap_getInfo‘
jni/NDKtest.cpp:22: error: undefined reference to ‘__android_log_print‘
jni/NDKtest.cpp:26: error: undefined reference to ‘__android_log_print‘
jni/NDKtest.cpp:29: error: undefined reference to ‘AndroidBitmap_lockPixels‘
jni/NDKtest.cpp:30: error: undefined reference to ‘__android_log_print‘
jni/NDKtest.cpp:39: error: undefined reference to ‘AndroidBitmap_unlockPixels‘
collect2.exe: error: ld returned 1 exit status
make.exe: *** [obj/local/armeabi/libNDKtest.so] Error 1
2 下载NDK(Native Development Kit)
2:选中要生成so 文件的项目选择Property-->Builders-->New
设置Location,添加 ndk-build.cmd
设置working Directory 选择项目中jni目录
设置build Options
勾选如图所示
设置Specify Resources,直接选择jni文件夹即可。完毕,保存,ecplice会自动在armeabi文件夹下生成so文件