
Android-NDK
Joney小鬼
做自己爱做的事
展开
-
Android-jni(1)-环境配置
一. Android Studio配置(一) 组件下载要使用和调试,先下载NDK组件:NDK包:这套工具集允许您为 Android 使用 C 和 C++ 代码,并提供众多平台库,让您可以管理原生 Activity 和访问物理设备组件,例如传感器和触摸输入。cmake:一款外部构建工具,可与 Gradle 搭配使用来构建原生库。如果您只计划使用 ndk-build,则不需要此组件。LL...原创 2018-11-20 21:52:40 · 191 阅读 · 0 评论 -
Android-jni(7)-反编译异常查看源代码位置
在我们平时出现ndk异常,光是看错误是看不懂的,比如以下错误:A/libc: stack corruption detected (-fstack-protector)A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 9466 (shixin.ndkdemo)2018-12-02 22:27:41.096 2670-2990/com.googl...原创 2018-12-03 22:50:06 · 2500 阅读 · 0 评论 -
Android-jni(6)-常见错误异常
NDK异常信息一般有三个要素:信号调用栈信息寄存器信息比如一下是一个空指针的错误信息: A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 31286 (shixin.ndkdemo)I/crash_dump32: obtaining output fd from tombstonedI//system...原创 2018-12-03 22:48:19 · 10629 阅读 · 4 评论 -
Android-jni(9)-jni修改传入数组的值
经常使用jni的时候,传入一个数组用于接收数据,jni在计算完成之后,把数据给塞到传入的数组中,java层使用该数据,看看使用方式。修改传入数组值利用SetXXArrayRegion方法,XX代表各个类型比如Bytejava代码://修改传入字段测试 byte[] bytes = new byte[8]; testSetInField(bytes...原创 2018-12-05 23:15:36 · 1544 阅读 · 0 评论 -
Android-jni(8)-jni调用java异常处理
咱们jni中异常了,前面说到了崩溃,除了jni中异常,前面文章说到了jni调用java,那么调用java代码执行异常了又是什么情况,怎么处理,这一篇记录学习了。一. 异常产生情况Java的异常处理我想大家都很清晰了,有编译时的异常,比如操作File的时候会有FileNotFoundException,运行时异常,比如IllegalArgumentException等,然而在jni中依旧有该这些...原创 2018-12-04 22:35:40 · 1259 阅读 · 0 评论 -
Android-jni(5)-Jni调用实例方法
上一篇看了jni调用静态方法和修改静态字段,这一篇学习了jni调用实例方法和修改实例字段调用实例方法,步骤:找到类:利用FindClass,找到类找到要调用的方法id:利用GetMethodID,找到方法id创建实例对象:利用实例对象的构造方法id来创建使用实例对象去调用对应的Method:CallVoidMethod修改实例字段,步骤:找到类:利用FindClass,...原创 2018-11-25 14:39:54 · 623 阅读 · 0 评论 -
Android-jni(4)-C调用Java静态方法修改静态字段
一. jni交互相关-方法签名方法签名在jni的使用中经常都会用到,在java中会有重载,那么定位到一个方法的方式:类+方法名称+方法签名,那么我们先学习下签名规则:基本类型签名:咱们基本类型有各自的签名,如下表类型名签名booleanZbyteBcharCshortSintIlongJfloatFdouble...原创 2018-11-24 11:26:33 · 919 阅读 · 0 评论 -
Android-jni(3)-原生方式打印Logcat
咱们打印日志,Android通常是打印到logcat中,Android有自己的一套日志系统,c里面如果调用printf,包括c++中的cout等等都不能打印到logcat中。所以我们需要使用Android提供给我们的日志库来打印到logcat中CMakeLists.txt引入log库:# 用于定位NDK中的库,比如这里的Log库find_library( # Sets the name ...原创 2018-11-20 21:57:34 · 1157 阅读 · 0 评论 -
Android-jni(2)-第一个native方法
在前面讲了基础配置,那么接下来开始使用了:第一个native方法在第一篇中配置完cmake后,笔者在MainActivity中创建来了一个native方法:package shixin.ndkdemo;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widg...原创 2018-11-20 21:55:22 · 317 阅读 · 0 评论 -
Android-jni(10)-jni调用java父类方法
jni调用java父类方法,在知道这个之后,我感觉jni能做的事真是厉害。我们一起来看看它与java的不同一. jni调用java父类方法先做个准备:准备一个Java父类和子类,People和Beibi:public class People { private static final String TAG = People.class.getSimpleName(); ...原创 2018-12-06 22:26:58 · 645 阅读 · 1 评论