Android源代码下载及编译开发(3)

安装后的基本设置:

sudo update-alternatives --config java

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

1.6的:

sudo add-apt-repository "deb lucid partner"
sudo apt-get update
sudo apt-get install sun-java6-jdk

安装后的基本设置:

sudo update-alternatives --config java

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

这时候再用java -version 就能看到java 1.5 已经正常工作了最后不要忘记把源换回9.10的

2 、初始化版本库 如果是想把 Android 当前主线上最新版本的所有的 sourcecode 拿下来,我们需要 repo 的帮助。

先建立一个目录,比如 ~/myandroid ,进去以后用 repo init 命令即可。

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


对于android4,可使用下面命令:

repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1

repo sync


这个过程会持续很长的时间,具体要多少时间就取决于网络条件了 最后会看到

repo initialized in /myandroid 这样的提示,就说明本地的版本库已经初始化完毕,并且包含了当前最新的 sourcecode 。

如果想拿某个 branch 而不是主线上的代码,我们需要用 -b 参数制定 branch 名字,比如:

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

另一种情况是,我们只需要某一个 project 的代码,比如 kernel/common ,就不需要 repo 了,直接用 Git 即可。

git clone git://android.git.kernel.org/kernel/common.git

这也需要不少的时间,因为它会把整个 Linux Kernel 的代码复制下来。

如果需要某个 branch 的代码,用 git checkout 即可。比如我们刚刚拿了 kernel/common.get 的代码,那就先进入到 common 目录,然后用下面的命令:

git checkout origin/android-goldfish-2.6.27 -b goldfish

这样我们就在本地建立了一个名为 goldfish 的 android-goldfish-2.6.27 分支,代码则已经与 android-goldgish-2.6.27 同步。

我们可以通过 git branch 来列出本地的所有分支。 这里我们以 android-2.1_r1 这个分支为例:

@Ubuntu:~$ mkdir myandroid @ubuntu:~$ cd myandroid @ubuntu:~/myandroid$ repo init -u git://android.git.kernel.org/platform/manifest.git -b android-2.1_r1

repo initialized in /home/a/myandroid

3 、同步版本库 使用 repo sync 命令,我们把整个 Android 代码树做同步到本地,同样,我们可以用类似 repo sync project1 project2 … 这样的命令来同步某几个项目 如果是同步 Android 中的单个项目,只要在项目目录下执行简单的 git pull 即可。 @ubuntu:~/myandroid$ repo sync 下载 android-sdk-2.1_r1 版本

@ubuntu:~$ # mkdir android-sdk-2.1_r1

@ubuntu:~$ # cd android-sdk-2.1_r1/

@ubuntu:~ android-sdk-2.1_r1

# repo init -u git://android.git.kernel.org/platform/manifest.git -b android-sdk-2.1_r1

@ubuntu:~$ android-sdk-2.1_r1

# repo sync

Gentoo 环境下载 Android 代码 同 ubuntu 类似,先下载 repo 和 git:

emerge net-misc/curl

emerge dev-util/git

编辑~/.bashrc 文件,把~/bin 目录加到PATH 后续操作与 ubuntu 相同

5 、通过 GitWeb 下载代码 另外,如果只是需要主线上某个项目的代码,也可以通过GitWeb 下载,在shortlog 利用关键字来搜索特定的版本,或者找几个比较新的tag 来下载还是很容易的。 Git 最初是为Linux 内核开发而设计,所以对其他平台的支持并不好,尤其是Windows 平台,必须要有Cygwin 才可以。现在,得益于msysgit 项目,我们已经可以不需要Cygwin 而使用Git 了。另外,Git Extensions 是一个非常好用的Windows Shell 扩展,它能与资源管理器紧密集成,甚至提供了Visual Studio 插件。它的官方网站上有一分不错的说明文档 ,感兴趣的朋友可以看一看。至于Git 的参考文档,我推荐Git Magic ,这里还有一个Git Magic 的中文版 。

source 命令的使用

source 命令: source 命令也称为“点命令”,也就是一个点符号(. )。

source 命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。

用法:

#vim ~/.bashrc #source ~/.bashrc

Android 中 mm build 的方法也是一样

#source ./build/envsetup.sh

#cd android sub dir

#mm source

命令用法:

