0.0.2 Android开发系列——Android开发基础环境

来源:互联网 发布:阿里云医疗 编辑:程序博客网 时间:2024/05/19 20:21

Android开发的原理

Android开发的原理是非常复杂的,包含了Java打包,jni接口连接,编码混淆等很多的概念,这些细节我们都会在后文详细说明。这里我们给读者一个最简单的描述。

android编译过程

Android开发其实是在PC上通过编译工具将代码编译为可以在Android上运行的软件,即apk包(与Windows的exe类似)。然后将编译好的apk安装到Android上运行的过程。那么这个过程就分成两部分,一部分是在PC上编写、调试代码,另一部分就是将apk安装到Android上。

ADB原理

提到Android的开发环境,就不得不提adb这个工具。adb全称是Android debug bridge,是一个连接PC与移动端的桥梁。adb的原理其实非常简单,但是它起到了很好的连接PC与Android机器的作用。具体的原理见下面这张图。

ADB连接原理图
该图引用自http://www.2cto.com/kf/201305/208134.html

从上图看,adb是一个B/S架构的服务程序。adb客户端通过socket连接到server端,这里的server端就是Android系统。
其实这个架构方式是比较奇怪的,一般的USB下位机(即USB外设)都是采用直接硬件会话的形式与PC交互,这里adb居然在驱动的层次上实了TCP/IP协议层,然后才到了真正的应用层。这里是有原因的,adb有如此强大的功能,归根结底是它其实构建在Linux shell基础之上。而Linux shell有成熟的socket通信操作方式,如ssh等远程协议都是非常安全、稳定的。在driver之上实现TCP/IP协议相对来说比较省时省力。当然因为Android自身的特点,完全依赖shell命令也不可能,因此在shell之外再实现一个adbd的服务也很有必要。

另外,Android调试也使用了Java本身的调试协议,这里Google应该是扩展了Java的jdwp协议,从而使用简化了Android本身的开发流程。

tips: 什么是Linux shell。翻译过来是Linux外壳,是包装在Linux内核外面,与用户交互的一个层次。这个层次我们上一章并没有出现,因为Android系统将这个层次在用户层面屏蔽掉了,使用Android Launcher取代了它的位置。但是开发者却要有相关概念,因为相对Launcher,它的功能更为强大。开发者经常是要用到的。

sdk,ndk与adt

刚刚开始Android开发,在搭建环境时会遇到sdk,ndk,adt等工具。我们这里做一个简单的说明来区分这几个工具。

sdk

sdk是Software Development Kit的简称,这是集成了所有必要Android开发工具的软件包。使用sdk manager进行管理。我们一直讨论的adb就是它的组件之一,部分机型的USB驱动也在这个开发包里面。这是开发Android必须安装的工具集,而且也是能完成全部功能开发的工具集。其中主要的工具包括adb、aapt(Android打包工具)、ddms(调试工具)、USB driver等。

ndk

ndk(Native Development Kit)是sdk的一种补充,ndk是用于jni(即java native interface)开发的工具,它的主要作用是编译C/C++代码。当开发者需要开发高性能软件是,需要安装这个工具,一般情况无需安装。

adt

adt是Android Development Toolkit的简称,adt是连接eclipse环境与sdk的桥梁。是eclipse开发环境下使用的工具,以便eclipse支持Android代码的编译和打包。不过随着Google从eclipse转向Android studio的开发,adt也不再是维护重点。
如果读者选择使用Android studio作为开发工具,那么adt也不是必须的了。

tips: Android Java与普通Java有区别么?答案是有,Android Java还是针对移动端做了一定的优化、很多的底层代码也有改动。但是读者可以不过分纠结这个问题,因为几乎所有的Java库在Android下都是可用的。

eclipse 与 Android studio

目前,Android开发环境主要分为两大阵营(用记事本的可以无视),基于eclipse+adt和Android studio两种。Android studio是基于Intellij idea开发的Android开发环境。在Java开发领域哪个IDE更好也是见仁见智,但是在Android开发领域,如果读者还没有入坑,推荐一开始就使用Android studio作为开发环境。

Android studio是Google官方推荐的开发环境,adt的更新幅度大幅减小,以后有可能会停止更新。而Android studio目前已经发布正式版,在开发效率和易用性上都完全超越之前的adt。

0 0