Android 中使用JNI是干啥的?

具体原理不是很清楚,只知道JNI允许Java语言和c/c++语言进行交互。

项目当中如何实现?

1> 使用源码

2> 使用.so库

项目中如何使用源码?

1.1:在main目录下创建 jni folder

1.2:src目录下创建实现native方法的类

1.3:需要配置Ndk,File --> Project Structure --> Android Ndk Location中选择Ndk路径,解压选择到ndk-bundle目录

1.4:选择Build-->ReBuild Project后,在build -->intermediates --> classes --> debug 中找到.h头文件并拷贝到已创建的jni文件夹下

1.5:已创建好的jni文件夹下新建.c文件include 头文件,实现native方法,注意方法名是以 Java_包名_类名_方法名这样命名的,不可有误,否则找不到此方法

1.6:打开app下的gradle文件,defaultConfig下添加ndk{moduleName "so库名字" abiFilters "armeabi"..}

1.7: gradle.properties 文件中添加 android.useDeprecatedNdk=true

1.8: Activity中使用时,需要先加载 static{System.loadLibrary("so库名字");} 后再调用

项目中如何使用so库

2.1:so库也是源码编译生成,将so库导入到libs下对应的类型中,gradle文件中进行配置:

ndk{    abiFilters "armeabi"}
2.2:src目录下创建实现native方法的类
2.3:Activity中使用时同上需要先加载
 
根据以上步骤,已实现与c语言交互的功能
因是初次使用,有问题的地方希望多包含并讨论。

更多相关文章

  1. Android界面绘制_canvas解析
  2. Android资源文件分析
  3. Activity的生命周期,状态保存,窗口显示,取得返回结果,安全退出
  4. Android(安卓)事件传递机制实测
  5. Android(安卓)Studio解决依赖文件冲突
  6. Android(安卓)有关横竖屏
  7. Linux Deploy:在Android上部署Linux
  8. android 处理生命周期事件
  9. Android振动系统学习

随机推荐

  1. AdapterViewFlipper
  2. Android(安卓)-- uses-sdk:minSdkVersion
  3. Android 数据库Sqlite的使用(1)
  4. android 开发者资源下载地址记录(转+补充)
  5. Android Launcher3主菜单背景改为黑色
  6. Android android:launchMode=“singleIns
  7. Android实现朋友圈点赞列表
  8. Android事件处理分析+Android事件处理 +A
  9. Android(AIDL)自动重复拨号及挂断/接听电
  10. Android(安卓)Logcat的使用