《深入解析Android 5.0系统》——第1章,第1.1节安装操作系统

第1章 建立Android系统开发环境
深入解析Android 5.0系统
在开始研究Android系统之前,需要预先准备好系统开发需要的各种资源:包括操作系统、各种开发工具以及Android源码等。本章将介绍这些资源的获取途径和安装方法。

在阅读本书前,读者需要掌握一些必要的技能。Android应用使用Java语言开发,底层使用C/C++开发,因此,掌握Java 语言和 C/C++语言是进行Android 系统开发的必要条件。Android运行在Linux内核(从标准的Linux内核修改移植而来)之上,但是,开发Android系统组件并不需要读者拥有特别高深的Linux系统知识,只要掌握基本的Linux命令和常识就够了。但是,如果希望成为优秀的系统开发者,深入理解Linux内核还是非常有必要的。

Android系统开发的目的是制作Android系统软件,例如,手机或Pad的ROM,或者增加、修改Android的系统模块,因此,在学习开始前,读者最好能拥有一台可以更新自制ROM的Android手机,如果是Google的开发机就更合适了。Google的开发机对用户的限制最小,能方便地编译出手机的ROM。如果没有合适的手机,使用自己编译的模拟器也是一种替代方案。

1.1 安装操作系统
深入解析Android 5.0系统
Google推荐使用64位Ubuntu操作系统开发Android。Ubuntu是一款优秀的Linux桌面操作系统,每年4月和10月固定发行两个版本。其中偶数年的4月发行的版本作为TLS版本。TLS版本的含义是长期支持版,可以得到3年的升级支持。

计算机主板厂家通常不会提供Linux驱动,对于新发布的主板,Ubuntu可能会无法识别主板上集成的一些硬件模块,特别是网卡。但是,Ubuntu有强大的社区支持,笔者遇到类似问题时,都是在网上搜索,然后自己编译安装驱动,这是使用Ubuntu前需要注意的问题。

1.1.1 安装方式的选择
Ubuntu有两种安装方式,在PC上直接安装或者安装在虚拟机中。

通常,专业的Android系统开发大多会选择直接安装在PC上,这是因为专业开发经常需要编译Android系统,对计算机性能要求比较高。 如果只是为了学习和分析Android系统,在Windows中安装一个Ubuntu虚拟机也是不错的方法。读者可以根据自己的需要来选择。

比较流行的虚拟机软件有两种:Oracle公司的VirtualBox和VMWare公司的VMWare套件。比较而言,后者的功能更强大、稳定,但是需要收费,前者则可以免费使用。

1.1.2 下载和安装Ubuntu
Ubuntu可以从其官方网站免费下载,地址是www.ubuntu.org。编写本书时,笔者使用的Ubuntu版本是64位的14.04。Ubuntu的安装过程比较简单,就不介绍了。安装完成后可以将Ubuntu的软件源切换成国内的镜像,这样下载安装各种软件包的速度将大大提高。

更改软件源的方法是:依次点击“System Settings”→“Software & Updates”→“Ubuntu Software”,然后在“Download from”右侧的列表中选择“Others”,再在弹出的对话框中寻找China条目,找到后选择一个镜像地址(例如mirrors.sohu.com)就可以了,如图1.1所示。

Ubuntu14.04以前的版本在选择新的软件源后还需要通过命令更新本地存储的软件包索引信息后才可以使用,命令如下。

# sudo apt-get update

命令开始执行后会从新的服务器上下载最新的软件包列表。

Ubuntu14.04在更新软件源后会要求输入密码,然后自动更新本地的软件包索引信息,不需要再手动输入命令更新。

笔者使用的Ubuntu是英文版,读者如果希望使用中文版,可以下载安装中文语言包。

1.1.3 使用Ubuntu遇到的问题
Ubuntu每年会发布两个版本,但是不要太着急升级到最新的版本,新版本有时会有一些兼容性问题,更新前最好上网查一查是否有影响Android开发的问题存在。以前就发生过Ubuntu 12.10 无法编译Android的问题,原因是新版本搭载的gcc 4.7不能编译当时的Android代码。不过Ubuntu有一个很有用的特性,就是能同时安装一个软件的不同版本,因此,解决的办法就是再安装一个旧版本的gcc4.4。

在Ubuntu 上安装4.4版本的gcc和g++的命令是:

#sudo apt-get install gcc-4.4 g++-4.4 g++-4.4-multilib gcc-4.4-multilib
#sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 50
#sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.4 50

配置选择版本的命令是:

# sudo update-alternatives --config g++
# sudo update-alternatives --config gcc

一般而言,Google会在新的Android版本里解决类似的问题,但是旧版本还是会存在问题。如果需要同时维护几个版本的Android系统,需要使用上面的方法来安装多个版本的gcc。

时间: 2024-12-22 08:39:44

《深入解析Android 5.0系统》——第1章,第1.1节安装操作系统的相关文章

《深入解析Android 5.0系统》——第6章,第6.2节Android native层的同步方法

