Android Studio JNI开发(2)------NDK 编译原生库
来源:互联网 发布:大数据经典案例 编辑:程序博客网 时间:2024/05/24 04:14
1.下载NDK开发包,或者直接从Android Studio中下载,配置NDK环境变量,环境变量配置成功后,终端中输入ndk-build会显示这样的提示
源码地址:点击下载Demo源码
2.项目是在Project模式下,在项目中创建native方法
public class MainActivity extends AppCompatActivity {
private View viewById;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewById = findViewById(R.id.tv_show);
}
/**
* 本地方法
* @return
*/
public native String hiNDK();
}
3.创建JNI function,终端定位到java目录下,使用javah工具生成.h的头文件
4.生成的.h头文件在java目录下,有时候可能不会及时出来,只要javah不报错,稍等一下,或刷新一下就出来了,新建JNI forlder
5.把.h头文件放到jni下,新建C/C++代码,里面生成的JNI function直接拷贝到c/c++代码中,添加上形式参数就可以了,剩下的就是转成JNI中的方法了
#include "com_iteast_jni_ndk_MainActivity.h"
JNIEXPORT jstring JNICALL Java_com_iteast_jni_1ndk_MainActivity_hiNDK
(JNIEnv *env, jobject obj){
char* str = "我是一个中国人";
return (**env).NewStringUTF(env,str);
}
6.在JNI中创建Android.mk文件与Application.mk文件,Application.mk是约束生成那些类型的动态库文件(可有可无),Android.mk则约束动态库文件名,和引用的c/c++源码
7.终端定位到main目录下,或者java目录下,生成的.so文件所在的位置不同,自己体会,一般会在main目录生成.so
8.在Android Studio中使用so文件,需要在main文件夹在创建jniLibs文件夹,把所有的so,连同其类型文件夹一同拷贝到jniLibs中,项目中使用动态库文件之前需要调用System.loadLibrary("jni_ndk");
9.运行项目,需要把c代码都去掉,因为我还没有搞明白去如何直接通过AS通过ndk运行程序
源码地址:点击下载Demo源码
0 0
- Android Studio JNI开发(2)------NDK 编译原生库
- Android Studio JNI开发(1)------CMake编译原生库
- Android Studio NDK jni 开发
- Android Studio ndk-Jni开发
- Android Studio NDK/JNI开发
- Android Studio ndk-Jni开发
- Android Studio开发NDK JNI
- android studio ndk编译原生可执行文件
- android studio ndk编译原生可执行文件
- Android studio NDK-JNI 编译so文件
- Android Studio NDK JNI编译环境 配置
- Android studio JNI(NDK) 开发
- Android Studio ndk-Jni开发详解
- Android Studio NDK-Jni开发小Demo
- Android Studio NDK JNI开发入门记录
- Android Studio NDK开发--JNI编程
- Android Studio ndk-Jni开发 示例
- Android studio下JNI(NDK)开发
- Ruby学习笔记(1) ————Linux下安装Ruby环境
- 利用Ajax Toolkit的AutoComplete实现模糊查询
- 第五组内部linux比赛命题
- LeetCode 386. Lexicographical Numbers
- Java NIO浅析
- Android Studio JNI开发(2)------NDK 编译原生库
- Go语言 数组(Array), 分片(Slice), Map 以及 Set
- Makefie 打印
- HDU 2031
- Servlet的一些总结
- GCD延时操作Dispatch_after swift写法
- ajax跨域调用(实例)
- Go语言 实现简单的 Set
- Shell Sort(希尔排序)