1 . 参考android官方网站

======>>>>Ubuntu Linux (32-bit x86)

(1) $ sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev

安装如下开发环境必需软件:(sun-java5-jdk应该找不到,可暂时不安装,下面会说明)

o Git 1.5.4 or newer and the GNU Privacy Guard.

o JDK 5.0, update 12 or higher.Java 6 is not supported, because of incompatibilities with @Override.

o flex, bison, gperf, libsdl-dev, libesd0-dev, libwxgtk2.6-dev (optional), build-essential, zip, curl.

(2) $ sudo apt-get install valgrind

(3)$ sudo apt-get install lib32readline5-dev

======>>>>Ubuntu Linux (64-bit x86) 如果安装linux 64位

(1) $ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl sun-java5-jdk zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev

(2) $ sudo update-java-alternatives -s java-1.5.0-sun

(3)$ sudo ln -s /usr/lib32/libX11.so.6 /usr/lib32/libX11.so

2. 安装 Repo( 下载代码工具)

Repo is a tool that makes it easier to work with Git in the context of Android. For more information about Repo, see Using Repo and Git .

To install, initialize, and configure Repo, follow these steps:

(1. Make sure you have a~/bindirectory in your home directory, and check to be sure that this bin directory is in your path:

$ cd ~

$ mkdir bin ($ export PATH=$PATH:/home/zhengmingsang/bin)

$ echo $PATH

(2. Download thereposcript and make sure it is executable:

$ curl http://android.git.kernel.org/repo >~/bin/repo

$ chmod a+x ~/bin/repo

3. Initializing a Repo client(其实就是下载开源android开发代码,如果自己有开发源码,这一步可忽略)

(1. Create an empty directory to hold your working files:

$ mkdir mydroid

$ cd mydroid

(2. Run "repo init" to bring down the latest version of Repo with all its most recent bug fixes. You must specify a URL for the manifest:

$ repo init -u git://android.git.kernel.org/platform/manifest.git

* If you would like to check out a branch other than "master", specify it with -b, like:

$ repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake

(3. When prompted, configure Repo with your real name and email address. If you plan to submit code, use an email address that is associated with a Google account .

A successful initialization will end with a message such as

repo initialized in /mydroid

To pull down files to your working directory from the repositories as specified in the default manifest, run

$ repo sync (这一步需要很长时间)

Verifying Git Tags

Load the following public key into your GnuPG key database.The key is used to sign annotated tags that represent releases.

$ gpg --import

then paste the key(s) below, and press Control-D to end the input and process the keys. After importing the keys, you can verify any tag with

$ git tag -v tagname

4. 安装上面提到的sun-java5-jdk(ubuntu10.04源自带的版本是java1.6,编译android可能会有问题)

早在ubuntu 9.10中,ubuntu就已经去除了对sun-java5-jdk的支持,但是为了进行android的开发,又必须安装sun- java5-jdk。那么在享受ubuntu 10.04好处的同时,如何来进行sun-java5-jdk的安装那。经过多次的摸索,下面是一个方案:

(1.编辑/etc/apt/sources.list文件,将安装源更改为ubuntu 9.04的安装源为: sudo apt-get update

deb http://tw.archive.Ubuntu.com/ubuntu jaunty main restricted universe multiverse

deb http://tw.archive.Ubuntu.com/ubuntu jaunty-security main restricted universe multiverse

deb http://tw.archive.Ubuntu.com/ubuntu jaunty-updates main restricted universe multiverse

deb http://tw.archive.Ubuntu.com/ubuntu jaunty-backports main restricted universe multiverse

deb http://tw.archive.Ubuntu.com/ubuntu jaunty-proposed main restricted universe multiverse

deb-src http://tw.archive.Ubuntu.com/ubuntu jaunty main restricted universe multiverse

deb-src http://tw.archive.Ubuntu.com/ubuntu jaunty-security main restricted universe multiverse

deb-src http://tw.archive.Ubuntu.com/ubuntu jaunty-updates main restricted universe multiverse

deb-src http://tw.archive.Ubuntu.com/ubuntu jaunty-backports main restricted universe multiverse

deb-src http://tw.archive.Ubuntu.com/ubuntu jaunty-proposed main restricted universe multiverse

(2.安装java5,apt-get install sun-java5-jdk.

(3.更改默认jdk的方法如下:

update-alternatives --config java

显示如下,然后键入java- 1.5.0-sun的编号:

有 2 个选项可用于替换项 java (提供 /usr/bin/java)。

选择 路径 优先级 状态

------------------------------------------------------------

* 0 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 自动模式

1 /usr/lib/jvm/java-1.5.0-sun/jre/bin/java 53 手动模式

2 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 手动模式

要维持当前值[*]请按回车键,或者键入选择的编号:1

5.查看当前的java版本:

java -version

java version "1.5.0_22"

Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_22-b03)

Java HotSpot(TM) Client VM (build 1.5.0_22-b03, mixed mode, sharing)

同理,更改默认的javac,方法为update-alternatives --config javac.

接着就可以进行android的编译了。

一切顺利,世界终于太平了!

6. 可能会遇到的问题总结

Building the code

To build the files, runmakefrom within your working directory:

$ cd ~/mydroid

$ make

(1)If your build fails, complaining about a missing "run-java-tool", try setting the ANDROID_JAVA_HOME env var to $JAVA_HOME before making.E.g.,

$ export ANDROID_JAVA_HOME=$JAVA_HOME

(2)问题:Ubuntu 升级为 9.10, 后 Android 源码无法编译通过怎么办?

原因:

这是 gcc 和 g++ 的版本太高导致的问题。Ubuntu 9.04 是4.3, 而 9.10 是4.4.

GCC 在 4.4 时把部份 string 相关的 function 回传值的 type 改变了...

char* 改成了 const char*...

也因此让一堆原本不是针对最新的gcc来写的code都无法编译成功。

解决方案:使用旧版本的 gcc 和 g++ 。

1、先下载 gcc-4.3 g++-4.3:

源码打印?

1. apt-get install gcc-4.3 g++-4.3

apt-get install gcc-4.3 g++-4.3

2、删除原有的连接:

源码打印?

1. sudo rm /usr/bin/gcc<br>sudo rm /usr/bin/g++

sudo rm /usr/bin/gcc

sudo rm /usr/bin/g++

3、添加新的连接:

源码打印?

1. sudo ln -s /usr/bin/gcc-4.3 /usr/bin/gcc<br>sudo ln -s /usr/bin/g++-4.3 /usr/bin/g++

sudo ln -s /usr/bin/gcc-4.3 /usr/bin/gcc

sudo ln -s /usr/bin/g++-4.3 /usr/bin/g++

(3)问题:Ubuntu 中没有 Android 要求的 jdk 1.5, 怎么办?

解决方案一:安装 jdk 1.5。

方法1:从官方网站上下载 jdk 1.5,安装。

方法2:在 /etc/apt/sources.list 中添加 9.04 的源:

deb http://mirrors.163.com/ubuntu/ jaunty main restricted universe multiverse

deb http://mirrors.163.com/ubuntu/ jaunty-updates main restricted universe multiverse

更新源,安装 jdk 1.5。

解决方案二:如果您已经安装了 jdk 1.6, 请修改 <src_home>/build/core/make.mk。(注,如果是 2.0 版本的源码,请修改 <src_home>/build/core/main.mk)

在文件中搜索并分别把:

源码打印?

1. java_version := $(shell java -version 2>&1 | head -n 1 | grep '[ "]1/.5[/. "$$]')<br>javac_version := $(shell javac -version 2>&1 | head -n 1 | grep '[ "]1/.5[/. "$$]')

java_version := $(shell java -version 2>&1 | head -n 1 | grep '[ "]1/.5[/. "$$]')

javac_version := $(shell javac -version 2>&1 | head -n 1 | grep '[ "]1/.5[/. "$$]')

两行改成:

源码打印?

1. java_version := $(shell java -version 2>&1 | head -n 1 | grep '[ "]1/.6[/. "$$]')<br>javac_version := $(shell javac -version 2>&1 | head -n 1 | grep '[ "]1/.6[/. "$$]')

java_version := $(shell java -version 2>&1 | head -n 1 | grep '[ "]1/.6[/. "$$]')

javac_version := $(shell javac -version 2>&1 | head -n 1 | grep '[ "]1/.6[/. "$$]')

即可。

如果你有其它的开发要使用 jdk 1.6 的话,采用解决方案二是一种不错的选择,它可以避免你在两个 jdk 之间切换。

==================================================

以上方案,在 Ubuntu 9.10 + Android 2.1 环境中测试通过。即正确编译 Android 2.1 源码通过。

注意:

1、对于第二个问题的 解决方案二 请谨慎采用。由于修改了 Android 原配置文件,对编译结果的影响未知,建议经详细测试后再用于商业目的编译(要不然,出了问题可别找我哈,呵呵)。

不过到目前为止,我编译出来的结果文件,没有出现任何异常。如果大家发现了问题,不妨回复分享一下。

2、如果需要 make sdk,则需要把 javadoc 设置为 1.5 的。

安装 javadoc 1.5版本,然后 sudo update-alternatives --config javadoc,选择 1.5 版本。

不然会出现以下错误:

源码打印?

1. javadoc: 错误 - 在 doclet 类 DroidDoc 中,方法 start 已抛出异常 java.lang.reflect.InvocationTargetException<br>com.sun.tools.javac.code.Symbol$CompletionFailure: 未找到 sun.util.resources.OpenListResourceBundle 的类文件<br>1 错误<br>make: *** [out/target/common /docs/services-timestamp] 错误 45

javadoc: 错误 - 在 doclet 类 DroidDoc 中,方法 start 已抛出异常 java.lang.reflect.InvocationTargetException

com.sun.tools.javac.code.Symbol$CompletionFailure: 未找到 sun.util.resources.OpenListResourceBundle 的类文件

1 错误

make: *** [out/target/common/docs/services-timestamp] 错误 45

金宝博:122.252.25.188

==================================================

解决了以上两个问题之后,按照 Android 官方文档的方法即可顺利进行编译。分享经验,分享快乐!放心享受 Ubuntu 9.10 带给您的惊喜吧!

作者:曾赛

日期:2010-02-25

====================

补充:常见问题解决方案

====================

1.找不到PRODUCT_POLICY

frameworks/policies/base/PolicyConfig.mk:22: *** No module defined for the given PRODUCT_POLICY (android.policy_phone).

解法: 修改build/tools/findleaves.sh的89行:

#find "${@:0:$nargs}" $findargs -type f -name "$filename" -print |

find "${@:1:$nargs-1}" $findargs -type f -name "$filename" -print |

2. fprintf未定义

frameworks/base/tools/aidl/AST.cpp:10: error: 'fprintf' was not declared in

this scope

解法:apt-get install gcc-4.3 g++-4.3,并重新ln gcc 和g++到 gcc-4.3 和g++-4.3

3.安装sun- java6-jdk,并且在环境变量中设置:

export JAVA_HOME=/usr/lib/jvm/java-6-sun/

export ANDROID_JAVA_HOME=$JAVA_HOME

这部分摘自:http://embeddeder.spaces.live.com/Blog/cns!8006E36532087D51!213.entry

附后:(from http://forum.xda-developers.com/archive/index.php/t-633274.html)

I notice that there is quiet a few people around that are having issues building the source, due to the lack on Sun-Java5 (1.5 JDK) in the Ubuntu Repositories.

In a hope it will encourage more developers, I'll post the following, which will build a full eclair system, on a new Ubuntu 9.10 x64 system.

源码打印?

1. $ mkdir ~/mydroid

2. $ mkdir mydroid/java5-packages

3. $ cd ~mydroid/java5-packages

4. $ wget http://mirror.pacific.net.au/linux/ubuntu/pool/multiverse/s/sun-java5/sun-java5-jre_1.5.0-18-1_all.deb

5. $ wget http://mirror.pacific.net.au/linux/ubuntu/pool/multiverse/s/sun-java5/sun-java5-bin_1.5.0-18-1_amd64.deb

6. $ wget http://mirror.pacific.net.au/linux/ubuntu/pool/multiverse/s/sun-java5/sun-java5-demo_1.5.0-18-1_amd64.deb

7. $ wget http://mirror.pacific.net.au/linux/ubuntu/pool/multiverse/s/sun-java5/sun-java5-jdk_1.5.0-18-1_amd64.deb

8. $ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev java-common unixodbc

9. $ sudo dpkg -i --ignore-depends=sun-java5-bin sun-java5-jre_1.5.0-18-1_all.deb

10. $ sudo dpkg -i sun-java5-bin_1.5.0-18-1_amd64.deb

11. $ sudo dpkg -i --ignore-depends=sun-java5-jdk sun-java5-demo_1.5.0-18-1_amd64.deb

12. $ sudo dpkg -i sun-java5-jdk_1.5.0-18-1_amd64.deb

13. $ sudo update-java-alternatives -s java-1.5.0-sun

14. $ cd ..

15. $ wget http://android.git.kernel.org/repo

16. $ sudo mv repo /usr/bin/

17. $ chmod a+x /usr/bin/repo

18. $ repo init -u git://android.git.kernel.org/platform/manifest.git -b eclair

19. $ rep sync

20. $ cd external/webkit/

21. $ git cherry-pick 18342a41ab72e2c21931afaaab6f1b9bdbedb9fa

22. $ cd ../../

23. $ wget --referer=http://developer.htc.com/google-io-device.html http://member.america.htc.com/download/RomCode/ADP/signed-google_ion-ota-14721.zip?

24. $ cd vendor/htc/sapphire-open/

25. $ ./unzip-files.sh

26. $ cd ../../../

27. $ . build/envsetup.sh

28. $ lunch aosp_sapphire_us-eng

29. $ make

$ mkdir ~/mydroid

$ mkdir mydroid/java5-packages

$ cd ~mydroid/java5-packages

$ wget http://mirror.pacific.net.au/linux/ubuntu/pool/multiverse/s/sun-java5/sun-java5-jre_1.5.0-18-1_all.deb

$ wget http://mirror.pacific.net.au/linux/ubuntu/pool/multiverse/s/sun-java5/sun-java5-bin_1.5.0-18-1_amd64.deb

$ wget http://mirror.pacific.net.au/linux/ubuntu/pool/multiverse/s/sun-java5/sun-java5-demo_1.5.0-18-1_amd64.deb

$ wget http://mirror.pacific.net.au/linux/ubuntu/pool/multiverse/s/sun-java5/sun-java5-jdk_1.5.0-18-1_amd64.deb

$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev java-common unixodbc

$ sudo dpkg -i --ignore-depends=sun-java5-bin sun-java5-jre_1.5.0-18-1_all.deb

$ sudo dpkg -i sun-java5-bin_1.5.0-18-1_amd64.deb

$ sudo dpkg -i --ignore-depends=sun-java5-jdk sun-java5-demo_1.5.0-18-1_amd64.deb

$ sudo dpkg -i sun-java5-jdk_1.5.0-18-1_amd64.deb

$ sudo update-java-alternatives -s java-1.5.0-sun

$ cd ..

$ wget http://android.git.kernel.org/repo

$ sudo mv repo /usr/bin/

$ chmod a+x /usr/bin/repo

$ repo init -u git://android.git.kernel.org/platform/manifest.git -b eclair

$ rep sync

$ cd external/webkit/

$ git cherry-pick 18342a41ab72e2c21931afaaab6f1b9bdbedb9fa

$ cd ../../

$ wget --referer=http://developer.htc.com/google-io-device.html http://member.america.htc.com/download/RomCode/ADP/signed-google_ion-ota-14721.zip?

$ cd vendor/htc/sapphire-open/

$ ./unzip-files.sh

$ cd ../../../

$ . build/envsetup.sh

$ lunch aosp_sapphire_us-eng

$ make

That's it? Ok, So it was a lot... Hope this helps someone get the 1.5 JDK on their Ubuntu system (and build eclair)

(4).

ubuntu10.04 问题论坛地址:http://www.linuxidx.com/linux.php?q=Ubuntu10.04+%E5%AE%89%E8%A3 %85%E6%96%B0%E7%89%88Wine

将源码编译完后下一步的动作就是要看看效果了,怎样启动模拟器是一个问题。网上有很多种做法,下面介绍一种简单的方式进行处理。

在下载源码的目录下,make sdk命令,编译sdk。而后在/home/stone/working-directory-name/out/host/linux-x86多

一个 sdk目录。在sdk的 tools目录下使用命令创建虚拟设备,此时创建方式和1.5有所不同其命令是:

./android list targets

./android create avd -n sphone -t android-7

2.1版本的要求其 targetid 必须是 android-7这种模式。

而后启动模拟器:

命令是:

./emulator -avd sphone

至此关于android源码下载、编译、模拟器运行的基本知识介绍完毕。下步就是深入分析其源码。

在这个过程中下载源码大约下了8个小时,编译源码用了3个小时,编译sdk用时20分钟。就是这样等待中见证欣喜。

$ sudo apt-get install valgrind

* Intrepid ( 8.10) users may need a newer version of libreadline:

$ sudo apt-get install lib32readline5-dev

Ubuntu Linux (64-bit x86)

This has not been as well tested. Please send success or failure reports to android-porting@googlegroups.com .

The Android build requires a 32-bit build environment as well as some other tools:

* Required Packages:

o Git, JDK, flex, and the other packages as listed above in the i386 instructions:

o JDK 5.0, update 12 or higher.Java 6 is not supported, because of incompatibilities with @Override.

o Pieces from the 32-bit cross-building environment

o X11 development

$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl sun-java5-jdk zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev

* Set the system to use the right version of java by default:

$ sudo update-java-alternatives -s java-1.5.0-sun

* X11: Ubuntu doesn't have packages for the X11 libraries, but that can be worked around with the following command:

$ sudo ln -s /usr/lib32/libX11.so.6 /usr/lib32/libX11.so

Installing Repo

Repo is a tool that makes it easier to work with Git in the context of Android. For more information about Repo, see Using Repo and Git .

To install, initialize, and configure Repo, follow these steps:

1. Make sure you have a~/bindirectory in your home directory, and check to be sure that this bin directory is in your path:

$ cd ~

$ mkdir bin ($ export PATH=$PATH:/home/zhengmingsang/bin)

$ echo $PATH

2. Download thereposcript and make sure it is executable:

$ curl http://android.git.kernel.org/repo >~/bin/repo

$ chmod a+x ~/bin/repo

Initializing a Repo client

1. Create an empty directory to hold your working files:

$ mkdir mydroid

$ cd mydroid

2. Run "repo init" to bring down the latest version of Repo with all its most recent bug fixes. You must specify a URL for the manifest:

$ repo init -u git://android.git.kernel.org/platform/manifest.git

* If you would like to check out a branch other than "master", specify it with -b, like:

$ repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake

3. When prompted, configure Repo with your real name and email address. If you plan to submit code, use an email address that is associated with a Google account .

A successful initialization will end with a message such as

repo initialized in /mydroid

To pull down files to your working directory from the repositories as specified in the default manifest, run

$ repo sync

Verifying Git Tags

Load the following public key into your GnuPG key database.The key is used to sign annotated tags that represent releases.

$ gpg --import

then paste the key(s) below, and press Control-D to end the input and process the keys. After importing the keys, you can verify any tag with

$ git tag -v tagname

(2).

早在ubuntu 9.10中,ubuntu就已经去除了对sun-java5-jdk的支持,但是为了进行android的开发,又必须安装sun- java5-jdk。那么在享受ubuntu 10.04好处的同时,如何来进行sun-java5-jdk的安装那。经过多次的摸索,下面是一个方案:

1.编辑/etc/apt/sources.list文件,将安装源更改为ubuntu 9.04的安装源为: sudo apt-get update

deb http://tw.archive.Ubuntu.com/ubuntu jaunty main restricted universe multiverse

deb http://tw.archive.Ubuntu.com/ubuntu jaunty-security main restricted universe multiverse

deb http://tw.archive.Ubuntu.com/ubuntu jaunty-updates main restricted universe multiverse

deb http://tw.archive.Ubuntu.com/ubuntu jaunty-backports main restricted universe multiverse

deb http://tw.archive.Ubuntu.com/ubuntu jaunty-proposed main restricted universe multiverse

deb-src http://tw.archive.Ubuntu.com/ubuntu jaunty main restricted universe multiverse

deb-src http://tw.archive.Ubuntu.com/ubuntu jaunty-security main restricted universe multiverse

deb-src http://tw.archive.Ubuntu.com/ubuntu jaunty-updates main restricted universe multiverse

deb-src http://tw.archive.Ubuntu.com/ubuntu jaunty-backports main restricted universe multiverse

deb-src http://tw.archive.Ubuntu.com/ubuntu jaunty-proposed main restricted universe multiverse

2.安装java5,apt-get install sun-java5-jdk.

4.更改默认jdk的方法如下:

update-alternatives --config java

显示如下,然后键入java- 1.5.0-sun的编号:

有 2 个选项可用于替换项 java (提供 /usr/bin/java)。

选择 路径 优先级 状态

------------------------------------------------------------

* 0 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 自动模式

1 /usr/lib/jvm/java-1.5.0-sun/jre/bin/java 53 手动模式

2 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 手动模式

要维持当前值[*]请按回车键,或者键入选择的编号:1

5.查看当前的java版本:

java -version

java version "1.5.0_22"

Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_22-b03)

Java HotSpot(TM) Client VM (build 1.5.0_22-b03, mixed mode, sharing)

同理,更改默认的javac,方法为update-alternatives --config javac.

接着就可以进行android的编译了。

一切顺利,世界终于太平了!

///////////////////////////////////////////////////////////////////////

Building the code

To build the files, runmakefrom within your working directory:

$ cd ~/mydroid

$ make

If your build fails, complaining about a missing "run-java-tool", try setting the ANDROID_JAVA_HOME env var to $JAVA_HOME before making.E.g.,

$ export ANDROID_JAVA_HOME=$JAVA_HOME

///////////////////////////////////////////////////////////////////

(3).

http://my.oschina.net/zengsai/blog/2903

==========================================

如何在 Ubuntu 9.10 下编译 Android 源码

==========================================

问题:Ubuntu 升级为 9.10, 后 Android 源码无法编译通过怎么办?

原因:

这是 gcc 和 g++ 的版本太高导致的问题。Ubuntu 9.04 是4.3, 而 9.10 是4.4.

GCC 在 4.4 时把部份 string 相关的 function 回传值的 type 改变了...

char* 改成了 const char*...

也因此让一堆原本不是针对最新的gcc来写的code都无法编译成功。

解决方案:使用旧版本的 gcc 和 g++ 。

1、先下载 gcc-4.3 g++-4.3:

源码打印?

1. apt-get install gcc-4.3 g++-4.3

apt-get install gcc-4.3 g++-4.3

2、删除原有的连接:

源码打印?

1. sudo rm /usr/bin/gcc<br>sudo rm /usr/bin/g++

sudo rm /usr/bin/gcc

sudo rm /usr/bin/g++

3、添加新的连接:

源码打印?

1. sudo ln -s /usr/bin/gcc-4.3 /usr/bin/gcc<br>sudo ln -s /usr/bin/g++-4.3 /usr/bin/g++

sudo ln -s /usr/bin/gcc-4.3 /usr/bin/gcc

sudo ln -s /usr/bin/g++-4.3 /usr/bin/g++

==================================================

问题:Ubuntu 中没有 Android 要求的 jdk 1.5, 怎么办?

解决方案一:安装 jdk 1.5。

方法1:从官方网站上下载 jdk 1.5,安装。

方法2:在 /etc/apt/sources.list 中添加 9.04 的源:

deb http://mirrors.163.com/ubuntu/ jaunty main restricted universe multiverse

deb http://mirrors.163.com/ubuntu/ jaunty-updates main restricted universe multiverse

更新源,安装 jdk 1.5。

解决方案二:如果您已经安装了 jdk 1.6, 请修改 <src_home>/build/core/make.mk。(注,如果是 2.0 版本的源码,请修改 <src_home>/build/core/main.mk)

在文件中搜索并分别把:

源码打印?

1. java_version := $(shell java -version 2>&1 | head -n 1 | grep '[ "]1/.5[/. "$$]')<br>javac_version := $(shell javac -version 2>&1 | head -n 1 | grep '[ "]1/.5[/. "$$]')

java_version := $(shell java -version 2>&1 | head -n 1 | grep '[ "]1/.5[/. "$$]')

javac_version := $(shell javac -version 2>&1 | head -n 1 | grep '[ "]1/.5[/. "$$]')

两行改成:

源码打印?

1. java_version := $(shell java -version 2>&1 | head -n 1 | grep '[ "]1/.6[/. "$$]')<br>javac_version := $(shell javac -version 2>&1 | head -n 1 | grep '[ "]1/.6[/. "$$]')

java_version := $(shell java -version 2>&1 | head -n 1 | grep '[ "]1/.6[/. "$$]')

javac_version := $(shell javac -version 2>&1 | head -n 1 | grep '[ "]1/.6[/. "$$]')

即可。

如果你有其它的开发要使用 jdk 1.6 的话,采用解决方案二是一种不错的选择,它可以避免你在两个 jdk 之间切换。

==================================================

以上方案,在 Ubuntu 9.10 + Android 2.1 环境中测试通过。即正确编译 Android 2.1 源码通过。

注意:

1、对于第二个问题的 解决方案二 请谨慎采用。由于修改了 Android 原配置文件,对编译结果的影响未知,建议经详细测试后再用于商业目的编译(要不然,出了问题可别找我哈,呵呵)。

不过到目前为止,我编译出来的结果文件,没有出现任何异常。如果大家发现了问题,不妨回复分享一下。

2、如果需要 make sdk,则需要把 javadoc 设置为 1.5 的。

安装 javadoc 1.5版本,然后 sudo update-alternatives --config javadoc,选择 1.5 版本。

不然会出现以下错误:

源码打印?

1. javadoc: 错误 - 在 doclet 类 DroidDoc 中,方法 start 已抛出异常 java.lang.reflect.InvocationTargetException<br>com.sun.tools.javac.code.Symbol$CompletionFailure: 未找到 sun.util.resources.OpenListResourceBundle 的类文件<br>1 错误<br>make: *** [out/target/common /docs/services-timestamp] 错误 45

javadoc: 错误 - 在 doclet 类 DroidDoc 中,方法 start 已抛出异常 java.lang.reflect.InvocationTargetException

com.sun.tools.javac.code.Symbol$CompletionFailure: 未找到 sun.util.resources.OpenListResourceBundle 的类文件

1 错误

make: *** [out/target/common/docs/services-timestamp] 错误 45

金宝博:122.252.25.188

==================================================

解决了以上两个问题之后,按照 Android 官方文档的方法即可顺利进行编译。分享经验,分享快乐!放心享受 Ubuntu 9.10 带给您的惊喜吧!

作者:曾赛

日期:2010-02-25

====================

补充:常见问题解决方案

====================

1.找不到PRODUCT_POLICY

frameworks/policies/base/PolicyConfig.mk:22: *** No module defined for the given PRODUCT_POLICY (android.policy_phone).

解法: 修改build/tools/findleaves.sh的89行:

#find "${@:0:$nargs}" $findargs -type f -name "$filename" -print |

find "${@:1:$nargs-1}" $findargs -type f -name "$filename" -print |

2. fprintf未定义

frameworks/base/tools/aidl/AST.cpp:10: error: 'fprintf' was not declared in

this scope

解法:apt-get install gcc-4.3 g++-4.3,并重新ln gcc 和g++到 gcc-4.3 和g++-4.3

3.安装sun- java6-jdk,并且在环境变量中设置:

export JAVA_HOME=/usr/lib/jvm/java-6-sun/

export ANDROID_JAVA_HOME=$JAVA_HOME

这部分摘自:http://embeddeder.spaces.live.com/Blog/cns!8006E36532087D51!213.entry

附后:(from http://forum.xda-developers.com/archive/index.php/t-633274.html)

I notice that there is quiet a few people around that are having issues building the source, due to the lack on Sun-Java5 (1.5 JDK) in the Ubuntu Repositories.

In a hope it will encourage more developers, I'll post the following, which will build a full eclair system, on a new Ubuntu 9.10 x64 system.

源码打印?

1. $ mkdir ~/mydroid

2. $ mkdir mydroid/java5-packages

3. $ cd ~mydroid/java5-packages

4. $ wget http://mirror.pacific.net.au/linux/ubuntu/pool/multiverse/s/sun-java5/sun-java5-jre_1.5.0-18-1_all.deb

5. $ wget http://mirror.pacific.net.au/linux/ubuntu/pool/multiverse/s/sun-java5/sun-java5-bin_1.5.0-18-1_amd64.deb

6. $ wget http://mirror.pacific.net.au/linux/ubuntu/pool/multiverse/s/sun-java5/sun-java5-demo_1.5.0-18-1_amd64.deb

7. $ wget http://mirror.pacific.net.au/linux/ubuntu/pool/multiverse/s/sun-java5/sun-java5-jdk_1.5.0-18-1_amd64.deb

8. $ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev java-common unixodbc

9. $ sudo dpkg -i --ignore-depends=sun-java5-bin sun-java5-jre_1.5.0-18-1_all.deb

10. $ sudo dpkg -i sun-java5-bin_1.5.0-18-1_amd64.deb

11. $ sudo dpkg -i --ignore-depends=sun-java5-jdk sun-java5-demo_1.5.0-18-1_amd64.deb

12. $ sudo dpkg -i sun-java5-jdk_1.5.0-18-1_amd64.deb

13. $ sudo update-java-alternatives -s java-1.5.0-sun

14. $ cd ..

15. $ wget http://android.git.kernel.org/repo

16. $ sudo mv repo /usr/bin/

17. $ chmod a+x /usr/bin/repo

18. $ repo init -u git://android.git.kernel.org/platform/manifest.git -b eclair

19. $ rep sync

20. $ cd external/webkit/

21. $ git cherry-pick 18342a41ab72e2c21931afaaab6f1b9bdbedb9fa

22. $ cd ../../

23. $ wget --referer=http://developer.htc.com/google-io-device.html http://member.america.htc.com/download/RomCode/ADP/signed-google_ion-ota-14721.zip?

24. $ cd vendor/htc/sapphire-open/

25. $ ./unzip-files.sh

26. $ cd ../../../

27. $ . build/envsetup.sh

28. $ lunch aosp_sapphire_us-eng

29. $ make

$ mkdir ~/mydroid

$ mkdir mydroid/java5-packages

$ cd ~mydroid/java5-packages

$ wget http://mirror.pacific.net.au/linux/ubuntu/pool/multiverse/s/sun-java5/sun-java5-jre_1.5.0-18-1_all.deb

$ wget http://mirror.pacific.net.au/linux/ubuntu/pool/multiverse/s/sun-java5/sun-java5-bin_1.5.0-18-1_amd64.deb

$ wget http://mirror.pacific.net.au/linux/ubuntu/pool/multiverse/s/sun-java5/sun-java5-demo_1.5.0-18-1_amd64.deb

$ wget http://mirror.pacific.net.au/linux/ubuntu/pool/multiverse/s/sun-java5/sun-java5-jdk_1.5.0-18-1_amd64.deb

$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev java-common unixodbc

$ sudo dpkg -i --ignore-depends=sun-java5-bin sun-java5-jre_1.5.0-18-1_all.deb

$ sudo dpkg -i sun-java5-bin_1.5.0-18-1_amd64.deb

$ sudo dpkg -i --ignore-depends=sun-java5-jdk sun-java5-demo_1.5.0-18-1_amd64.deb

$ sudo dpkg -i sun-java5-jdk_1.5.0-18-1_amd64.deb

$ sudo update-java-alternatives -s java-1.5.0-sun

$ cd ..

$ wget http://android.git.kernel.org/repo

$ sudo mv repo /usr/bin/

$ chmod a+x /usr/bin/repo

$ repo init -u git://android.git.kernel.org/platform/manifest.git -b eclair

$ rep sync

$ cd external/webkit/

$ git cherry-pick 18342a41ab72e2c21931afaaab6f1b9bdbedb9fa

$ cd ../../

$ wget --referer=http://developer.htc.com/google-io-device.html http://member.america.htc.com/download/RomCode/ADP/signed-google_ion-ota-14721.zip?

$ cd vendor/htc/sapphire-open/

$ ./unzip-files.sh

$ cd ../../../

$ . build/envsetup.sh

$ lunch aosp_sapphire_us-eng

$ make

That's it? Ok, So it was a lot... Hope this helps someone get the 1.5 JDK on their Ubuntu system (and build eclair)

(4).

ubuntu10.04 问题论坛地址:http://www.linuxidx.com/linux.php?q=Ubuntu10.04+%E5%AE%89%E8%A3 %85%E6%96%B0%E7%89%88Wine

将源码编译完后下一步的动作就是要看看效果了,怎样启动模拟器是一个问题。网上有很多种做法,下面介绍一种简单的方式进行处理。

在下载源码的目录下,make sdk命令,编译sdk。而后在/home/stone/working-directory-name/out/host/linux-x86多

一个 sdk目录。在sdk的 tools目录下使用命令创建虚拟设备,此时创建方式和1.5有所不同其命令是:

./android list targets

./android create avd -n sphone -t android-7

2.1版本的要求其 targetid 必须是 android-7这种模式。

而后启动模拟器:

命令是:

./emulator -avd sphone

至此关于android源码下载、编译、模拟器运行的基本知识介绍完毕。下步就是深入分析其源码。

在这个过程中下载源码大约下了8个小时,编译源码用了3个小时,编译sdk用时20分钟。就是这样等待中见证欣喜。

Ubuntu 10.04环境下载&编译Android-2.2.1 (froyo) 源代码 [转]

应一个在电信做android开发的哥们要求,帮忙把Goole未在sdk中打包的API(即:mms彩信功能),打包到自己编译的sdk里面。偶用了差 不多5天+5夜的时间,虽然没有成功。但对于Ubuntu 10.04环境下载&编译Android-2.2.1 (froyo)源代码这个过程是相当熟悉啦,来来回回,在虚拟机里面做了5遍!其中的辛苦与开心只有自己才有深刻的体会。现在分享给大家,同时也感谢网络 上的筒子们。

1. 前言

本文叙述了如何从零开始搭建基于Google官方Android 2.2.1(froyo)源码的开发环境,包括如何下载源代码、编译源代码,以及在模拟器中运行编译生成的镜像。文中开发机是基于Ubuntu 10.04的,同样适用于其他版本的Ubuntu。现在需要弄清楚一下几点,防止后面出现误操作: 下载源代码是用参数:repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo (下载的是2.2.1版本,编译环境操作系统必须是32位的,jdk1.5版本的—jdk1.5没有64位版本)。如果是没有带参数的下载源代码,将会下载所有的源代码,编译环境要求:操作系统64位,jdk1.6,(偶是2010年10月15日做)但很有可能会出现交叉编译工具错误:“ /bin/bash: prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc: 没有那个文件或目录 ”(实际上是有arm-eabi-gcc这个文件的,偶怀疑是版本问题–32位的,而环境要求是64位的—– 下载全部代码

2. 下载JDK 1.5 (不建议此下载方式,防止配置环境参数出错。建议用apt-get install方式,请跳转到:第4步)

编译Android源码需要JDK1.5版(主要是需要其中的javadoc),1.6版是 不兼容的。JDK1.5已经停止支持,其最 终的版本是JDK 5.0 Update 22。

可从Sun官网上下载:

http://java.sun.com/javase/downloads/5u22/jdk

选择平台Linux,勾选同意许可协议:

单击Continue,在弹出的页面中一共有两个下载,选第一个jdk-1_5_0_22-linux-i586.bin下载:

3. 部署JDK 1.5

3.1 解压缩JDK

以下命令均在root账户上执行,非root账户执行某些命令可能需要加sudo。

将jdk-1_5_0_22-linux-i586.bin放在root目 录下。进入该目录:

cd ~

然后赋予该bin文件可执行属性:

chmod +x jdk-1_5_0_22-linux-i586.bin

再执行安装(注意前面有./):

./jdk-1_5_0_22-linux-i586.bin

跳过协议阅读。

最后一行:

Do you agree to the above license terms? [yes or no]

键入yes,然后回车,开始解压。默认会解压到当前目录下的jdk1.5.0_22目录下(此处是~/ jdk1.5.0_22)。

3.2 JDK版本切换

如果同时需要使用JDK1.6版做应用开发,则系统中将同时存在JDK1.5和JDK1.6。 因此需要实现能够在不同版本间切换。如果不使用JDK1.6,请做完1.5版 的设置后跳至3.3节。

这里使用update-alternatives命令实现。

首先为JDK1.5版生成可选配置选项:

update-alternatives –install /usr/bin/jdk jdk /root/jdk1.5.22 255

(sudo update-alternatives –install /usr/bin/jdk jdk /home/ynb/jdk1.5.0_22 255)

/usr/bin/jdk是符号链接,它指 向/etc/alternatives/jdk(由第2个参数 给出的),/root/jdk1.5.22(/home/ynb/jdk1.5.0_22)是 实际目的链接,255是优先级(任意整数, 在automatic mode自动模式 时,数字大的优先级较高,被选为默认配置选项)。

然后再为JDK1.6版生成(如果有JDK1.6的话。不使用JDK1.6的请跳至3.3节):

update-alternatives –install /usr/bin/jdk jdk /root/jdk1.6.20 0

这样,默认jdk版本即为1.5版。 需要切换到1.6版时,请使用update-alternatives –config jdk

3.3 配置JDK环境变量

下面开始配置环境变量。

在终端中执行:sudo gedit ~/.bashrc

修改.bashrc文件,添加下面语句:

#set java environment

export JAVA_HOME=/usr/bin/jdk

export JRE_HOME=JAVA_HOME/jre

export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

该段代码最好设置在文件的尾部。

保存文件。在终端中执行source ~/.bashrc

重启系统请使用java –version检查JDK是否 配置正确。

4.用apt-get install方式安装JDK1.5:

Android 要求的 jdk 1.5,而Ubuntu10.4的源里只有JDK1.6. 如果安装了jdk1.6请先卸载:

$sudo apt-get remove remove openjdk-6-jdk

$sudo apt-get remove remove openjdk-6-jre

$sudo apt-get remove remove openjdk-6-jre-headless

安装jdk1.5目前网上解决方法有两种:
解决方法一(建议): 安装JDK1.5

1) 根据官方文档里所说,源代码的编译必须使用JDK5才能编译的了,所以这里偶使用jdk5
2) 需要先更新源,在终端里执行 sudo vim /etc/apt/sources.list
3) 在source.list里把以下2行拷贝到文档最后面:

deb http://us.archive.ubuntu.com/ubuntu/ jaunty multiverse

deb-src http://us.archive.ubuntu.com/ubuntu/ jaunty multiverse

deb http://us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse

deb-src http://us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse

保存退出。
4) 执行 sudo apt-get update 更新源.
5) 配置编译环境并下载JDK5:sudo apt-get install sun-java5-jdk
解决方法二:安装JDK 1.6, 修改Android源文件。
1) 安装jdk 1.6,修改<src_top/build/core/make.mk>(如果2.0版本源码请修改<src_top/build/core/main.mk>)
在文件中搜索并分别把:
java_version := $(shell java -version 2>&1 | head -n 1 | grep ‘[ "]1.5[. "$$]‘)
javac_version := $(shell javac -version 2>&1 | head -n 1 | grep ‘[ "]1.5[. "$$]‘)
两行改成:
java_version := $(shell java -version 2>&1 | head -n 1 | grep ‘[ "]1.6[. "$$]‘)
javac_version := $(shell javac -version 2>&1 | head -n 1 | grep ‘[ "]1.6[. "$$]‘)
即可。
推荐使用第一种解决方法。

5. 安装其他必备组件

在终端上,使用下面的命令安装:(前面的1、2、3步骤都可以省略啦)

sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev

因为JDK1.5在前面已经单独安装过了,因此此处apt-get install命令行中没有加入sun-java5-jdk。

6. 下载Android 源代码

6.1 安装repo脚本

首先安装repo。在当前用户:~目 录下新建一个bin目录。在终端中执行:

cd ~

mkdir bin

然后,向PATH中添加bin路 径:

export PATH=$PATH:~/bin

然后执行下面两行指令,下载repo脚本并修改可执行属性:

curl https://android.git.kernel.org/repo >~/bin/repo

chmod a+x ~/bin/repo

6.2 初始化repo

首先建立一个目录用来存放Android源代码:

mkdir mydroid

cd mydroid

然后用最新的列表执行初始化。这里偶下载android 2.2.1(froyo),因此加了参数 –b froyo:(android 2.2.2(froyo)源码下载:2G多
repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo )
(下载2.1_r2源码

repo init -u git://android.git.kernel.org/platform/manifest.git –b android-2.1_r2

下载全部源码:repo init -u git://android.git.kernel.org/platform/manifest.git)

(下载2.0源码:
repo init -u git://android.git.kernel.org/platform/manifest.git –b eclair )
(上面下载2.0时有个莫名其妙的问题:
ynb@ynb-pc:~/bin$ repo init -u git://android.git.kernel.org/platform/manifest.git –b eclair
Usage: repo init -u url [options]
出现上面问题,删除mydroid目录:rmdir mydroid ; mkdir mydroid2.0 ; cd mydroid2.0;
再:repo init -u git://android.git.kernel.org/platform/manifest.git -b eclair 就可以了)
(如果能通过浏览器浏览到android源码的主页,但运行repo init或repo sync的时候,却没法下载源码,形如:
只需要把git开头的地址改为http即可:
[1]
repo init -u http://android.git.kernel.org/platform/manifest.git -b froyo
[2]修改manifest.git里的地址,也是把git://改为http://
vim .repo/manifest.git
如:
<?xml version=”1.0″ encoding=”UTF-8″?>
<manifest>
<remotename=”korg”
fetch=”http://android.git.kernel.org/”
review=”review.source.android.com” />
<default revision=”froyo”
remote=”korg” /> )

这中间会问到你的名字和Email。如果你打算上传代码,Email须是一个Google账户。

repo初始化成功后会看到类似于下面的提 示:

repo initialized in /home/(当前用户名)/mydroid

最后执行$repo sync开始同步代码。过程比较漫长,下载速度取决于你的网速(偶的3-4小时左右),中间有可能遇到断线,重新执行repo sync即可断点续传。

7. 编译Android源代码

7.1 编译生成镜像

$ cd ~/directory
$ source build/envsetup.sh
$ lunch # select 1- generic-eng when the menu popup
$ make -j4 # 4 means the number of concurrent jobs the build can do. This is to speed up the building process

首次编译非常耗时,取决于机器配置,大约需要2-3小时。有可能会出现:“Permission denied (权限拒绝的提示)” 请命令赋予权限:$cd 无权限文件的当前目录 回车; $sudo chmod -R +rwx * 回车; 完成后镜像生成在/root/mydroid/out/target/product/generic下:android源码编译后得到system.img,ramdisk.img,userdata.img映像文件。其中, ramdisk.img是emulator的文件系统,system.img包括了主要的包、库等文件,userdata.img包括了一些用户数据,emulator加载这3个映像文件后,会把 system和 userdata分别加载到 ramdisk文件系统中的system和 userdata目录下。

7.2 编译、配置Android SDK

$sudo make sdk

生成对应于该版本源代码的sdk,此过程用的时间偶的是10多分钟。

$sudo make PRODUCT-sdk-sdk

生成对应于该版本源代码的用于生产环境的sdk,此过程用的时间偶的是1个多小时。

自己编译的SDK位置是:~/mydroid/out/host/linux-x86/sdk/android-sdk_eng.root_linux-x86

8. 在模拟器中运行编译的镜像

打开终端,执行android脚本:

$android

出现下图所示窗口:

选择左边第一项Virtual Devices,然后在右边选择New,新建一个AVD。

Name:AVD的名称,随便取,但只能包含字母和数字以及点、下划线和连字符, 这里取名test。

Traget:目标SDK版本,这里选自己编译的2.1-r1版Android SDK。

SD Card:SD卡。暂且不填,待需要时再设置。

Skin:皮肤(模拟器屏幕分辨率)。

Hardware:使用默认即可

然后点Create AVD,就创建好了一个AVD。点击Start即 可启动模拟器,其运行的是自己编译的镜像。

若以后要再次启动此AVD,请在终端中运行:

emulator –avd test 或 者emulator @test

转自:http://zouyuefu.wordpress.com/2011/04/01/ubuntu-10-04%E7%8E%AF%E5%A2%83%E4%B8%8B%E8%BD%BD%E7%BC%96%E8%AF%91android-2-2-1-%EF%BC%88froyo%EF%BC%89-%E6%BA%90%E4%BB%A3%E7%A0%81-22%EF%BC%BB%E8%BD%AC%EF%BC%BD/

更多相关文章

  1. Android SDK各版本源码
  2. Android Universal Image Loader 源码分析
  3. android 录像/打开video文件
  4. (原)Eclipse的java中文件读写
  5. 【30篇突击 android】源码统计二
  6. Android File文件操作
  7. Android Button Maker(在线生成android shape xml文件的工具),真方
  8. 20个Android游戏源码,…

随机推荐

  1. Android(安卓)显示系统 --- Surface Flin
  2. Android中文API —— VideoView
  3. 下半年我想做的事
  4. Android(安卓)Studio导入Android平台源码
  5. android异步的几种方式
  6. android 编译模块
  7. android 扫描SD卡与系统文件
  8. [整理]android中几种常见的尺寸
  9. Android(安卓)MD5加密算法
  10. Android第三十一期 - 市面上所有引导页的