您的位置:首页 > 移动开发 > Android开发

Android java层与jni之间字符串数据传递需进行编码解码操作

2013-03-27 14:08 941 查看
昨天在调试程序时,发现调用jni时,程序经常崩溃。开始一直找不到原因,不知道崩溃在什么地方。晚上加班时,请大牛帮我看问题,后来确认是java层与jni之间字符串数据传递,未对字符串进行编码解码操作。

附上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层传递的字符串时,根据情况选择编码或解码操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: