Android开发基础(2.1)--NDK 的搭建和基本用法

android NDK 开发环境搭建 linux mac windows(WSL)下android NDK开发环境搭建 阅读详情

I.NDK配置和基本使用

   NDK简介见前篇。较新的NDK都无需配置,下载解压后即可使用。关键是不同版本的NDK开放的API不同,常用的是 r4和r5,后者面向Android 2.2+, 支持UI/图形/声音的部分C接口,还有STL的支持(遗憾的是r5中的STL没整出来)。由于我面向的平台是2.1的,所以,我用的是 r4c。

   这里就提到的关键一点了,那个NDK是真正配置好的完全支持C++(包括STL)的?网上比较有名的是Crystax NDK r4, 我用的是Mozilla 为开发Android Firefox开发而使用的NDK r4c(与Crystax类似),下载地址是:

http://ftp.mozilla.org/pub/mozilla.org/mobile/source/android-ndk-r4c-0moz3.tar.bz2

具体如何修改自己的NDK我后面再说。

1.NDK的基本使用

   这里说的基本使用,就是利用现有的NDK工具生成供SDK JAVA通过JNI调用的共享C库(lib**.so)

   以上篇的工程Helloworld为例,在工程文件夹下:

#mkdir jni

#cd jni

至少要创建Android.mk和helloworld.c,例如:

Android.mk


