Android学习笔记-<1>Android应用和开发环境

Author Avatar
thychan Jan 20, 2017
  • Read this article on other devices

1.1 Android 的发展和历史

​ Android是由Andy Rubin创立的一个手机操作系统,后来被Google收购.Google希望与各方面共同建立一个标准化,开放式的移动电话软件平台,从而在移动产业内形成一个开放式的操作平台.

1.1.1 Android 的发展和简介

​ Android并不是Google创造的,而是由Android公司所创造的,该公司的创始人是Andy Rubin. 该公司后来被Google收购,而Andy Rubin也成为Google公司的Android产品负责人.

​ Google于2007年11月5日发布了Android 1.0手机操作系统,这个版本的Android系统还没有赢得广泛的市场支持.

​ 2009年5月份,Google发布了Android 1.5,该版本的Android提供了一个非常”豪华”的用户界面,而且提供了蓝牙连接支持.这个版本的Android吸引了大量的开发者的目光.接下来,Android的版本更新得较快.

​ 事实上,Android已经超过了手机操作系统的范畴,Android系统已经广泛应用于TV,手表以及各种可穿戴设备.

​ 从2008年9月22日, T-Mobile在纽约正式发布第一款Android手机–T-Mobile G1开始,Android系统不断地获得哥哥手机厂商的青睐.

​ 2010年1月7日,Google在其美国总部正式向外界发布了旗下首款合作品牌手机Nexus One(HTC G5),同时开始对外发售.

1.1.2 Android 平台架构及特性

​ Android系统的底层建立在Linux系统上,该平台由操作系统,中间层,用户界面和应用软件4层组成,它采用一种被称为软件叠层(Software Stack)的方式进行构建.这种软件叠层结构使得层与层之间相互分离,明确各层的分工.这种分工保证了层与层之间的低耦合,当下层的层内或层下发生改变时,上层应用陈旭无须任何改变.

​ 1. 应用程序层

​ Android系统将包含一系列的核心应用程序,包括电子邮件客户端,SMS程序,日历,地图,浏览器,联系人等.这些应用程序通常都是由Java编写的.

​ 2. 应用程序框架

​ 当我们开发Android应用程序时,就是面向底层的应用程序框架进行的.从这个意义上来看,Android系统上的应用程序是完全平等的,不管是Android系统提供的程序,还是普通开发者提供的程序,都可以访问Android提供的API框架.

​ Android应用程序框架提供了大量API供开发者使用.应用程序框架除了可作为应用程序开发的基础之外,也是软件复用的重要手段,任何一个应用程序都可以发布它的功能模块–只要发布时遵守了框架的约定,那么其他应用程序就可以使用这个功能模块.

​ 3. 函数库

​ Android包含一套被不同组件所使用的C/C++库集合.一般来说,Android应用开发者不能直接调用这套C/C++库集,但可以通过它上面的应用程序框架来调用这些库.

下面列出一些核心库.

1
2
3
4
5
6
7
8
- 系统C库: 一个从BSD系统派生出来的标准C系统库(libc),并且专门为嵌入式Linux设备调整过.
- 媒体库: 基于PacketVideo的OpenCORE,这套媒体库支持播放和录制许多流行的音频和视频格式,以及查看静态图片.主要包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 等多媒体格式.
- Surface Manager: 管理对显示子系统的访问,并且可以对多个应用程序的2D, 3D图层提供无缝整合.
- LibWebCore: 一个全新的Web浏览器引擎,该引擎为Android浏览器提供支持,也为WebView提供支持,WebView完全可以嵌入开发者自己的应用程序中.
- SGL: 底层的2D图形引擎.
- 3D libraries: 基于OpenGL ES API实现的3D系统,这套3D库既可使用硬件3D加速(如果硬件系统支持),也可使用高度优化的软件3D加速.
- FreeType: 位图和向量字体显示.
- SQLite: 提供所有应用程序使用的功能强大的轻量级关系数据库.

​ 4. Android运行时

​ Android运行时由两部分组成: Android核心库集合ART.其中核心库集提供了Java语言核心库所能使用的绝大部分功能,而虚拟机则负责运行Android应用程序.

