安卓之JNI 和 NDK编程(一)内部samples的调用

Android NDK Sample - 配置及导入 本篇文章介绍如何导入来自GitHub的googlesamples的android-ndk目录下的项目。 阅读详情

目录

一、前言

二、实战讲解

1>、NDK环境安装

1、不用安装Cygwin

2、Eclipse、ADT插件、NDK插件

3、注意点:

2>、项目案例讲解1-内部samples调用

3>、项目案例讲解2-so库的生成


一、前言

由于各种原因创业维艰,虽然市场行情不好但是不要灰心,坚持积累总结加油总会有自己的康庄大道的。好了废话少说,其实在2013年做视频开发的时候,就开始接触过相关JNI 和 NDK编程,但是在最近的面试过程中,感觉对这块知识点有点模糊了,不是每个项目都会用到NDK,时间越长也就渐渐模糊了。

在这之前其实也做过相关笔记和总结,但是拾起来比较慢,也说不出所以然,所以干脆为了方便说明查阅单独整理写成一篇博文吧!也许这就是写博文的其中一个好处吧。如下图,曾经来过!主要还是告诫自己弄过的知识点要及时梳理、多总结、多写博文,在以后的开发当中方能事半功倍啊!

二、实战讲解

开头我就不讲概念的一些东西了,先把一些项目调用案例实战来一波吧!先知道怎么用,或许这是你项目开发正所需要的?或许你在用的时候就会思考很多为什么了?概念的东西网上很多,下篇文章再对概念进行集中轰炸。。。

1>、NDK环境安装

1、不用安装Cygwin

Cygwin已过时,Cygwin安装浪费我大量时间。所以:时刻关注新技术、搜索时的关键字非常重要。如:此文档,你应该搜“Android NDK环境搭建2016”(注:2016年的笔记现在2019年来整理,但是Eclipse就是在2016年底就不更新了,所以如果你还用eclipse肯定可以用,现在都用Android Studio你懂得。。。该略过就略过吧!)

使用最新ndk,直接抛弃cygwin,以前2013年那会做Android的项目要用到NDK就必须要下载NDK,下载安装Cygwin(模拟Linux环境用的),下载CDT(Eclipse C/C++开发插件),还要配置编译器、环境变量,特别麻烦,新版就不需要了。

2、Eclipse、ADT插件、NDK插件

Android官网下载Android的开发工具ADT(Android Development Tool的缩写),该工具集成了最新的ADT以及Eclipse、NDK,下载一个最新版本SDK,解压之后就可以用了。但NDK有的没有,如下:

查看是否有NDK?

Window-->Preferences-->Android-->NDK(我当时的Eclipse没有NDK选项),

需下载NDK插件( com.android.ide.eclipse.ndk_23.0.2.1259578.jar ),

将文件“com.android.ide.eclipse.ndk_23.0.2.1259578.jar”复制到sdk 自带的eclipse目录的“plugins”下面,

重新启动eclipse,然后查看菜单->Window->Preferences->Android,效果如下:

Android官网下载最新的NDK(注:NDK版本在r7以上之后就集成了Cygwin,而且还是十分精简版。)

下载链接见:http://developer.android.com/tools/sdk/ndk/index.html

下载以后,自定义存放路径、解压,然后进行指定【路径不要包含空格和中文】

3、注意点:

(1) 如果下载的NDK文件不对,会报错。我的报:not a valid ndk directory

(2) 选择的NDK位置仅对当前的Eclipse workspace有效哦。如果更改workspace,需要重新指定NDK的位置

2>、项目案例讲解1-内部samples调用

实践成功,项目地址:D:\yyh_installSoft\androidTools\NDK_Info\code\TestNdkDemo

在NDK文件android-ndk-r10的samples目录下,找个实例运行看看。如:我找到的“hello-jni”

1、于是我自己随便新建一个android项目工程 TestNDKDemo

2、把 jni 文件拷贝到项目里面

3、添加原生C文件支持

上面这样以后会报错。

于是我把 MainActivity 类替换成 hello-jni 类,里面内容也都改成 hello-jni 类里面的内容,AndroidManifest.xml文件进行相应配置。然后添加原生C文件支持:右击工程 Android Tools,Add Native Support… ,Finish

