深入浅出 - Android系统移植与平台开发(六)- 搭建基于Linux的Android开发环境

2.4搭建Android SDK开发环境

上一节我们讲解了如何下载、编译Android系统及Linux内核,接下来,讲解如何搭建Android SDK开发环境,包括Eclipse下载安装、ADT插件安装、Framework源码级调试、定制Android系统等相关知识。

2.4.1 下载、安装Eclipse

说明:当前新的SDK开发环境Google采用了ADT Bundle,如果为了方便安装和下载,可以选择下载最新的ADT Bundle。
ADT Bundle下载地址:http://developer.android.com/sdk/index.html,选择Linux平台即可。

首先、从Eclipse官方网站上下载EclipseIDE  Classic,注意选择合适平台(在32位Ubuntu中,选择Linux 32 Bit版本):

http://www.eclipse.org/downloads

下载完成后,解压缩,运行Eclipse:

$ tar–xvf eclipse-linux-gtk.tar.gz
$ cd eclipse
$ ./eclipse &

启动后,选择工程目录,显示Eclipse界面。

深入浅出 - Android系统移植与平台开发(六)- 搭建基于Linux的Android开发环境_第1张图片

图 xx-xx eclipse启动画面

 

2.4.2 安装ADT插件

ATD(Android Development Tool)插件是专门用于在Eclipse开发环境中开发Android应用程序的插件。

打开Help -> InstallNewSoftware… ,在弹出窗口中点击Add按钮添加新插件,在新弹出窗口中的Name中随意输入一个名字,在Location输入:https://dl-ssl.google.com/android/eclipse,点击OK。

深入浅出 - Android系统移植与平台开发(六)- 搭建基于Linux的Android开发环境_第2张图片

图 xx-xx安装ADT

 深入浅出 - Android系统移植与平台开发(六)- 搭建基于Linux的Android开发环境_第3张图片

图 xx-xx安装ADT

深入浅出 - Android系统移植与平台开发(六)- 搭建基于Linux的Android开发环境_第4张图片 

图 xx-xx安装ADT

 

在下面的列表中选择Android DDMS和Android Developer Tools,选择Details中的Contact allupdate sites during install to find required software保持更新,点击Next。

深入浅出 - Android系统移植与平台开发(六)- 搭建基于Linux的Android开发环境_第5张图片

图 xx-xx安装ADT

 

进入用户协议窗口,如图x-x所示,同意所有协议,开始安装:

 深入浅出 - Android系统移植与平台开发(六)- 搭建基于Linux的Android开发环境_第6张图片

图 xx-xx接受用户许可协议

深入浅出 - Android系统移植与平台开发(六)- 搭建基于Linux的Android开发环境_第7张图片 

图 xx-xx安装ADT

 

安装过程中会出现一些警告提示,点击OK继续,然后重新启动Eclipse。

2.4.3下载、配置Android SDK工具包

现在我们的eclipse开发环境已经准备完毕,虽然具备了开发Android的能力,但是还没有开发Android应用程序时要用到的工具和模拟器等,这些都在Android SDK中,进入官方网站:http://developer.android.com/sdk/index.html,选择适合的平台,下载并解压SDK:

深入浅出 - Android系统移植与平台开发(六)- 搭建基于Linux的Android开发环境_第8张图片

图 xx-xx下载Android SDK

解压到/home/linux/android/目录下:

$ tar -xvfandroid-sdk_r21.1-linux.tgz -C /home/linux/android/

其中android-sdk_r21.1-linux.tgz是从官网下载的SDK包(该包更新频繁,版本可能不一样),-C参数表示将包解压到参数后面的目录中。

         SDK包解压完之后,要设置Eclipse让其知道SDK的目录,当编译Android应用程序时能找到SDK中的资源,打开Window -> Preferences菜单,左侧选择Android项,右侧SDK Location选择解压的SDK目录,点击OK。

深入浅出 - Android系统移植与平台开发(六)- 搭建基于Linux的Android开发环境_第9张图片

图 xx-xx指定Android SDK 目录

深入浅出 - Android系统移植与平台开发(六)- 搭建基于Linux的Android开发环境_第10张图片

图 xx-xx指定Android SDK 目录

 

 

2.4.4下载Android SDK平台

         在Android SDK工具包中只包含了开发环境中用到的一些工具,Android系统版本更新比较频繁,我们要在SDK下载器里下载要开发的Android系统版本类库、映像文件等。

         打开Window -> Android SDK Manager,选择要开发的目标系统平台(我们前面下载的是2.3的源码,所以下载Android2.3.3的目标系统):

         点击Install Selected按钮,同意所有的协议,进行下载安装:

