小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

android源代碼下載及編譯開發(fā)

 灬木木的花灬 2014-12-13

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


curl http://storage./git-repo-downloads/repo > ~/bin/repocurl http://storage./git-repo-downloads/repo > ~/bin/repocurl 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)象和解決的辦法:

 

  1. jianguoliao@jianguoliao-Lenovo-IdeaPad-Y470:~$ cat /etc/issue  
  2. Ubuntu 12.04.2 LTS \n \l  
  3.   
  4. jianguoliao@jianguoliao-Lenovo-IdeaPad-Y470:~$ sudo lsb_release -a  
  5. [sudo] password for jianguoliao:   
  6. No LSB modules are available.  
  7. Distributor ID: Ubuntu  
  8. Description:    Ubuntu 12.04.2 LTS  
  9. Release:    12.04  
  10. Codename:   precise  
  11. jianguoliao@jianguoliao-Lenovo-IdeaPad-Y470:~$   

上面命令查看自己的ubuntu的版本號(hào):12.04


1、先是系統(tǒng)查看是32位的還是64位

  1. jianguoliao@jianguoliao-Lenovo-IdeaPad-Y470:~$ getconf LONG_BIT  
  2. 32  
  3. jianguoliao@jianguoliao-Lenovo-IdeaPad-Y470:~$ getconf WORD_BIT  
  4. 32  
  5. jianguoliao@jianguoliao-Lenovo-IdeaPad-Y470:~$ file /bin/ls  
  6. /bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xae048fd2a071afcb017d9091f4a78835e27340b2, stripped  
  7. jianguoliao@jianguoliao-Lenovo-IdeaPad-Y470:~$  
  8. jianguoliao@jianguoliao-Lenovo-IdeaPad-Y470:~$  
  9. jianguoliao@jianguoliao-Lenovo-IdeaPad-Y470:~$  
  10. jianguoliao@jianguoliao-Lenovo-IdeaPad-Y470:~$ uname -m  
  11. i686  
  12.   
  13.   
  14. uname -m 如果出現(xiàn)i386 i686 i586則是32位 如果出現(xiàn)amd64 則是64位系統(tǒng)  


2、安裝jdk1.6

方案一,可能會(huì)出現(xiàn)錯(cuò)誤

Installing the JDK


The 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

$ sudo add-apt-repository 'deb http://archive./ lucid partner'$ sudo apt-get update$ sudo apt-get install sun-java6-jdk


上面可能出現(xiàn)如下錯(cuò)誤;

  1. jianguoliao@jianguoliao-Lenovo-IdeaPad-Y470:~$ sudo apt-get install sun-java6-jdk  
  2. 正在讀取軟件包列表... 完成  
  3. 正在分析軟件包的依賴關(guān)系樹         
  4. 正在讀取狀態(tài)信息... 完成         
  5. 現(xiàn)在沒有可用的軟件包 sun-java6-jdk,但是它被其它的軟件包引用了。  
  6. 這可能意味著這個(gè)缺失的軟件包可能已被廢棄,  
  7. 或者只能在其他發(fā)布源中找到  
  8.   
  9. E: 軟件包 sun-java6-jdk 沒有可供安裝的候選者  


方案二  建議采用下面這個(gè)方法,我12.04的ubuntu版本,64位的用官方網(wǎng)站用的第一種方法沒有成功

  1.  sudo gedit /etc/apt/sources.list  
  2. 打開源列表,在最后一行添加  
  3.   
  4. deb http://us.archive./ubuntu/ hardy multiverse   保存退出。  
  5.   
  6. 2、sudo apt-get update  
  7. 3、sudo apt-get install sun-java6-jdk  
  8. 4、jianguoliao@jianguoliao-Lenovo-IdeaPad-Y470:~$ sudo update-alternatives --config java  
  9. There is only one alternative in link group java: /usr/lib/jvm/java-6-sun/jre/bin/java  
  10. Nothing to configure.  
  11. 5、jianguoliao@jianguoliao-Lenovo-IdeaPad-Y470:~$ java -version  
  12. java version '1.6.0_06'  
  13. Java(TM) SE Runtime Environment (build 1.6.0_06-b02)  
  14. Java HotSpot(TM) Server VM (build 10.0-b22, mixed mode)  
  15. jianguoliao@jianguoliao-Lenovo-IdeaPad-Y470:~$   


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.

$ sudo apt-get install git gnupg flex bison gperf build-essential \  zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \  libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \  libgl1-mesa-dev g++-multilib mingw32 tofrodos \  python-markdown libxml2-utils xsltproc zlib1g-dev:i386$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

