JNI基础

2023-11-18

问题1:JNI是什么?

答:JNI是Java语言的机制。Java可以通过JNI调用C/C++代码,C/C++代码也可以通过JNI调用Java代码。

 

问题2:NDK是什么?

答:NDK是代码库,功能有两个:

(1) 将.c/.cpp文件转换成.so文件

(2) 将.so文件和Android应用一起打包成apk

 

问题3:我们要做什么?

答:做以下五个步骤

(1) 创建.cpp / .c文件

(2) 使用NDK将.cpp / .c文件转化成.so文件

(3) 使用JNI在Java中调用.so文件中的C/C++的函数

(4) 使用NDK将.so文件打包成.apk

(5) 在手机上运行

 

问题4:CMake方式和ndk-build方式是什么?

答:当我们想将.cpp /.c转化成.so文件时, Android Studio提供了两种方式:

第一种是通过ndk-build工具,此时我们需要编辑Android.mk文件。

第二种是通过CMake方式,此时我们需要编辑CMakeLists.txt文件

CMake方式更加先进,但是需要Android Studio 2.2 及以上版本的支持。

 

问题5:本文中介绍什么呢?

答:两个都介绍,但是先介绍先进的CMake,再介绍落后一点的ndk-build,如果同学们学会了CMake,ndk-build可以先不用看了。但是由于在某种意义上,ndk-build的适用性更广,所以大家在CMake不管用的时候,可以去尝试ndk-build的方式。

 

三、 实践:CMake方式

1. 新建Android Studio工程,不用勾选include C++ support

2. 打开SDK Manager,保证NDK已经安装

3. 创建JNI文件夹

4. 在创建出来的cpp文件夹中建立C/C++ Source File,起名为hello_world.cpp 

5. 回到MainActivity,声明native方法helloFucker(String name)

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JNI基础 的相关文章

  • Android 之JNI 报错(一)

    今天导入了一个以前的项目 xff0c 结果各种报错 xff0c 这里记录一下 项目是一个使用到JNI的项目 xff0c 在项目中我就重新回顾一下 1 因为我知道项目使用到了JNI xff0c 所以直接到 local properties中修
  • Android Studio 使用jni调用第三方so

    源码部分 项目需要调用第三方so函数 xff0c 由于需要调用的函数不符合jni规范 xff0c 这里用jni调用编写的native方法 xff0c native方法再调用三方so函数 Android mk LOCAL PATH 61 ca
  • 用JNI从C传递结构体到JAVA

    直接上C的实现 typedef struct Foo int len char name 100 Foo t JNIEXPORT jint JNICALL Java TestJNI foo JNIEnv env jobject obj jo
  • AIDL-JNI-HIDL

    Android项目开发经常会遇到各种概念性的技术 AIDL xff08 Android Interface definition language xff09 Android中的一种IPC xff08 Inter Process Commu
  • Java调用C++库dll文件接口(JNI)回传int参数(引用)

    vc写了一个标准的动态库 xff0c 有如下接口 xff1a const WCHAR execCommand const char param int amp errCode java中的接口声明 xff1a VideoUnit java
  • jni开发-GetMethodID与CallObjectMethod的坑

    在java层中声明一个方法用于创建一个audiotrack xff0c 在C层中调用这个方法并获取audiotrack对象 先看下面的代码 xff1a SuPlayer java public AudioTrack createAudioT
  • jni 中的 extern "C" 分析

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 先看一段jni自动生成的源代码 code DO NOT EDIT THIS FILE it is machine generated include lt jni h gt
  • android中jni详细,Android中的JNI使用简介

    一 本文说明 本文不对Android工程的各种配置做说明 xff0c 只是简单介绍下开发过程中如何进行C与Java互相调用以及出现异常情况的处理 二 NDK简介 Android NDK 是一套允许您使用 C 和 C 43 43 等语言 xf
  • Android通过jni调用本地c/c++接口方法总结

    网上有网友问android的原生应用 xff0c 上层java代码如何通过jni调用本地的c c 43 43 接口或第三方动态库 xff1f 之前搞过android应用开发和底层c c 43 43 接口开发都是一个人搞定 xff0c 觉得还
  • 使用cygwin和ndk生成so库供android使用(jni,交叉编译,opencv,neon)

    1 cygwin 安装 参考 https www cnblogs com webapplee p 3774047 html http www docin com p 1005446599 f6 html 2 下载ndk和依赖opencv 我
  • Android Studio JNI开发入门教程

    概述 在Andorid Studio不支持JNI开发之前大家一般都是使用Eclipse开发JNI 各种配置让人觉得很蛋疼 从Andorid Studio支持JNI开发后 让我们开发JNI变的如此简单 下面我就介绍一下Android Stud
  • Android logcat解析与问题分析

    logcat是Android中一个命令行工具 可以用于得到程序的log信息 一 logcat 结构 1 这个结构在AS或者exlipse上面看的更清楚 二 logcat中地址反差backtrace 当程序崩溃的时候会在loacat中打印出b
  • android开发使用 ndk-stack 打印崩溃日志

    使用 ndk stack 的时候需要你的 lib 编译为 debug 版 通常需要下面的修改 1 修改 android mk 增加 为 LOCAL CFLAGS 增加 g 选项 2 修改 application mk 增加 APP OPTI
  • C语言基础入门详解一

    前些天发现了一个蛮有意思的人工智能学习网站 8个字形容一下 通俗易懂 风趣幽默 感觉非常有意思 忍不住分享一下给大家 点击跳转到教程 前言 初识C语言 include 相当于java的import stdio全称 standard inpu
  • JNI线程

    作者 左少华 博客 http blog csdn net shaohuazuo article details 43149193 转载请注明出处 http blog csdn net shaohuazuo 1 Android线程介绍 1 线
  • Android JNI(一):JNI基础概念

    本文讲述 NDK和JNI是什么 JNI的原理 JNI开发流程的步骤 认识JNI相关的代码语法 名称概念 什么是NDK NDK 其中NDK的全拼是 Native Develop Kit Android NDK 就是一套工具集合 允许你使用C
  • C/C++在Android开发中的应用

    JNI开发系列阅读 JNI与底层调用1 http blog csdn net axi295309066 article details 60758515 JNI与底层调用2 http blog csdn net axi295309066 a
  • jni中如何查看函数签名

    操作步骤 第一步 找到 build 文件夹 第二步 找到 javac 文件夹 第三步 找到自己写的 xxx class文件 第四步 右键 xxx class 文件 在 Terminal 中打开 第五步 执行 javap s xxx clas
  • JNI基础

    问题1 JNI是什么 答 JNI是Java语言的机制 Java可以通过JNI调用C C 代码 C C 代码也可以通过JNI调用Java代码 问题2 NDK是什么 答 NDK是代码库 功能有两个 1 将 c cpp文件转换成 so文件 2 将
  • android通过JNI用C/C++创建本地文件

    通过jni在本地创建文件 1 在android studio创建基本的jni工程 并且在APP界面成功显示 Hello from C 不会的可以看android studio使用jni 2 在native lib cpp文件中创建文件 为了

