文档章节

ubuntu

娶到笨笨
 娶到笨笨
发布于 2014/04/17 15:42
字数 1899
阅读 115
收藏 3

   

       Ubuntu 12.04 64位编译android 4.1.1_r3            

       分类:            Android            2013-01-08 09:39    923人阅读    评论(1)    收藏    举报    

一.初始化编译环境

           google推荐的编译环境是在Ubuntu LTS(10.04),但是新的LTS版本12.04已经出来,没必要在旧版本上做文章了,很多行特性和驱动10.04上都没有(例如无线网卡驱动),所以果断选择12.04的LTS版本。

           对于2.3.X和更新的版本,需要64位的系统,之前的老版本2.2以下(包括2.2)可以在32位版本上编译,另外不推荐虚拟机,因为官网上写的虚拟机配置过于变态,要16G的RAM/swap和30G以上的硬盘,速度上也不会很理想。

在Ubuntu12.04下面需要:

前两条Ubuntu 12.04系统自带,不需要安装(新系统的好处),git后面会通过安装必须包来安装,所以只需要我们手动安装JDK

安装JDK1.6.0

1.下载地址:

http://www.oracle.com/technetwork/java/javase/downloads/jdk6-downloads-1637591.html

选择64位的linux版本,这里安装好以后,后面设置应用开发环境还用得上,

这时我下载的最新版本是jdk-6u33-linux-x64.bin.

2. 安装

修改文件的权限

chmod  777  jdk-6u33-linux-x64.bin

执行安装

./jdk-6u33-linux-x64.bin

3.配置环境变量

修改/etc/profile  在后面添加java文件夹的路经

[html] view plaincopy

  1. export JAVA_HOME=/home/gexueyun/jdk1.6.0_33  

  2. export PATH=$PATH:$JAVA_HOME/bin:/home/gexueyuan/android-sdk-linux/platforms-tools:/home/gexueyuan/eclipse/:/home/gexueyuan/bin  


此时输入:java -ersion可能还看不见版本,重启或者重新登录后就能看见java的版本

[html] view plaincopy

  1. java version "1.6.0_33"  

  2. Java(TM) SE Runtime Environment (build 1.6.0_33-b04)  

  3. Java HotSpot(TM) 64-Bit Server VM (build 20.8-b03, mixed mode)  


系统中有时候会安装openjdk,但是我们编译android的时候要用jdk1.6.0,有三种方法解决这个问题

第一,删除openjdk,我怕以后系统里面还有什么用处,果断不敢删啊

第二种方法就是修改环境变量,让系统调用java  javac  jar的时候优先调用你安装的jdk,修改/etc/environment

[html] view plaincopy

  1. PATH="/home/gexueyuan/jdk1.6.0_33/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"  


这样系统就会优先调用你下载的jdk

这时候输入命令

[html] view plaincopy

  1. update-alternatives --config jar  

  2. update-alternatives --config javac  

  3. update-alternatives --config java  

看到的还是

/usr/lib/jvm/java-6-openjdk-amd64/bin/ 中的

但是系统调用,会优先调用你安装的jdk

第三种,

就是比较正式的安装jdk到系统目录

1.把下载的文件

[html] view plaincopy

  1. 移动到/usr/lib/jvm下面,没有jvm这个目录就手动创建一个  

2.执行安装,这要系统权限的

[html] view plaincopy

  1. sudo  ./jdk-6u33-linux-x64.bin  


3.配置jdk

sudo  vim   /etc/enviroment

添加:


PATH=$PATH:$JAVA_HOME/bin

CLASSPATH=".:$JAVA_HOME/bin"

JAVA_HOME="/usr/lib/jvm/jdk1.6.0_33"

安装java/javac/jar,执行如下命令:

sudo update-alternatives --install /usr/bin/java  java  /usr/lib/jvm/java1.6.0_33/bin/java  300

sudo update-alternatives --install /usr/bin/javac  javac  /usr/lib/jvm/java1.6.0_33/bin/javac  300

sudo update-alternatives --install /usr/bin/jar  jar  /usr/lib/jvm/java1.6.0_33/bin/jar  300

sudo update-alternatives  --config java

sudo update-alternatives  --config javac

sudo update-alternatives  --config jar

执行后三条命令的时候,可能会出现选择的提示,一定要选择jdk1.6.0,而不是openjdk


然后使用java -version查看版本是否为1.6.0


