ubuntu12.04(64位)下搭建android2.3/android4.0開發環境

ubuntu12.04(64位)下搭建android2.3/android4.0開發環境

   

本文介紹在WIN7操作系統通過在虛擬機VMWARE和Ubuntu下搭建了一個android2.3/android4.0編譯環境的操作過程,包括LINUX系統安裝,JDK安裝,samba服務和ssh服務安裝。因爲要下載補丁,需要網絡支持,要能夠上網。電腦要64位cpu,安裝好win7操作系統。

第一步:

下載ubuntu地址:
LINUX有3個版本,分別是server,desktop,alternate
server版本是沒有圖形界面服務器安裝版本。
alternate適合專業個性化定製安裝版本,不推薦初學者用這個版本
desktop是定製好的,傻瓜型安裝,簡單方便。
http://releases.ubuntu.com/12.04/  或者:http://mirrors.ustc.edu.cn/ubuntu-releases/
選擇的是64位的鏡像: ubuntu-12.04-desktop-amd64.iso   http://releases.ubuntu.com/12.04/ubuntu-12.04-desktop-amd64.iso

或者:http://mirrors.ustc.edu.cn/ubuntu-releases//precise/ubuntu-12.04-desktop-amd64.iso (這個鏈接下載速度要快)

第二步:

下載之後在VMware上安裝ubuntu。安裝完成後,用update manager更新最新的pach。

在64位WIN7系統安裝64位UBUNTU12.04
1,安裝vmware8.0.2
2,安裝ubuntu
下載 ubuntu-ubuntu-12.04-desktop-amd64
file-->new virtual machine
菜單VM--》setting-->hardware--》CD/DVD-->use ISO image file選擇ubuntu-12.04-desktop-amd64
一步一步安裝,安裝過程要輸入主機名字chv210和登錄用戶名chv210和登錄密碼,大概兩個小時安裝完成。
3,點擊下拉菜單dash home打開dash home,地址欄輸入update,彈出菜單 update manager---->install updates下載安裝更新。
    下載150M的更新包和安裝,慢慢等待。
要打開terminal,按快捷鍵: Ctrl + Alt + t 即可

4,安裝samba
 sudo apt-get install samba samba-common
 點擊菜單ubuntu software center, 地址欄輸入samba,選擇samba軟件,點擊install進入安裝samba,
 安裝好samba後,在菜單有個samba圖標,點擊彈出samba設置菜單,samba--》add a samba share (+號)--》 create samba share
 basic--》directory browser --》file system --》home  --》chv210  /home/chv210文件夾共享給chv210用戶,設置爲可以讀寫(writable visable 打勾)
 access--》only allow access specific user 前面打勾--》 在chv210前面打勾
 sudo smbpasswd -a chv210  
 爲samba用戶設置密碼,否則win7不能夠訪問
5,ifconfig 看看ip地址192.168.241.136
6,在windos 的地址欄\\192.168.241.136 可以看到chv210目錄,彈出widows安全對話框,輸入samba用戶名和密碼
7,安裝ssh
    sudo apt-get install openssh-server openssh-client

 在WIN7端連接
secureCRT => Quick Connect, 連接ubuntu, 輸入ubuntu的id和pwd
hostname  192.168.241.136
username  chv210
連接後
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-24-generic x86_64)
 * Documentation:  https://help.ubuntu.com/
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

#:
說明secureCRT就可以登錄上ubuntu12.04了
注意:
如果沒有安裝ssh,在secureCRT會提示

The remote system refused the connection.

要設置secureCRT支持中文,在options---》session options--》appearance---character encoding 選擇UTF-8就可以

secureCRT的鼠標右鍵功能默認是粘貼的功能,用起來和windows系統的風格不一致,如果要改爲右鍵爲彈出文本操作菜單功能,方便對選擇的內容做拷貝編輯操作,可以在options菜單----》global options------》terminal-------》mouse子菜單對 paste  on  right button的選項不要打勾就可以


