首先参考 http://www.linuxidc.com/Linux/2014-03/97760.htm
Ubuntu 13.04下载Android 4.0.1源码过程 http://www.linuxidc.com/Linux/2013-07/87028.htm
我遇到的困难有一些就在这里解决了。大家可以参看
此前使用XP下硬盘安装的Ubuntu 在下载Android 4.0源码的过程中Ubuntu崩溃,登陆循环 无法解决 故从U盘安装纯Ubuntu。
U盘启动安装Ubuntu 13.04 http://www.linuxidc.com/Linux/2013-04/83525.htm
硬盘安装Ubuntu参考 http://www.linuxidc.com/Linux/2013-10/91565.htm
Ubuntu 就自己安装 不建议使用虚拟机。建议单一系统安装。
下载源码:
首先安装git
sudo apt-get install git-core
然后在HOME 目录下创个文件夹BIN 用来存放 repo
mkdir bin
cd bin
curl http://git-repo.googlecode.com/files/repo-1.12> ~/bin/repo
对repo添加权限
chmod a+x repo
添加环境
PATH=$PATH:~/bin
创建一个文件夹存放源码
mkdir ~/workAndroid
cd ~/workAndroid
后面这个步骤比较重要
用浏览器登录https://android.googlesource.com/new-password,并用gmail帐号登录;
点击网页上的“允许访问”,得到类似的结果:
machine android.googlesource.com login git-<userName>.gmail.com password <password>
machine android-review.googlesource.com login git-<userName>.gmail.com password <password>
将上边的两行追加到~/.netrc文件结尾。(如果你的linux系统中从来没有建立过此文件,就在home目录下建立.netrc文件,将上面的信息加到新建的文件中去),
下载地址的URI更改为https://android.googlesource.com/a/platform/manifest。
因为访问基本是匿名的,为了防止连接过多,对同一IP地址的连接数做了一定的限制。用gmail帐号进行认证。
在公司网络内或者用虚拟机下载的话,会经常遇到这问题。
repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.3_r1
如果出现
fatal: unable to auto-detect email address
那么就在终端输入你的邮箱
git config –global user.email “you@example.com”
git config –global user.name “Your Name”
就像这样
现在你的初始化已经成功了。在 repo sync之前 我建议做这一步
打开.repo/manifest.xml。找到下面一段:
<remote name=”aosp”
fetch=”..” />
修改成
<remote name=”aosp”
fetch=”git://Android.git.linaro.org/”/>
相信我 做了这个步骤下载起来飞快 再也不会乱报错了
如果提示这个地址没有链接 可以尝试使用这个:
<remote name=”aosp”
fetch=”https://android.googlesource.com/” />
OK 找个好时间 开始
repo sync
吧
付上一个我正在下载的图
共勉
编译请看这里Ubuntu 13.04编译Android 4.0
这里是编译部分
我的系统是Ubuntu 13.04 64bit
编译碰到了各式各样的问题 我这里给出一些链接 都是我碰到问题的时候参看的
frameworks/base/include/utils/KeyedVector.h:193:31: 附注: use ‘this->indexOfKey’ instead
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/CrunchCache.o] 错误 1
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/Command.o] 错误 1
第一个问题 解决方式是对gcc 和g++ 降级
1、首先安装gcc4.4和g++4.4
sudo apt-get install gcc-4.4
sudo apt-get install g++-4.42
gcc和g++的降级gcc降级:
sudo rm -rf /usr/bin/gcc
sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc
gcc -v
g++降级
sudo rm -rf /usr/bin/g++
sudo ln -s /usr/bin/g++-4.4 /usr/bin/g++
g++ -v
这里会碰到由2个GCC 与G++
host Executable: cmu2nuance (out/host/linux-x86/obj/EXECUTABLES/cmu2nuance_intermediates/cmu2nuance)
/usr/bin/ld: cannot find -lncurses
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb] Error 1
make: *** Waiting for unfinished jobs….
host Executable: coverage (out/host/linux-x86/obj/EXECUTABLES/coverage_intermediates/coverage)
这个问题我也碰到了 安装后解决
安装libncurses5-dev:i386可以解决
sudo apt-get install libncurses5-dev:i386
dalvik/vm/native/dalvik_system_Zygote.cpp: In function ‘int setrlimitsFromArray(ArrayObject*)’:dalvik/vm/native/dalvik_system_Zygote.cpp:199:19: error: aggregate ‘setrlimitsFromArray(ArrayObject*)::rlimit rlim’ has incomplete type and cannot be defined struct rlimit rlim;
dalvik/vm/native/dalvik_system_Zygote.cpp:222:43: error: ‘setrlimit’ was not declared in this scope err = setrlimit(contents[0], &rlim);
make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libdvm_intermediates/native/dalvik_system_Zygote.o] Error 1make: *** Waiting for unfinished jobs….
所以,这个问题只能修改源代码来解决
在dalvik/vm/native/dalvik_system_Zygote.cpp中间增加一个头文件定义#include <sys/resource.h>
#include “Dalvik.h”
#include “native/InternalNativePriv.h”
#include <sys/resource.h>
Android(4.0)编译错误:usr/bin/ld: cannot find libncurses.so.5 cannot find -lGL
$sudo apt-get installlibx11-dev:i386(libX11.so)
$ sudo apt-get installibgl1-mesa-glx:i386(libGL.so)
由于libGL.so系统默认没有进行库路径下的链接,还需要手动链接一下
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
安装这2个解决
基本就是这些问题 中国上GOOGLE比较困难 大家相互帮组吧
更多Ubuntu相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2
更多Android相关信息见Android 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=11