3、安裝git

  1. sudo apt-get install git-core curl  


 這條命令會(huì)從互聯(lián)網(wǎng)的軟件倉庫中安裝 git-core 和 curl


4、

Installing Repo


  1. Make sure you have a bin/ directory in your home directory and that it is included in your path:

    <code><span class='pln'>$ mkdir </span><span class='pun'>~</span><span class='str'>/bin$ PATH=~/</span><span class='pln'>bin</span><span class='pun'>:</span><span class='pln'>$PATH</span></code>
  2. Download the Repo tool and ensure that it is executable:

    <span class='pln'>$ curl https</span><span class='pun'>:</span><span class='com'>//dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo</span><span class='pln'>$ chmod a</span><span class='pun'>+</span><span class='pln'>x </span><span class='pun'>~</span><span class='str'>/bin/</span><span class='pln'>repo</span>

其中


  1. jianguoliao@jianguoliao-Lenovo-IdeaPad-Y470:~$  curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo  
  2.   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current  
  3.                                  Dload  Upload   Total   Spent    Left  Speed  
  4.   0     0    0     0    0     0      0      0 --:--:--  0:04:00 --:--:--     0curl: (7) Failed to connect to 2404:6800:4005:c00::88: Network is unreachable  

下面為兩種解決辦法,任何一種都可以

一、

  1. curl 'http://php./en/wp-content/uploads/2011/09/repo' >~/bin/repo  

二、
  1. 打開 gedit /etc/hosts  
  2. 添加如下內(nèi)容:  
  3. 74.125.237.1   dl-ssl.google.com  

  1. jianguoliao@jianguoliao-Lenovo-IdeaPad-Y470:~$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo  
  2.   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current  
  3.                                  Dload  Upload   Total   Spent    Left  Speed  
  4. 100 22889  100 22889    0     0  20152      0  0:00:01  0:00:01 --:--:-- 24221  
  5. jianguoliao@jianguoliao-Lenovo-IdeaPad-Y470:~$   


<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、
  1. Initializing a Repo client  
  2.   
  3. $ mkdir WORKING_DIRECTORY  
  4. $ cd WORKING_DIRECTORY  
  5.   
  6. $ repo init -u https://android./platform/manifest  

遇到如下問題:

  1. jianguoliao@jianguoliao-Lenovo-IdeaPad-Y470:~/WORKING_DIRECTORY$ repo init -u https://android./platform/manifest  
  2. gpg: key 920F5C65: 'Repo Maintainer <repo@android.kernel.org>' not changed  
  3. gpg: key 338871A4: public key 'Conley Owens <cco3@android.com>' imported  
  4. gpg: Total number processed: 2  
  5. gpg:               imported: 1  (RSA: 1)  
  6. gpg:              unchanged: 1  
  7.   
  8.   
  9. fatal: Cannot get https://gerrit./git-repo/clone.bundle  
  10. fatal: error [Errno 101] Network is unreachable  

或者:
  1.  * [new tag]         v1.9.5     -> v1.9.5  
  2.  * [new tag]         v1.9.6     -> v1.9.6  
  3. Get https://android./platform/manifest  
  4.   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current  
  5.                                  Dload  Upload   Total   Spent    Left  Speed  
  6.   0     0    0     0    0     0      0      0 --:--:--  0:00:06 --:--:--     0  
  7. curl: (22) The requested URL returned error: 404  
  8. Server does not provide clone.bundle; ignoring.  
  9. remote: Counting objects: 92, done  
  10. remote: Finding sources: 100% (92/92)  
  11. remote: Total 816 (delta 96), reused 816 (delta 96)  
  12. Receiving objects: 100% (816/816), 708.29 KiB | 247 KiB/s, done.  
  13. Resolving deltas: 100% (96/96), done.  
  14. From https://android./platform/manifest  
  15.  * [new branch]      android-1.6_r1 -> origin/android-1.6_r1  


解決方法,官網(wǎng)說明,和網(wǎng)上統(tǒng)一口徑,如下:

  1. 1,  先按官網(wǎng)的步驟一步步執(zhí)行  
  2. 2,當(dāng)遇到上述問題后,用瀏覽器登錄https://android./new-password,并用gmail賬號(hào)登錄;  
  3. 3, 點(diǎn)擊網(wǎng)頁上的“允許訪問”,得到類似的結(jié)果:  
  4.    
  5. machine android. login git-<userName>.gmail.com password <password>  
  6. machine android-review. login git-<userName>.gmail.com password <password>  
  7.  將上邊的兩行追加到~/.netrc文件結(jié)尾。(如果你的linux系統(tǒng)中從來沒有建立過此文件,就在home目錄下建立.netrc文件,將上面的信息加到新建的文件中去),  
  8. 4,下載地址的URI更改為https://android./a/platform/manifest(中間加上了“/a”)。  
  9.    
  10. 因?yàn)樵L問基本是匿名的,為了防止連接過多,對(duì)同一IP地址的連接數(shù)做了一定的限制。用gmail賬號(hào)進(jìn)行認(rèn)證。  
  11. 在公司網(wǎng)絡(luò)內(nèi)或者用虛擬機(jī)下載的話,會(huì)經(jīng)常遇到這問題。  


