利用国内镜像源下载、编译Android源码

在国内下载Android可是不太容易,不过从Google断断续续地下载了几天源码后发现清华大学有个TUNA镜像源可以下载Android源码,甚是方便。

参考网站:

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

https://aosp.tuna.tsinghua.edu.cn/

一.环境准备:

现在Android源码的下载和编译在Linux和Mac OS上都可以了,但Mac OS上设置略微复杂点,所以我选择了Ubuntu 14.04 64位的虚拟机。(硬盘建议50G以上,编译的时候给虚拟机加大CPU和内存。)

编译Gingerbread (2.3.x) 及其以上的源码需要64位的系统,以下的可以在32位系统上编译。

1.Java下载和配置

Java 7:适用最新版的源码:


1

2

$
sudo

apt-get update

$
sudo

apt-get
install

openjdk-7-jdk

如果系统上有多个Java版本,可以设置默认的:


1

2

$
sudo

update-alternatives --config java

$
sudo

update-alternatives --config javac

Java 6: 适用于Gingerbread(2.3)~ KitKat(4.4)

Java 5:适用于 Cupcake(1.5)~ Froyo(2.2)

如果Java安装失败可到Java官网下载后自行安装,略去不表。

2.其它依赖包:


1

$
sudo

apt-get
install

bison g++-multilib git gperf libxml2-utils
make

zlib1g-dev:i386 zip

如果是Ubuntu 12.04:


1

2

3

4

5

6

$
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-glx:i386 \

  libgl1-mesa-dev
g++-multilib mingw32 tofrodos \

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

$
sudo

ln

-s
/usr/lib/i386-linux-gnu/mesa/libGL.so.1
/usr/lib/i386-linux-gnu/libGL.so

如果是Ubuntu 10.04 — 11.10:


1

2

3

4

5

$
sudo

apt-get
install

git gnupg flex bison gperf build-essential \

  zip
curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \

  x11proto-core-dev
libx11-dev lib32readline5-dev lib32z-dev \

  libgl1-mesa-dev
g++-multilib mingw32 tofrodos python-markdown \

  libxml2-utils
xsltproc

11.10:


1

$
sudo

apt-get
install

libx11-dev:i386

10.04:


1

$
sudo

ln

-s
/usr/lib32/mesa/libGL.so.1
/usr/lib32/mesa/libGL.so

二、下载源码

1.下载repo:

repo是Google基于Git推出的一款版本管理工具,用python写的。

先配置目录:


1

2

$
mkdir

~
/bin

$
PATH=~
/bin:$PATH

下载repo并赋予其可执行权限:


1

2

$
curl https:
//storage.googleapis.com/git-repo-downloads/repo

> ~
/bin/repo

$
chmod

a+x ~
/bin/repo

当然由于众所周知的原因,我们往往无法把repo下到本地。这里提供一个我下载并修改好的下载链接:http://jiezhiblog.com/wp-content/uploads/2015/04/repo1.txt

(wp的限制,只能把repo重命名为repo.txt,下载后改回repo即可)

下载放到~/bin目录下,并修改权限即可:


1

chmod

a+x repo

2.初始化repo

进入放置源码的目录,如:


1

2

$
mkdir

~
/android/android

4.3_r1

$
cd

~
/android/android

4.3_r1

关键的来了,如果想体验好点,建议国内的从清华大学的镜像源下载:


1

$
repo init -u git:
//aosp.tuna.tsinghua.edu.cn/android/platform/manifest

或者指定要下载的分支:


1

$
repo init -u git:
//aosp.tuna.tsinghua.edu.cn/android/platform/manifest
-b android-4.3_r1

完成后即可和服务器同步了:


1

$
repo
sync

该服务器限制了每个IP并发数,也就是你可以使用:


1

$
repo
sync

-j4

设置并发数为4.,给别人留有余地。

现在应该在从服务器下载源码了,但是如果中途有中断了,继续执行repo sync即可。

如何让repo自动在断开后自动下载:

新建autorepo.sh:


1

2

3

4

5

6

#!/bin/sh

repo
sync

while

[ $? -
ne

0 ]

do

repo
sync

done

然后执行即可:


1