二.安装必要的编译包


12.04下的安装包命令为:

[html] view plaincopy

  1. $ sudo apt-get install git-core gnupg flex bison gperf build-essential \  

  2.   zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \  

  3.   libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \  

  4.   libgl1-mesa-dev g++-multilib mingw32 openjdk-6-jdk tofrodos \  

  5.   python-markdown libxml2-utils xsltproc zlib1g-dev:i386  

  6. $ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so  


这里面可以选择不安装openjdk


安装usb驱动(可选)

由于ubuntu的系统设置问题,普通用户是没有权限获取usb设备的,所以需要创建下面这个文件

/etc/udev/rules.d/51-android.rules

内容是:

[html] view plaincopy

  1. # adb protocol on passion (Nexus One)  

  2. SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e12", MODE="0600"OWNER="<username>"  

  3. # fastboot protocol on passion (Nexus One)  

  4. SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0fff", MODE="0600"OWNER="<username>"  

  5. # adb protocol on crespo/crespo4g (Nexus S)  

  6. SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e22", MODE="0600"OWNER="<username>"  

  7. # fastboot protocol on crespo/crespo4g (Nexus S)  

  8. SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e20", MODE="0600"OWNER="<username>"  

  9. # adb protocol on stingray/wingray (Xoom)  

  10. SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", ATTR{idProduct}=="70a9", MODE="0600"OWNER="<username>"  

  11. # fastboot protocol on stingray/wingray (Xoom)  

  12. SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="708c", MODE="0600"OWNER="<username>"  

  13. # adb protocol on maguro/toro (Galaxy Nexus)  

  14. SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0600"OWNER="<username>"  

  15. # fastboot protocol on maguro/toro (Galaxy Nexus)  

  16. SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e30", MODE="0600"OWNER="<username>"  

  17. # adb protocol on panda (PandaBoard)  

  18. SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d101", MODE="0600"OWNER="<username>"  

  19. # fastboot protocol on panda (PandaBoard)  

  20. SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d022", MODE="0600"OWNER="<username>"  

  21. # usbboot protocol on panda (PandaBoard)  

  22. SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d00f", MODE="0600"OWNER="<username>"  

  23. # usbboot protocol on panda (PandaBoard ES)  

  24. SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d010", MODE="0600"OWNER="<username>"  


其中username是你需要获取权限的用户名


三.下载源代码


在home目录下建立bin文件夹:

[html] view plaincopy

  1. $ mkdir ~/bin  

  2. PATH=~/bin:$PATH  


下载repo并且更改权限

[html] view plaincopy

  1. $ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo  

  2. $ chmod a+x ~/bin/repo  


初始化Repo客户端

在你的工作目录下面创建一个存放源代码的文件夹并且进入文件夹,比如:

[html] view plaincopy

  1. $ mkdir WORKING_DIRECTORY  

  2. $ cd WORKING_DIRECTORY  


初始化Repo获得最新的源代码,即主分支源代码:

[html] view plaincopy

  1. $ repo init -u https://android.googlesource.com/platform/manifest  


如果想获得其他版本的分支源代码,要在命令后面用 -b参数指定  :

比如最新的代码是

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

可以指定获取

android-4.1.1_r1

初始化完成以后,输入

$ repo sync

获得你想要的源代码


下载源代码时候的一个错误:

Syncing work tree: 100% (171/171), done.  

external/dbus/: discarding 43 commits
error: build/: platform/build checkout 0683a77348f2a0a529a8e2bcfdf4b6dc6b4c5f5b error: cts/: platform/cts checkout a3779fa378345bfd8699e91de46b29563be4beb2

在完成同步后,repo报错,其原因是我这里先下载了4.1.1_r1的源代码,没下载完成,后面又初始化了4.1.1_r3继续下载,所以版本库里面很多文件不一样,编译的时候也会报错,这里我们用git命令处理一下:

在报错的路径下面使用:git checkout -f  把源代码强制还原成为最原始的源代码,无更改

再次repo  sync,不会报错。


四.编译源代码

初始化脚本

$ source build/envsetup.sh
$ lunch full-eng

第二个命令的参数可以参考官网,说明很详细,你想生成什么样的文件,就设定什么样的参数

http://source.android.com/source/building.html


编译代码:

$ make -jN

其中N参数代表你计算机的线程参数,数字越大,编译速度越快,但是要看你计算机支持到什么地步


