走进AndroidStudio下的NDK(一)

AndroidStudio 工程添加NDK支持 Android studio 添加NDK支持的详细步骤 阅读详情

走进AndroidStudio下的NDK(一)

字数208  阅读325  评论6 

http://www.jianshu.com/p/9aff422204eb

本文已授权微信公众号:鸿洋(hongyangAndroid)在微信公众号平台原创首发。

这一篇文章主要介绍在AndroidStudio环境如何搭建JNI开发环境,并通过一个helloword的方式了解进行JNI开发的步骤。

开发编译环境

  • AndroidStudio 2.1.2
  • SDK 23.0.3
  • NDK 12.1.2977051

NDK安装与配置

  • 首先创建一个Android项目工程,File-->New-->New Project,一路下一步就好,最后finish创建完成项目.
  • 打开Project Structure,默认Android NDK location是没有的,这时候如果已经下载有了NDK,那你就可以直接选择下载好的NDK路径设置到输入框,否则点击download进行下载,下载完成后默认安装在sdk根目录,命名为ndk-bundle。 // 我的SDK地址为 D:\android-sdk.

Project Structure
  • 添加系统环境变量,新建变量名ANDROID_NDK_HOME,对应变量值为ndk根目录地址 ,如D:\android-sdk\ndk-bundle,然后将ANDROID_NDK_HOME添加到Path中去(%ANDROID_NDK_HOME%;),确定OK.
  • 至此,会在项目的local.properties文件下添加ndk的目录地址,如果没有自动添加,可以收到加上一行:ndk.dir=D\:\android-sdk\ndk-bundle,由于ndk版本和IDE的版本可能存在不一致性,所以编译时会检查ndk的过时性,这个时候如果报警了,可以在gradle.properties文件下添加一行:android.useDeprecatedNdk=true.到此,NDK的安装和配置就完成.

HelloWord

  • 在main下创建jni目录,该目录用于存放jni文件,主要包含c文件以及头文件等等。
  • 在MainActivity中创建native方法,遗憾的是当前版本AndroidStudio暂不支持c文件的连接和很好的根据提示自动创建c方法,所以只好手动添加模板。

Hint for Create Method
  • 在jni目录下创建c文件hello.c,并创建MainActivity中的sayHello方法:

c method impl
  • 首先,添加头文件,类似java中的导包,这里首先必加的是jni.h,这是java与c/c++之间语言转换的核心文件,具体可以查看ndk目录下D:\android-sdk\ndk-bundle\platforms\android-23\arch-arm\usr\include\jni.h,另一个这里需要处理字符串,所以还需要包含string.h的头文件,同样可以在上面目录include中找到.
  • 然后,添加java中native方法的实现。jstring:返回值类型,Java_com_lzj_demojni_MainActivity_sayHello(JNIEnv *env, jobject jobj):实现的方法名,固定格式,Java_所要实现的方法名所在java类用下划线替代点的引用地址_方法名(JNI环境变量 env,JNI环境对象 jobj);其中env和jobj方法中可能用不到,但也必须申明,源码中是这样说明的,大概作用就是env作为了一个JNINativeInterface指针,是java与c/c++之间的一个功能环境变量中间桥梁。

JNIEnv
  • 具体实现,(*env)->NewStringUTF(env, "Hello from JNI !"); 该行代码返回字符串Hello from JNI !,NewStringUTF方法可以查阅jni.h,可以看到具体的申明如下:

NewStringUTF申明

NewStringUTF具体申明
  • Gradle配置,在build.gradle中加入你ndk moduleName

ndk moduleName

这里的moduleName是在代码中loadLibrary所填写的名称,也是生成so包的lib后面的名称,与jni目录下的c文件名称没有关系,

  • 代码中调用,首先需要在静态代码块中loadLibrary,然后可以调用申明的native方法.

use in code

结束语

到这里,就完成了JNI编程的HelloWord,使用项目内部文件的方式进行JNI编程的基本步骤大致就是这样,下一篇文章将介绍如何编译成so包以及编译过程中的一些配置和常见的坑。

微信小程序 实现拼图功能 微信小程序 实现碎片拼图 阅读详情

相关推荐

CXL Virtual Hierarchy (VH) Enumeration理解

在 CXL 3.0 协议中,CXL Virtual Hierarchy (VH) Enumeration 是一种针对 CXL 虚拟层级(Virtual Hierarchy) 设计的设备枚举机制,它允许软件将物理连接的 CXL 设备抽象为多个逻辑层级(虚拟层级),从而实现更灵活的资源管理和拓扑扩展。与传统的 PCIe 枚举相比,CXL VH 枚举在协议特性、拓扑抽象和资源分配机制上有显著差异。本质:VH 是一个逻辑上的设备层级结构,可能与物理连接拓扑不同。

Summer的博客 1001

Android NDK开发入门