$
sh autorepo.sh

如果你之前已经下载了部分AOSP的代码的话,切换到TUNA服务器也很方便,如官网所示:

如果你之前已经通过某种途径获得了 AOSP 的源码(或者你只是 init 这一步完成后), 你希望以后通过 TUNA 同步 AOSP 部分的代码,只需要将 .repo/manifest.xml 把其中的
aosp 这个 remote 的 fetch 从 https://android.googlesource.com 改为 git://aosp.tuna.tsinghua.edu.cn/android/


1

2

3

4

5

6

7

8

<manifest>

   <remote 
name="aosp"

-          
fetch="https://android.googlesource.com"

+          
fetch="git://aosp.tuna.tsinghua.edu.cn/android/"

            review="android-review.googlesource.com"
/>

   <remote 
name="github"

这个方法也可以用来在同步 Cyanogenmod 代码的时候从 TUNA 同步部分代码

三、编译:

当源码下载后,可以看到目录里多出很多源码文件夹:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

[[email protected]
android4.1_r1]$
ls

-hl

total
100K

drwxrwxr-x  
3 aosp aosp 4.0K Apr  7 11:27 abi

drwxrwxr-x  
9 aosp aosp 4.0K Apr  7 11:27 bionic

drwxrwxr-x  
5 aosp aosp 4.0K Apr  7 11:27 bootable

drwxrwxr-x  
7 aosp aosp 4.0K Apr  7 11:27 build

drwxrwxr-x 
11 aosp aosp 4.0K Apr  7 11:27 cts

drwxrwxr-x 
18 aosp aosp 4.0K Apr  7 11:27 dalvik

drwxrwxr-x 
19 aosp aosp 4.0K Apr  7 11:27 development

drwxrwxr-x 
10 aosp aosp 4.0K Apr  7 11:27 device

drwxrwxr-x  
3 aosp aosp 4.0K Apr  7 11:27 docs

drwxrwxr-x
144 aosp aosp 4.0K Apr  7 11:29 external

drwxrwxr-x 
14 aosp aosp 4.0K Apr  7 11:32 frameworks

drwxrwxr-x 
10 aosp aosp 4.0K Apr  7 11:32 gdk

drwxrwxr-x 
10 aosp aosp 4.0K Apr  7 11:32 hardware

drwxrwxr-x 
11 aosp aosp 4.0K Apr  7 11:32 libcore

drwxrwxr-x  
4 aosp aosp 4.0K Apr  7 11:32 libnativehelper

-r--r--r--  
1 aosp aosp   87 Apr  7 11:27 Makefile

drwxrwxr-x  
8 aosp aosp 4.0K Apr  7 11:32 ndk

drwxrwxr-x  
4 aosp aosp 4.0K Apr  7 14:28 out

drwxrwxr-x  
7 aosp aosp 4.0K Apr  7 11:33 packages

drwxrwxr-x  
4 aosp aosp 4.0K Apr  7 11:33 pdk

drwxrwxr-x 
12 aosp aosp 4.0K Apr  7 11:33 prebuilt

drwxrwxr-x  
9 aosp aosp 4.0K Apr  7 11:34 prebuilts

drwxrwxr-x 
48 aosp aosp 4.0K Apr  7 11:34 sdk

drwxrwxr-x  
9 aosp aosp 4.0K Apr  7 11:34 system

如果你准备在模拟器里运行,则按照如下步骤编译即可,如果你想刷到手机上则还有一些任务要做(见第四步)。

0.其中由于配置问题,我的代码是放在服务器上编译的:

由于.repo这个隐藏文件夹里的文件占用空间很大,所以在压缩的时候将其排除:


1

$
tar

-zcvf android4.3_r1.
tar.gz
android4.3_r1/ --exclude .repo

然后利用scp命令将压缩好的文件上传到服务器:


1

$
scp

android4.3_r1.
tar.gz
[email protected]:
/home/android/

其中username和host是你用户名和服务器地址。

解压:


1

$
tar

-zxvf android4.3_r1.
tar.gz
/

1.初始化:


1

$
source

build
/envsetup.sh

2.使用lunch命令选择编译目标,如:


1

