到了年底,公司的事忙的差不多了。一年过去,在领域之外也感觉也没什么大的提升,之前一直想弄重新捡起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的编写格式,以后继续写。
本文记录了在JNI开发过程中遇到的环境配置、头文件引用、错误处理等问题,包括安装NDK、配置编译环境、创建Android.mk文件、使用javah生成头文件,以及解决在Android手机log中打印信息的难题。通过这些问题的解决,为后续的JNI开发提供了参考。

被折叠的 条评论
为什么被折叠?



