猴子请来的救兵

http://github.dyhdyh.com

Android Jni常见异常解决

转载请注明出处:
http://blog.csdn.net/aa464971/article/details/80589053

local reference table overflow (max=512)

当使用了大量的局部引用而没有及时释放的话,就可能出现局部引用表溢出,所以变量用完以后回收一下就可以了,需要注意的是参数传的是jobject类型

(*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);
}
阅读更多
版权声明:欢迎关注我的Github:https://github.com/dengyuhan,转载请注明出处,欢迎转载 https://blog.csdn.net/aa464971/article/details/80589053
文章标签: android jni ndk 异常
想对作者说点什么? 我来说一句

Weblogic9异常解决nested errors.txt

2010年12月25日 5KB 下载

android 应用\JNI 技术

2011年05月24日 211KB 下载

Android NDK JNI 经典实例

2011年04月14日 85KB 下载

android JNI 学习笔记.doc

2012年03月03日 37KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