ubuntu 環(huán)境下載 android 代碼 1.Git 和 Repo 的安裝 首先確保在當(dāng)前用戶的主目錄下創(chuàng)建一個(gè) /bin 目錄(如果沒有的話),然后把它 (~/bin) 加到 PATH 環(huán)境變量中。 a@ubuntu:~$ vim .bashrc 添加: export PATH=$PATH:~/bin a@ubuntu:~$ source .bashrc a@ubuntu:~$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/a/bin a@ubuntu:~$ sudo apt-get install git-core a@ubuntu:~$ sudo apt-get install curl 這兩條命令會(huì)從互聯(lián)網(wǎng)的軟件倉庫中安裝 git-core 和 curl 。 其中 curl 是一個(gè)利用 URL 語法在命令行方式下工作的文件傳輸工具,它支持很多協(xié)議,包括 FTP 、 FTPS 、 HTTP 、 HTTPS 、 TELENT 等,我們需要安裝它從網(wǎng)絡(luò)上獲取 Repo 腳本文件。 對(duì)于android4.4可獲?。?br> @ubuntu:~$ curl http://storage./git-repo-downloads/repo > ~/bin/repo
這句命令會(huì)下載 repo 腳本文件到當(dāng)前主目錄的 bin 目錄下,并保存在文件 repo 中。 最后我們需要給 repo 文件可執(zhí)行權(quán)限 a@ubuntu:~$ sudo chmod a+x /home/a/bin/repo 接下來我們就可以利用 repo 腳本和 Git 、 curl 軟件獲取 Android 的源代碼了。 但許多情況下,可能你根本無法下載,下面列舉了一些問題現(xiàn)象和解決的辦法:
上面命令查看自己的ubuntu的版本號(hào):12.04 1、先是系統(tǒng)查看是32位的還是64位 [html] view plaincopy
2、安裝jdk1.6 方案一,可能會(huì)出現(xiàn)錯(cuò)誤 Installing the JDKThe Sun JDK is no longer in Ubuntu's main package repository. In order to download it, you need to add the appropriate repository and indicate to the system which JDK should be used. Java 6: for Gingerbread and newer
上面可能出現(xiàn)如下錯(cuò)誤; [html] view plaincopy
方案二 建議采用下面這個(gè)方法,我12.04的ubuntu版本,64位的用官方網(wǎng)站用的第一種方法沒有成功 [html] view plaincopy
Installing required packages (Ubuntu 12.04)Building on Ubuntu 12.04 is currently only experimentally supported and is notguaranteed to work on branches other than master.
3、安裝git [html] view plaincopy
這條命令會(huì)從互聯(lián)網(wǎng)的軟件倉庫中安裝 git-core 和 curl 4、 Installing Repo
其中 [html] view plaincopy
下面為兩種解決辦法,任何一種都可以 一、 [html] view plaincopy
二、 [html] view plaincopy
[html] view plaincopy
<span class='pln' style='color:#000000;'>chmod a</span><span class='pun' style='color:#66660;'>+</span><span class='pln' style='color:#000000;'>x </span><span class='pun' style='color:#66660;'>~</span><span class='str' style='color:#0880;'>/bin/</span><span class='pln' style='color:#000000;'>repo</span> 5、 [html] view plaincopy
遇到如下問題: [html] view plaincopy
或者: [html] view plaincopy
解決方法,官網(wǎng)說明,和網(wǎng)上統(tǒng)一口徑,如下: [html] view plaincopy
如果遇到下面問題 [html] view plaincopy
解決 [html] view plaincopy
或者:注意沒有/a哦 [html] view plaincopy
接著搞: [html] view plaincopy
好吧,接下來最后一步了 [html] view plaincopy
網(wǎng)上有朋友建議,寫個(gè)腳本如下: [html] view plaincopy
其中還遇到如下問題,經(jīng)常提示如下信息,網(wǎng)上有朋友建議: [html] view plaincopy
此外,還需下載編譯庫等工具,可用下面命令: sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev build-essential zip curl python valgrind wx-common 這里部分工具是專用于AMD64 位環(huán)境的有時(shí)Java5 可能無法下載,可有以下嘗試解決此問題:
第一種嘗試:下載java 1.5 的安裝bin 包手動(dòng)安裝,最終失敗, 具體過程如下: download java5: https:///24508358/sun-java5_1.5.0-18.orig.tar.gz tar, chmod a+x, ./xxxx.bin mkdir /usr/lib/jvm cp jdk-5.0u18-dlj-linux-i586.bin to /usr/lib/jvm run jdk-5.0u18-dlj-linux-i586.bin to install java into /usr/lib/jvm/jdk1.5.0_18 add below lines in /etc/enviroment: JAVA_HOME=/usr/lib/jvm/jdk1.5.0_18 JRE_HOME=/usr/lib/jvm/jdk1.5.0_18/jre CLASSPATH=.:/usr/lib/jvm/jdk1.5.0_18/lib:/usr/lib/jvm/jdk1.5.0_18/jre/lib $ java -version Error occurred during initialization of VM java/lang/NoClassDefFoundError: java/lang/Object
第二種嘗試:非常簡單,但是有效: 修改source ,將9.10 的源改成9.04 的源。源在/etc/apt/source.list : deb http://mirror./ubuntu/ jaunty main restricted universe multiverse deb http://mirror./ubuntu/ jaunty-security main restricted universe multiverse deb http://mirror./ubuntu/ jaunty-updates main restricted universe multiverse deb http://mirror./ubuntu/ jaunty-proposed main restricted universe multiverse deb http://mirror./ubuntu/ jaunty-backports main restricted universe multiverse deb-src http://mirror./ubuntu/ jaunty main restricted universe multiverse deb-src http://mirror./ubuntu/ jaunty-security main restricted universe multiverse deb-src http://mirror./ubuntu/ jaunty-updates main restricted universe multiverse deb-src http://mirror./ubuntu/ jaunty-proposed main restricted universe multiverse deb-src http://mirror./ubuntu/ jaunty-backports main restricted universe multiverse 運(yùn)行:sudo apt-get update 之后,用sudo apt-get install sun-java5-jdk 即可像以往一樣安裝java 1.5 或按以下源添加JDK: 1.5的: 執(zhí)行sudo gedit /etc/apt/sources.list, 添加以下內(nèi)容,將10.04的源改成9.04的源。 deb http://cn.archive./ubuntu/ jaunty multiverse deb http://cn.archive./ubuntu/ jaunty-updates multiverse 然后sudo apt-get update 再用sudo apt-get install sun-java5-jdk 安裝后的基本設(shè)置: sudo update-alternatives --config java sudo update-java-alternatives -s java-1.5.0-sun
1.6的: sudo add-apt-repository 'deb http://archive./ lucid partner'
安裝后的基本設(shè)置: sudo update-alternatives --config java sudo update-java-alternatives -s java-1.5.0-sun 這時(shí)候再用java -version 就能看到j(luò)ava 1.5 已經(jīng)正常工作了最后不要忘記把源換回9.10的
2 、初始化版本庫 如果是想把 Android 當(dāng)前主線上最新版本的所有的 sourcecode 拿下來,我們需要 repo 的幫助。 先建立一個(gè)目錄,比如 ~/myandroid ,進(jìn)去以后用 repo init 命令即可。 repo init -u git://android.git.kernel.org/platform/manifest.git 對(duì)于android4,可使用下面命令: repo init -u https://android./platform/manifest -b android-4.0.1_r1 repo sync 這個(gè)過程會(huì)持續(xù)很長的時(shí)間,具體要多少時(shí)間就取決于網(wǎng)絡(luò)條件了 最后會(huì)看到 repo initialized in /myandroid 這樣的提示,就說明本地的版本庫已經(jīng)初始化完畢,并且包含了當(dāng)前最新的 sourcecode 。 如果想拿某個(gè) branch 而不是主線上的代碼,我們需要用 -b 參數(shù)制定 branch 名字,比如: repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake 另一種情況是,我們只需要某一個(gè) project 的代碼,比如 kernel/common ,就不需要 repo 了,直接用 Git 即可。 git clone git://android.git.kernel.org/kernel/common.git 這也需要不少的時(shí)間,因?yàn)樗鼤?huì)把整個(gè) Linux Kernel 的代碼復(fù)制下來。 如果需要某個(gè) branch 的代碼,用 git checkout 即可。比如我們剛剛拿了 kernel/common.get 的代碼,那就先進(jìn)入到 common 目錄,然后用下面的命令: git checkout origin/android-goldfish-2.6.27 -b goldfish 這樣我們就在本地建立了一個(gè)名為 goldfish 的 android-goldfish-2.6.27 分支,代碼則已經(jīng)與 android-goldgish-2.6.27 同步。 我們可以通過 git branch 來列出本地的所有分支。 這里我們以 android-2.1_r1 這個(gè)分支為例: a@ubuntu:~$ mkdir myandroid a@ubuntu:~$ cd myandroid a@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 命令,我們把整個(gè) Android 代碼樹做同步到本地,同樣,我們可以用類似 repo sync project1 project2 … 這樣的命令來同步某幾個(gè)項(xiàng)目 如果是同步 Android 中的單個(gè)項(xiàng)目,只要在項(xiàng)目目錄下執(zhí)行簡單的 git pull 即可。 a@ubuntu:~/myandroid$ repo sync 下載 android-sdk-2.1_r1 版本 a@ubuntu:~$ # mkdir android-sdk-2.1_r1 a@ubuntu:~$ # cd android-sdk-2.1_r1/ a@ubuntu:~ android-sdk-2.1_r1 # repo init -u git://android.git.kernel.org/platform/manifest.git -b android-sdk-2.1_r1 a@ubuntu:~$ android-sdk-2.1_r1 # repo sync
Gentoo 環(huán)境下載 Android 代碼 同 ubuntu 類似,先下載 repo 和 git: emerge net-misc/curl emerge dev-util/git 編輯~/.bashrc 文件,把~/bin 目錄加到PATH 后續(xù)操作與 ubuntu 相同
5 、通過 GitWeb 下載代碼 另外,如果只是需要主線上某個(gè)項(xiàng)目的代碼,也可以通過GitWeb 下載,在shortlog 利用關(guān)鍵字來搜索特定的版本,或者找?guī)讉€(gè)比較新的tag 來下載還是很容易的。 Git 最初是為Linux 內(nèi)核開發(fā)而設(shè)計(jì),所以對(duì)其他平臺(tái)的支持并不好,尤其是Windows 平臺(tái),必須要有Cygwin 才可以。現(xiàn)在,得益于msysgit 項(xiàng)目,我們已經(jīng)可以不需要Cygwin 而使用Git 了。另外,Git Extensions 是一個(gè)非常好用的Windows Shell 擴(kuò)展,它能與資源管理器緊密集成,甚至提供了Visual Studio 插件。它的官方網(wǎng)站上有一分不錯(cuò)的說明文檔 ,感興趣的朋友可以看一看。至于Git 的參考文檔,我推薦Git Magic ,這里還有一個(gè)Git Magic 的中文版 。
source 命令的使用 source 命令: source 命令也稱為“點(diǎn)命令”,也就是一個(gè)點(diǎn)符號(hào)(. )。 source 命令通常用于重新執(zhí)行剛修改的初始化文件,使之立即生效,而不必注銷并重新登錄。 用法: #vim ~/.bashrc #source ~/.bashrc Android 中 mm build 的方法也是一樣 #source ./build/envsetup.sh #cd android sub dir #mm source 命令用法: source FileName 作用: 在當(dāng)前bash 環(huán)境下讀取并執(zhí)行FileName 中的命令。 注:該命令通常用命令“ .” 來替代 。 如:source .bash_rc 與 . .bash_rc 是等效的。 source 命令( 從 C Shell 而來) 是bash shell 的內(nèi)置命令。點(diǎn)命令,就是個(gè)點(diǎn)符號(hào),( 從Bourne Shell 而來) 是source 的另一名稱。同樣的,當(dāng)前腳本中配置的變量也將作為腳本的環(huán)境,source( 或點(diǎn)) 命令通常用于重新執(zhí)行剛修改的初始化文檔,如.bash_profile 和 .profile 等等。 例如,假如在登錄后對(duì) .bash_profile 中的 EDITER 和 TERM 變量做了修改,則能夠用source 命令重新執(zhí)行 .bash_profile 中的命令而不用注銷并重新登錄。比如您在一個(gè)腳本里export $KKK=111 , 假如您用./a.sh 執(zhí)行該腳本,執(zhí)行完畢后,您運(yùn)行 echo $KKK , 發(fā)現(xiàn)沒有值,假如您用source 來執(zhí)行 ,然后再echo , 就會(huì)發(fā)現(xiàn)KKK=111 。因?yàn)檎{(diào)用./a.sh 來執(zhí)行shell 是在一個(gè)子shell 里運(yùn)行的,所以執(zhí)行后,結(jié)構(gòu)并沒有反應(yīng)到父shell 里,但是 source 不同他就是在本shell 中執(zhí)行的,所以能夠看到結(jié)果 source 命令的一個(gè)妙用在編譯核心時(shí),常常要反復(fù)輸入一長串命令,如 make mrproper make menuconfig make dep make clean make bzImage ....... 這些命令既長,又繁瑣。而且有時(shí)候容易輸錯(cuò),浪費(fèi)你的時(shí)間和精力。如果把這些命令做成一個(gè)文件,讓它自動(dòng)按順序執(zhí)行,對(duì)于需要多次反復(fù)編譯核心的用戶來說,會(huì)很方便。用source 命令可以辦到這一點(diǎn)。它的作用就是把一個(gè)文件的內(nèi)容當(dāng)成是shell 來執(zhí)行。先在/usr/src/linux- 2.4.20 目錄下建立一個(gè)文件,取名為make_command :在其中輸入如下內(nèi)容: 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 就行了。這個(gè)文件也完全可以做成腳本,只需稍加改動(dòng)即可。 這里主要是讓大家理解source 的用法。如果你用的不是lilo 來引導(dǎo)系統(tǒng),可以把最后兩句話去掉。配置你自己的引導(dǎo)程序來引導(dǎo)新內(nèi)核。 shell 編程中的命令有時(shí)和C 語言是一樣的。&& 表示與,|| 表示或。把兩個(gè)命令用&& 聯(lián)接起來,如 make mrproper && make menuconfig ,表示要第一個(gè)命令執(zhí)行成功才能執(zhí)行第二個(gè)命令。對(duì)執(zhí)行順序有要求的命令能保證一旦有錯(cuò)誤發(fā)生,下面的命令不會(huì)盲目地繼續(xù)執(zhí)行。
Ubuntu 下AMD64CPU 編譯 Android 心得 sudo update-alternatives --config java sudo update-alternatives --config javac sudo update-alternatives --config javadoc 切換到對(duì)應(yīng)JAVA 編譯環(huán)境 AMD64環(huán)境下 build android可能會(huì)遇到的問題:
1、 sudo apt-get install g++-4.2-multilib 或執(zhí)行: sudo apt-get install g++-multilib 解決ld lstd++ 問題,編譯adb時(shí)候出現(xiàn) 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. 內(nèi)存要多于1G。不然會(huì)在target dex的時(shí)候掛住。
Ubuntu環(huán)境下采用sudo apt-get安裝eclipse后,install Android Gingerbread(2.3)的ADT: Eclipse / Help / Install New Software / Add Location輸入 這是ADT的安裝網(wǎng)址,若出現(xiàn)安裝問題,可能有以下原因:
1、通過Eclipse的Help->install new software,安裝http://dl.google.com/eclipse/plugin/3.5目錄下的插件,解決wst.sse.core插件找不到的Bug
2、在Eclipse下通過Help->install new software安裝http://download./tools/gef/updates/releases/,解決Eclipse插件GEF(Graphical Editing Framework)安裝問題。 3、此時(shí)再安裝ADT包不會(huì)存在插件找不到的提示,安裝完后再通過ADT安裝Android SDK即可。 |
|