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开源新闻小程序、3D翻转公告效果、小说检索、Kotlin开发T
  2. Android安装以及Eclipse插件(Google Android) ,在Android(安卓)
  3. Android电话拨打流程源码分析
  4. Android电话拨打流程源码分析
  5. 在Android核的java核心库libcore中打印log,和单独编译
  6. Android(安卓)Makefile分析
  7. Android智能推荐、MVP架构电商应用、markdown编辑器、多种动画效
  8. Linux与Android
  9. Android安装卸载程序具体操作方法解析

随机推荐

  1. MySQL 截取字符串函数的sql语句
  2. mysql主从复制读写分离的配置方法详解
  3. MySQL多实例配置方案
  4. ubuntu 16.04配置MySQL主从同步的配置方
  5. 完美解决mysql in条件语句只读取一条信息
  6. Mysql中通过生日计算年龄的多种方法
  7. Windows server 2008 r2下MySQL5.7.17 wi
  8. Linux下mysql5.6.24(二进制)自动安装脚本
  9. MySQL 8.0的关系数据库新特性详解
  10. MySQL服务器线程数的查看方法详解