我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android NDK开发入门

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android NDK开发入门

神秘的Android NDK开发往往众多程序员感到兴奋,但又不知它为何物,由于近期开发应用时,为了是开发的.apk文件不被他人解读(反编译),查阅了很多资料,其中有提到使用NDK开发,怀着好奇的心理,通过在线视频教育网站,我初步了解了NDK的神秘面纱,好东西自然要分享,接下来我们就一起来认识一下Android NDK开发。 

一、NDK产生的背景

Android平台从诞生起,就已经支持C、C++开发。众所周知,Android的SDK基于Java实现,这意味着基于Android SDK进行开发的第三方应用都必须使用Java语言。但这并不等同于“第三方应用只能使用Java”。在Android SDK首次发布时,Google就宣称其虚拟机Dalvik支持JNI编程方式,也就是第三方应用完全可以通过JNI调用自己的C动态库,即在Android平台上,“Java+C”的编程方式是一直都可以实现的。

不过,Google也表示,使用原生SDK编程相比Dalvik虚拟机也有一些劣势,Android SDK文档里,找不到任何JNI方面的帮助。即使第三方应用开发者使用JNI完成了自己的C动态链接库(so)开发,但是so如何和应用程序一起打包成apk并发布?这里面也存在技术障碍。比如程序更加复杂,兼容性难以保障,无法访问Framework API,Debug难度更大等。开发者需要自行斟酌使用。

于是NDK就应运而生了。NDK全称是Native Development Kit。

NDK的发布,使“Java+C”的开发方式终于转正,成为官方支持的开发方式。NDK将是Android平台支持C开发的开端。

二、为什么使用NDK

 1.代码的保护。由于apk的java层代码很容易被反编译,而C/C++库反汇难度较大。

 2.可以方便地使用现存的开源库。大部分现存的开源库都是用C/C++代码编写的。

 3.提高程序的执行效率。将要求高性能的应用逻辑使用C开发,从而提高应用程序的执行效率。

 4.便于移植。用C/C++写得库可以方便在其他的嵌入式平台上再次使用。

三、NDK简介

  1.NDK是一系列工具的集合

  NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。这些工具对开发者的帮助是巨大的。

NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。

NDK可以自动地将so和Java应用一起打包,极大地减轻了开发人员的打包工作。

  2.NDK提供了一份稳定、功能有限的API头文件声明

Google明确声明该API是稳定的,在后续所有版本中都稳定支持当前发布的API。从该版本的NDK中看出,这些API支持的功能非常有限,包含有:C标准库(libc)、标准数学库(libm)、压缩库(libz)、Log库(liblog)。

四、NDK开发环境的搭建 

 1.下载安装Android NDK

 地址:http://developer.android.com/sdk/ndk/index.html

 2、安装DNK

    网上流传很多关于Linux环境搭建DNK开发的方法,不过今天要为大家说明一点,Google经过这些年的努力,现在NDK的安装已经非常简单,而且支持众多平台,今天我们就以win平台来为大家介绍如何配置开发环境与设计开发DNK程序。首先是安装,上面提供的下载地址是官网地址,大家可以根据自己的需求选择下载,不过由于在国内限制访问国外网站,所以下载的话必须FQ,FQ对于一些程序员来说又是一件难事,这里我为大家提供一个下载地址:android-ndk-r9

   下载好之后,安装DNK非常简单,我们将下载的.zip文件解压,然后将文件拷贝到我们的任意一个磁盘中即可。

 3.配置 NDK 环境变量

    学过JAVA的小童鞋,对于配置环境变量一定不陌生,这里我就简单介绍一下如何配置DNK的开发环境,右键单击我的电脑-->属性-->高级系统设置-->高级-->环境变量

    在打开的环境变量,系统变量中找到Path,双击,在最后将我们DNK安装目录添加上去。

    到这里我们的win环境配置Android NDK开发环境已经完成,最后我们通过命令行验证一下我们的配置:点击开始-->输入cmd回车-->输入ndk-build回车,如果打印出信息表示我们的配置完成。

五、运行NDK提供的事例demo

    运行事例demo之前我们需要保证我们的Android开发环境已经配置好,对于Android开发环境的配置,我就不再赘述,大家如果有疑问可以单独留言讨论。下面我们开始导入事例demo,打开eclipse Android开发环境,然后右键单击空白区域,选择Import-->Android导入:

 

   导入工程后,我们先来看一下目录结构:

    jni目录下的文件就是我们的.c文件,obj目录下的.so文件就是我们的ndk编译后的文件,也就是我们库文件。当然刚导入时工程中是没有.so文件的,需要我们编译生成,生成的方法:开始-->输入cmd回车-->cd 我们的工程目录回车,详见下图操作分解:

    到这里我们事例demo就算完成了,下面我们就可以允许测试了。

 第一个NDK程序:HelloWord!