source FileName

作用: 在当前bash 环境下读取并执行FileName 中的命令。

注:该命令通常用命令“ .” 来替代 。

如:source .bash_rc 与 . .bash_rc 是等效的。

source 命令( 从 C Shell 而来) 是bash shell 的内置命令。点命令,就是个点符号,( 从Bourne Shell 而来) 是source 的另一名称。同样的,当前脚本中配置的变量也将作为脚本的环境,source( 或点) 命令通常用于重新执行刚修改的初始化文档,如.bash_profile 和 .profile 等等。

例如,假如在登录后对 .bash_profile 中的 EDITER 和 TERM 变量做了修改,则能够用source 命令重新执行 .bash_profile 中的命令而不用注销并重新登录。比如您在一个脚本里export $KKK=111 , 假如您用./a.sh 执行该脚本,执行完毕后,您运行 echo $KKK , 发现没有值,假如您用source 来执行 ,然后再echo , 就会发现KKK=111 。因为调用./a.sh 来执行shell 是在一个子shell 里运行的,所以执行后,结构并没有反应到父shell 里,但是 source 不同他就是在本shell 中执行的,所以能够看到结果 source 命令的一个妙用在编译核心时,常常要反复输入一长串命令,如 make mrproper make menuconfig make dep make clean make bzImage ....... 这些命令既长,又繁琐。而且有时候容易输错,浪费你的时间和精力。如果把这些命令做成一个文件,让它自动按顺序执行,对于需要多次反复编译核心的用户来说,会很方便。用source 命令可以办到这一点。它的作用就是把一个文件的内容当成是shell 来执行。先在/usr/src/linux- 2.4.20 目录下建立一个文件,取名为make_command :在其中输入如下内容:

make mrproper && make menuconfig && make dep && make clean && make bzImage && make modules && make modules_install && cp arch/i386/boot/bzImge /boot/vmlinuz_new && cp System.map /boot && vi /etc/lilo.conf && lilo -v 文件建立好之后,以后每次编译核心,只需要在/usr/src/linux-2.4.20 下输入 source make_command 就行了。这个文件也完全可以做成脚本,只需稍加改动即可。

这里主要是让大家理解source 的用法。如果你用的不是lilo 来引导系统,可以把最后两句话去掉。配置你自己的引导程序来引导新内核。 shell 编程中的命令有时和C 语言是一样的。&& 表示与,|| 表示或。把两个命令用&& 联接起来,如 make mrproper && make menuconfig ,表示要第一个命令执行成功才能执行第二个命令。对执行顺序有要求的命令能保证一旦有错误发生,下面的命令不会盲目地继续执行。

Ubuntu 下AMD64CPU 编译

Android 心得

sudo update-alternatives --config java

sudo update-alternatives --config javac

sudo update-alternatives --config javadoc

切换到对应JAVA 编译环境 AMD64环境下 build android可能会遇到的问题:

1、 sudo apt-get install g++-4.2-multilib 或执行: sudo apt-get install g++-multilib 解决ld lstd++ 问题,编译adb时候出现 2、 sudo apt-get install zlib1g-dev

3、 sudo apt-get install lib32z1-dev lib32ncurses5-dev 解决ld -lz -lncurses 问题

4. cd /usr/lib32 sudo ln -s libX11.so.6 libX11.so 解决 libX11问题

5. g++和gcc 用4.3的版本,若不是4.3,用ln改一下: sudo ln -snf gcc-4.3 gcc sudo ln -snf g++-4.3 g++ sudo ln -snf cpp-4.3 cpp 6. 内存要多于1G。不然会在target dex的时候挂住。

Ubuntu环境下采用sudo apt-get安装eclipse后,install Android Gingerbread(2.3)的ADT:

Eclipse / Help / Install New Software / Add Location输入
https://dl-ssl.google.com/android/eclipse/

这是ADT的安装网址,若出现安装问题,可能有以下原因:

1、通过Eclipse的Help->install new software,安装目录下的插件,解决wst.sse.core插件找不到的Bug

2、在Eclipse下通过Help->install new software安装,解决Eclipse插件GEF(Graphical Editing Framework)安装问题。

3、此时再安装ADT包不会存在插件找不到的提示,安装完后再通过ADT安装Android SDK即可。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/18539.html