
AndroidNDK
JQ_AK47
这个作者很懒,什么都没留下…
展开
-
[Android Studio1.5][NDK r13b]Execution failed for task ':app:compileDebugNdk'. Error Code:2
参考链接 1、在Windows下NDK一个bug,当jni下仅仅编译一个文件时出现会出现此问题,解决方法就是往jni文件夹加入一个空util.c文件即可。2、在app/build.gradle下面的android节点里面新增一个子节点。sourceSets.main { jniLibs.srcDirs 'libs' jni.srcDirs = []}实验有效原创 2016-11-29 09:46:37 · 765 阅读 · 0 评论 -
调用CallStaticObjectMethod报出JNI DETECTED ERROR IN APPLICATION: jclass is an invalid local reference:
最近遇到一个JNI的问题,一套代码在Android上首次运行是OK的,但是在第二次运行之后设备就会崩溃,查看logcat发现报JNI DETECTED ERROR IN APPLICATION错误。 (1)错误: accessed stale local reference 0x57200019 (index 6 in a table of size 6) JNI DETECTED ERROR原创 2016-12-03 20:50:00 · 6751 阅读 · 0 评论 -
NDK开发中获取java方法的签名方法
如果是工程下面的自定义类java方面签名: java方法签名的获取,通过进入<moduleName>/build/intermediates/classes/debug目录下面 执行 javap -s 全类名 获取如果是JDK下面java类的签名: 以Object类为例,只要在cmd下面执行,记得带上全类名就是了javap -s java.lang.Object原创 2016-12-02 16:48:48 · 1444 阅读 · 0 评论 -
NDK中开发中比较字符串是否相等,
/** 利用Java的String类来完成字符编码转换*/char* Jstring2CStr(JNIEnv* env,jstring jstr){ LOGI("enter CStr2Jstring 1"); char* rtn = NULL; jclass clsstring = (*env)->FindClass(env,"java/原创 2016-12-01 23:58:23 · 3613 阅读 · 0 评论 -
NDK数组操作-在C中直接操作java的数组
/** * jni对数组运算 * 在C中没有创建新的数组副本,直接在原来的java数组上面修改。然后返回了jintArray类型数据 */JNIEXPORT jintArray JNICALL Java_com_org_vincent_javacallc_JNI_increseArray (JNIEnv * env, jobject job, jintArray jarr){原创 2016-12-01 23:11:45 · 1144 阅读 · 0 评论 -
NDK开发jstring和Cstring转换工具方法(实践有效)
/** 利用Java的String类来完成字符编码转换*/char* Jstring2CStr(JNIEnv* env,jstring jstr){ LOGI("enter CStr2Jstring 1"); char* rtn = NULL; jclass clsstring = (*env)->FindClass(env,"java/原创 2016-12-01 22:55:38 · 2315 阅读 · 0 评论 -
Android Studio NDK开发在C代码中将Log输出到logcat上面
Android Ndk开发中在原生代码那边是不能用printf函数的,用了也输不出来。需要android提供的log.h服务。 第一步:在对应模块下的build.gradle文件中ndk节点配置需要加入log配置: ndk{ moduleName "javacallc" //so文件,编译生产的动态链接库文件自动加前缀lib ldLibs "l原创 2016-12-01 22:18:28 · 3238 阅读 · 0 评论 -
Android NDK中开发中字符串的处理
1、先来个失败案例 char *src=js;//js是java传递过来的字符串引用 char *c="I'm from Jnilib"; size_t length=strlen(src)+strlen(c); memcpy(realloc(src,length+1),c,strlen(c)); *(src+length)='\0'; return src;上原创 2016-11-30 18:27:40 · 1280 阅读 · 0 评论 -
windows平台下AS1.5_NDKr10d开发实例
JNI 是一个协议, NDK 是Android用于开发Jni的工具包 1、下载android-ndk-r13b-windows-x86.zip压缩文件,放到一个没有中文没有空格的目录下面,比如E:\AndroidDev\AndroidSDK。然后解压缩到当前目录下面 2、将ndk目录配置到系统环境变量path中,将E:\AndroidDev\AndroidSDK\android-ndk-r13b原创 2016-11-30 00:15:18 · 733 阅读 · 0 评论 -
jmethodID的NewGlobalRef(NewGlobalRef for jmethodID)和DeleteLocalRef
一开始我以为所有的引用在JNI中都是分成三个等级的引用分类。我的需求是为了提高全局jmethodID 变量在一个函数执行完后还可以用。所以用下面这个方法希望可以转换为全局引用。jobject (*NewGlobalRef)(JNIEnv*, jobject);但是总是报错JNI DETECTED ERROR IN APPLICATION: native code passing in ref原创 2016-12-03 22:43:30 · 7031 阅读 · 0 评论