您可能感兴趣的文章:详解Android JNI的基本使用(CMake)Android NDK开发之:配置环境的详解Android NDK开发详细介绍Android NDK 开发教程Android NDK开发的环境搭建与简单示例android开发实践之ndk编译命令简单示例android串口开发入门之搭建ndk开发环境及第一个jni调用程序


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android NDK开发入门

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android NDK开发入门

神秘的Android NDK开发往往众多程序员感到兴奋,但又不知它为何物,由于近期开发应用时,为了是开发的.apk文件不被他人解读(反编译),查阅了很多资料,其中有提到使用NDK开发,怀着好奇的心理,通过在线视频教育网站,我初步了解了NDK
2022-06-06

Android NDK 开发教程

Android NDK 是在SDK前面又加上了“原生”二字,即Native Development Kit,因此又被Google称为“NDK”。众所周知,Android程序运行在Dalvik虚拟机中,NDK允许用户使用类似C / C++之类
2022-06-06

基于Android Studio NDK开发

1.  开发环境配置 Android Studio3.0.1 android-ndk-r13 gradle插件: classpath 'com.android.tools.build:gradle:3.0.1' gradle:distrib
2022-06-06

Android NDK开发详细介绍

Android之NDK开发 一、NDK产生的背景Android平台从诞生起,就已经支持C、C++开发。众所周知,Android的SDK基于Java实现,这意味着基于Android SDK进行开发的第三方应用都必须使用Java语言。但这并不
2022-06-06

Android NDK开发简单程序分享(Hello Word!)

在之前的博客中已经为大家介绍了,如何在win环境下配置DNK程序,本篇我将带大家实现一个简单的Hello jni程序,让大家真正感受一下NDK开发的魅力。这里我们选择使用C+JAVA开发Android程序,首先你必须了解C语言、JAVA语言
2022-06-06

安卓Android开发快速入门

配合天哥视频食用更佳:【天哥】Android开发视频教程最新版 Android Studio开发 UI组件(控件) 布局管理器 LinearLayout(线性布局) 可嵌套 最常用属性 id 起标记布局的作用 layout_width [w
2023-08-19

Android 在现有项目中使用NDK开发

新建项目直接选中Native C++即可,本篇文章主要描述如何在现有项目中添加Native方法 添加步骤 1.AS中依次点击Preferences->Android SDK -> SDK Tools安装Cmake和NDK,如果安装过程中下载
2022-06-06

Android NDK开发之:配置环境的详解

一、Windows:Windows下的开发环境需要安装以下软件:Java JDK Apache ANT Build SystemAndroid SDKCygwinAndroid NDKEclipse IDE1、安装Java JDKhttp:
2022-06-06

详解Android studio ndk配置cmake开发native C

Android 2.2 以后的版本对NDK的支持已经非常好了。最近把一个纯C的android项目,从eclipse ADT迁移到Android studio上。本文是参考Add C and C++ Code to Your Project
2023-05-30

Android 游戏开发入门简单示例

在Android系统上开发游戏是Android开发学习者所向往的,有成就感也有乐趣,还能取得经济上的报酬。那怎样开发Android游戏呢?下面介绍一个简单的入门实例。 一、创建新工程   首先,我们在Eclip
2022-06-06

Android开发入门之Appwidget用法分析

本文实例讲述了Android Appwidget用法。分享给大家供大家参考,具体如下: App Widgets 是一个小型应用程序的View 他可以嵌入到其他应用程序中(如 桌面程序) 并且可以得到周期性刷新。 在创建App Widget
2022-06-06

Android开发入门之Notification用法分析

本文实例讲述了Android中Notification用法。分享给大家供大家参考,具体如下: Notification可以理解为通知的意思一般用来显示广播信息 用Notification就必须要用到NotificationManager 想
2022-06-06

Android开发入门之Service用法分析

本文实例讲述了Android中Service用法。分享给大家供大家参考,具体如下: 关于Service的讲解网上已经很多了,这里是关于自己通过写代码Service的一点体会 还有结合其他人对Service的一点总结 Service可以理解为
2022-06-06

Android NDK开发的环境搭建与简单示例

一、NDK与JNI简介 NDK全称为native development kit本地语言(C&C++)开发包。而对应的是经常接触的Android-SDK,(software development kit)软件开发包(只支持java语言开发
2022-06-06

Android开发的IDE、ADT、SDK、JDK、NDK等名词解释

1. IDE: Intelligent Development Environm的简称。即智能开发环境。是一种开发工具。常用的IDE有adt-bundles和Android studio。两个都需要配置jdk。 2. ADT: Andr
2022-06-06

Android入门之源码开发基础教程

本文讲述了Android入门之源码开发基础教程。分享给大家供大家参考,具体如下: 下载 Android 源码之后,接下来就是学习或者进行开发。 在开发之前,谈一些开发必备知识或者工具,工欲善其事必先利其器嘛! 在前面一篇《Android入门
2022-06-06

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录