深入浅出 - Android系统移植与平台开发(六)- 搭建基于Linux的Android开发环境_第11张图片

图 xx-xx下载Android平台

 

2.4.5 通过Android SDK Manager创建模拟器

         在没有真实手机设备时,我们可以通过SDK工具来创建模拟器。

         打开Window -> Android Virtual Device Manager ->New,在弹出窗口中新建模拟器:

  • AVD Name:模拟设备名设置为MyPhone
  • Device:选择合适尺寸的屏幕大小,推荐320 x 480。
  • Target:选择与源码匹配的系统版本。
  • SD Card:输入虚拟SD卡的大小。

点击OK,选择新创建的设备,点击Start启动它:

深入浅出 - Android系统移植与平台开发(六)- 搭建基于Linux的Android开发环境_第12张图片

图 xx-xx创建Android模拟器

 

 深入浅出 - Android系统移植与平台开发(六)- 搭建基于Linux的Android开发环境_第13张图片

图 xx-xx启动Android模拟器

 

2.4.6应用程序Framework源码级调试

Android平台由上层应用层、中间framework层、本地运行时库层及Linux内核层构成,应用程序调用Framework的代码库,在开发Android应用程序时,程序员希望深入Android提供的API中去查看具体实现,也就是说更希望在调试应用程序时能浏览到Framework代码,从而能更深刻的理解Android的工作机制,下面我们讲解如何进行应用程序的Framework源码级别调试。

Framework的源码级别调试,说白了就是当我们单步调试时能直接进入到Framework源码中去,这也就意味着,我们要将Framework的源码添加到Eclipse中,添加步骤如下:

  • 修改Eclipse的缓存配置:

打开Eclipse的安装目录下的eclipse.ini文件,修改下面的三个变量的值:

--launcher.XXMaxPermSize
256m
-Xms128m
-Xmx512m

  •  将Android源码中的Eclipse配置文件.classpath(在development/ide/eclipse/目录下)拷贝到源码的顶级目录下:

$ cd ~/android/android_source/
$ cp development/ide/eclipse/.classpath ./

  •  把Android提供的两个配置文件(在development/ide/eclipse/目录下):android-formatting.xml和android-importorder.xml导入Eclipse:

打开 window -> preferences -> Java ->CodeStyle -> Formatter,点击Import,选择android-formatting.xml文件,点击Apply,应用设置。

打开 window -> preferences -> Java ->Code Style -> Organize Imports,点击Import,选择android-importorder.xml,点击Apply,应用设置。

  • 导入Android源码:

选择:File -> New -> Java Project,如图论x-x所示,创建新Java工程,在弹出的窗口中输入工程名:android_source,指定Location为Android源码的顶级目录:/home/linux/android/android_source(上一步.classpath被拷贝到这儿),点击Finish按钮。

Eclipse加载源码时间比较长,如果加载完出现找不到javalib.jar库的错误,打开.classpath文件,将下列内容删除掉:


重启eclipse,如果出现源码错误,说明项目配置文件.classpath里面的目录与源码中的目录不一致,将.classpath里的目录与源码目录匹配即可。

  •  查看Eclipse左侧的Package Explorer窗口,可以看到AndroidFramework源码被导入进来了,如图x-x所示。

深入浅出 - Android系统移植与平台开发(六)- 搭建基于Linux的Android开发环境_第14张图片

图 xx-xx输入Android源码 

  •  源码级调试Android应用程序:

在开始调试之前,要保证上一步中Android源码工程编译完没有错误。

新建一个HelloWorld应用程序工程,在该工程上右键选择菜单Debug As->Debug Configurations ->Remote Java Application,右键点击New,在右侧窗口中Project选择刚才添加到工程中的Android源码工程:android_source,点击Apply应用设置。

打开HelloWorld源码文件,将断点设置在super.onCreate()方法上,点击调试按钮,开始调试。

深入浅出 - Android系统移植与平台开发(六)- 搭建基于Linux的Android开发环境_第15张图片

图 xx-xx配置调试信息

 深入浅出 - Android系统移植与平台开发(六)- 搭建基于Linux的Android开发环境_第16张图片

图 xx-xx配置调试信息

深入浅出 - Android系统移植与平台开发(六)- 搭建基于Linux的Android开发环境_第17张图片 

图 xx-xx配置调试信息

 

当点击F5(Step Into)进入框架层代码时,会显示“Sourcenot found。”,选择“EditSource LookupPath…”,在新窗口中单击Add按钮,选择Java Project,选择android_source工程,这样就可以看到框架层代码了,如图xx-xx所示。

