一些碎碎念……本来因为想在mac上编译的,还专门买了一个外置的移动硬盘,然后自己按照官网和搜到的无数篇博客精心研究了很久很久,耗时三天,还是GG,但是基本上…xcode是个大坑,算了算了……反正最后始终没弄好,然后,虚拟机走起吧……
准备工作
首先,虚拟机用的是mac上的parallels desktop,然后镜像是Ubuntu 12.04.5 Desktop (64-bit)
然后android源码在这里下载,我没有用repo,直接从百度云取的,用的是android4.4.4_r1
这样一共只需要下载2G多点……而不是70G(死目
mac上虚拟机快速配置就可以快速安装好系统,不过记得安装好后,修改一下硬件,空间给128G,内存改4096M,核数改2-4随便。
安装Java JDK 1.6
jdk版本:jdk-6u45-linux-x64.bin
下载地址:http://app.nidc.kr/java/jdk-6u45-linux-x64.bin
我们先在 /usr/local/目录下创建java文件夹:
1 | cd /usr/local |
安装成功后,java文件夹下多了一个文件夹:jdk1.6.0_45/
然后配置环境变量,用vim打开/ect/profile 文件,嗯,我不会用gedit,日常vim,这个其实随意。
1 | sudo vim /etc/profile |
添加下面的环境变量,要根据安装目录修改,并保存
1 | # Java Environment |
重启后使其生效并进行验证
也可使用下面的命令不重启使其生效,不过只针对当前域有效。
1 | source /etc/profile |
其实我是没重启的,直接source就行了,只要不另在终端里开标签或者重启终端就可以。
输入java -version 进行验证安装,成功后返回如下
1 | java version "1.6.0_45" |
安装依赖
1 | sudo apt-get install git gnupg flex bison gperf build-essential \ |
必须提到的是!我之前一直遇到很坑的问题,那就是虚拟机重启后打不开,始终没有解决,直到我不死心的尝试第n次,然后搜到了这个。
http://www.cnblogs.com/wangzehuaw/p/4057604.html
划重点
1 | $ sudo apt-get install git gnupg flex bison gperf build-essential \ |
提示信息说缺少依赖库无法安装libgl1-mesa-glx:i386,那么就不要安装这个库了,从上面的install列表中减去这个库。
libgl1-mesa-glx:i386。如果强制安装了这个库会导致重启或关机后无法进入ubuntu问题,很严重。
如果也遇到了无法进入ubuntu系统的问题,请重装系统时不要安装这个库。
我真的第一次见到会break desktop的库……服了服了。
就因为这个坑了我三天!!!
所以像我一样直接去掉吧。
1 | 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-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 |
解压源码
把之前下载的源码的7z包解压,比如我是建了个目录aosp,然后解压后,就有个android-4.4.4_r1的文件夹。
7z文件需要下一个东西来解压
1 | sudo apt-get install p7zip-full |
解压好之后,进入源码路径,如果你的目录结构和我一样,就是
1 | cd ~/aosp/android-4.4.4_r1 |
编译源码
清理
命令删除所有以前编译操作的已有输出:
1 | make clobber |
设置环境
使用build目录中的envsetup.sh脚本初始化环境
1 | source build/envsetup.sh |
选择目标
因为我不下载到实体机里,就直接输入lunch,然后回车即可。
默认选择第一个,即lunch aosp_arm-eng,该命令表示针对模拟器进行完整编译,并且所有调试功能均处于启用状态。
进行编译
编译前先看看你配置了几个核,然后make -j(核数✖️2)
1 | cat /proc/cpuinfo | grep processor |
可看到自己创建的虚拟机CPU核心共有2个,所以make -j4
编译后输出的文件都放在了源码根目录下的out文件中。
启动模拟器
1 | emulator -partition-size 300 |
导入android源码进android studio
网上的做法比较乱,我只写一下我是怎么做的。
1.在整个Android源码全编成功之后,然后编译idegen模块,用以生成Android studio的工程配置文件,编译成功之后就生成了idegen.jar(out/host/darwin-x86/framework/idegen.jar),运行如下命令:
1 | source build/ensetup.sh |
2.在源码根目录生成对应的android.ipr、android.iml IEDA工程配置文件。以便于AndroidStudio可以打开项目
1 | development/tools/idegen/idegen.sh |
3.下载android studio并启动
1 | cd ~/android-studio/bin |
第一次启动要安装sdk,所以记得翻墙。
4.导入
打开 Android studio,选择刚刚生成的 android.ipr 打开,等待加载好了就可以了。
参考链接
https://source.android.com/source/initializing#installing-required-packages-ubuntu-1204
https://source.android.com/source/requirements#older-versions
https://bbs.pediy.com/thread-218366.htm
https://bbs.pediy.com/thread-218513.htm