​ Android 5.0以前的Android运行时由Dalvik虚拟机和Android核心库集组成,但由于Dalvik虚拟机采用了一种被称为JIT(Just-in-time)的解释器进行动态编译并执行,因此导致Android App运行时比较慢;而ART模式则是在用户安装App是进行预编译(Ahead-of-time,简称AOT)的,将原本在程序运行时的编译动作提前到应用安装时,这样使得程序在运行时可以减少动态编译的开销,从而提升Android App的运行效率.

​ 反过来, 由于ART需要在安装App时进行AOT处理,因此ART需要占用更多的存储空间,应用安装和系统启动时间会延长不少.

​ 除此之外,ART还支持ARM,x86和MIPS架构,并且完全兼容64位系统,Android 5.0之后必然带来更好的用户体验.

​ 5. Linux内核

​ Android系统建立在Linux2.6之上.Linux内核提供了安全性,内存管理,进程管理,网络协议栈和驱动模型等核心系统服务.除此之外,Linux内核也是系统硬件和软件叠层之间的抽象层.

1.2 搭建Android开发环境

​ 在开始搭建Android开发环境之前,Java编程基础等知识将不再说明.下面将从Android SDK的安装大致说明.(涉及的站点若无法访问,建议设置代理服务器来访问该站点)

1.2.1 下载和安装Android SDK

​ Android的官方站点是http://www.android.com , 登录该站点即可下载Android SDK.下载和安装Android SDK有如下步骤.

​ 1.登录http://developer.android.com/sdk/index.html 页面,滚动到”SDK Tools Only” 处,即可看到Android SDK的下载链接.

​ 2.单击Android SDK的下载链接,即可下载Android SDK的压缩包.

​ 3.下载完成后将压缩文件解压到任意路径下,得到的文件夹包含如下文件结构.

1
2
3
4
5
6
7
8
9
(1).add-one: 该目录下存放第三方公司为Android平台开发的附加功能系统.刚解压缩时为空.
(2).platforms: 该目录下存放不同版本的Android系统,刚解压缩时为空.
(3).tools: 该目录下存放了大量Android开发,调试的工具.
(4).AVD Manager.exe: 该程序是AVD(Android虚拟设备)管理器.通过该工具可以管理AVD.
(5).SDK Manager.exe: 该程序就是Android SDK管理器.通过该工具可以管理Android SDK.

​ 4.启动SDK Manager.exe, 在窗口列表中勾选需要安装的平台和工具,比如Android 6.0的工具和平台,其中Android文档, SDK Platform是必选的.若是想查看Android官方提供的实例程序,使用Android SDK源代码,则可以勾选”Samples for SDK”和”Source for Android SDK”两个列表项(最好将Android 6.0所包含的工具都安装上,若无须为Android TV,可穿戴设备开发应用,则可暂时不勾选以Android TV,Android Wear开头的选项).至于是否需要安装Android的早期的SDK,取决于个人需求.

​ 5.选中所需安装的工具后,单击”Install XX package”按钮,出现确认窗口,单击”Accept License”单选按钮–确认安装之前所选择的所有的工具包,然后单击”Install”按钮,系统开始在线安装Android SDK及相关工具. 在线安装时间取决于用户的网络状态以及选中工具包的数量,多的话甚至可能花费数小时,耐心等待即可.

​ 6.下载安装完成将可以看到在Android SDK目录下新增了如下的几个文件夹.

1
2
3
4
5
6
- docs: 该文件夹下存放了Android SDK开发文件和API文档等.
- extras: 该文件夹下存放了Google提供的USB驱动,Intel提供的硬件加速等附加工具包.
- platform-tools: 该文件夹下存放了Android平台相关工具.
- samples: 该文件夹下存放了不同Android平台的实例程序.
- source: 该文件夹下存放了Android的源代码
- system-images: 该文件夹下存放了不同平台针对不同CPU架构提供的系统镜像.

​ 7.未来在命令行窗口可以使用Android SDK的各种工具,建议将Android SDK目录下的tools子目录,platform-tools子目录添加到系统的PATH环境变量中.

1.2.2 安装Android Studio

​ Android Studio是Google为Android提供的官方IDE工具,Google建议广大Android开发者尽快从Eclipse+ADT的开发环境改为使用Android Studio.