6.2 Android native层的同步方法 深入解析Android 5.0系统 Android在Linux提供的线程同步函数的基础上进行了二次封装,让实现线程同步更加简单方便.这些同步类和函数在native层的代码中出现的非常频繁. 6.2.1 互斥体Mutex和自动锁Autolock Mutex和Autolock是Android native层最常见的一种临界区保护手段,Autolock只是提供了一种更简便的使用Mutex的方法. Mutex是一个C++的类,它的接口如下所示: clas

《深入解析Android 5.0系统》——第1章,第1.4节下载源码

1.4 下载源码 深入解析Android 5.0系统 对于国内的开发者而言,下载Android的源码从来不是一件简单的事.因为一些原因,目前国内已经不能访问Android的源码网站了,最近好像连Android的官方网站也访问不了.对公司而言这不是难题,因为很多公司都有国外的VPN账号或者海外服务器.笔者下载Android的源码就是通过亚马逊的云服务器完成的.只要有国内大型银行的信用卡帐号,就可以在亚马逊平台上免费开通一个EC2服务器(免费使用期一年).亚马逊提供的带宽差不多有一个G,不到半个小时

《深入解析Android 5.0系统》——第6章,第6.4节Android的消息机制

6.4 Android的消息机制 深入解析Android 5.0系统 消息驱动是一种进程或线程的运行模式.内部.外部的各种事件都可以放到消息队列中按序处理.这种模式特别适合处理大量的交互事件.Android应用的UI线程,同样采用了消息驱动模式,所有外部来的按键消息.触屏消息.各种系统Intent.广播等都会转化为内部的消息,然后在主线程中分发处理. 6.4.1 消息模型 现在的操作系统普遍采用消息驱动模式.Windows操作系统就是典型的消息驱动类型.但是,Android的消息处理机制和Win

《深入解析Android 5.0系统》——第6章,第6.3节Android Java层的同步机制

6.3 Android Java层的同步机制 深入解析Android 5.0系统 Java语言和C/C++语言不一样,Java语言中提供了同步关键字synchronized来支持线程间的同步操作. 6.3.1 同步关键字synchronized synchronized关键字最常见的用法是保护一段代码,如下所示: class Foo implements Runnable { private String mLock; public void lockedMethod() { ...... sy

《深入解析Android 5.0系统》——第1章,第1.2节安装开发包

1.2 安装开发包 深入解析Android 5.0系统 Android系统的编译需要依赖一些第三方的开发包和工具,包括Oracle的JDK(以前属于Sun公司).大部分的软件包都能通过apt-get来安装和升级,非常方便,但是JDK不能通过这种方式安装,只能从Oracle的官方网站下载软件包手动安装.从Android 5.0开始,Google支持使用OpendJDK 1.7来编译Android,因此,我们又可以使用apt-get快速地安装编译环境.对于Android 5.0以前的代码,还是需要使

《深入解析Android 5.0系统》——第6章,第6.5节进程间的消息传递

6.5 进程间的消息传递深入解析Android 5.0系统Android的消息可以在进程之间传递.进程间消息传递是建立在Binder通信基础之上的.Binder本身用来在进程间传递信息已经足够了,这里介绍的进程间消息传递方法只是让应用在设计上更加便利,并不是架构上大的改进. 我们知道,只要有了Binder的引用对象就可以调用其功能.Android中如果希望向另一个进程的Handler发送消息,一定要通过某个Binder对象来代理完成.在Handler类中,方法getIMessage()会创建一个

《深入解析Android 5.0系统》——第1章,第1.3节安装一些有用的工具

1.3 安装一些有用的工具深入解析Android 5.0系统在开发和学习Android的过程中,一些辅助工具会非常有用,下面介绍几种必备的工具.另外还有一些有用的小工具,在后面的章节中会穿插介绍. 1.3.1 安装Android SDK编译Android的源码并不需要Android SDK,但是Android SDK 中附带了很多有用的工具,如adb.ddms.hierarchyviewer等,都是进行Android系统开发调试必须用到的. Android SDK需要从Android的官方网站中

《深入解析Android 5.0系统》——第6章,第6.1节原子操作

6.1 原子操作深入解析Android 5.0系统对简单类型的全局变量进行操作时,即使是一些简单的操作,如加法.减法等,在汇编级别上也需要多条指令才能完成.整个操作的完成需要先读取内存中的值,在CPU中计算,然后再写回内存中.如果中间发生了线程切换并改变了内存中的值,这样最后执行的结果就会发生错误.避免这种问题发生的最好办法就是使用原子操作. 原子操作中没有使用锁,从效率上看要比使用锁来保护全局变量划算.但是,原子操作也不是没有一点性能上的代价,因此还是要尽量避免使用. Android中用汇编语

《深入解析Android 5.0系统》——导读

目 录 前言 第1章 建立Android系统开发环境 1.1 安装操作系统1.2 安装开发包 1.3 安装一些有用的工具 1.4 下载源码 第2章 Android的编译环境-- Build系统 第3章 连接Android和Linu内核的 桥梁--Android的Bionic 进程间通信--Android 的Binder 第5章 连接Java和C/C++层的 关键--Android的JNI 第6章 Android的同步和消息机制 第6章 Android的同步和消息机制 6.1 原子操作 6.2 A