android NDK环境开发及生成so文件

混合开发之—— Android studio 下的NDK环境配置,生成so文件步骤并且进行简单使用 1:什么是NDK 它的全拼是Native Develop Kit。 Android NDK 是一套允许您使用原生代码语言(例如C和C++) 实现部分应用的工具集。 在开发某些类型应用时,这有助于您重复使用以这些语言编写的代码库。 NDK具体讲解我这里就不做介绍了,直接看图讲解: NDK下载和环境配置 首先在android studio的SDK中下载NDK和CMake,然后找到它们的路径,我的是:C:\Users\lJb\AppData\Local\Android\Sdk\ndk\21.0.6113669\ 阅读详情

安装环境:

不用再看网上很多繁琐的NDK环境安装教程,Google已经集成了所有应该集成的插件,就像sdk、adt一样;所以安装环境非常之简单,就分两部:

一、去官网下载安装包,这个就不多说了,对应自己的pc系统版本下载对应安装包就行,然后解压缩;

二、设置环境变量,个人习惯一般在系统Path里设置,只要你设置过java的,这个都是小case;然后去cmd里敲  dnk-build命令,出现以下界面就说明ndk环境设置成功了。




安装了NDK,可以在eclipse下直接生成so文件。NDK的压缩包里面自带了一些sample工程,NDK的文件直接解压到某个目录下即可。


第一次生成so文件的时候,我们先使用NDK的sample下的hello-jni的例子。

1、启动eclipse,通过Create project  from existing source,选择hello-jni的目录,按默认选项创建工程即可;

2、观察hello-jni的工程目录结构,发现根目录下多了一个名叫jni的文件夹,该文件夹下面有两个文件,Android.mk和hello-jni.c。

Android.mk是用来生成so文件的配置文件,我们来看看里面是什么:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE    := hello-jni
LOCAL_SRC_FILES := hello-jni.c

include $(BUILD_SHARED_LIBRARY)

include $(BUILD_SHARED_LIBRARY)表示会生成一个动态链接库,即so文件,生成的库文件名称为lib*.so

LOCAL_MODULE    := hello-jni表示将要生成一个名称为libhello-jni.so的库文件

LOCAL_SRC_FILES := hello-jni.c表示生成库文件的源文件是hello-jni.c

打开hello-jni.c文件,会看到里面有一个函数:


jstring Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env, jobject thiz )
{
return (*env)->NewStringUTF(env, "Hello from JNI !");
}

这个函数从根据什么原则生成的呢?是根据src下的HelloJni.java文件中的函数 public native String  stringFromJNI();生成的。命名规则为:

Java_(固定开头)com_example_hellojni(用"_"连接的包名)_HelloJni(类名)_stringFromJNI(函数名)

这个函数的生成可以使用javah的命令:用命令行方式进入工程目录的bin\classes目录下,运行javah com.example.hellojni.HelloJni,就会把所有native的函数都按规则生成在一个名为HelloJni.h的头文件里。

3、新建并配置一个新的Builder

1) 点击Project->Properties->Builders->New,新建立一个Builder。在弹出的对话框上面点击Program,点击OK;

2) 在弹出的对话框【Edit Configuration】中,配置选项卡【Main】:

Location中需要填入nkd-build.cmd的路径(NDK安装目录下)。

WorkingDiretcoty中需要填入HelloJni的工程根目录。

3) 在【EditConfiguration】中,配置选项卡【Refresh】:

勾选“Refresh resources upon completion”,

勾选“The entire workspace”,

勾选“Recuresively include sub-folders”。

4)在【EditConfiguration】中,配置选项卡【Build Options】:

勾选“After a “Clean””,

勾选“During manual builds”,

勾选“During auto builds”,

勾选“Specify working set of relevant resources”。

点击“Specify Resources…”勾选TestNDK工程的“jni“目录,Finish!

保存设置,点击OK。

4、生成so文件

由于我们勾选了“During auto builds”,所以在工程有所改变的时候,so文件便会自动编译,正确生成以后就能在工程目录下发现多了两个文件夹,文件夹libs\armeabi目录下生成了一个叫libhello-jni.so的文件。至此,使用NDK生成so文件的工作就完成了。

5、so文件的调用

在HelloJni.java文件中有一段代码:


[mw_shl_code=java,true]static {
System.loadLibrary("hello-jni");
}[/mw_shl_code]