然后,直接运行Android项目,自动生成了很多文件以及运行到手机上的效果图

3>、项目案例讲解2-so库的生成

详见下一篇文章:Android开发之JNI 和 NDK编程(二)so库的生成

NDKSample_with_AndroidStudio:带有 Android Studio 的 NDK 示例 该项目是带有 Andriod Stuido 1.0 的 NDK 示例 立即下载

相关推荐

Android NDK sample

在Windows中的安裝Android NDK開發環境 範例程式包含hello jni hello gl2 等

ndk samples

https://github.com/googlesamples/android-ndk Android NDK samples with Android Studiohttp://developer.android.com/ndk 记录一下; 1. 最简单的入门 Hello: https://codelabs.developers.google.com/codelabs/android...

mandagod的博客 512

保姆级教程:用Python+OpenCV搞定Orbbec Gemini深度与彩色流对齐(附完整代码)

本文提供了一份详细的Orbbec Gemini深度与彩色流对齐教程,涵盖从环境配置到完整代码实现的每一步。通过解析深度流对齐原理,对比不同对齐模式,并提供工业级应用中的问题排查方法,帮助开发者快速掌握Orbbec Gemini相机的使用技巧。文章还包含进阶应用如点云生成与三维重建的实战代码。

weixin_29090917的博客 470

android ndk调试(使用ndk-samples)

android ndk调试(使用ndk-samples) ndk 调试注意事项 直接使用ndk-samples仓库,不需要额外使用命令行编译以及文件,配置好gradle就可以运行。 ndk c++类方法默认接收两个参数。

made_first_OS的博客 399

利用Matlab绘制非线性系统相图:从理论到实践

本文详细介绍了如何利用Matlab进行非线性系统的相图绘制与相平面分析。从理论基础的状态空间转换出发,通过无阻尼线性谐振子和范德波尔振荡器等实例,手把手演示了使用ode45求解器绘制相图、分析平衡点与极限环的完整流程,并分享了方向场绘制、参数分岔探索及常见错误解决方案等高级技巧,为动力学系统分析与控制设计提供了直观强大的可视化工具。

yhn456789的博客 907

2025 年国人友好神刊盘点:20 本审稿快、分区高的 SCI 期刊,速抢发文先机!

科睿唯安最新发布的 2024 年影响因子(2025 年公布)显示,多本 TOP 期刊影响因子迎来大幅上涨!尤其是对国人友好的期刊,因审稿效率高、版面费亲民、国人发文占比超 40%,成为科研人员投稿热门。本文精选 20 本潜力神刊,涵盖Cell 子刊、顶流期刊、黑马期刊、性价比之王及新晋分区 TOP,附完整的影响因子、中科院分区、审稿周期、收稿方向攻略,助你抢占发文先机!

good_rrrrr的博客 5560

NDK-Samples: 探索Android原生开发的宝藏

NDK-Samples: 探索Android原生开发的宝藏 在移动应用开发领域中,Android SDK是我们最常见的工具之一,但是如果你想要实现更复杂的功能或者提高应用性能,那么Android NDK(Native Development Kit)是必不可少的。Android NDK允许开发者使用C++、C等原生编程语言进行Android应用开发,从而可以利用更多的硬件特性并提高程序性能。 为了...

gitblog_00088的博客 624

别再让充电器‘罢工’了!聊聊Charger里VIN-DPM这个不起眼但关键的功能

本文深入探讨了充电IC中的VIN-DPM(输入电压动态电源管理)功能,揭示其如何智能调节充电策略以避免电源适配器过载。通过实际案例和实验室数据,展示了VIN-DPM在提升充电稳定性和效率中的关键作用,并提供了选型、设计和故障排查的实用指南。

weixin_33738578的博客 416

Android NDK Samples入门指南:JNI基础与Hello-JNI详解

Android NDK Samples入门指南:JNI基础与Hello-JNI详解 【免费下载链接】ndk-samples 项目地址: https://gitcode.com/gh_mirrors/ndks/ndk-sample...

gitblog_00501的博客 585

