
jni
文章平均质量分 96
陆业聪
腾讯高级客户端工程师。这里有大前端的经验分享和技术干货。关注公众号“陆业聪”,获取最新技术文章。
展开
-
深入了解android平台的jni---注册native函数
注册native函数有两种方法:静态注册和动态注册。1、静态注册方法根据函数名找到对应的JNI函数:Java层调用函数时,会从对应的JNI中寻找该函数,如果没有就会报错,如果存在则会建立一个关联联系,以后在调用时会直接使用这个函数,这部分的操作由虚拟机完成。静态方法就是根据函数名来遍历java和jni函数之间的关联,而且要求jni层函数的名字必须遵循特定的格式,其缺点在于:1)转载 2015-03-09 18:52:18 · 531 阅读 · 0 评论 -
安卓中如何把普通文件打包进apk并且JNI中能自己读取文件内容
最近遇到这样的需求,安卓的JNI中需要读某些二进制文件,文件名通过java层传给JNI。之前是把这些文件放在sd卡下,但是最后要给别人安装肯定是要把这些文件都打包再apk中才行。开始尝试把它们放在accest目录,但是这个目录的文件没有一个再c++中能读到的文件名。解决办法:1、libs目录里的共享库是会烤到/data/data//lib/下的,于是我们可以把需要再c++中读取的文原创 2015-03-26 22:59:36 · 2933 阅读 · 0 评论 -
共享库查找过程
在开源系统中,包括所有的Linux系统在内的很多都是基于Glibc的。在这些系统里面,动态链接的ELF可执行文件在启动是同时会启动动态链接骑。在Linux系统中,动态链接器是/lib/ld-linux.so.X(X是版本号),程序所依赖的共享对象全部由动态链接器负责装载和初始化。任何一个动态链接的模块所依赖的模块路径保存在“.dynamic”段里,由DT_NEED类型的项表示。动态链接器对于模块的转载 2015-03-25 16:32:05 · 973 阅读 · 0 评论 -
定位NDK中出错的地方
ndk里如果出错了,在eclipse的logcat上只能看到一个信号量,之前通过log去定位出错的位置,效率非常低下。今天发现其实android提供了ndk-stack的工具来打印出错堆栈,可以迅速定位到出错的函数。ndk-stack在ndk工具包中,下载地址:http://developer.android.com/tools/sdk/ndk/index.html#Installing原创 2015-03-23 20:33:09 · 527 阅读 · 0 评论 -
NDK开发中遇到的字节对齐问题
最近花了几天调出来NDK开发中的一个Bug,先看log日志:03-24 15:37:04.373: A/libc(21474): Fatal signal 7 (SIGBUS) at 0x52d26f1a (code=1), thread 21474 (ample.speechapi)在c++中用一个float指针指向地址0x52d26f1a,一读取就有SIGBUS异常。在电脑上的x8原创 2015-03-25 11:33:14 · 1885 阅读 · 0 评论 -
Android平台Native代码的崩溃捕获机制及实现
在Android平台,native crash一直是crash里的大头。native crash具有上下文不全、出错信息模糊、难以捕捉等特点,比java crash更难修复。本文将详细阐述Android平台上Native代码的崩溃捕获机制原理,以及如何实现Native崩溃捕获组件。原创 2017-01-07 21:19:41 · 20090 阅读 · 37 评论