摘要:本文将带你了解Android应用开发之Android Jni遇到的常见异常和解决办法,希望本文对大家学Android有所帮助。
本文将带你了解Android应用开发之Android Jni遇到的常见异常和解决办法,希望本文对大家学Android有所帮助。
Android Jni遇到的常见异常和解决办法
local reference table overflow (max=512)
当使用了大量的局部引用而没有及时释放的话,就可能出现局部引用表溢出,所以变量用完以后回收一下就可以了,需要注意的是参数传的是jobject类型
?1(*env)->DeleteLocalRef(env, jobject);
input is not valid Modified UTF-8: illegal start byte 0xa9
当调用(*env)->NewStringUTF时会出现,是因为传进去的char*不是UTF-8,转成UTF-8即可;
还有一种方法是转成jbyteArray,传到Java后再转成String。
C
void test(const char *text) { int len = strlen(text); if (len > 0) { jbyteArray text_bytes = (*env)->NewByteArray(env, len); //将C字符串转成jbyteArray (*env)->SetByteArrayRegion(env, text_bytes, 0, len, (jbyte *) text); //回调给java (*env)->CallVoidMethod(env, jobject, "javaTest", text_bytes); (*env)->DeleteLocalRef(env, text_bytes); }}
Java
public void javaTest(byte[] textByteArray) { String text = new String(textByteArray);}
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注移动开发之Android频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号