8,安裝SVN
sudo apt-get install subversion
9,安裝jdk
在windows將jdk下載,通過samba傳給ubuntu
    cd  /usr
  sudo mkdir java
  cd java     
  sudo cp ../../home/zhenwx/jdk-6u27-linux-x64.bin  .
  sudo chmod 777 jdk-6u27-linux-x64.bin
    執行jdk的安裝.
    sudo  ./jdk-6u27-linux-x64.bin
    配置環境變量
    cd /etc
    sudo cp profiel profile-bak
    sudo chmod 777 profile
    vi etc/profile
    在前面添加下面內容,按ESC按鍵,wq!    
    export JAVA_HOME=/usr/java/jdk1.6.0_27
    export JRE_HOME=$JAVA_HOME/jre  
    export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH  
    export PATH=$JAVA_HOME/bin:$PATH:$JRE_HOME/bin
  查看jdk是否安裝成功
#source ./profile
#java -version
java version "1.6.0_27"
Java(TM) SE Runtime Environment (build 1.6.0_27-b07)
Java HotSpot(TM) 64-Bit Server VM (build 20.2-b06, mixed mode)

    如果顯示上面信息說明安裝成功

10,安裝編譯Android需要的工具包,這個步驟是關鍵,必須安裝,否則編譯會報莫名其妙的錯誤!!!!!!!!!!!!!!!!
sudo apt-get install git-core gnupg flex bison gperf build-essential   zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs   x11proto-core-dev libx11-dev lib32readline-gplv2-dev lib32z1-dev   libgl1-mesa-dev gcc-multilib g++-multilib mingw32 tofrodos python-markdown   libxml2-utils  xsltproc

注意:
a.64位系統要安裝gcc-multilib g++-multilib,32位系統不需要裝.
b.Ubuntu 10.04需要添加額外的源才能安裝Java5
deb http://cn.archive.ubuntu.com/ubuntu/ jaunty multiverse
deb http://cn.archive.ubuntu.com/ubu..
如果沒有安裝 bison會編譯報錯
sudo sudo apt-get install bison
( /bin/bash: bison: command not found )
(/bin/bash: prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-gcc: No such file or directory)

Ubuntu 中的 root 帳號默認是被禁用了的。在這種情況之下,如果你想要使用 root 的權限來幹些事情,就需要 sudo 命令。如果你需要激活 Ubuntu 中的 root 帳號,在 Ubuntu 中激活 root 帳號的過程如下:

A. 在終端執行sudo passwd root指令後,系統將會提示你設置一個新的 root 帳號密碼。

B. 點擊 System -> Preferences -> Login Window 菜單,並切換到 Security 選項頁,然後選中其下的“Allow local system administrator login”選項。

執行上述兩步後,你便可以使用 root 帳號登錄 Ubuntu 系統了。通過su命令就可以切換到root用戶。

如果要再次禁用 root 帳號,那麼可以執行sudo passwd -l root鎖住 root 帳號

11,在菜單system--》preferences--》monitors選擇顯示的分辨率1280×800

12,UBUNTU12.04基本android2.3/android4.0開發環境安裝成功了


第三步:

在自己工作目錄下或某個文件夾下建立bin目錄,我的是在/home/chv210/

確保你已經安裝了git jdk python等.

1.創建bin目錄,並加入到PATH

$ mkdir ~/bin
$ PATH=~/bin:$PATH
2.下載repo到剛剛創建的bin目錄,並設置權限爲可執行。

$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
3.創建Android源代碼存放目錄並進入到該目錄

$ mkdir Android-4.0.4_r1

$ cd Android-4.0.4_r1

4.初始化Android4.0.4的Git庫

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

這裏需要一個google帳號 輸入你的用戶名和 郵箱地址

5.最後執行開始同步下載

$ repo sync

最後,編譯。

第一步:

在存放代碼的那個文件夾下(Android-4.0.4_r1),執行:

$ source build/envsetup.sh

其中,build是源碼目錄中一個文件夾。

第二步:執行:

$ lunch full-eng
第三步:

$make  -j4

等着編譯完成就行了。

編譯出現的問題:

<command-line>:0:0: warning: "_FORTIFY_SOURCE" redefined [enabled by default] 

 <built-in>:0:0: note: this is the location of the previous definition cc1plus: all warnings being treated as errors

 make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] Error 1

