Android java层与jni之间字符串数据传递需进行编码解码操作
2013-03-27 14:08
941 查看
昨天在调试程序时,发现调用jni时,程序经常崩溃。开始一直找不到原因,不知道崩溃在什么地方。晚上加班时,请大牛帮我看问题,后来确认是java层与jni之间字符串数据传递,未对字符串进行编码解码操作。
附上log
解决办法,java层在调用jni接口前,将需要传递的字符串进行编码, 使用URLEncoder.encode(string)进行编码。当然java层在获取jni接口返回的字符串时也需要对该字符串进行解码,使用URLDecoder.decode(string)进行解码。jni层内部在使用java层传递的字符串时,根据情况选择编码或解码操作。
附上log
03-27 10:16:13.711: W/dalvikvm(1359): JNI WARNING: input is not valid Modified UTF-8: illegal start byte 0xbe 03-27 10:16:13.711: W/dalvikvm(1359): string: 03-27 10:16:13.711: E/dalvikvm(1359): VM aborting 03-27 10:16:13.736: A/libc(1359): Fatal signal 11 (SIGSEGV) at 0xdeadd00d (code=1)
解决办法,java层在调用jni接口前,将需要传递的字符串进行编码, 使用URLEncoder.encode(string)进行编码。当然java层在获取jni接口返回的字符串时也需要对该字符串进行解码,使用URLDecoder.decode(string)进行解码。jni层内部在使用java层传递的字符串时,根据情况选择编码或解码操作。
相关文章推荐
- Android使用JNI实现Java与C之间传递数据
- Android使用JNI实现Java与C之间传递数据
- Android使用JNI实现Java与C之间传递数据
- JNI:在java和c之间进行数据传递
- Android使用JNI实现Java与C之间传递数据
- Android使用JNI实现Java与C之间传递数据
- Android使用JNI实现Java与C之间传递数据(转)
- Android使用JNI实现Java与C之间传递数据
- Android使用JNI实现Java与C之间传递数据
- 【郭林专刊】JNI实现Java与C之间传递数据 ==============android
- Android使用JNI实现Java与C之间传递数据
- Android使用JNI实现Java与C之间传递数据
- Android使用JNI实现Java与C之间传递数据
- Android使用JNI实现Java与C之间传递数据
- android jni中将大数据回调到java层的时候用法,比如视频流,音频流等,图片流等 比如我用ffmpeg解码好视频流,想送到java层使用opengGL进行显示,opencv进行人脸识别等等
- Android使用JNI实现Java与C之间传递数据
- 在java和c之间进行数据传递 之 JNI
- Android使用JNI实现Java与C之间传递数据
- android(NDK+JNI)---Android使用JNI实现Java与C之间传递数据
- Android使用JNI实现Java与C之间传递数据