ubuntu12.04(64位)下搭建android2.3/android4.0开发环境

来源:互联网 发布:眼睑凹陷填充 知乎 编辑:程序博客网 时间:2024/04/28 21:38

    本文介绍在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

原创粉丝点击