如果遇到下面問題

  1. jianguoliao@jianguoliao-Lenovo-IdeaPad-Y470:~/WORKING_DIRECTORY$   
  2. jianguoliao@jianguoliao-Lenovo-IdeaPad-Y470:~/WORKING_DIRECTORY$ repo init -u https://android./a/platform/manifest --config  
  3.   
  4. Your Name  [jianguo liao]: jianguo liao  
  5. Your Email [liaojianguo19840726@gmail.com]: liaojianguo19840726@gmail.com  
  6.   
  7. Your identity is: jianguo liao <liaojianguo19840726@gmail.com>  
  8. is this correct [y/N]? y  
  9.   
  10. repo has been initialized in /home/jianguoliao/WORKING_DIRECTORY  

解決
  1. jianguoliao@jianguoliao-Lenovo-IdeaPad-Y470:~/WORKING_DIRECTORY$ repo init -u https://android./platform/manifest  
  2.   
  3. Your identity is: jianguo liao <liaojianguo19840726@gmail.com>  
  4. If you want to change this, please re-run 'repo init' with --config-name  

或者:注意沒有/a哦
  1. jianguoliao@jianguoliao-Lenovo-IdeaPad-Y470:~/WORKING_DIRECTORY$ repo init -u https://android./platform/manifest --config  
  2.   
  3. Your Name  [jianguo liao]: jianguo liao  
  4. Your Email [liaojianguo19840726@gmail.com]: liaojianguo19840726@gmail.com  
  5.   
  6. Your identity is: jianguo liao <liaojianguo19840726@gmail.com>  
  7. is this correct [y/N]? y  
  8.   
  9. repo has been initialized in /home/jianguoliao/WORKING_DIRECTORY  
  10. jianguoliao@jianguoliao-Lenovo-IdeaPad-Y470:~/WORKING_DIRECTORY$   


接著搞:

  1. jianguoliao@jianguoliao-Lenovo-IdeaPad-Y470:~/WORKING_DIRECTORY$ repo init -u https://android./platform/manifest -b android-4.0.1_r1  
  2. .repo/manifests/: discarding 88 commits  
  3.   
  4. Your identity is: jianguo liao <liaojianguo19840726@gmail.com>  
  5. If you want to change this, please re-run 'repo init' with --config-name  
  6.   
  7. repo has been initialized in /home/jianguoliao/WORKING_DIRECTORY  
  8. jianguoliao@jianguoliao-Lenovo-IdeaPad-Y470:~/WORKING_DIRECTORY$   


好吧,接下來最后一步了

  1. $ repo sync  

網(wǎng)上有朋友建議,寫個(gè)腳本如下:
  1. #!/bin/bash    
  2. echo '======start repo sync======'    
  3. repo sync    
  4. while [ $? = 1 ]; do    
  5. echo '======sync failed, re-sync again======'    
  6. sleep 3    
  7. repo sync    
  8. done  

其中還遇到如下問題,經(jīng)常提示如下信息,網(wǎng)上有朋友建議:

  1. error: Failed connect to android.:443;Connection refused while accessinghttps://android./a/platform/frameworks/base/info/refs  
  2.   
  3. fatal: HTTP request failed  
  4.   
  5. error: Cannot fetch platform/tools/motodev  
  6.   
  7. error: Cannot fetch platform/frameworks/base  
  8.   
  9. error: Cannot fetch platform/prebuilts/sdk   
  10.   
  11. error: Exited sync due to fetch errors  
  12.   
  13. 等錯(cuò)誤信息。  
  14.   
  15. 解決方法:編輯/etc/hosts文件  
  16.   
  17.  $ sudo gedit /etc/hosts  
  18.   
  19. 增加下面內(nèi)容,保存  
  20.   
  21. 74.125.31.82 www.  
  22.   
  23. 74.125.31.82 android.  
  24.   
  25. 203.208.46.172 cache.pack.google.com  
  26.   
  27. 59.24.3.173 cache.pack.google.com 

此外,還需下載編譯庫等工具,可用下面命令:

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'
 sudo apt-get update
 sudo apt-get install sun-java6-jdk

 

安裝后的基本設(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輸入
https://dl-ssl.google.com/android/eclipse/

這是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即可。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多