1、背景介绍
最近有个项目,需要客户端发送短信,但是被360提示报毒了,还有一个问题就是不太安全,怎么办呢?这个时候,我们的处理方式是使用了JNI调用Java方法,来发送短信。但是在编译的过程中,出现了几个问题,这里来简单总结一下。
2、问题一
2.1 出错信息
这里直接贴出错误代码,以搜索引擎的强大,会很快就搜出来。
Android NDK: WARNING: APP_PLATFORM android-17 is larger than android:minSdkVersion 11 in ./AndroidManifest.xml
[armeabi-v7a] Compile thumb : sendmsg <= sendmsg.c
jni/sendmsg.c: In function 'Java_com_hello_jni_utils_JniUtils_sendSms':
jni/sendmsg.c:14:23: error: request for member 'FindClass' in something not a structure or union
jni/sendmsg.c:16:22: error: request for member 'GetStaticMethodID' in something not a structure or union
jni/sendmsg.c:18:20: error: request for member 'NewObject' in something not a structure or union
jni/sendmsg.c:21:8: error: request for member 'GetMethodID' in something not a structure or union
jni/sendmsg.c:25:7: error: request for member 'CallVoidMethod' in something not a structure or union
make.exe: *** [obj/local/armeabi-v7a/objs/sendmsg/sendmsg.o] Error 1
2.2 问题解析
这个错误当中,主要的问题是,找不到这个方法。但是我明明在系统中定义了该方法呀,哪里出错了呢?我仔细检查了代码,发现代码并没有调用额外的方法,我在文件的头部也包含了相关头文件,如:
<