JNI开发中遇到的各种问题

来源:互联网 发布:维护网络数据的 编辑:程序博客网 时间:2024/05/23 15:40

到了年底,公司的事忙的差不多了。一年过去,在领域之外也感觉也没什么大的提升,之前一直想弄重新捡起C++/C的愿望始终无法实现。

这一年开始便各种事情。。。一直到现在才按照网上的各种教程写了个JNI的代码。其中也遇到不少问题。现一一记录下来,以备后用。


首先安装环境,网上有教学、简单说一下跳过:下载安装NDK,cygwin,MinGW,eclipse CDT插件。


新建一个C++工程,添加编译器:NDK的编译环境配置路径:android-ndk-r9\ndk-build.cmd 

创建好了之后编写Android.mk 文件,ndk-build会自动找到这个文件进行解析。


要使用native方法的类编译成class文件 然后使用命令行 javah -jni  完整类名,生成".h"文件


在生成的“h文件”的方法名照抄到"cpp文件",如:

h文件的:

JNIEXPORT void JNICALL Java_com_demo_jni_HelloWorld_displayHelloWorld

 (JNIEnv *, jobject);

变为cpp文件的:(在方法体内实现功能)

JNIEXPORT void JNICALL Java_com_demo_jni_HelloWorld_displayHelloWorld

(JNIEnv *env, jobject obj) {


        char *__android_log_print(ANDROID_LOG_INFO, "HelloWorldTest", "Hello world!/n");
printf("Hello world!/n");
return;
}

这个方法是无法再android手机的log中打印出结果的。要调用android的log库

此时要导入#include <android/log.h>,会报没有找到include的资源的错

这时候在项目中添加folder linked (2):


1:E:\android-ndk-r9\platforms\android-18\arch-arm\usr\include

2:E:\android-ndk-r9\toolchains\arm-linux-androideabi-4.8\prebuilt\windows-x86_64\lib\gcc\arm-linux-androideabi\4.8\include


注意,如果出现

Android NDK: Could not find application project directory !    
Android NDK: Please define the NDK_PROJECT_PATH variable to point to it.    
E:\android-ndk-r9\build/core/build-local.mk:130: *** Android NDK: Aborting    .  Stop.

说明已经成功了

在工程的/libs目录会出现正确的so文件

关于android.mk的编写格式,以后继续写。



0 0