使用loadLibrary就可以加载该so文件了,加载的时候不需要写libhello-jni.so,只要写hello-jni就可以了。
Android Studio NDK开发并调用so库 前言 什么是NDK? NDK全称是Native Development Kit,NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。NDK集成了交叉编译器(交叉编译器需要UNIX或LINUX系统环境),并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就... 阅读详情

相关推荐

unity+ndk+android+.so+apk

1. 安装NDK 解压下载后的文件夹,将文件夹路径添加到系统环境变量Path中 2. 编写文件 makeSo文件夹名称可以修改,但jni不要修改 Android.mk LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := NativeCode LOCAL_C_INCLUDES := $(LOCAL_PA...

smilife_的博客 3262

鸿蒙OS单独编译可执行文件以及SO库等

如何在鸿蒙源码中添加编译c语言可执行文件 在源码目录applications/sample中增加目录hello_world,然后在该目录下添加文件BUILD.gn和main.c,其中BUILD.gn内容为 executable(“hello_world”) {//双引号内容一定需要和目录名相同,否则无法编译成功 sources = [ “main.c” ] } 执行hb build -f -T //applications/sample/hello_world命令生成对应的可执行文件,执行成功后,会在 ou

qq_41795122的博客 2689

Pixel 5 Root, 安装Xposed框架, 解锁5G教程

Pixel 5 5G手机root 教程 前几天买的手机终于到货了,现在又开始折腾了,经过我的努力,现在已经拥有root权限了。

Ender_Zhao的博客 3万+

AndroidNDK开发——使用Cmake编译生成so文件

可以看到项目demo成功运行,期前也遇到不少问题,so的加载和调用,jni初始化,数据传递等等,如果有兴趣的同学可以自己去试试,学到手的东西才是自己的。本文是以串口通信的so为例,所以里面的头文件及数据调用的方法都是在加载串口数据,不过我为了测试所以暂时只写了一个简单的,因为测试串口需要设备和串口通信助手,这里先不讲,后面有空会逐一讲解串口通信流程和实战demo.

u012556114的博客 3979

告别软件轮询!用STM32G474的COMP比较器实现纳秒级硬件过压保护(CubeMX配置详解)

本文详细介绍了如何利用STM32G474的COMP比较器实现纳秒级硬件过压保护,通过CubeMX配置详解,展示了硬件比较器相比传统软件轮询方案在响应时间、CPU占用和可靠性等方面的显著优势。文章还提供了实战配置流程和优化技巧,帮助工程师快速构建高效的硬件保护系统。

weixin_28683689的博客 351

智护健康:基于 ESP32 的可穿戴式心率血氧远程监测手环设计与实现

随着健康管理理念的普及,可穿戴式健康监测设备成为刚需。本文设计了一款基于 ESP32 芯片的可穿戴式心率与血氧远程监测手环,通过集成专业生物传感器采集生理数据,借助 ESP32 的无线通信能力实现数据远程传输,搭配手机 APP 与云平台完成数据存储、分析与预警。文中详细阐述了硬件选型、模块接线、软件设计流程及核心代码实现,该手环具备低功耗、高精度、实时性强等特点,可满足日常健康监测与远程照护需求。

weixin_42300449的博客 1198

Android Studio 进行NDK开发,实现JNI,以及编写C++与Java交互(Java调用本地函数)并编译出本地so动态库

NDK集成了交叉编译器(交叉编译器需要UNIX或LINUX系统环境),并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。就会生成两个文件这几个so文件,如下图一,然后就能正常获取到C++文件(也就是cpp文件)中的数据了,还可以把so动态库提供给第三方使用,具体方式详见。在android的JNI中,要先将相应的C/C++打包成so库,然后导入到lib文件夹中供java调用。(5)安卓中的so文件是什么?

UrasakiNakajima的博客 8428

YOLOv8中的可变形卷积改进 | 从DCNv1到DCNv3的多位置替换可变形卷积保姆级实操

可变形卷积(Deformable Convolution)最早由Dai等人在2017年提出,其核心思想是在标准卷积操作的基础上,引入可学习的偏移量(offsets),使卷积核能够自适应调整其采样位置,从而增强模型对目标变形的感知能力。return x本文通过深入探讨可变形卷积在YOLOv8中的应用,详细介绍了DCNv1、DCNv2和DCNv3的原理和实现,并通过实验验证了其在目标检测任务中的有效性。未来,我们将继续探索更多优化策略和技术,提升YOLOv8模型的性能,以应对更复杂的目标检测任务。

一键难忘的博客 4049

Android Studio 编译C/C++生成.so文件

NDK

qq_45661948的博客 7364

多无人车协同探索开源包部署教程及常见报错解决方式

本博客将介绍项目的基本概念、部署步骤以及常见问题的解决方案。该项目利用 RRT(Rapidly-exploring Random Tree)算法,通过多机器人协作进行高效的环境探索,适用于自动化与自主导航任务。项目简介:介绍该项目的核心算法、特点及应用场景,展示如何通过多个机器人共同工作来提升探索效率。部署教程:详细讲解如何在 ROS Noetic 环境中部署该项目,安装依赖、创建工作空间、克隆代码并编译项目。项目运行:包括单机器人与多机器人自主探索的示例,帮助读者快速理解和实践项目。

慕羽★的博客 1764

【STM32系统及仿真】基于STM32+蓝牙设计的智能窗帘系统__资料编号8

本项目设计并实现了一种基于STM32单片机的智能窗帘系统,集成了光敏传感器、温湿度传感器、蓝牙模块和OLED显示屏,实现了窗帘的自动调节、环境监测和远程控制功能。系统采用STM32F103C8T6作为主控制器,通过光敏传感器检测环境光强,温湿度传感器监测室内环境,蓝牙模块实现与手机APP的通信,用户可以通过APP远程控制窗帘的开合状态。系统在检测到环境光照强度或温度超出设定范围时,可自动调节窗帘的开合,以达到节能和提高舒适度的目的。

嵌入式阿齐Archie 2万+

Android NDK制作so库

序言:该篇文章记录Android studio怎么使用NDK制作so库过程 1. 配置NDK环境 (1)点击1处进行NDK下载,勾选3处可以查看NDK的具体版本号 (2)NDK下载后的位置 SDK位置在:D:\AS\SDK NDK位置在:D:\AS\SDK\ndk,我这里下载了三个版本的 (3)配置环境变量 a. 打开电脑控制面板---->系统和安全---->系统---->高级系统设置---->环境变量 b.在系统变量里点击新建,创建一个NDK的环境变量 变量名就自己定义了,我

weixin_41914179的博客 712

scp 出现Permission denied错误 解决方法

第一种说辞(来源于网络),说是scp涉及root远程登录,默认是没有打开的,只需要把配置文件中的permit打开即可。最后scp的时候发现还不行,只需要将其scp的服务器用户名 修改为root即可。第二种解决方案,将scp 传输的服务器用户名改为root即可。(这是最基本的,一开始我忽视了这个问题,导致一直scp不了)window系统下,向ubuntu操作系统 scp传输文件。

码农研究僧的博客 6727

[Android]NDK开发环境配置与JNI开发

本文的目标是实现NDK开发环境的配置以及学习JNI开发流程。1.环境配置 本文的开发环境为win10 64位+Eclipse+Android ADT+NDK+CDT。 2.安装: 这里只介绍NDK和CDT的安装。 2.1从链接:http://dl.google.com/android/repository/android-ndk-r11c-windows-x86_64.zip下载NDK开发包

Forgive Me 6688

57、各向异性材料力学问题的分析与求解

本文系统分析了各向异性材料在扭转和平面变形问题中的力学行为,介绍了基于应力和位移的求解方法,包括应力函数推导、位移场假设、艾里应力函数法等。通过具体示例,如椭圆截面杆的扭转和各向异性板的均匀拉伸,展示了求解过程,并讨论了各向异性材料在工程应用中的意义及未来研究方向。

7h6j5k4l3的博客 204

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

安卓NDK开发环境配置与生成so文件方法二

上一篇文章介绍了利用eclipse来进行ndk开发生成so文件,该文章介绍利用终端命令行生成so文件,并补充NDK环境下载配置。 1. 电脑上需要下载相应版本的ndk,我是用的是android-ndk-r14b-windows-x86_64版本,相应的版本下载请参考博文http://blog.youkuaiyun.com/shuzfan/article/details/52690554,该博主太伟大了,整理

hapoy9的博客 562

假人有限元模型

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

NDK开发一

0x1:新建立一个安卓工程 一直NEXT 到Finish 0x2:编写调用so代码和方法定义 在MainActivity.java同目录下右键创建一个JniGg.java文件,用于调用so JniGg.java的代码如下 然后右键编译一下 在找到项目的目录 NdkTest\bin\classes\com\ndktest 看是否有代码生成 一切正常编译...

weixin_30667649的博客 116

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

eclipse中加载C/C++源文件生成对应的so文件(图文教程) 2020最新

准备工作: 确保eclipse正确配置了ndk开发环境; 第一步、新建一个安卓项目 第二步、添加一个ndk支持 第三步、引入jni支持 第四步、在jni文件夹下创建(.c、.h、Android.mk、Application.mk)等文件; 项目结构 .c文件:安卓调用的so文件里方法的具体实现; .h文件:.c文件里用到的方法(类似java里的接口定义)和结构体(类似java里的实体类)的定义; Android.mk文件:标注了SO文件生成相关的信息,例如生成路径、生成名称、引

wangkai13810651628的博客 798

android调用so封装jni,GitHub - Michelle0716/AndroidJniDemo1: 安卓对c进行so文件打包,并以jni的形式进行调用...

AndroidJniDemo1安卓对c进行so文件打包,并以jni的形式进行调用项目中的部分app : 编译so文件jniDemo: 添加运行so文件开发环境:android studio 3.0.1(As3.0以上创建项目,选择支持c/c++,项目会自动生成需要的配置,不需要在编写cMakeList文件,创建后,直接运行,即可调用cpp里面c文件的内容)配置ndk谷歌官方下载 ht...

weixin_42358791的博客 219

win7+eclipse+ndk创建第一个自己编写的ndk应用程序

1、点击下图图标右边三角符号->External Tools Configurations... 2、(1)新建一个configurations(2)自定义一个名字(3)选择你自己jdk\bin目录下的javah.exe(4)选择project_loc在后边加上\src(5)仿照着写吧 3、同样方法创建NDK 4、创建安卓应用程序MyNdk (1)生

猛虎o蔷薇 586

android NDK环境搭建及练习

NDK环境搭建: 1. ndk资源,百度ndk去官网下载;有的是压缩包,有的exe文件,都是双击解压到当前文件夹 2. Cygwin是一种在windows环境下用Linux编译的软件,因为最终的程序在android或者ios内核都是Linux,所以难免程序用编译linux;该工具下载去Cygwin官网下载;下载后安装教程可以百度,很多图文教程;大概说一下:官网下载后,打开软件,这软件还

jackzhouyu的专栏 1187

Windows环境下NDK环境搭建

在windows平台上新的NDK版本(r7及其以上)可不借助cygwin就能编译链接产生.so动态链接库文件。 r7以上需要使用cygwin或者r7以下 的请自行搜索。      环境eclipse 4.4 安装ADT插件。       NDK android-ndk-r10d 32位的。本人的android环境目前都是32位。      android-ndk-r10d 是个e

成长的味道 1007

关于NDK如何生成so文件

准备工作 由于ndk版本和IDE的版本可能存在不一致性,所以编译时会检查ndk的过时性,这个时候如果报警了,可以在gradle.properties文件下添加一行: ## 随着gradle版本的升级,这条设置被废弃了,也就是说高版本gradle里就算设置了下面这句,也会被移除 android.useDeprecatedNdk=true 配置环境变量,方便通过命令提示行,在任意地方使用ndk命令 linux不用配置环境,Windows需要在环境变量里找到Paht,添加ndk根目录地址路径。ndk下到哪

haizhuo的博客 1080

Android-NDK编译.so文件

记录下ndk如何编译.so文件 按部就班的说下:  首先下载NDK,这个我是直接在Android studio里面下载的,也没去官网下载,下载好了,就是配置环境变量了,因为我是从Android studio里面下载的,所以就直接在path中配置D:android_sdk/ndk-bundle这个路径了,配好了后我们可以用ndk-build去cmd命令台检测下看下是否配置成功  接下来就是在An

浮生若梦-笑叹人生 856

NDK开发:保存App私密信息成So库,使用加载动态连接库获取私密信息

在我们App开发中总会有一些私密信息需要保存到App客户端,即使App有Progrund做代码混淆,但是安卓有很多反编译的方法获取App原代码,这些私密信息还是不够安全。 下面我们就来实现一个把私密信息保存成so库,然后让App动态加载,或许这些私密信息。 1)首先,安装安卓的NDK开发环境: 比较完整的NDK开发步骤: 我也按照网上的配置了很多次生成so文件的时候总是会出现问题,编译可以通过,但...

阿甘正传 665
上一篇: 英文电邮札记
下一篇: androidUI(一)之程序员有必要了解的8px原理
android_xiaozhou
博客等级 码龄14年 14粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值