0.NDK

要了解NDK,首先需知道Jni,那么Jni是什么呢?Jni是Java和C沟通的入口,啥意思呢?我们使用Java语言进行Android开发,众所周知Android的安全性一直是一个热议的话题,为了防止被反编译,我们需要用C/C++编写重要核心的内容增大系统的安全。另一方面Android的底层一些驱动,硬件,音视频,图片处理,等都是用C实现的,而且使用C可以极大的提高程序效率,所以在开发中可能就需要Java和C进行交互,Jni就是干这个的。NDK提供了一系列的工具,可以帮助我们生成C/C++的库,NDK+Jni就实现了Java和C沟通的桥梁。

Native Development Kit(NDK)是一系列工具的集合。它提供了一系列的工具,帮助开发者快速开发C/C++的动态库,并能自动将so和java一起打包成apk。

1.开始,新建native c++项目

2.报错 NDK not configured.

2.1打开local.properties,根据实际配置ndk目录

2.2可以在"File"->"Project Structure"设置

3.在java下新建包jni,在包里新建java类Device,如下

添加java方法:

public class Device {    public native boolean devOpen();    public native void devClose();}

4.根据java方法自动生成cpp函数

鼠标放到java方法上面,根据智能提示或者Alt+Enter健,会自动在native-lib.cpp中生成c++函数,当然实现需要自己完成

extern "C"JNIEXPORT jboolean JNICALLJava_com_example_jnidemo1_jni_Device_devOpen(JNIEnv *env, jobject thiz) {    // TODO: implement devOpen()}extern "C"JNIEXPORT void JNICALLJava_com_example_jnidemo1_jni_Device_devClose(JNIEnv *env, jobject thiz) {    // TODO: implement devClose()}

5.make project 

代码没有错误的话,会生成相应的.so动态库

6.tips

6.1修改makelist,可以更改so动态库的名称,可以添加其他需要编译的cpp文件

6.2javah,ndk build扩展工具

网上有的说配置这两个扩展工具,javah我试了,不好用不建议新手使用。

ndk build是比较老的方法了,android studio里面建议使用默认的cmake方法进行ndk开发。

所以这两个扩展工具都不建议使用。

6.3Android.mk,Application.mk

ndk方式,但不一定要ndk build,ndk build是一种比较老的方式了,不推荐使用

6.4报找不到library "***.so" not found

检查下build.gradle中有没有设置abiFilters,因为android模拟器对应的abi为x86,目前市面上的手机多数都是v8的,这点需要注意。

更多相关文章

  1. Android几种Service常驻内存的小思路
  2. 【Android游戏开发二十五】在Android上的使用《贝赛尔曲线》!
  3. Android开发实践:WIFI连接功能的封装
  4. android第一周总结——但愿这次可以发出来,不要再被自己的手机阻
  5. android设计的网页工具+灵感
  6. Android(安卓)集成微信支付和支付宝支付工具类
  7. android 4.0以上WebView不能全屏播放视频的解决办法
  8. Android菜鸟App开发,第一个App(第一天)
  9. MonoDroid学习笔记(一)—— 搭建MonoDroid开发环境及Hello World

随机推荐

  1. 能替代迅雷的免费开源下载神器:FDM下载器
  2. 曾因限速被痛骂的下载“神器”,为何突然变
  3. Chrome 85版重磅更新:网页加速10%,还有一波
  4. iPhone在水里浸泡8个月还能正常使用?别傻
  5. 最新工具:某网盘不限速下载器KinhDown,下载
  6. 来聊聊 | 如何看待今年开始流行的成人娃
  7. 下载10m/s!不限速阿里云网盘如何获取注册
  8. 分享一个国内可访问的TikTok开源镜像网站
  9. 昊园恒业平台交租被贷款住建委立案调查
  10. jQuery 中常用的 DOM 操作以及使用 jQuer