​ Android Studio不再基于Eclipse,而是基于Intellij IDEA的Android开发环境.实际上,Intellij IDEA一直都是一款非常优秀的Java IDE工具,只是因为Intellij IDEA是一款商业的IDE工具(虽然也有免费的社区交流部,但功能相当有限),因此影响了Intellij IDEA的广泛应用.现在Google以Intellij IDEA为基础推出Android Studio同样可以免费使用,因此具有非常大的吸引力.

​ 1.登录http://developer.android.com/sdk/index.html 页面,滚动到最下方”All Android Studio Packages”处,即可看到下载链接.

​ 2.单击下载链接,即可下载得到一个压缩包.

​ 3.将压缩包解压到任意盘符路径下,然后双击解压路径下bin目录下的studio.exe(32位)或sudio64.exe(64位)文件.运行程序即可弹出对话框

​ 4.对话框询问用户是否导入Android Studio设置,若以前用过Android Studio且保存了定制该IDE的设置信息,则可以选择第一个单选按钮,并通过下面的文件浏览框选择Android Studio设置信息的存储位置;否则选择第二个单选按钮.

​ 5.接下来便是引导用户从网络上下载Android SDK(可以单独下载),选择”Custom”按钮,然后单击”Finish”按钮.

​ 6.单击”Finish”按钮,即可看到开始下载Android SDK的进度对话框.下载完成后单击”Finish”按钮即可完成Android Studio的安装.

​ 由于Android Studio是基于Intellij IDEA的IDE工具,因此Android Studio中的Project(项目)的概念与Eclipse的Project概念不同,Android Studio的项目相当于Eclipse的WorkSpace(工作空间),Android Studio的Module(模块)才相当于Eclipse的项目–由此可见,Android Studio的项目相当于一个工作空间,一个工作空间可包含多个模块,每个模块对应一个Android项目.即Android Studio的项目可以包含多个Android项目(模块).

​ 7.使用Android Studio时,还需要为Android Studio设置Android SDK的路径.若是Android SDK已下载完成,则单击”File”->”Other Settings”->”Default Project Structure”菜单,设置Android SDK的安装路径.

1.2.3 安装运行,调试环境

​ Android程序必须在Android手机上运行,因此Android开发时必须准备相关的运行,调试环境.准备Android程序运行,调试环境有如下3中方式.

(1).条件允许,则优先考虑购买Android真机(其调试速度更快,效果更好).

(2).配置Android虚拟设备(即AVD).

(3).使用第三方提供的Android模拟器(如Genymotion模拟器).

​ 具体步骤过程自行网上查阅,不再详细叙述.

1.3 Android常用开发工具用法

​ 前面主要介绍了Android SDK的安装,运行,调试环境的搭建,以及Android开发环境Android Studio的安装,但这些只是最基本的知识,还必须掌握Android开发的大量辅助的工具.

1.3.1 在命令行创建,删除和浏览AVD

​ 在命令行下管理AVD需借助android命令(位于Android SDK安装目录的tools子目录下),若直接执行android命令将会启动Android SDK管理器,除此之外,该命令还支持如下子命令

1
2
3
4
5
6
7
8
9
10
11
-list: 列出机器上所有已经安装的Android版本和AVD设备.
-list avd: 列出机器上所有已经安装的AVD设备.
-list target: 列出机器上所有已经安装的Android版本.
-create avd: 创建一个AVD设备.
-move ave: 移动或重命名一个AVD设备.
-delete avd:删除一个AVD设备.
-update avd: 升级一个AVD设备使之符合新的SDK环境.
-create project: 创建一个新的Android项目.
-update project: 更新一个已有的Android项目.
-create test-project: 创建一个新的Android测试项目.
-update test-project: 更新一个已有的Android测试项目.

若希望查看当前系统上已经安装的Android版本及已经安装的AVD设备,则运行android llist或者 android list avd命令即可.

若要创建一个全新的AVD设备,可以执行如下命令:

1
android create avd -n <avd名称> -t <Android版本> -b <CPU架构> -p <AVD设备保存位置> -s <选择AVD皮肤>

在上面的create avd子命令中,只有-n和-t选项是必需的,其余-b,-p,-s选项都是可选的.若无-p选项,创建的AVD设备默认保存在%ANDROID_SDK_HOOME%/android/avd路径下.

