life02

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  197 随笔 :: 3 文章 :: 37 评论 :: 0 Trackbacks

http://blog.csdn.net/boyupeng/article/details/6258667
ubuntu的下载与安装:

 

首先在http://mirror.lupaworld.com/ 下载最新的镜像文件,我下的是ubuntu-10.10-desktop-i386.iso ,下载完成后选择在windows下安装,注意要分配足够的空间,未编译的源码大概4G,编译后会更大,我给ubuntu分配的空间是50G,剩下的安装和一般应用软件一样。

 

eclipse的安装

 

在安装完成ubuntu后,就可以进行eclipse的安装了。先去sun公司的网站上下个jdk1.5.0_22,http://www.eclipse.org/下个eclipse for linux。

下面就是开始配置jdk了。jdk的具体配置详见:http://forum.ubuntu.org.cn/viewtopic.php?t=183803,下面这段是我的摘抄:

 

首先,从http://java.sun.com中下载jdk,我的版本是jdk1.6.0_12,我下载的是bin文件,我将下载的jdk1.6.0_12.bin文件置于/usr/lib/jvm/java中
然后,在shell中执行:

代码:
sudo chmod u+x /usr/lib/jvm/java/jdk1.6.0_12.bin


修改bin文件权限,使其可执行
然后,执行

代码:
sudo /usr/lib/jvm/java/jdk1.6.0_12.bin


将会出现字幕,持续按回车键,直至屏幕显示要求输入yes/no,此时输入y回车,将会把jdk解压到文件夹,得到jdk1.6.0_12目录。
此时,jdk已安装完毕,下面进行配置
执行

代码:
sudo vi /etc/environment


在environment中修改,出现如下部分

引用:
PATH="......:/usr/lib/jvm/java/jdk1.6.0_12/bin"
CLASSPATH=.:/usr/lib/jvm/java/jdk1.6.0_12/lib
JAVA_HOME=/usr/lib/jvm/java/jdk1.6.0_12


执行

代码:
sudo source /home/ghoul/.bashrc


此时,环境变量设置成功(设置环境变量的方法很多,不一一列举)
由于ubuntu中可能会有默认的jdk,如openjdk,所以,为了使默认使用的是我们安装的jdk,还要进行如下工作。
执行

代码:
update-alternatives --install /usr/bin/java java /usr/lib/jvm/java/jdk1.6.0_12/bin/java 300
update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java/jdk1.6.0_12/bin/javac 300


通过这一步将我们安装的jdk加入java选单。
然后执行

代码:
update-alternatives --config java


通过这一步选择系统默认的jdk
这样,再在shell中输入

代码:
java -version


时,就会显示系统使用的java是sun的java。

 

安装好ubuntu,jdk,eclipse后开始安装android-sdk_r07-linux_x86.tgz,最后开始编译源码,具体方法见下面:

 


1, ubuntu 下源码编译
最好切换到root用户下进行操作
$ sudo -s
1.1,下载jdk1.5 并安装(下载自解压版本并设置环境变量)
    编辑/root/.bashrc 添加
    #set java environment
    export JAVA_HOME=/work/jdk1.5.0_22
    export JRE_HOME=JAVA_HOME/jre
    export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
    export SDK_HOME=/work/froyo/out/host/linux-x86/sdk/android-sdk_eng.root_linux-x86/tools
    export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH:$SDK_HOME:/work/froyo/out/host/linux-x86/bin
    export ANDROID_PRODUCT_OUT=/work/froyo/out/target/product/generic
1.2,安装(apt-get install xxx) git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
1.3,下载源码
    $ mkdir mydroid
    $ cd mydroid

    $ git clone git://mirror.mind.com/froyo/tools/repo.git tools/repo.git
    $ ./tools/repo.git/repo init -u git://mirror.mind.com/froyo/platform/manifest.git -b froyo
    $ ./tools/repo.git/repo sync