CListCtrl控件的自绘操作

1、CListCtrl控件 :OwnerDraw Fixed = True,创建一个CListCtrl类的派生类CMyListCtrl,同时创建一个CMyListCtrl控件类型变量:CMyListCtrl m_cList;。 CListCtrl控件的自绘主要是CMyListCtrl类中重写DrawItem虚函数。 流程: 1.主对话框中CListCtrl的一些初始化操作: BOOL

小米的修行之路 3559

用 MVC 框架把 ABAP 报表写成可扩展的应用(2)

本文介绍了一个基于MVC架构的SAP报表模板,解决了传统ABAP报表开发中的三个核心痛点: 选择屏幕校验逻辑分散问题 - 通过统一的选择屏幕控制器集中管理校验逻辑 在线与后台输出不一致问题 - 共享同一数据模型,通过不同控制器实现多样化展示 屏幕流转管理混乱问题 - 主控制器统一管理所有屏幕流程和事件 该模板采用分层架构: Model层专注数据获取和业务规则 Controller层管理流程和交互 View层负责展示逻辑 特别适用于需要同时支持交互式ALV展示和后台批处理输出的报表场景,通过标准化的扩展点设计

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 78

从入门到精通:利用ndk-samples掌握JNI编程的完整指南

ndk-samples是Android NDK开发的官方示例集合,包含了从基础到高级的各类JNI(Java Native Interface)编程实例。本文将通过分析ndk-samples中的经典项目,帮助开发者快速掌握JNI编程技巧,从简单的Hello-JNI到复杂的回调机制,轻松跨越Java与C/C++混合编程的障碍。 ## JNI编程基础:从Hello-JNI开始 JNI是连接Java与

gitblog_00053的博客 491

大数据工程中的数据血缘分析工具比较

数据血缘(Data Lineage)是大数据治理中的核心组成部分,它描述了数据从源头到目标的完整流动路径。系统介绍数据血缘的核心概念和技术原理比较主流开源和商业数据血缘工具的功能特点提供数据血缘分析的实践指南和选型建议本文首先介绍数据血缘的基本概念,然后深入分析其技术原理和实现方法,接着比较主流工具的特点,最后通过实际案例展示应用场景。数据血缘(Data Lineage): 描述数据从源头到目标的完整流动路径,包括所有转换和处理步骤元数据(Metadata)

大数据洞察的博客 900

Android NDK Samples深度解析:入门JNI与基础开发实践

Android NDK Samples深度解析:入门JNI与基础开发实践 【免费下载链接】ndk-samples android/ndk-samples: 一个基于 Android NDK 的样本代码库,包含了各种 Android NDK 的使用示例,适合用于学习 Android NDK 的使用。 ...

gitblog_00052的博客 566

【MATLAB-app】系列教程(含视频)第4、5、6课:实战_制作简单的图像处理软件

写作时间: 2020-12-27 我的教程目录 第1课:初步了解appdesigner 第2课:学会制作一个计算器 第3课:学习更多的控件(重点!) 第4课:实例1:制作一个图像处理软件 第5课:学习APPdesigner的设计精髓,框架 第6课:结合使用多种控件,函数等,丰富我们的实例1 第7课:app设计打包,完成工程应用导出 标题: 第4课:我的实例_学会制作一个图像处理软件 本文目录: 1.先看看我之前的一个工程 2.常用的基本组件控件 3.最常用且实用的控件的用法 -3.1 editfilel

wind 4055

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Android NDK Samples 项目FAQ

Android NDK Samples 项目FAQ 【免费下载链接】ndk-samples android/ndk-samples: 一个基于 Android NDK 的样本代码库,包含了各种 Android NDK 的使用示例,适合用于学习 Android NDK 的使用。 ...

gitblog_00334的博客 551

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Android NDK开发终极指南:基于ndk-samples快速构建高性能商业应用

想要开发高性能的Android应用吗?Android NDK(Native Development Kit)是你的最佳选择!通过ndk-samples这个官方示例库,你可以快速掌握NDK开发的核心技术,构建出性能卓越的商业应用。无论是游戏开发、音视频处理还是机器学习,NDK都能让你的应用性能提升一个档次。 ## 📱 为什么选择Android NDK开发? Android NDK允许开发者使用