事实证明,4.6的GCC也可以编译成功,不像网上说的那样只能用gcc4.4

我的gcc版本

[html] view plaincopy

  1. gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3  

  2. Copyright (C) 2011 Free Software Foundation, Inc.  

  3. This is free software; see the source for copying conditions.  There is NO  

  4. warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  


有一个文章说编译4.03需要4.4的gcc,没验证过,反正4.1.1编译用gcc4.6没压力。


编译错误:

如果报错如下



那么就是jdk的问题,是因为你使用了系统的openjdk,重新配置jdk即可解决。


五.运行emulator:

编译成功后,运行模拟器

$ emulator


如果找不到命令,那么重新输入:

$ source build/envsetup.sh


$ lunch full-eng

再运行

$ emulator


模拟器就运行起来了。


本文转载自:

共有 人打赏支持
娶到笨笨
粉丝 6
博文 51
码字总数 6482
作品 0
奉化
私信 提问
执行apt-get update后报域名无法解析错误

在虚拟机上安装了Ubuntu14.04,系统,但是发现安装一些东西无法安装,如gcc,报“E: 未发现软件包 gcc”,运行“sudo apt-get update”,报“ test@test :/etc/apt$ sudo apt-get update 错误...

么么哒ying
2017/06/24
175
1
pcDuino 书籍_第三章: C语言和pcDuino的Arduino风格IDE (I)

有两种风格在pcDuino上使用C语言,第一种是使用“make”命令行,另外一种是使用Arduino IDE, 该Arduino IDE已经包含在20130531发布的系统版本内。 Arduino风格编程程序库的工具链 源代码可以...

pc朵拉
2013/08/09
1K
0
Ubuntu 16.10 Beta 1 发布,更新应用程序

Ubuntu 16.10 Beta 1 发布了,这个版本对于需要稳定性的人来说不建议升级。该版本包括很多应用程序的更新,但因为还是处于开发阶段,因此会有很多 bug。 详细更新说明: https://lists.ubun...

局长
2016/08/26
4.1K
3
ubuntu 12.10 sourcelist软件更新源列表

ubuntu 12.10正式版已经发布了,国内各大开源软件源也陆续更新了资源。今天分享一下ubuntu 12.10 软件更新源列表。 首先,备份一下ubuntu 12.04 原来的源地址列表文件 sudo cp /etc/apt/sou...

aspirs
2016/01/25
42
0
Ubuntu12.04 更新源

1、首先备份Ubuntu 12.04源列表 sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup (备份下当前的源列表,有备无患嘛) 2、修改更新源 sudo gedit /etc/apt/sources.list (打开...

Jian-Yong
2011/03/27
0
7

没有更多内容

加载失败,请刷新页面

加载更多

Alibaba Java诊断利器Arthas实践--使用redefine排查应用奇怪的日志来源

背景 随着应用越来越复杂,依赖越来越多,日志系统越来越混乱,有时会出现一些奇怪的日志,比如: [] [] [] No credential found 那么怎样排查这些奇怪的日志从哪里打印出来的呢?因为搞不清...

hengyunabc
今天
1
0
home hosts

home hosts lwk@qwfys:~$ cat /etc/hosts127.0.0.1 localhost127.0.1.1 qwfys192.168.56.101vm600.qwfys.com39.108.212.91alpha1.ppy.com39.108.117.122alpha2.p......

qwfys
今天
1
0
大数据教程(6.1)hadoop生态圈介绍及就业前景

1. HADOOP背景介绍 1.1、什么是HADOOP 1.HADOOP是apache旗下的一套开源软件平台 2.HADOOP提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理 3.HADOOP的核心组...

em_aaron
今天
4
0
hadoop垃圾回收站

在生产生,hdfs回收站必须是开启的,一般设置为7天。 fs.trash.interval 为垃圾回收站保留时间,如果为0则禁用回收站功能。 fs.trash.checkpoint.interval 回收站检查点时间,一般设置为小于...

hnairdb
昨天
3
0
腾讯与Github的魔幻会面背后的故事…

10月22日,腾讯开源管理办公室有幸邀请到Github新晋CEO Nat Friedman,前来鹅厂参观交流。目前腾讯已经有近70个项目在Github上开源,共获得17w stars,世界排名11位。Github是腾讯开源的主阵...

腾讯开源
昨天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部