之前看源码都是在Windows下用SourceInsight看,虽然达到了研究源码的效果,但终究还是有遗憾。。。趁着周末,准备在Ubuntu虚拟机上下载编译源码。

之前下源码时,有了解一些Android源码的情况。网上的教程很多也是从谷歌官网下源码,但是最近蓝灯不好用,翻墙效率有点低,而且翻墙的网速肯定无

法和国内的网速相比。所以,从国内的镜像下载源码无疑是个更好的选择。国内的镜像也有好几个,不过我最终选择了清华大学的镜像,也许这是学生时代的

情怀影响了我。

确定了要使用清华大学的镜像,就先找清华大学镜像的教程。教程地址:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

根据教程内容,下载Android源码。中间也遇到几个坑。。。以下是下载步骤:

1.打开终端

2.依次输入以下命令:

mkdir ~/bin
PATH=~/bin:$PATH
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o ~/bin/repo #使用tuna的git-repo镜像
chmod a+x ~/bin/repo

3.打开bin文件夹下的repo文件,将

REPO_URL = 'https://gerrit.googlesource.com/git-repo'

改为

REPO_URL = 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'

4.使用每月更新的初始化包。使用方法如下:

wget -c https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # 下载初始化包
tar xf aosp-latest.tar
cd aosp# 解压得到的 aosp工程目录
# 这时 ls 的话什么也看不到,因为只有一个隐藏的 .repo 目录
repo sync # 正常同步一遍即可得到完整目录
# 或 repo sync -l 仅checkout代码

初始化包有40多G,趁着昨晚网速快,电脑下着,自己先去睡觉了,第二天起来已经下好了。

执行最后一行命令结束后,aosp文件夹里可以看到源码,这个源码是最新的(Android P),要其他版本的源码的话,可以切其他分支。

注意:下的包真的大,我刚开始给虚拟机设50G硬盘,完全不够用。。。后面直接扩充到150G了。。。(编译之后也基本满了。。。)

下载源码到这里结束了,接下来是编译源码。编译步骤如下:

1.安装openjdk1.8

sudo apt-get install openjdk-8-jdk

2.开始编译

source build/envsetup.sh 

lunch aosp_arm-eng 

make -j8   #(这里的数字是根据系统配置来的,比如2核2线程的就可以选择j4,数字越高编译越快,前提你的电脑硬件要支持。。。我的电脑刚好是8)

之后就是漫长的编译期。。。我吃饭回来的时候,显示编译失败了。。。不过当时电脑出了点故障,没有理会,重启之后继续编译。然后。。。编译通过了。。。

anyway,编译通过了,到了开启模拟器验证的时候了。。。输入以下命令打开模拟器:

emulator    #退出终端后,第二次进入终端执行该命令会报错,这是编译环境的原因,需要再次执行命令  sourcebuild/envsetup.sh;lunchaosp_arm-eng

模拟器成功开启,就是第一次打开的时候,老是要我选择关闭还是等待。。。Android P的源码还是Bug比较明显吗。。。

以下是模拟器截图:

下载编译都ok了,该收工了~~~

