JNI的开发步骤
使用C函数实现Java本地方法:
1. 在java代码里面声明一个native的方法
public native String helloFromC();
2. 在工程目录下面创建一个jni的文件夹
3. 在jni文件夹里面编写c代码,实现java的本地方法
//JNIEnv* envJNI本地接口这个结构体的二级指针
//该结构体中封装了很多函数指针方便程序员开发jni代码
//jobject obj MainActivity的对象,调用者对象
jstring Java_包名_类名_方法名(JNIEnv* env,jobject obj){}
编译运行C函数,生成so可执行文件:
4. 在jni文件夹下创建Android.mk文件,c代码编译的脚本文件
# $表示调用ndk中定义好的方法或者变量
# 加载本地的jni目录,当在dos窗口中执行ndk-build命令时,会找工程目录下中的jni目录;
LOCAL_PATH := $(call my-dir)
# 下次重新生成动态库时,清理掉上次生成的变量
include $(CLEAR_VARS)
# 指定生成的动态库的名称,生成动态库文件后,文件名为libhello.so
LOCAL_MODULE := hello
# 指定了本地的c文件
LOCAL_SRC_FILES := Hello.c
# 指定了生成库的类型:BUILD_SHARED_LIBRARY表示动态库.so,BUILD_STATIC_LIBRARY表示静态库.a
# 动态库.so文件小,静态库.a文件大。
include $(BUILD_SHARED_LIBRARY)
5. 调用ndk-build指令编译c代码
注意配置环境变量生成一个.so的文件 ( c代码编译出来的二进制可执行文件)
6. 在java代码里面写静态代码块,加载so文件
static{
System.loadLibrary("hello");
}
7. 像使用一般java方法一样调用native的方法.
JNI的开发步骤的更多相关文章
- Android(java)学习笔记262:JNI之工具快速开发步骤
下面通过一个案例说明一下,利用工具jni快速开发步骤 1.新建一个Android工程,命名为"03_对int数组加1",如下: 2. 在MainActivity.java中对add ...
- Android(java)学习笔记206:JNI之工具快速开发步骤
下面通过一个案例说明一下,利用工具jni快速开发步骤 1.新建一个Android工程,命名为"03_对int数组加1",如下: 2. 在MainActivity.java中对add ...
- Android(java)学习笔记259:JNI之NDK开发步骤
1. NDK开发步骤(回忆一下HelloWorld案例): (1)创建工程 (2)定义native方法 (3)创建jni文件夹 (4)创建c源文件放到jni文件夹 (5)拷贝jni.h头文件到jni目 ...
- Android(java)学习笔记203:JNI之NDK开发步骤
1. NDK开发步骤(回忆一下HelloWorld案例): (1)创建工程 (2)定义native方法 (3)创建jni文件夹 (4)创建c源文件放到jni文件夹 (5)拷贝jni.h头文件到jni目 ...
- Android jni简便开发流程
<Android jni helloworld>中介绍了开发jni helloworld的步骤,本文将介绍jni简便开发流程 ① 写java代码 native 声明本地方法 ② 添加本地支 ...
- NDK---使用,开发步骤
使用NDk的场景: 1.某些方法,是使用C,C++本地代码实现的,然后,我想在Java中调用这些方法.这个时候,就需要使用到JNI技术. 应用NDK的时候,分两个部分,Java部分,JNI层部分,本地 ...
- 【OpenWRT】【RT5350】【三】MakeFile文件编写规则和OpenWRT驱动开发步骤
一.Makefile文件编写 http://www.cnblogs.com/majiangjiang/articles/3218002.html 可以看下上面的博客,总结的比较全了,在此不再复述 二. ...
- iOS应用内付费(IAP)开发步骤列表
iOS应用内付费(IAP)开发步骤列表 前两天和服务端同事一起,完成了应用内付费(以下简称IAP, In app purchase)的开发工作.步骤繁多,在此把开发步骤列表整理如下.因为只是步骤列表, ...
- JNI 程序开发
参考资料: http://blog.csdn.net/wwj_748/article/details/28136061 JNI_最简单的Java调用C/C++代码 http://blog.csdn.n ...
随机推荐
- 在Windows server 2019 Core 版本上安装SQL2016
安装系统后,通过网络等方式先把安装ISO的文件copy过来,虚拟机则用挂一个虚拟光驱即可,然后cd进入目录,执行以下命名即可安装核心服务了: Setup.exe /qs /ACTION=Install ...
- 迭代器遍历【List、Set、Map】
迭代器遍历[List.Set.Map] example package boom.collection; import java.util.ArrayList; import java.util.Ha ...
- storcli/percli的使用场景
目录 storcli/percli常用场景 storcli/percli常用场景 查看帮助信息 storcli64 help 查看控制器数量 storcli64 show ctrlcount [roo ...
- Vim生存技能
Vim生存技能 必备: 写模式: i,a,o 退出写模式: ecs 快捷: Ctrl+u: 向文件首翻半屏 Ctrl+d: 向文件尾翻半屏 Ctrl+f: 向文件尾翻一屏 Ct ...
- 通过jenkins api远程调用job
curl http://jenkins地址/job/job_name/config.xml --user username:token
- MongoDB——morphia
禁止保存className:@Entity(noClassnameStored = true) https://stackoverflow.com/questions/17719018/a-field ...
- yum和rpm工具使用
rpm命令 rpm -ivh package 安装 rpm -e package 卸载 rpm -Uvh 升级,如果已安装老版本,则升级;如果没安装,则直接安装 rpm -Fvh 升级,如果已安装老版 ...
- fish-redux快速创建文件夹模板 FishReduxTemplate
推荐一款插件: 在插件plugins中搜 FishReduxTemplate
- html2canvas 使用指南
html2canvas(document.body).then(function(canvas) { document.body.appendChild(canvas); }); 属性参数: http ...
- MapBox
MapBox的地图API大家用过吗 用作网站或者APP的底图,就不用自己架设地图服务器了 发布自己的地图了 这跟Google Map是一样的道理,类似的还有天地图,高德,百度地图API等等. 属于前端 ...