深入浅出 - Android系统移植与平台开发(六)- 搭建基于Linux的Android开发环境_第18张图片

图 xx-xx设置源码目录

深入浅出 - Android系统移植与平台开发(六)- 搭建基于Linux的Android开发环境_第19张图片 

图 xx-xx调试HelloWorld源码

 

  •  调试系统级应用程序

首先在模拟器里打开要调试的应用程序,比如计算器Calculator,打开Window ->Open Perspective -> DDMS ,弹出DDMS调试窗口。在Devices窗口中选择Calculator的进程com.android.calculator2。

深入浅出 - Android系统移植与平台开发(六)- 搭建基于Linux的Android开发环境_第20张图片

图 xx-xx 选择要调试的进程

 

打开Run ->Debug Configurations -> RemoteJava Application,右键点击New,配置Name为:Calculator,在右侧窗口中Project选择刚才添加到工程中的Android源码工程:android_source,调试Port端口设置为:8700(默认AVD调试端口)点击Apply应用设置。

深入浅出 - Android系统移植与平台开发(六)- 搭建基于Linux的Android开发环境_第21张图片

图 xx-xx 调试源码

 

再点击Debug,可以看到DDMS窗口中,com.android.calculator2进程前面出现了Debug标志,如图xx-xx所示。

深入浅出 - Android系统移植与平台开发(六)- 搭建基于Linux的Android开发环境_第22张图片

图 xx-xx 调试Calculator源码

 

切换到Java视图,打开android_source工程中Calculator.java,在onCreate方法上设置断点,在模拟器里关闭刚才打开的Calculator,再次启动它,在Eclipse中就可以对Calculator进程进行调试了。

深入浅出 - Android系统移植与平台开发(六)- 搭建基于Linux的Android开发环境_第23张图片

图 xx-xx 调试Calculator源码


2.5定制Android模拟器

在2.4.5章节介绍了在Android VirtualDevice Manager里创建目标平台的模拟器,这个模拟器使用的SDK中的Linux内核和文件系统,我们完全可以对这个模拟器进行定制,使用自己编译的内核与文件系统。

进入SDK目录下,查看当前已下载的目标平台:

$ cd/home/linux/android/android-sdk-linux/tools

$ ./android list targets

Available Android targets:

----------

id: 1 or "android-10"

     Name:Android2.3.3

     Type:Platform

     API level:10

     Revision: 2

     Skins:WXGA800, WQVGA400, WXGA720, HVGA,WVGA854, WQVGA432, WVGA800 (default), QVGA,WSVGA

ABIs :armeabi.

通过下面的命令列出当前已经创建的模拟器:

$ ./android list avd

Available Android VirtualDevices:

    Name: MyPhone

    Path: /home/linux/.android/avd/MyPhone.avd

  Target: Android 2.3.3 (API level 10)

     ABI: armeabi

    Skin: 320x480

  Sdcard: 64M

如果不存在可用的模拟器,可以通过命令创建一个模拟器它:

$ ./android create avd -n MyPhone-t1

注:-n表示模拟器名字,-t表示模拟器使用的系统ID号,这儿指定为1 ,即Android2.3

启动模拟器:

$ ./emulator -avd MyPhone&

上述命令启动的是目标平台的默认系统映像(默认在SDK_DIR/platforms/android-xx/images),我们可以通过emulator的参数来指定特定的映像。

$ lsSDK_DIR/platforms/android-10/images

NOTICE.txt          kernel-qemu         ramdisk.img system.img  userdata.img

NOTICE.txt:当前系统映像的文件列表

Kernel-qemu:针对Goldfisk虚拟CPU的Linux内核,我们可以通过xx章节编译出自己的内核来替换它。

ramdisk.img、system.img、userdata.img这三个映像文件在xx章节已经介绍过,是构成Android文件系统的主要组成部分。

我们在Android源码的顶层目录下编写如下脚本run_emulator.sh,用来快速启动自己源码编译出来的文件系统和自己编译出来的Linux内核:

#!/bin/bash

SDK_PATH=/home/linux/android/android-sdk-linux

PWD_PATH=`pwd`

IMG_PATH=$PWD_PATH/out/target/product/generic

exportPATH=$SDK_PATH/tools:$PATH

emulator -kernel$PWD_PATH/kernel/goldfish/arch/arm/boot/zImage\

-image $IMG_PATH/system.img \

-data $IMG_PATH/userdata.img\

-ramdisk $IMG_PATH/ramdisk.img

-kernel:指定内核映像

-system:指定system.img

-data:指定userdata.img

-ramdisk:指定ramdisk.img

你可能感兴趣的:(Android移植)