Android源码获取与编译

                                                                     Android源码的获取与编译

                                                                                                                                     --漫漫Android路之万恶的开端

       在中国大陆由于不能直接访问Google服务器,获取源码需要通过第三方源获取,比较有名的是清华源科大源,在这里说说我的心酸旅程(基于Android 8.1版本)。

       AOSP的全称为Android Open Source Project,中文直译为Android开放源代码项目。原生的Android系统(Nexus中预装的系统)有AOSP和GMS两部分组成。GMS为Google Mobile Service,是Google所提供的一系列的移动服务,主要包括:

Ø  Maps与Location;

Ø  Games、Play Services、In-app Billing、PlayDistribution;

Ø  Google+、Drive、Cloud Platform、CloudMessaging;

Ø  Cast、Wallet、Ads

GMS是不对外开源,是需要Google授权才可以使用。从上面可以看出,GMS是Google提供的服务,而AOSP则为工具。

Android采用Git作为版本管理工具,Git是分布式版本控制系统,即:每一台计算机上的Git目录都是完整的存储库,具有完整的历史记录和完整分版本跟踪能力,能够独立于网络访问。为了方便开发者获取Android源代码。Google提供了一个repo工具,这个工具实际上是一个用Python(目前使用的是Python2.x版本,与Python3.0不兼容)写的脚本文件,里面封装了用于下载Android源代码所需要的git命令。

安装repo:(即上述所说的Python封装的GIT命令)

mkdir ~/bin  
PATH=~/bin:$PATH  
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo  
## 如果上述 URL 不可访问,可以用下面的:
## curl https://storage-googleapis.proxy.ustclug.org/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

新建工作目录:(该目录为存放GIT库的地方,Android8.1后建议100G以上)

mkdir WORKING_DIRECTORY  
cd WORKING_DIRECTORY 

初始化仓库:(GIT库的初始化)

repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest  
## 如果提示无法连接到 gerrit.googlesource.com,可以编辑 ~/bin/repo,把 REPO_URL 一行替换成下面的:  
## REPO_URL = 'https://gerrit-googlesource.proxy.ustclug.org/git-repo'

选择所需要的版本:(android版本

repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-4.0.1_r1  

同步: 

repo sync 

在选定版本前,若使用repo sync 命令则会同步整个AOSP库,大概有50G左右。

从个人用户来讲,如果只需要获取某一版本的源代码,建议直接下载网友分享的源代码。我的Android源代码共享网盘地址为:链接: https://pan.baidu.com/s/1i7ks85n  密码: utym。

 

Android编译

Android目前只支持Linux和MAC两种操作系统,在大多数linux操作系统中,通过软件源安装的均为Open JDK。Open JDK与Oracle JDK有不同的APIs,所以通过网络上下载安装包自行安装的时候需要注意下载适当的JDK,android版本与对应的JDK

1.  The master branch of Android in AOSP:                    Ubuntu - OpenJDK 8,    Mac OS - jdk 8u45 or newer  

2.   Android 5.x (Lollipop) - Android 6.0 (Marshmallow): Ubuntu - OpenJDK 7,     Mac OS - jdk-7u71-macosx-x64.dmg  

3.   Android 2.3.x (Gingerbread) - Android 4.4.x (KitKat): Ubuntu - Java JDK 6,     Mac OS - Java JDK 6  

4.   Android 1.5 (Cupcake) - Android 2.2.x (Froyo):          Ubuntu - Java JDK 5

官方提供的下载地址为:

http://archive.ubuntu.com/ubuntu/pool/main/o/openjdk-8/

我使用的是Ubuntu14.04系统,下了几个版本都不支持,故选择了另外一个地址下载:

https://launchpad.net/~openjdk-r/+archive/ubuntu/ppa,如图所示,选择所对应的Ubuntu版本就可以下载。


需要下载文件有(至于没有完全一样的名称,请仔细思考):

Openjdk-8-jre-headless_8u45-b14-1_amd64.deb

Openjdk-8-jre_8u45-b14-1_amd64.deb

Openjdk-8-jdk_8u45-b14-1_amd64.deb

Ubuntu下安装指令:

sudo dpkg -i {downloaded.deb file}

解决缺少依赖项的问题:

sudo apt-get -f install 

对于64bit 的Ubuntu14.04需要安装程序包:

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip 

  注:该条指令来自于https://source.android.com/source/initializing  我并未有亲自安装过,在这里做个标记,以后尝试下。

 

安装完openjdk后,修改用户目录下~/.bashrc,在后面添加(在此之前可以进/usr/lib/jvm目录中查看安装的openjdk):

JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/  
JRE_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre  
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH  
CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib  

而后运行:

source ~/.bashrc 

上述为所以Android编译环境的搭建,虽然自己编译成功了但还有好多问题没有搞明白,涉及到GIT,Python,Java,Makefile等等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值