接触Android有一段时间了,NDK算是一道坎,因为对c语言不熟悉,所以也没怎么去接触这一块,但是最近的学习,越发的觉得,如果想让app能有更高的效率,比如在图像的处理方面,游戏开发方面,甚至于要做一些涉及系统层面的操作时,不可避免的要去用到NDK。通过利用c/c++的能力来弥补java的缺点。 NDK的好处: 1. 提高程序的执行效率 2. 代码保护,java层容易被反编译,但是ndk层

徒步行走于未知,爱上呼吸空气 860

从零理解域随机化:通过Isaac Lab的events.py掌握Sim-to-Real关键技术

本文深入解析域随机化技术如何通过Isaac Lab的events.py实现Sim-to-Real迁移,提升机器人策略在真实世界的鲁棒性。从刚体属性到环境条件的系统级随机化,详细介绍了工程实践中的关键参数配置与调试技巧,帮助开发者有效缩小仿真与现实的差距。

weixin_29062613的博客 260

NDK笔记一 20160225

解决Type ‘JNIEnv’ could not be resolved 右键点击 工程名 ,选择菜单 [Properties], 弹出 “Properties for 工程名” 窗口, 在窗口左窗栏中选择 C/C++ General -> Paths and Symbols , 在窗口右窗栏中选择 Includes 选项页, 在 Language 栏中的 GNU

a346492443的博客 677

CCC数字钥匙3.0标准解读(22)

介绍设备制造商服务器和车辆制造商服务器之间的通信协议.

weixin_41738640的博客 1748

某二级支行网络的设计与实现——配置脚本(1)

【代码】某二级支行网络的设计与实现——配置脚本(1)

u010311846的博客 577

Android-Studio下的JNI开发:NDK的配置,kotlin数组长度

● 在菜单栏找到"File"-“Settings”,打开设置界面; ● 找到"Appearance & Behavior"-“System Settings”-"Android SDK"选项,然后切换到"SDK Tool"选项卡; ● 然后找到NDK打钩; ● 点击"Apply"按钮,然后在弹出窗口中点击"OK",即可自动下载; ● 等待自动下载安装完成,点击"Finish"按钮完成安装。 如下图所示: Android Studio默认安装ND

sa3221sa的博客 3681

云漾AI创作平台实战:如何用GPT4.0+Midjourney快速生成商业级插画(附Prompt模板)

本文详细介绍了如何利用云漾AI创作平台结合GPT4.0和Midjourney快速生成商业级插画。通过智能文案生成与视觉化工作流,大幅提升创作效率,适用于电商、社交媒体等多种场景。文章包含实用Prompt模板和参数调整技巧,帮助设计师和内容创作者高效产出专业插画。

weixin_29251567的博客 217

Android-studio的ndk

本篇介绍Android-studio下的ndk的配置教程

k393393的博客 1616

15张图详解三方支付:总架构、5大核心业务处理流程、备付金管理

用户可以将银行卡与零钱账户绑定,建立银行结算账户与支付账户的连接,然后将银行账户资金充值到零钱账户中,或将零钱账号中的余额提现至绑定的银行卡。因此,用户在A支付机构的零钱一般只能支付给A支付机构的商户,如支付宝的零钱不能支付给微信的商户。这五大业务的协同运作,使得第三方支付机构这一庞大的支付服务平台能够为市场提供卓越的支付能力。到了结算时间,网联会向备付金集中存管账户提交结算指令,在第三方支付机构备付金集中存管账户内完成最终的结算,并将结算结果及额度变动情况通知给第三方支付机构,具体流程如图13所示。

银行信息系统应用架构详解 1044

YOLOv13优化:PoolingFormerCGLU模块 MetaFormer 框架 + 池化混合器 手把手教你自注意力

PoolingFormer1 是一个基于 MetaFormer 框架 的轻量化卷积-Transformer 混合模块,通过 Pooling 取代自注意力,实现: 更低的计算成本 一定的全局信息融合 兼容 CNN 和 Transformer 的优点

FJN110的博客 425

Android NDK Win10安装及环境变量配置(图文详细教程)

之前因为工作原因需要用到Android NDK ,但是由于我是Unity开发,平时一般不会用这个,所以电脑上经常配置好环境。因此这里做一个简易的保姆级傻瓜教程,作为学习总结,以后有需要可以无脑一步步照做。

魔术师Dix的博客 1万+

【数据分析】R语言分段结构方程模型手把手教程(Piecewise Structural Equation Model)

分段结构方程模型(Piecewise Structural Equation Model, SEM)是一种用于分析变量之间因果关系的统计方法。它通过将复杂的因果关系分解为多个简单的线性模型来评估变量之间的直接和间接效应。与传统的结构方程模型(SEM)不同,分段结构方程模型不需要假设数据的多变量正态分布,因此在处理非正态数据时更为灵活。

专注生信领域 2647

android studio ndk 目录,走进AndroidStudio下的NDK(一)

本文已授权微信公众号:鸿洋(hongyangAndroid)在微信公众号平台原创首发。这一篇文章主要介绍在AndroidStudio环境如何搭建JNI开发环境,并通过一个helloword的方式了解进行JNI开发的步骤。开发编译环境AndroidStudio 2.1.2SDK 23.0.3NDK 12.1.2977051NDK安装与配置首先创建一个Android项目工程,File-->New...