1.3.2 使用Android模拟器(Emulator)

​ Android模拟器就是一个运行在电脑上的”虚拟手机”.在Android SDK 和AVD管理器中选择指定的AVD设备,然后单击”Start…”按钮就可以启动模拟器来运行Android系统.

​ 在Android SDK安装目录的tools子目录下有一个emulator.exe(另外还有emulator-arm.exe.emulator-mips.exe,emulator-x86.exe),它们都是Android模拟器.

使用emulator.exe启动模拟器有两种方法.

1
emulator -avd <AVD名称>
1
emulator -data <镜像文件名称>

第一种用法是运行指定的AVD设备.第二种用法是直接使用指定的镜像文件来运行AVD.

1.3.3 使用Monitor进行调试

党Android应用在模拟器上运行时,Android提供了一个Monitor工具,该工具可以用于监视Android设备的运行.它是一个功能非常强大的调试环境,运行如下命令即可启动.

1
monitor.bat

实际上,Android Studio已经将Monitor集成进来.

1.3.4 Android Debug Bridge (ADB)的用法

​ Android Debug Bridge (ADB)是一个功能非常强大的工具,它位于Android SDK安装目录的platform-tools子目录下. ADB工具既可以完成模拟器文件与电脑文件的相互复制,也可以安装APK应用,甚至可以直接切换到Android系统中执行Linux命令.

​ ADB工具的功能很多,此处仅对几个常用的命令略作说明.

1.查看当前运行的模拟器

​ 输入如下命令,即可查看当前运行的模拟器:

1
adb devices

2.电脑与手机之间文件的相互复制

​ 在默认情况下 ,ADB工具总是操作当前正在运行的模拟器.

​ 若需要将电脑文件复制到模拟器中,则可以使用adb push命令:

1
adb push d:\temp.txt /sdcard/

​ 若需要将模拟器中的文件复制到电脑,则可以使用adb pull命令:

1
adb pull /sdcard/temp.txt d:\

3.启动模拟器的shell窗口

​ Android平台是基于Linux的,有时开发者希望直接打开Android平台的shell窗口,这样就可以在该窗口内执行一些常用的Linux命令,如ls,mkdir,rm等.此时可以考虑使用adb shell命令:

1
adb shell

4.安装,卸载APK程序

​ APK程序就是Android程序的发布包,虽然我们使用Java开发了Android应用,但并不是直接将Java二进制文件复制到手机或者模拟器上即可,而是需要将Android应用打包成APK.

​ 一旦将Android应用打包成APK包,接下来就可以通过ADB工具来安装,卸载APK程序了.

​ 使用ADB安装APK程序的命令格式如下:

1
adb install [-r] [-s] <file>

​ 上面的命令格式指定安装代表的APK包,其中-r表示重新安装该APK包;-s表示将APK包安装到SD卡上–默认是将APK包安装到内部存储器上.

​ 如果希望从Android系统中删除指定软件包,则可以使用如下命令:

1
adb uninstall [-k] <package>

​ 上面的命令格式指定删除代表的APK包,其中-k表示只删除该应用程序,但保留该应用程序的数据和缓存目录.

1.3.5 使用mksdcard管理虚拟SD卡

​ 正如前面在Android SDK和AVD管理器中所见到的,我们可以在创建AVD设备时创建一个虚拟SD卡.实际上还可以使用mksdcard命令来单独创建一个虚拟存储卡.

​ mksdcard命令的语法格式如下:

1
mksdcard [-l label] <size> <file>

​ 上面的命令格式中指定虚拟SD卡的大小,指定保存虚拟SD卡的文件镜像.

​ 如果希望在启动模拟器时使用指定的虚拟SD卡,则在启动模拟器时增加-sdcard 选项,其中代表虚拟SD卡的文件镜像.例如如下命令:

1
emulator -avd crazyit -sdcard d:\sdcard.img

​ 到此为止,我们已经成功地安装了Android SDK,配置Android开发环境,并且对Android相关开发工具都有了一个大致的了解.

​ 接下来欢迎正式踏上Android应用学习开发之路~

注: 欢迎交流与学习,转载请注明出处 http://thychan.cn