随机推荐

  • CentOS7安装OpenStack(Liberty)

    1 安装yum源 yum install https buildlogs centos org centos 7 cloud x86 64 openstack liberty centos release openstack liberty
  • 百度智能云千帆大模型三连击:接入LLaMA2等33个模型、上线插件功能和103个Prompt模板

    作为全球首个一站式企业级大模型平台 百度智能云 千帆大模型平台 在提供包括文心一言在内的大模型服务及第三方大模型服务的同时 还提供大模型开发和应用的整套工具链 帮助企业解决大模型从训练到开发过程中的全链条问题 自2023年3月发布以来 千帆
  • 看懂android中的adapter适配器

    首先需要知道一共有4个文件 fragment类 adapter fragment的布局文件 adapter中的item的布局文件 1 首先声明一个控件 RecyclerView 2 然后声明一个adapter类 3 在initView 上
  • python中typeerror_详解python中的TypeError错误解决办法

    新手在学习python时候 会遇到很多的坑 下面来具体说说其中一个 在使用python编写面向对象的程序时 新手可能遇到TypeError this constructor takes no arguments这个错误 例如下面的程序 cl
  • gtest 单元测试工具的基本使用

    gtest 单元测试 gtest 简介 gtest 优点 安装 gtest 测试 demo 总结 gtest 简介 gtest是Google的一套用于编写C 测试的框架 可以运行在很多平台上 包括Linux Mac OS X Windows
  • 获取时间和脸颊、下颚线灯模式

    电流检测的应用 电路检测电路常用于 高压短路保护 电机控制 DC DC换流器 系统功耗管理 二次电池的电流管理 蓄电池管理等电流检测等场景 对于大部分应用 都是通过感测电阻两端的压降测量电流 一般使用电流通过时的压降为数十mV 数百mV的电
  • android动画内存优化,Android 性能优化之内存优化

    定义 内存泄漏 Memory Leak 指 程序在申请内存后 当该内存不需再使用但却无法被释放的现象 内存溢出 OOM 应用程序所需的内存超出了为其分配的内存限额 Android将进程分为5个优先等级 前台进程 可见进程 服务进程 后台进程
  • google.api.http

    Http 定义api服务的http配置 它包含一个httprule列表 每个列表指定一个rpc方法到一个或多个http rest api方法的映射 字段 描述 rules HttpRule 一个适用于各个API方法的http配置规则列表 注
  • 编译优化之 - 向量化优化入门

    1 介绍 2 Intel高级向量扩展 3 GCC中向量化 4 ICC中向量化 5 AOCC LLVM中向量化 1 介绍 什么是自动向量化 自动向量化 automatic vectorization 是自动并行化 automatic para
  • STM32笔记:高精度脉冲宽度计 双输入捕获+DMA方式

    本文介绍如何用STM32F107VC Waveshare Open107V实验板 实现高精度的脉冲宽度计 占空比 开发环境 IDE STM32CubeIDE 1 8 固件库 STM32Cube FW F1 V1 8 4 函数发生 RIGOL
  • 人工智能开源社区论坛----开源助力多领域AI生态发展

    ChinaOSC 2022 人工智能开源社区论坛 开源助力多领域AI生态发展技术论坛将于2022年8月20日13 00 17 00在陕西省西安高新国际会议中心召开 本论坛将围绕 开源社区助力多领域AI生态发展 主题 邀请AI开源领域顶级技术
  • Filco圣手二代键盘蓝牙连接方法

    键盘前面的电源按钮按进去 即打开电源开关 同时按下Ctrl Alt Fn 看到蓝灯和红灯同时亮起 之后剩蓝灯闪烁 按下小键盘中数字键1 4中的一个 一共可以连4台设备 如果你选的数字之前连接过其他设备 可以在第2步做完之后先按两秒清除按钮
  • 托福综合写作套路

    1 文章认定 教授驳斥 2 The reading passage provides three possible functions of the carved stone balls However in the lecture the
  • 决策树算法原理+例题练习

    一 决策树的优缺点 优点 计算复杂度不高 输出结果易于理解 对中间值的缺失值不敏感 可以处理不相关特征数据 缺点 可能会产生过度匹配的问题 使用数据类型 数值型和标称型 二 一个实例 一天 老师问了个问题 只根据头发和声音怎么判断一位同学的
  • LSF的使用方法总结

    一 LSF 基本介绍 LSF Load Sharing Facility 是IBM旗下的一款分布式集群管理系统软件 负责计算资源的管理和批处理作业的调度 它给用户提供统一的集群资源访问接口 让用户透明地访问整个集群资源 同时提供了丰富的功能
  • 5.19 华为算法笔试经验

    华为机试一共三道题 对应的分值分别为100分 200分 300分 下面介绍这次笔试题目 第一题 一共有N个员工围成一个圆圈 分别是1 2 N每一个员工身上有对应数量的令牌 轮流从顺时针以及逆时针进行报数 顺时针报数周期为R 逆时针报数周期为
  • 僵尸进程的多种处理方式-图文详细教程

    问题引起原因 yum更新导致无法使用yum 于是将占用进程kill掉 导致 ps A ostat ppid pid cmd grep e Zz ps ef no headers k8s环境kubelet服务异常 systemd1服务超时 导
  • IP地址和子网掩码详解

    原文链接 IP和子网掩码 我们都知道 是由四段数字组成 在此 我们先来了解一下3类常用的 A类IP段 0 0 0 0 到127 255 255 255 B类IP段 128 0 0 0 到191 255 255 255 C类IP段 192 0
  • Android Studio连接Mysql数据库步骤以及常见错误

    1 先把Mysql给下好 环境变量也配置好 这里我就不说了 2 下载好Navicat for Mysql软件 管理数据库 3 进入Android Studio创建一个类 写好连接数据库的代码 我们采用的是常用的JDBC方法来连接 需要的ja
  • JNI基础

    问题1 JNI是什么 答 JNI是Java语言的机制 Java可以通过JNI调用C C 代码 C C 代码也可以通过JNI调用Java代码 问题2 NDK是什么 答 NDK是代码库 功能有两个 1 将 c cpp文件转换成 so文件 2 将