通过清华大学镜像下载Android源码并编译源码的更多相关文章

  1. ubuntu配置android开发环境和编译源码遇到的一些问题

    ---------------------------------------------环境变量设置--------------------------------------------- 1.设 ...

  2. 利用国内镜像下载Android源码,并编译生成image镜像文件

    为了编译安卓源码,首先需要一个Linux,本次采用Ubuntu Kylin14.04,内核版本3.13.装在四核.4G内存.1T硬盘的虚拟机上查看内核版本号:$uname -all清华镜像地址清华镜像 ...

  3. Android源码及SDK国内镜像下载

    Android源码及SDK国内镜像下载Android源码下载: 今天发现,清华大学提供AOSP镜像,以前都是从Google的站点下载同步更新的,但是现在有了国内的镜像站点就好多了,下载Androidd ...

  4. [Android] repo 下载Android源码(国内镜像)

    reference : http://blog.csdn.net/shenlan18446744/article/details/51490560 repo 下载Android源码(国内镜像) 下载r ...

  5. Android系统定制和源码开发以及源码编译(附视频)

    Android系统定制配套视频: 为了把Android系统源码定制和编译的课程讲完,从准备到录制完所有的视频,一共花去了近半年的时间,前前后后各种下载源码,编译源码,系统不兼容,版本适配,虚拟机配置困 ...

  6. Ubuntu下Ruby的下载和编译源码安装

    1.Ruby的下载 Ruby可以在Ruby 官网上下载,如果想获取更多的Ruby版本,可以到淘宝镜像网站下载. 2.Ruby的编译源码安装 解压 首先把下载下来的源码压缩包解压到自己指定的目录 编译安 ...

  7. 通过镜像下载最新Android源码

    参考了这两篇博客: http://blog.sina.com.cn/s/blog_70b9730f01016peg.html http://www.cnblogs.com/act262/p/41790 ...

  8. Android 7.1.1系统源码下载、编译、刷机-Nexus 6实战

    想成为一位合格的Android程序员或者一位Android高级工程师是十分有必要知道Android的框架层的工作原理,要知道其工作原理那么就需要阅读Android的源代码. 想要阅读Android的源 ...

  9. 下载android源码

    http://source.android.com Step 1.按照http://source.android.com/source/initializing.html配置好android编译环境 ...

随机推荐

  1. 【实习】从ubuntu迁移过来的代码,在centos上编译问题的解决汇总

    目前自己的开发环境(同将来线上环境)是centos 7.我这里主要实现服务端.需要组里其他同学提供一个接口(视频编辑).公司内部自己开发环境 通常是台式ubuntu16.04.所以提供视频处理接口是在 ...

  2. Django的rest_framework的分页组件源码分析

    前言: 分页大家应该都很清楚,今天我来给大家做一下Django的rest_framework的分页组件的分析:我的讲解的思路是这样的,分别使用APIview的视图类和基于ModelViewSet的视图 ...

  3. Pay attention to "Changing"

    data l_ct_imseg type vsep_t_imseg. refresh l_ct_imseg. append lines of ct_imseg to l_ct_imseg. call ...

  4. 带标签的循环语句、switch

    今天继续更新,控制流程的剩余部分内容,带标签的循环语句中的continue/break 的使用方法,以及switch关键字的使用方法.例1:带标签的continue/break.package com ...

  5. Netsharp下载及环境搭建

    作者:秋时  日期:2014-02-22   转载请保留原文链接 更新日志 2014-02-22 版本4.0 第一次发布 2014-04-19 版本4.01 修复网友提的部分bug,添加Netshar ...

  6. KD-树(上)

    来自于https://zhuanlan.zhihu.com/p/23966698 思路篇 导语:kd 树是一种二叉树数据结构,可以用来进行高效的 kNN 计算.kd 树算法偏于复杂,本篇将先介绍以二叉 ...

  7. LOJ-10103(求删去割点后最多的连通分量)

    题目链接:传送门 思路: (1)这道题的图可能不连通,所以需要多次Tarjan: (2)设置cut[i]=x数组表示第i个节点被删除后右多少个子图(这个只是在一个图中),如果是根节点就要-1,因为根节 ...

  8. C# Autofac集成之Framework WebAPI

    Web API 2集成需要Autofac.WebApi2 NuGet包. Web API集成需要Autofac.WebApi NuGet包. Web API集成为控制器,模型绑定器和操作过滤器提供了依 ...

  9. Android 发展思路

    1. 做一个有 ‘特色’ 的程序员 Android 开发,本身并不是一个可以走得多远的方向,真正有价值的地方在于与具体的业务方向结合,比如:Android 与音视频技术,Android 与智能硬件交互 ...

  10. 用document.readyState实现网页加载进度条

    概述 之前以为给网页设置加载进度条很麻烦,今天一学真是超级简单,记录下来供以后开发时参考,相信对其他人也有用. readyState 主要运用了document.readyState和nprogres ...