weixin_36450592的博客 2770

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

AndroidStudio NDK开发环境配置及示例

AndroidStudio NDK开发环境配置及示例 版本说明 版本 作者 日期 备注 0.1 loon 2020.8.26 初稿 目录 文章目录AndroidStudio NDK开发环境配置及示例版本说明目录一、Android Studio NDK环境配置1、下载ndk和工具:2、配置项目的sdk和ndk二、NDK示例工程及简单分析三、最后 首先安装好AndroidStudio及SDk环境配置,这个我之前已经总结过了: https://blog.youkuaiyun.com/weixin_395

逍遥游的博客 3万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

AndroidStudio中的NDK开发初探

前段时间由于做比赛的事,一直都没时间写博客,现在终于可以补上一篇了,一直想学习一点NDK开发的知识,但是迟迟没有动手,正好有一个NDK相关的项目机会,便查阅了一些资料,遂将学习的一些心得方法记录于此。

写代码的林克 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

走进AndroidStudio下的NDK

这一篇文章主要介绍在AndroidStudio环境如何搭建JNI开发环境,并通过一个helloword的方式了解进行JNI开发的步骤。 开发编译环境 AndroidStudio 2.1.2SDK 23.0.3NDK 12.1.2977051 NDK安装与配置 首先创建一个Android项目工程,File-->New-->New Project,一路下一步就好,最后finish创建完

Liyunlong 3555

AndroidStudio NDK环境3种搭建方式

AndroidStudio NDK环境3种搭建方式 转载。 https://blog.youkuaiyun.com/zhang_jun_ling/article/details/85621427 一、前言 如今Android开发IDE都是使用的AndroidStudio,之前我写过一篇文章介绍的是如何在Eclipse中搭建NDK环境 ...

weixin_30348519的博客 610

AndroidStudio使用NDK配置方法

配置Gradle生成so 编译多个模块 关联Androidmk到Gradle 使用cmake 配置Gradle生成so在AndroidStudio2.1及以前我是通过下面的方式配置NDK的,不知道是从哪个版本开始的,我第一次在AS上使用NDK的时候用的就是AndroidStudio2.1了。首先在gradle.properties里面添加android.useDeprecatedNDK = true

weiersyuan的专栏 1万+

Android NDK学习笔记15-配置AndroidStudio

现在大家越来越多的使用AndroidStudio进行Android开发,那么今天就和大家一起交流一下AndroidStudio开发NDK的配置方法。 AndroidStudio配置NDK 通常我们有两种方法实现配置 1手动方式配置: 1.在Google的官方网站下...

112

AndroidStudio搭建NDK开发环境

两年前在公司电脑上搭建过NDK开发环境,很久没有使用过了。最近,闲来无事,在笔记本上搭一下Ndk开发环境,记录一下AndroidStudio搭建DNK开发环境的过程。 一、下载NDK 去开发者网站下载ndk。地址:https://developer.android.google.cn/ndk/downloads/index.html。如下图所示,下载对应版本的ndk。 二、解压NDK到S...

zhaojun的博客 2万+

AndroidStudio 配置NDK

获取NDK方式 1.网站上下载NDK安装包 地址:https://developer.android.google.cn/ndk/downloads/ 2.利用AndroidStudio下载 按步骤选择NDK包,然后进行下载 配置NDK的环境变量 桌面 - 我的电脑 右键 - 属性,然后按照下面步骤,添加系统变量 这里新创建的系统变量是 变量名:NDK-ROOT 变量值:即NDK下载安装后的路径 点击确定后,在系统变量中找到Path,选择编辑 选择新建,然后添加内容 .

木头小颖的博客 3897

如何在AndroidStudio中使用cmake编译NDK

一、概述      之前由于AS没有强制,所以也就守旧一直沿用以前的NDK开发方法,在gradle.properties添加android.useDeprecatedNdk=true的属性。可是AS3.0以后被强制必须使用Cmake编译了,不得已才来学学,终于发现了这东东的好处。Cmake是AS在2.2中提出的更加方便的JNI开发的构建工具,相当于之前使用是NDK-BUILDE,。 Cm

伊苏Smoyan的博客 6604

AndroidStudio 3.0 NDK环境搭建

AndroidStudio 3.0 NDK环境搭建 前言 网上关于NDK开发环境配置的相关博客已经很多,但是很少有关于NDK在AdnroidStduio 3.0以上的环境搭建相关的博客.所以特此记录下. 首先是对NDK的介绍,先对NDK有个初步的印象: NDK(Native Development kit)是一个工作集,为了能让开发者可以更加直接的接触Android硬件资源和方便地使用...

pvpheroszw的博客 1226
上一篇: Android NDK开发起步Hello Jni
下一篇: 走进AndroidStudio下的NDK(二)
千雅爸爸
博客等级 码龄18年 292粉丝 639原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值