後來發現了,原來是Ubuntu11.10裏的gcc和g++版本太高了,於是執行下面的操作:

    sudo apt-get install gcc-4.4

    sudo apt-get install g++-4.4

    sudo rm -rf /usr/bin/gcc /usr/bin/g++

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

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

    上面兩句ln命令可不執行,可以執行如下命令:(每次打開終端時都需輸入,或放至腳本中)

    export CC=gcc-4.4

    export CXX=g++-4.4

    這樣就可以保證原本使用4.6版本編譯的代碼再次編譯時不會影響到。

    把默認的4.6版本換爲了4.4,繼續編譯源碼,又出現了另一個錯誤,大致提示爲:

    g++ selected multilib '32' not installed

   安裝相應的工具:sudo apt-get install g++-4.4-multilib,現在正在make -j4,還出現問題:

。。。。。

重新下載4.0.3的版本後編譯full-eng版出現:

<built-in>:0:0: note: this is the location of the previous definition
host StaticLib: libOpenglCodecCommon (out/host/linux-x86/obj/STATIC_LIBRARIES/li
bOpenglCodecCommon_intermediates/libOpenglCodecCommon.a)
host SharedLib: libOpenglRender (out/host/linux-x86/obj/lib/libOpenglRender.so)
/usr/bin/ld: cannot find -lX11
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/lib/libOpenglRender.so] Error 1

解決方法:sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so

*****************************************************************************************

host StaticLib: libGLcommon (out/host/linux-x86/obj/STATIC_LIBRARIES/libGLcommon
_intermediates/libGLcommon.a)
host SharedLib: libGLES_CM_translator (out/host/linux-x86/obj/lib/libGLES_CM_tra
nslator.so)
/usr/bin/ld: cannot find -lGL
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/lib/libGLES_CM_translator.so] Error 1

解決方法: sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2     /usr/lib/libGL.so 

********************************************************************************

Target ram disk: out/target/product/smdkv210/ramdisk.img
target Strip: libutils (out/target/product/smdkv210/obj/lib/libutils.so)
mkimage -A arm -O linux -T ramdisk -C none -a 0x30A00000 -n "ramdisk" -d out/target/product/smdkv210/ramdisk.img out/target/product/smdkv210/ramdisk-uboot.img
/bin/bash: mkimage: command not found
make: *** [out/target/product/smdkv210/ramdisk.img] Error 127
make: *** Deleting file `out/target/product/smdkv210/ramdisk.img'
sudo apt-get install uboot-mkimage

**********************************************************************

collect2: ld terminated with signal 9 [Killed]

make: *** [out/host/linux-x86/obj/EXECUTABLES/dx-tests_intermediates/dx-tests] Killed

make: *** Deleting file `out/host/linux-x86/obj/EXECUTABLES/dx-tests_intermediates/dx-tests'

make: *** Waiting for unfinished jobs....

make: *** [out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/noproguard.classes-with-local.dex

Killed

make: *** [out/target/product/generic/obj/SHARED_LIBRARIES/libwebcore_intermediates/LINKED/libwebcore.so] Error 

1

原因分析:主要是Linux 系統沒加swap分區的原因,或是swap分區太小

解決辦法:解決的方法很簡單,建個swap文件。

#sudo  dd if=/dev/zero of=/opt/other/swapfile bs=1024 count=512K

# sudo mkswap /opt/other/swapfile

# sudo swapon /opt/other/swapfile

# swapon -s

Filename Type Size Used Priority

/dev/sda5                               partition 1128440 39588 -1

/opt/other/swapfile                     file 524280 0 -2

需要注意:在出現這樣的情況下,編譯命令最好使用單線程的,即make,而不要使用make -j4(可能會出現上面的問題)。

 

編譯sdk

$ source build/envsetup.sh

$ lunch sdk-eng

$ make sdk -j4

編譯後的jar:

./out/host/linux-x86/sdk/android-sdk_eng.jiang_linux-x86/platforms/android-4.0.1/android.jar
./out/target/common/obj/PACKAGING/android_jar_intermediates/android.jar

http://blog.csdn.net/zhengmeifu/article/details/7715473
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章