这是个NDK要使用的小型Makefile,更多的选项可以看 $NDK/docs/* 内的相关文档。

helloworld.c 遵从一般JNI代码的规定:


  注意C++代码里面要加上 extern "C",防止C++的名称修饰使得JNI无法找到函数名。命名规则就是:Java_project_name_Activity_class_name_func_name.

  编译生成,采用的是NDK封装好的脚本ndk-build, 在$NDK主文件夹下,使用很简单,在工程主文件夹

下执行:(假设$NDK已经加入到$PATH)

#ndk-build

...

即可,若成功,则主文件夹的 libs/armeabi 或者libs/arm-v7te 下生成

libhelloworld.so

2.SDK中使用NDK生成的文件

  修改src/my/helloworld/Helloworld.java,使之通过JNI调用C函数:


其中先加载libhelloworld.so,再调用其内的hellow()函数。

#ant debug

重建工程

#adb install ./bin/Helloworld-debug.apk

安装到设备上,运行如下:

Android NDK:在Android Studio下的基本开发步骤和基础知识点总结 javah -d (jni新建文件名) -classpath (sdk路径);(class 路径) (class文件名,包括包名) -d 输出目录,jni是gradle默认的路径 -classpath jar的路径,有时碰到的找不到Activity的类的错误可能是由这个引起的 com.zhuanghongji.ndkdemo.JNITest 包名+类名 执行上述命令发现在main目录下多了一个jni文件夹,而且里面有生成好的头文件:com_zhuanghongj 阅读详情

相关推荐

Android NDK和OpenCV整合开发 (1) 环境搭建

Android NDK和OpenCV整合开发 (1) 环境搭建 ##### 第一部分 搭建环境 [注:以下所有下载的sdk都保存在虚拟机的/home/xface/tools目录下,也可以到百度网盘下载,地址是http://pan.baidu.com/s/1mg2Wdx2,不同版本的配置方式可能有些变化,如果不是很清楚版本问题的话,推荐使用虚拟机中使用的版本] 1.配置Java环境 ①下

ye_mingjia的专栏 622

android开发之NDK配置开发

输入命令javah -jni com.example.mr5.jnidemo.JniUtil --------包名+类名。3、将CMake的安装路径添加到PATH环境变量,或将其添加到项目的local.properties文件中,如下所示。5、在local.properties的文件添加NDK的路径和SDK的路径。8、在build.gradle文件中ndk的模块。

qq_42282862的博客 5301

Android NDK开发(一)环境搭建及运行示例

NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。这些工具对开发者的帮助是巨大的。NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。NDK可以自动地将so和Java应用一起打包,极大地减轻了开发人员的打包工作。 2.NDK提供了一份稳定、功能有限的API头文件声明 Google明确声明该API是稳定的,在后续所有版本中都

m0_70082867的博客 1129

Android:NDK

在Android SDK首次发布时,Google就宣称其虚拟机Dalvik支持JNI编程方式,也就是第三方应用完全可以通过JNI调用自己的C动态库,即在Android平台上,“Java+C”的编程方式是一直都可以实现的。从该版本的NDK中看出,这些API支持的功能非常有限, 包含有:C标准库(libc)、标准数学库(libm)、压缩库(libz)、Log库(liblog)。NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。

katerdaisy的博客 2362

【电力电子控制】基于强化学习的单相逆变器并网电流控制

本文将尝试以 DQN(Deep Q-Network)为例,设计并训练一个面向单相逆变器的智能控制器,实现对并网电流的精准调节。

weixin_62596197的博客 463

WhatsApp注册流程逆向分析:从协议解析到风控对抗实战

移动应用安全分析的核心在于理解客户端与服务端的交互协议与验证机制。通过逆向工程,可以深入剖析应用的数据加密、传输与身份验证原理,这对于构建安全模型、进行自动化测试和风控策略研究具有重要技术价值。在即时通讯、金融支付等高安全要求场景中,掌握应用注册流程的底层实现是评估其安全性的关键。本文聚焦于使用动态分析工具如Frida进行Hook和流量抓包,结合设备指纹识别与模拟器检测技术,详细解析了大型应用的注册风控体系,为安全研究人员和开发者提供了从环境搭建到实战对抗的完整方法。

weixin_33935636的博客 316

超详细的Android NDK开发环境搭建(1)

注:这里使用的是kotlin语言,方法使用external修饰,如果是java则用native修饰。此函数的功能为返回一个字符串:“Hello from C++”。

2401_84538474的博客 985

STM32入门教程:WiFi通信

STM32是一款强大的嵌入式系统开发平台,可以用于开发各种应用程序,包括WiFi通信。在本教程中,我们将介绍如何使用STM32开发板和WiFi模块进行无线通信。以下是一个详细的代码案例,涵盖了WiFi通信的基本概念和实现。

qq_67153941的博客 1349

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

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

sa3221sa的博客 3682

论文代码复现 | 无人机与卡车联合配送(Python+Gurobi)(The flying sidekick traveling salesman problem)

无人机配送-代码复现The flying sidekick traveling salesman problem-Part 1文献笔记:(无人机配送-代码复现)The flying sidekick traveling salesman problem-Part 1摘要论文主要图标摘录数值实验算例结果参考文献 文献笔记:(无人机配送-代码复现)The flying sidekick traveling salesman problem-Part 1 摘要 Once limited to the milit

HsinglukLiu的博客 3万+

告别WSL!实测AMD ROCm7预览版在Windows下跑ComfyUI,速度提升与避坑全记录

本文详细记录了在Windows原生环境下部署AMD ROCm7+PyTorch+ComfyUI的全流程,相比WSL环境性能显著提升。涵盖硬件兼容性确认、开发环境配置、Python环境搭建、ComfyUI部署优化及性能对比测试,为AI绘图爱好者提供实用指南。

weixin_42528090的博客 671

安卓开发环境搭建JDK + SDK Manager + NDK + Android Studio

第一次接触安卓开发,配置环境就折腾了一晚上。在此分享安装与配置过程,希望可以帮助更多入门开发者。 一、JDK JDK(Java Development Kit) 是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。 1. 下载 : 官网下载地址 如图(红圈处注意,这里我选择的是8u191,64位,wi...

chengxunyang的博客 4445

【ffmpeg+cuda实现硬编解码】

最近在搞一个项目,我需要向AI提供视频帧数,本来一开始摄像头是H.264的编码,我直接复制流推到AI层去推理,然后需要将事件回溯成30秒的视频截取。结果摄像头换成了HEVC编码,截取的视频不能在网页直接播放(需要JS实现调用硬解码)。一开始的方案是ffmpeg直接将HEVC转成H.264结果因为事务巨多CPU占用量过大,导致影响到了推理,因为本身选用的模型+杂七杂八的业务逻辑也要占用大量的CPU资源,所以经过研究把ffmpeg和nvcodec结合起来来平衡设备性能,算是解决了这个问题吧。这两个是前提条件,我

jiexijihe945的博客 7232

Android NDK开发基础

仅作为个人学习记录,请小心求证。 https://developer.android.com/ndk/guides?hl=zh-cn 前言 NDK即Native Development Kit,是Android上用来开发c/c++的开发工具包。 安装步骤:https://developer.android.com/studio/projects/install-ndk 一、基础用法 在local.properties中配置ndk目录: ndk.dir=/Users/bc/android-ndk-r1.

BC工坊 5181

[Python图像识别] 五十二.水书图像识别 (2)基于机器学习的濒危水书古文字识别研究

上一篇文章详细讲解如何利用数据增强方法实现图像数据集的扩充,并以濒危水书作为案例讲解。这篇文章将详细讲解基于机器学习的水书图像识别方法,以图像像素统计为特征开展图像分类讲解,这是最基础的方法,也为后续深度学习图像分类描述提供支撑。基础性文章,希望对您有所帮助!让我们开始吧,且看且珍惜。

杨秀璋的专栏 989

基于Simulink的伺服电机位置闭环控制仿真

本文带你从零构建了伺服电机位置闭环控制系统​ 的完整Simulink仿真模型,实现了:✅ 搭建PMSM伺服电机、逆变器、机械臂负载的主电路与编码器反馈模型;✅ 用MATLAB Function实现三环控制(位置环PID、坐标变换、电流环PI);✅ 验证阶跃定位(稳态误差0.002°、响应0.08s)与正弦跟踪(误差0.008°)的高性能;✅ 对比开环控制,明确位置闭环在精度、响应、抗扰上的优势;✅ 理解“三环嵌套+反馈校正”的核心思想(精密定位的工程实现)。核心收获。

amy_mhd的博客 173

windows下eclipse搭建android_ndk开发环境

安装cygwin: 由于NDK编译代码时必须要用到make和gcc,所以你必须先搭建一个linux环境, cygwin是一个在windows平台上运行的unix模拟环境,它对于学习unix/linux操作环境,或者从unix到windows的应用程序移植,非常有用。通过它,你就

ygc87的专栏 9007

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Android NDK开发环境搭建

本文是基于Android SDK开发环境搭建完成的基础上进行的。在搭建NDK开发环境时,我也参考了网上很多的教程,但是在搭建的时候遇到了一些问题,写这篇文章的目的仅仅是把自己遇到问题的解决办法分享给大家。 其实NDK开发与SDK开发都是Android应用开发的一系列工具的组合,只不过前者NDK比较偏重于底层开发,使用的语言是C或者C++,可以实现一些使用SDK比较难实现的功能,为SDK开

JJMM2009的专栏 2103

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

android-ndk开发(1): 搭建环境

给出了一份还算稳妥的 android-ndk 开发环境入门说明。

baiyu33的博客 1344

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Android NDK开发之旅(1): Eclipse中NDK环境搭建与JNI开发流程

看着本篇文章的标题,或许你会问现在AndroidStudio版本都更新到3.0了,从2.2开始就可以直接使用Cmake来构建NDK项目,根本没有必要再去研究NDK在Eclipse中的开发。嗯,在我使用过AndroidStudio构建NDK项目后,我也是这种想法,通过cmake编译C/C++代码来构建NDK开发框架确实是非常智能、步骤也很简单,完全可以秒杀Eclipse。但是,对于从来没有开发NDK项目的人来说,直接上AS开发可能一是无法明白这其中的原理,比如Android项目是如何构建C/C++开发环境的、

老蒋也疯狂 4403

C++开发安卓、windows下搭建Android NDK开发环境

1. NDK(Native Development Kit) 1.1 NDK简介 Android NDK是一套允许开发人员使用本地代码(如C/C++)进行Android APP功能开发的工具,通过这个工具,我们可以把用C/C++代码编译成可以直接运行在Android平台上的本地代码,这些本地代码以动态链接库( *.so )的形式存在,也正因为这样,我们可以通过复用这些动态链接库从...

aolan7349的博客 546

cocos2d-x安卓开发环境搭建(windows+eclipse+ndk)

安卓环境搭建   【一 写在前面】 环境搭建的顺序是这样 1.JDK&JRE         安装JDK会顺带安装JRE的,这一步是为了可以编写和允许普通的JAVA程序 2.Eclipse            JAVA 的 IDE,这一步是为了方便地开发JAVA程序 3.CDT                是Eclipse的一个插件,这一步是为了可以引入

luxiaoyu_sdc的专栏 2970

eclipse中android NDK开发环境的搭建

方法一: 安装步骤: 1.  安装JDK. 2. 安装Eclipse 3. 搭建Android开发环境 3.1  安装Android SDK 3.2  安装Eclipse的ADT插件.            3.2.1  启动Eclipse, 选择菜单项的Help->Install New Software            3.2.2  点击Add, 输入名称,然后在UR

believe的专栏 4594

Android Studio NDK开发环境搭建及Demo示例

Android Studio NDK开发详解 所用工具版本 Android Studio 1.5 android-ndk-r10e-windows-x86_64.exe

fenglincanyi的博客 1612

安卓基于NDK开发,从环境搭建到demo运行

注:本教程基于最新的Android sudio3.3,自己仅作记录,一些具体解释可以到 1、环境搭建 下载ndk https://developer.android.google.cn/ndk/downloads/  解压后将根目录配置到系统的PATH路径下面           2、demo开发 build.gradle中配置ndk相关信息 android { compil...

u010054982的博客 545
上一篇: volatile 与诡异事件
下一篇: Android开发基础(2.2)--利用NDK搭建自己的Android交叉工具链
Rozen
博客等级 码龄16年 19粉丝 17原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值