Android入门——JNI分析

本文介绍了Android Studio创建JNI项目的步骤,包括NDK环境配置,以及遇到的问题和解决方法。接着详细阐述了JNI的用途、设计原理,如JNI作为Java调用native程序的接口,允许在Java和C/C++间相互调用。文中还解析了JNI的调用过程,包括动态注册和如何调用Java层的方法。最后,提到了JNI函数的使用注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android Studio创建JNI项目

创建project
创建native c++工程

NDK 环境配置
安装CMake与NDK两个插件
安装插件
问题:NDK可能会出现安装fail,需要手动下载
下载地址:https://dl.google.com/android/repository/android-ndk-r15c-windows-x86_64.zip?utm_source=androiddevtools&utm_medium=website

下载后解压,配置到指定路径:
配置界面1
配置NDK路径
配置完成后,local.properties文件会显示如下内容(未显示可手动添加)

sdk.dir=C\:\\Users\\torres09\\AppData\\Local\\Android\\Sdk
ndk.dir=D\:\\gudaoweiji\\android-ndk-r15c-windows-x86_64\\android-ndk-r15c

JNI简介

JNI文档:JNI说明文档
JNI是一个java程序调用native程序的编程接口,native程序像c,c++等

为什么要使用JNI ?
java并不能进行所有的编程,此时需要和其他编程语言协作完成任务,例如:

  • 标准Java类库不支持依赖于平台的功能。例如,linux下一切皆文件,访问文件节点支持最多的是c/c++语言
  • 已经用其它语言编写的库,希望使其通过JNI的Java代码访问

JNI可以做哪些事情?

  • 在java层,可以实现对native函数调用
  • 在native层,可以创建,检查和更新Java对象(包括数组和字符串),调用Java方法。捕捉和抛出异常等

JNI设计

JNI实现架构如下: java层(Java VM) ------- JNI interface ------ Native层

JNI拥有一套机制来实现 java层与native层的相互调用。 例如:(源码均在frameworks\base\media里面)在frameworks\base\media里面,有java(java代码)和jni(c++代码)两个目录,jni目录编译可生成libmedia_jni.so库,java可以链接libmedia_jni.so从而实现对c++代码的调用。

Java

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值