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
地址:
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 NDK开发入门
-
Android中微信小程序开发之弹出菜单
-
Android开发VR实战之播放360度全景视频
-
Android开发中Intent传递对象的方法分析
-
Android开发之Sqliteopenhelper用法实例分析
-
Java开发桌面程序学习(三)——基于Jfoenix库的JFXDialog封装仿Android对话框的工具DialogBuilder
-
Android开发Gradle你需要知道的知识
-
ios系统开发入门教程(ios基础知识收藏)
-
NDK编译的so文件armeabi和armeabi-v7a 博客分类: Android NDK ARM v7a so
-
android开发中WebView控件的实例与注意要点——个人主页浏览器简易实现 博客分类: android开发 WebView浏览器网页android