$
lunch aosp_arm-eng

或者直接lunch,会让你选择编译目标的。

其中参数说明:

BUILD NAME DEVICE NOTES
aosp_arm ARM emulator 包括所有语言、APP和输入法的配置
aosp_maguro maguro 运行在Galaxy Nexus GSM/HSPA+ ("maguro")上
aosp_panda panda  运行在 PandaBoard ("panda")上
BUILDTYPE USE
user limited access; suited for production(有权限限制,适合产品级)
userdebug preferred for debugging(适合调试)
eng development configuration with additional debugging tools(有额外的调试工具)

3.编译


1

$
make

-j4

-jN表示用N个线程来编译,如果你是配置是2CPU,每个CPU有4核,每核可跑俩线程,那么你可以make -j16乃至-j32,这样速度将大大加快。.

4.成功

在android4.3_r1/out/target/product/generic目录下可以看到如下文件:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

[[email protected]
generic]$
ls

-lh

total
205M

-rw-rw-r-- 
1 aosp aosp    7 Apr  7 14:49 android-info.txt

-rw-rw-r-- 
1 aosp aosp  25K Apr  7 14:48 clean_steps.mk

drwxrwxr-x 
4 aosp aosp 4.0K Apr  7 15:19 data

drwxrwxr-x 
3 aosp aosp 4.0K Apr  7 15:18 dex_bootjars

-rw-rw-r-- 
1 aosp aosp  47K Apr  7 15:27 installed-files.txt

drwxrwxr-x
14 aosp aosp 4.0K Apr  7 15:27 obj

-rw-rw-r-- 
1 aosp aosp  557 Apr  7 14:48 previous_build_config.mk

-rw-rw-r-- 
1 aosp aosp 163K Apr  7 15:18 ramdisk.img

drwxrwxr-x 
8 aosp aosp 4.0K Apr  7 15:18 root

drwxrwxr-x 
5 aosp aosp 4.0K Apr  7 15:18 symbols

drwxrwxr-x
12 aosp aosp 4.0K Apr  7 15:27 system

-rw------- 
1 aosp aosp 204M Apr  7 15:27 system.img

drwxrwxr-x 
3 aosp aosp 4.0K Apr  7 15:05
test

-rw------- 
1 aosp aosp  99K Apr  7 15:19 userdata.img

四、刷机

1.模拟器的话,其实直接运行emulator即可运行:

由于不涉及内核,我的做法是把ramdisk.img、system.img和userdata.img复制到sdk/system-images/android-18/default/armeabi-v7a/目录下替换掉原来的文件。(可以把原来的先备份)

然后新建对应的API虚拟机,运行即可。

2.真机

真机我是用Google三太子Galaxy Nexus [maguro] (GSM/HSPA+)做的实验,毕竟亲儿子,驱动方面都很好配置。

a.在第三步编译之前,先把驱动配置好:

然后按照第三步编译即可。

b.连接手机,打开USB调试,进入bootloader模式:


1

$
adb reboot bootloader

如果bootloader被锁住的话,先解锁:


1

$
fastboot oem unlock

然后进入system.img等文件的目录:


1

2

3

$
fastboot flash boot boot.img

$
fastboot flash system system.img

$
fastboot flash userdata userdata.img

然后重启即可。

本文首发地址:http://jiezhiblog.com/archives/187

时间: 2024-10-25 04:47:35

利用国内镜像源下载、编译Android源码的相关文章

Ubuntu12.04编译Android4.0.1源码全过程-----附wubi安装ubuntu编译android源码硬盘空间不够的问题解决

本文转至  http://blog.csdn.net/yanzi1225627/article/details/9263097 昨晚在编译源码,make一段时间之后报错如下: [html] view plaincopyprint? # A fatal error has been detected by the Java Runtime Environment: # #  SIGSEGV (0xb) at pc=0x40362d33, pid=12195, tid=2835454784 # # 

Android介绍以及源码编译---Android源码下载

四. Android源码下载 4.1     安装repo 在home目录下建立bin文件夹 $ mkdir ~/bin $ PATH=~/bin:$PATH 安装并更改权限 $curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo $ chmod a+x ~/bin/repo 4.2     初始化repo 创建工作目录(存放源码) $ mkdir Android4.1 $ cd Android4.1

