NDK开发中的一些常见错误及解决办法

一、常见的几个错误及其解决办法

 

1. android.mk文件不存在
错误代码形如:
AndroidNDK: Your APP_BUILD_SCRIPT points to an unknown file: ./jni/Android.mk 
/cygdrive/h/heima6/jni2/ziliao/android-ndk-r7b/build/core/add-application.mk:133:*** Android NDK: Aborting...    。 停止。
解决办法:
创建Android.mk文件。
 
2.android.mk文件的配置信息有错误
错误代码形如:
***Android NDK: Missing LOCAL_MODULE before including BUILD_SHARED_LIBRARY injni/Android.mk    。 停止。
解决办法:
修改Android.mk文件中的错误。有时候可能是一些看不见的特色字符导致,可以删除后重新建立一个。
 
3.c代码语法出现错误,编译不通过Error1.
错误代码形如:
make:*** [obj/local/armeabi/objs/Hello/Hello.o]Error 1
解决办法:
检查C程序代码
 
4.java层c代码库没有找到
错误代码形如:
Causedby: java.lang.UnsatisfiedLinkError:Library Hell0 not found静态加载代码库的时候代码库没有找到.(调用库时出错)
解决办法:
检查库库的名字,看是否写错了。看
5.c代码函数签名出现错误(函数名出错)
错误代码形如:
Causedby: java.lang.UnsatisfiedLinkError: hello_from_c
解决办法:
C代码中函数名不合特定规范,改过来就行了。
 
6. 其他隐含错误
如:在C代码中视图去访问已经释放了的内存空间。
二、查错利器logcat,C代码中一样用
 
在C代码中同样可以使用logcat来输出错误信息,只需引入一些特定的库与文件即可。
1. 在Android.mk文件增加:
LOCAL_LDLIBS+= -llog         意思就是引入log库, 库存放在platforms\android-*\arch-arm\usr\lib下。(-l表示引入,log为库名)
 
2. C代码中增加
[cpp] view plaincopy
 
  1. #include <android/log.h>  
  2. #define LOG_TAG "System.out.c"  
  3. #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)  
  4. #define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)  
 
使用方法:
在C代码中直接像用printf一样来用LOGI()LOGD()中任意一个。
代码如下:
[cpp] view plaincopy
 
  1. //传递进x,y值, 返回二者之差. 这个是静态方法.  
  2. JNIEXPORT jint JNICALL Java_com_example_ndkjavadatatoc_NativeDataProvider_subInt(  
  3.         JNIEnv *env, jclass cla, jint x, jint y)  
  4. {  
  5.     //java 中 int 占 4个字节, 而c中也是占4个字节. 可以直接操作  
  6.     LOGI("x is %d", x);  
  7.     LOGI("y is %d", y);  
  8.     return x - y;  
  9. }  
 
三、中文乱码问题的解决办法
在NDK开发时,C代码中是不支持中文的。如果写中文的话,输出会是乱码。
 
解决办法
1. 只要将C代码存储为UTF-8的编码, 就可以用中文字符。而GBK是不可以的。(这种方法对比较新的NDK版本有效)
2. 低版本( 如ndk-r4)的NDK用的是iso-8859-1编码,需要进一步转换才能得到中文。
转换方法NewString(getStringFromC().getBytes(“iso-8859-1”),”utf-8”)。(其中getStringFromC()为native方法,从C代码中取中文字符)
 
 
 
xn4545945收集整理。
转载请注明出处:http://blog.csdn.net/xn4545945  

 

posted @ 2014-12-27 15:51  清风一曲  阅读(1133)  评论(0编辑  收藏  举报