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

昨天在调试程序时,发现调用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层传递的字符串时,根据情况选择编码或解码操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值