下载编译 Android wear 源码,尝试制作可穿戴设备功能

体验 Android Wear 缘由: Android wear 代码发布已经很久了,一直没有尝试,这里是个编译的过程和步骤,如果要尝试,本文假定读者已经有下载编译 Android 的经验,如果没有,请 Google 相关文章安装相应的环境,例如 Java 各种支持库等. 下载源代码: Google 官方下载: repo init -u https://android.googlesource.com/platform/manifest -b android-4.4w_r1 鉴于国内的大多数网络

【转】在Ubuntu下编译Android源码并运行Emulator

原文网址:http://www.mcuos.com/thread-4553-1-1.html 建立编译环境 1.在VirtualBox上安装Ubuntu 2.安装JDK   $ sudo apt-get install sun-java5-jdk  或   $ sudo apt-get install sun-java6-jdk (donut 1.6)3.安装flex,bison,gperf,libsdl-dev,libesd0-dev,libwxgtk2.6-dev(可选),build-ess

【转】Ubuntu10.04上编译Android源码(Build Android source in Ubuntu10.04 Platform)

原文网址:http://blog.csdn.net/chenyafei617/article/details/6570928 一.Introduction 今天我们就来谈谈如何在Ubuntu平台上面编译android源码,我的是ubuntu10.04版本,在进行编译流程讲解之前我想讲一下 make .make snod .make kernel的作用,m.mm.mmm它们的作用以及区别. - make:                 编译源码,生成相应的系统镜像文件.             

[原]编译Android源码过程中遇到的问题

编译Android源码的过程参考Android官网介绍: 1.下载Android源码的步骤:https://source.android.com/source/downloading.html 2.编译Android源码的步骤:https://source.android.com/source/building-running.html 下面就是我遇到的一些问题: 1.Compile Android Source时JDK相关的错误: 错误1: target release 1.5 conflic

编译Android源码致命错误解决方案

编译Android源码致命错误解决方案 字数1506 阅读17447 评论0 喜欢3 相信各位和我一样正在研究android内核的朋友们在经过漫长的源码下载的等待后,喜悦的拿到了源代码开始编译.可是在编译过程中,也会和下载一样出现各种各样的不顺.在这里我记录了一下本人在编译过程中的所有问题,如有疏漏,欢迎朋友们指出.下面是按照正常编译流程记录的所需步骤和操作,可能遇到的问题会在后面讲述. 步骤一:初始化编译环境 首先进入android源码所在目录,然后在Linux终端执行以下命令来完成编译初始化

编译Android源码

Android源码体积非常庞大,由Dalvik虚拟机.Linux内核.编译系统.框架代码.Android定制C库.测试套件.系统应用程序等部分组成,在编译Android源码之前,先掌握Android源码的组成. Android源码目录结构 在Android源码中,按照不同功能代码被放在不同的目录下: 目录 描述 bionic 针对Android系统定制的仿生标准C库.链接器等所在目录,Android系统并没有使用Linux的glibc库,bioinc C库针对嵌入式系统做了优化,添加了一些And

分享编译Android源码的全过程

通过参考网上的相关资料,我编译Android源码的步骤如下: 1 我的系统是Ubuntu 8.04 2 系统上必须安装以下工具(摘自网上的资料):  sudo apt-get install build-essential sudo apt-get install make  sudo apt-get install gcc  sudo apt-get install g++  sudo apt-get install libc6-dev  sudo apt-get install flex  

Docker环境下编译android源码|编译可运行xposed

前言 因为我的电脑是Ubuntu18的版本,成功编译xposed刷入手机之后无法启动,检查了所有的环境,没有问题,发现可能是Ubuntu系统的兼容库的问题,但是我不可能重新安装系统吧,毕竟有点蠢,所以最好的方式就是在docker的Ubuntu容器中编译,统一环境问题,也可以隔离环境平时 工作开发环境,下面开始操作 安装配置docker docker加速,采用对国人友好的镜像地址 通过修改daemon配置文件/etc/docker/daemon.json来使用加速器,执行以下命令: 您可以配置 D