1.4,编译源码
$ export ANDROID_JAVA_HOME=$JAVA_HOME
$ make
查看编译过程中是否有错误,一般情况不会有错误,如果有错误可能是某个依赖包没有安装,安装提示的依赖包后重新make

1.5,生成sdk
$ make PRODUCT-sdk-sdk ###使用make sdk 会出现R文件不能自动生成的问题
编译完成后会在/work/froyo/out/host/linux-x86/sdk/目录生成sdk
1.6,编译完成之后查看是否编译成功
$ . build/envsetup.sh
$ emulator& //启动模拟器,如果能成功启动代表编译成功。

2.Android 在eclipse中进行调试
2.1,拷贝development/ide/eclipse/.classpath到源代码根目录并修改.classpath
删除下面两行
<classpathentry kind="lib" path="out/target/common/obj/JAVA_LIBRARIES/google-common_intermediates/javalib.jar"/>
<classpathentry kind="lib" path="out/target/common/obj/JAVA_LIBRARIES/gsf-client_intermediates/javalib.jar"/>
添加 <classpathentry kind="lib" path="/work/froyo/out/target/common/obj/JAVA_LIBRARIES/android-common_intermediates/javalib.jar"/>


2.2,在eclipse中修改

2.2.1. 通过create file from existing source 导入froyo源代码
2.2.2. 展开packages/providers/CalendarProvider/src
2.2.3. 展开包: com.android.providers.calendar
2.2.4. 右键点击包com.android.providers.calendar
2.2.5. 选择 "new file"
2.2.6. 在对话框中选择点击  "Advanced >>" 按钮, 可以看到"Link to file in the file system" checkbox,
2.2.7. 勾选上 checkbox.  这时 "Browse..." 可用.
2.2.8. 点击 "Browse..." 按钮,选择EventLogTags.java (e.g.,out/target/common/obj/APPS/CalendarProvider_intermediates/src/src/com/android/providers/calendar/EventLogTags.java)
2.2.9. 点击OK
2.2.10. 点击 Finish (in "New File")


2.3 同样的方式修改com.android.providers.contacts的问题


3,调试

在IDE(eclipse)中修改源代码后在shell中编译运行
源码自带编译工具
先在android源码根目录执行 . build/envsetup.sh 再通过m/mm/mmm进行编译
- m:       Makes from the top of the tree.
- mm:      Builds all of the modules in the current directory.
- mmm:     Builds all of the modules in the supplied directories.

$cd /path/to/android/root
$. build/envsetup.sh
$lunch 1   # 初始化模拟器等
$make/m/mm/mmm      #
$emulator&  # you should see a GUI picture of a phone
$ddms& #调试工具



3.1 修改APK应用:在packages中的应用如果修改后都可以单独编译。先执行
    $. build/envsetup.sh #初始化
    $mmm packages/providers/ContactsProvider/
    ##用mm/mmm来编译生成的.apk并不会打包到system.img中,需要我们手动通过make snod把system文件夹打包为system.img
    ##可以使用make snod将模块打包到system.img中,也可以使用 adb install *.apk安装
    注:通过mmm packages/providers/ContactsProvider/ 编译后的apk在 out/target/product/generic/system/app
    这时候通过 adb install out/target/product/generic/system/app/xxx.apk 安装你刚修改过的apk就可以在模拟器上看到你修改的效果了。
    B、通过adb push out/target/product/generic/system/app/xxx.apk /data/app

3.2 修改framework:如果在Contacts.java中修改了,必须重新编译下framework。先执行
    $ . build/envsetup.sh #初始化
    #网上有的说要执行 make update-api,实际上直接make PRODUCT-sdk-sdk就可以将修改后的framework编译到sdk中。 #编译framework后,那些修改了的应用可以不用再单独编译了。4~6分钟
    $ make PRODUCT-sdk-sdk #重新生成SDK 10~20分钟

posted on 2011-12-28 16:48 life02 阅读(586) 评论(0)  编辑 收藏 引用 所属分类: 源码学习

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理