![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android JNI/NDK
文章平均质量分 79
匆忙拥挤repeat
倦鸟就此散 余花怎不乱 物是人已非 落寞
红尘难看破 美梦成真否 镜花水月尔 迷惘
展开
-
Android Studio JNI 流程
1. 在Android code中,加载so库,添加native方法package com.stone.jni;import android.app.Activity;import android.os.Bundle;import android.widget.TextView;/** * author : stone * email : aa86799@163.com原创 2016-03-08 11:37:38 · 1477 阅读 · 0 评论 -
Android 各 api 级别与ndk 原生 api对照表
文章目录各 api 级别与原生 api对照表各 api 级别与原生 api对照表去上表原创 2019-04-27 13:02:47 · 2987 阅读 · 0 评论 -
jni基本操作 3. 操作java中的方法
文章目录jni.h 中 定义了 jmethodID本地代码中操作 java 方法成员方法静态方法Call 方法重载关于 Call 方法中,最后的参数列表方法签名特征码javap 获取类的属性、方法签名jni.h 中 定义了 jmethodID//java 方法 ID 结构体struct _jmethodID; /* opaque structure ...原创 2019-04-14 00:07:47 · 537 阅读 · 0 评论 -
jni基本操作 2. 操作java中的属性
文章目录jni.h 中定义了 jfieldID获取成员属性对应 jfieldID获取静态属性对应 jfieldID获取jfieldID 对应的属性值设置jfieldID 对应的属性值关于属性描述字符串,用于获取 jfieldIDjni.h 中定义了 jfieldID//java 属性 ID 结构体struct _jfieldID; /* opaq...原创 2019-04-13 23:27:44 · 549 阅读 · 0 评论 -
jni基本操作 1. java 层创建 native 方法,并生成对应 jni 函数
文章目录创建 java native 方法通过 javah 生成的对应 jni 函数成员方法对应的:静态方法对应的:总结创建 java native 方法即声明 带有 native 关键字的方法package com.stone.ndk.jni;public class JniActivity { public native String helloWorld(); private ...原创 2019-04-13 23:02:56 · 1333 阅读 · 0 评论 -
jni.h 头文件分析 3. 其它数据结构
文章目录属性ID、方法ID 结构体本地接口中的字段描述符jni 内存管理中的引用类型本地方法结构体JNIEnv 和 JavaVM属性ID、方法ID 结构体//java 属性 ID 结构体struct _jfieldID; /* opaque structure 不透明,即未在本头文件中具体实现 */typedef struct _jfieldI...原创 2019-04-13 22:26:56 · 407 阅读 · 0 评论 -
jni.h 头文件分析 2. 数据类型定义
文章目录基本数据类型匹配表java 引用类型、数组、字符串 在 c++/c 中的定义c++c类型定义代码基本数据类型匹配表Java类型JNI类型描述booleanjbooleanunsigned 8 bitsbytejbytesigned 8 bitscharjcharunsigned 16 bitsshortjshortsigned ...原创 2019-04-13 21:29:10 · 373 阅读 · 0 评论 -
jni基本操作 4. 加载与卸载函数,动态注册与反注册本地方法
文章目录jni.h 中的加载与卸载函数动态注册与反注册本地方法函数jni动态注册java 的 native方法java native方法 与 javah 生成的JNI 函数不用 javah,动态绑定java层的 native 方法和本地代码中的函数动态注册时的参数示例jni.h 中的加载与卸载函数JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* rese...原创 2019-04-15 21:50:38 · 834 阅读 · 0 评论 -
Android jni 代码中打印 log,使用android/log.h
文章目录日志库在 CMakeLists 的配置日志库简介日志级别枚举:定义宏日志库在 CMakeLists 的配置CMakeLists.txt :#查找库:参数1,一个表示路径的变量,它会赋予库的路径值,且可用于后面的link; 参数2,库的名字find_library( # Sets the name of the path variable. log-li...原创 2019-04-15 20:43:36 · 9389 阅读 · 4 评论 -
jni.h 头文件分析 1. 整体的基本介绍 与 常量定义
文章目录获取 jni.h源码内容简介常量定义获取 jni.handorid ndkandroid-ndk-r15c/platforms/android-[v]/arch-arm/usr/include/jni.h发现 sdk/ndk-bundle/platforms 相同目录下没有;可以去官网下载完整的NDKjdkjdk/Contents/Home/include/jni.h ...原创 2019-04-12 11:57:57 · 643 阅读 · 0 评论 -
Android NDK 17 和 CMake 问题集锦
NDK 17 不再支持 ABI: armeabi 这,难道Android9的设备,就不能运行仅包含 armeabi的 apk了? 暂不知 编译时,若一定要包含armeabi,则要用低于17版本的 NDKCMake配置 c++11android { defaultConfig { ... externalNativeBuild {...原创 2018-05-15 15:26:36 · 4271 阅读 · 0 评论 -
Android JNI for "Android Studio 2.2 or higher"
点击浏览 官网说明 (要翻墙)需要安装一些插件:需要打开SDK Manager菜单栏 Tools>Android>SDK Manager点击切换到 SDK Tools 选项卡勾选 LLDB、CMake、NDK 进行安装 如下图当安装后,新建工程时,勾选『include C++ Support』如下图然后进行正常的向导选择,当进行到尾页出现原创 2016-11-05 17:41:32 · 1198 阅读 · 0 评论 -
jni基本操作 5.多线程临界区(类似 java 的同步代码块)处理
文章目录前言前言在 本地代码中,要实现类似 java 中的 synchronized功能。即临界区,同一时间只有一个线程能操作。synchronized(obj) { //这里就是临界区}要实现这样的功能,可以使用 c/c++中的java 层创建的线程,要理想的退出,就要在 java 层实现;c/c++实现的线程,同样是在 c/c++中去实现退出逻辑。java 层创建线程,线程...原创 2019-04-20 00:13:09 · 736 阅读 · 0 评论