gitblog_00892的博客 366

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Android开发手记一 NDK编程实例

Android 开发手记一---- NDK编程实例       在Android上,应用程序的开发,大部分基于Java语言来实现。要使用c或是c++的程序或库,就需要使用NDK来实现。NDK是Native Development Kit的简称。它是一个工具集,集成了Android的交叉编译环境,并提供了一套比较方便的Makefile,可以帮助开发者快速开发C或是C++的动态库,并自动的将so和java程序打包成apk,在Android上运行。       好,闲话少说,我们以一个简单的实例,来讲解NDK的

JiangPeifu 的时空 1万+

探索Android NDK的无限可能:NDK Sample集合

探索Android NDK的无限可能:NDK Sample集合 【免费下载链接】ndk-samples android/ndk-samples: 一个基于 Android NDK 的样本代码库,包含了各种 Android NDK 的使用示例,适合用于学习 Android NDK 的使用。 ...

gitblog_00619的博客 1046

Android-ndk-samples中camera-basic

Android-ndk-samples中camera-basic

JackGe_41314721的博客 946

mac android ndk 配置,Mac下用Android Studio运行NDK samples

打算将先前写的一个OBJ模型查看工具objViewer应用在Android平台上,借此了解一下Android平台的开发。现在做到了运行 NDK samples,将这中间遇到的问题记录一下。Android环境系统: Mac OS 10.11.1JDK: java version "1.8.0_65"IDE: Android Studio 1.5.1Android SDK: r24.4.1JDK是系统...

weixin_30289299的博客 443

探秘 UIKit-cross-platform 的 Android 构建机制:CMake、Ninja、NDK 与 JNI 如何让 Swift 跑起来

UIKit-cross-platform 是一个用 Swift 完整重写 Apple UIKit 的开源项目,目标是让 iOS 开发者用同一套 Swift 代码直接编译到 Android 上运行。而这一切的核心,就是一套层层嵌套的 **UIKit-cross-platform 构建机制**:Swift Package Manager 负责编译源码,CMake 负责组织目标,Ninja 负责并行加速

gitblog_00807的博客 662

android jni sample,NDK Samples [1] - hello-jni

该项目演示如何从Java调用C代码,使用cmake插件编译。最低要求:Android Studio 版本大于 2.2该项目演示了如何从Java代码调用C方法,并获取返回值。HelloJni :: stringFromJNI();演示了如何从java层调用C层对应stringFromJNI的方法。HelloJni/*该方法在hello-jni实现。可以通过ctrl+鼠标左键跳转到c方法。*/publ...

weixin_36199904的博客 213

Android应用---基于NDK的samples例程hello-jni学习NDK开发

Android应用---基于NDK的samples例程hello-jni学习NDK开发   NDK下载地址:http://developer.android.com/tools/sdk/ndk/index.html,下载解压为android-ndk-r10b,此目录下的samples\hello-jni就是NDK自带的例子,先来看编译前后和用eclipse导入前后目录的差别图: 图1

LoongEmbedded的专栏 5788

Android NDK 示例项目教程

Android NDK 示例项目教程 【免费下载链接】ndk-samples android/ndk-samples: 一个基于 Android NDK 的样本代码库,包含了各种 Android NDK 的使用示例,适合用于学习 Android NDK 的使用。 ...

gitblog_01185的博客 540

android ndk 编译 libcurl

下载libcurl 源码:http://curl.haxx.se/download.html curl 7.41.0 android NDK r9c 解压 到 android-ndk-r9c/samples/curl/jni 复制结尾内容生成 curl_config.h  文件到 android-ndk-r9c\samples\curl\jni\lib下 curl 自带 android.

shion1986_0514的专栏 4354
上一篇: Activity的启动模式LaunchMode以及使用场景
下一篇: 在eclipse中配置javah命令生成 .h 的c++头文件
被开发耽误的大厨
被开发耽误的大厨 优质创作者: 编程框架技术领域 优质创作者: 编程框架技术领域 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄15年 4万+粉丝 635原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

被开发耽误的大厨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值