您的位置:首页 > 运维架构 > Linux

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

2016-05-05 15:58 1221 查看

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:

[cpp]
view plain
copy





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

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



图 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。



图 xx-xx安装ADT
 


图 xx-xx安装ADT


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



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

 


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


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

2.4.3下载、配置Android SDK工具包

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



图 xx-xx下载Android SDK
解压到/home/linux/android/目录下:

[cpp]
view plain
copy





$ 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。



图 xx-xx指定Android SDK 目录



图 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按钮,同意所有的协议,进行下载安装:



图 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启动它:



图 xx-xx创建Android模拟器
 
 


图 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文件,修改下面的三个变量的值:

[cpp]
view plain
copy





--launcher.XXMaxPermSize  
256m  
-Xms128m  
-Xmx512m  

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

[cpp]
view plain
copy





$ 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文件,将下列内容删除掉:

[cpp]
view plain
copy





<classpathentrykind="lib"path="out/target/common/obj/JAVA_LIBRARIES/google-common_intermediates/javalib.jar"/>  
<classpathentrykind="lib" path="out/target/common/obj/JAVA_LIBRARIES/gsf-client_intermediates/javalib.jar"/>  

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

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



图 xx-xx输入Android源码 
 源码级调试Android应用程序:
在开始调试之前,要保证上一步中Android源码工程编译完没有错误。

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

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



图 xx-xx配置调试信息
 


图 xx-xx配置调试信息


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



图 xx-xx设置源码目录


 
图 xx-xx调试HelloWorld源码
 

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



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



图 xx-xx 调试源码
 

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



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



图 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

转自:http://blog.csdn.net/mr_raptor/article/details/21002495
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: