Android源码之路(二.环境配置与整编)

Ubuntu 整编 AOSP 作为Android应用层开发多年, 一直不了解 Framework和Android系统的运行原理真的说不过去。希望本篇博客可以带你构建自己的Android系统,打开通向 Framework的大门。 阅读详情
为了实现在VM ubuntu 16.04 编译android 6.0源码,配置编译环境与源码的整体编译

1.前言:在Ubuntu编译android源码时,编译不通过最主要的原因是缺少所要依赖资源,所以在安装依赖时一定要看是否成功。

(1).编译条件:1.合适的Ubuntu系统:http://blog.youkuaiyun.com/github_38117599/article/details/77926922

(2).android6.0源码:http://pan.baidu.com/s/1qXZRuuK

2.配置Ubuntu编译条件
(1).备份sources.list,以防出错

sudo cp /etc/apt/sources.list /etc/apt/sources.list_back

(2).修改sources.list

sudo gedit /etc/apt/sources.list

前面追加

deb http://mirrors.aliyun.com/ubuntu/ quantal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ quantal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ quantal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ quantal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ quantal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ quantal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ quantal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ quantal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ quantal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ quantal-backports main restricted universe multiverse

(3).安装依赖,确保每次要看是安装成功

sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386 
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib 
sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 
sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
sudo apt-get install git-core gnupg flex bison gperf build-essential  
sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib 
sudo apt-get install libc6-dev-i386 
sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev 
sudo apt-get install lib32z-dev ccache
sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4

(4).安装Android 6.0开始Android源码的编译需要的OpenJDK7


(可选)可以把sources.list中,接着步骤(2)后面的用下面替换掉,可以加快openjdk的下载速度,以及其他的一些常用的软件。

# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse

a.下载安装jdk

sudo add-apt-repository ppa:openjdk-r/ppa 
sudo apt-get update
sudo apt-get install openjdk-7-jdk 

b.配置profile

sudo gedit /etc/profile

c.在末尾添加代码

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export JRE_HOME=${JAVA_HOME}/jre 
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib 
export PATH=${JAVA_HOME}/bin:$PATH

d.使profile生效

source /etc/profile

c.检查OpenJDK是否成功

java -version

这里写图片描述

3.合并后解压android6.0源码

a.把下载到window的8个文件复制到Ubuntu里面
这里写图片描述

b.合并8个文件

cat Android6_r1_*>Android6_r1.tgz

c.验证 Android6_r1.tgz 是否匹配 23858108e95095dc8d0292505a0d28e4

md5sum Android6_r1.tgz

这里写图片描述


注意:如果合并后的文件md5码不正确,要分别验证8个分卷,不匹配的卷要重新下载

以下是每个分卷的md5 :
a4129f5d2d6a8293ee3ee3ed4343f0fd Android6_r1_aa
e601f1239c0f60895cc6b9199b1cd7d1 Android6_r1_ab
af2d9e653a51072031ce40b62791c2de Android6_r1_ac
482866559a4d6a8533411e512436363c Android6_r1_ad
cef15f072f6d52243d9dea126c22f794 Android6_r1_ae
457979779748dae9f5f4f3c99db04826 Android6_r1_af
7ca217b1fd60a41c7ff9b7e294864fe3 Android6_r1_ag
5b468da830ef51fdd5f35d5d8ac72bd1 Android6_r1_ah
ba80f4acf5f61b1b82d3c1ba6ba702c1 Android6_r1_ai
4350d1bb74589ad03735279421dced92 Android6_r1_aj


d.解压

tar -zxvf Android6_r1.tgz

4.编译过程

(1).修改Android.common_build.mk文件

把ifneq ($(WITHOUT_HOST_CLANG),true) 改成 ifeq ($(WITHOUT_HOST_CLANG),false)
 sudo gedit art/build/Android.common_build.mk

然后Ctrl+F 搜索后,替换两个地方
这里写图片描述
(2).在 .bashrc文件末尾添加:export USE_CCACHE = 1

echo export USE_CCACHE=1 >> ~/.bashrc

(3).接着导入继续编译的命令(详情vim build/envsetup.sh)

source build/envsetup.sh

(4).接着执行lunch,然后选择1,如下图
这里写图片描述

(5).接着执行,数字8根据cpu核心数决定的,通常Ubuntu中的cpu*2+2,在cpu支持条件下,选择越大就编译速度越快

make -j8

接下来是等待漫长的过程,我编译了4个小时
这里写图片描述

5.开启模拟器

emulator

当开启模拟器,这两个种错误时
emulator: WARNING: system partition size adjusted to match image file (1536 MB > 200 MB)
emulator: WARNING: data partition size adjusted to match image file (550 MB > 200 MB)
执行下面,杀死进程后,给交换区分配2048M内存,让模拟器跑起来

ps aux | grep emulator
kill 进程号 -9
emulator -partition-size 2048

6.后语

(1).感谢这位博主资源依赖库:http://blog.youkuaiyun.com/fuchaosz/article/details/51487585

(2).还有感谢这位博主的源码:http://blog.youkuaiyun.com/ilittleone/article/details/6823441

(3).使用vm 安装的ubuntu16.04请看:http://blog.youkuaiyun.com/github_38117599/article/details/7792692

(4).Android源码之路(三.配置mk文件):http://blog.youkuaiyun.com/github_38117599/article/details/78009910

保姆级教程:在Android Studio里手动编译MTK Android 14的Settings应用(附完整依赖包清单) 本文提供了一份详细的保姆级教程,指导开发者如何在Android Studio中手动编译MTK Android 14的Settings应用。教程涵盖了环境准备、项目结构配置、依赖处理、关键问题解决方案以及常见编译问题排查,帮助开发者高效完成系统级应用的定制开发。 阅读详情

相关推荐

Pixel4内核修改实战:从下载Android 12内核源码到快速刷入测试(避坑Touch驱动路径问题)

本文详细介绍了Pixel4在Android 12环境下进行内核修改的全流程,包括独立内核编译环境搭建、触控驱动路径问题的解决方案以及内核刷入策略对比。特别针对Pixel4的触控驱动路径问题提供了实战验证的修正步骤,帮助开发者高效完成内核修改与测试。

weixin_28693683的博客 375

(转)新使用Eclipse开发Android源码

转自http://blog.csdn.net/zhangchiytu/archive/2011/04/08/6310488.aspx谢谢他的共享让我很方便的学会了编译源码过程 说明:这篇文章是介绍如何开发Android源码,包括各平台的源码而非仅仅Google释放的源码,我采用的是MSM7267. 前提不需要SDK,不需要ADT,通过整个工程...

weixin_30762087的博客 177

Android SELinux从入门到精通:安全策略实战与深度调试指南

强制访问控制(MAC)是构建现代操作系统安全体系的核心机制,它通过在传统的自主访问控制(DAC)之上,建立一套由安全策略强制执行的、更细粒度的权限管理模型。其原理是为系统中的所有主体(如进程)和客体(如文件)赋予安全上下文标签,并依据预定义的策略规则严格管控访问行为,从而有效遏制权限提升与横向移动。这项技术的核心价值在于实现“默认拒绝”的安全基线,极大提升了系统对抗漏洞利用和恶意软件的能力,广泛应用于对安全性要求极高的移动设备、服务器和物联网场景。在Android生态中,SELinux作为其安全架构的基石,

weixin_33726313的博客 443

android开机动画源文件配置

开机动画为一张图片时: 1.新建文件夹part0(可任意取),将动画图片取名为0001.png,放入part0 2.新建txt文本取名为desc.txt,其中配置内容为(示例):   720 1280 5   p 0 0 part0     第一行720 1280代表分辨率宽*高,5代表是定义动画播放的预订帧率(FPS)   第二行第一个参数p是google default的设

m_float的博客 2376

深入解析ISO12233标准:SFR算法从理论到代码实现

本文深入解析ISO12233标准中的SFR算法,从理论到代码实现全面介绍如何量化成像系统的解析力。通过e-SFR算法测量边缘扩散函数(ESF)和空间频率响应(SFR),结合光学原理和实际代码示例,帮助开发者准确评估影像质量。文章包含关键步骤的Python实现和工程优化技巧,适用于相机测试、镜头评估等应用场景。

weixin_29200485的博客 154

LEfSe分析避坑指南:如何解决R语言中的常见错误与优化结果可视化

本文提供了R语言中进行LEfSe(线性判别分析)微生物组差异分析的全流程避坑指南。详细解析了从数据格式准备、参数调优(如显著性水平与LDA阈值)、结果可靠性验证到使用ggplot2进行高级可视化的实战技巧,帮助用户规避常见错误,获得更稳健、美观的分析结果。

weixin_29098391的博客 361

Android源代码 目录结构分析

Google提供的Android包含了原始android的目标机代码,主机编译工具、仿真环境,下载的代码包经过解压后(这里是Android2.2的源码包),源代码的第一层目录结构如下: |– Makefile |– bionic (bionic C库) |– bootable (启动引导相关代码) |– build

yx19861211的博客 915

Windows 10 本地硬盘变成了可弹出磁盘

今天新装了系统, 电脑是一个SSD+HHD, 没想到装好之后右下角显示可安全删除设备, 两个硬盘在那里. 这还得了. 查了一下午, 大致知道了是什么问题. Standard SATA AHCI controller使用高性能的硬盘模式就会把硬盘看作是一个可热插拔的存储器, 所以自然就会显示可弹出. 如果你的BIOS支持关闭HotSwap或者HotPlug, 那么直接关闭就可以了. 或者你直接在BIOS里把磁盘模式改为IDE, 不过这样就发挥不好你SSD的高性能了. 还有一种解决方法, 就是手动让系统把这两个

落日之城 4万+

自己动手编译最新Android源码及SDK

在Android Studio代码调试一文中,简单的介绍了代码调试的一些技巧.现在我们来谈谈android源码编译的一些事.(俺认为,作为android developer人人都应该有一份自己Android源码,这样我们就可以随时对自己有疑惑的地方通过亲手调试来加强理解). 本文适用于Ubuntu 16.04上编译Android 6.0.*,其他情况请酌情处理,自行参考官网吧. 请首先

JerryWu145的专栏 7788

企业级大模型落地:私有化部署的安全合规全流程实战指南

摘要:本文针对企业在大模型私有化部署中面临的数据泄露、合规风险及系统稳定性难题,提出一套覆盖数据安全、模型合规、审计追踪与灾备方案的全流程解决方案。通过双加密管道(国密SM4传输加密+AES-GCM存储加密)、SGX可信执行环境等技术,实现数据全生命周期保护;结合等保2.0三级要求与《生成式AI服务管理暂行办法》,提供合规性实施细则;并给出本地GPU集群、混合云、边缘推理盒子三种企业级部署方案及成本模型。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 908

使用MiniExcel.SaveAsByTemplate快速地保存百万数据

该代码展示了如何使用MiniExcel快速生成并导出百万级销售数据。核心方法GenerateLargeData()可生成指定数量的随机销售记录,包含客户名、日期、VIP状态、积分等20个字段。通过随机函数模拟真实数据分布,并支持自定义数据量(默认100万条)。配合Excel模板使用MiniExcel.SaveAsByTemplate()方法,能高效地将大数据量导出为Excel文件,且处理速度极快。代码结构清晰,包含数据生成、随机日期辅助方法和数据模型类,适合需要批量生成测试数据或导出大型报表的场景。

大坡3D软件开发 253

二、Android系统源码编译及刷机实战

在Android系统源码下载实战 一文中,我们配置好了编译环境以及下载好了系统源码,下面我们我们来实战系统源码的编译。Google官方教程https://source.android.com/source/building一、下载专有的二进制文件目前网络上的中文教程以及出版的书籍几乎都是直接编译AOSP源码用模拟器加载启动镜像。但是要想让用AOSP源码编译出的系统镜像在特定的设备中运行,仅仅编译AO

七月冷雨 1万+

基于matlab实现的水果识别系统设计

本项目针对多种常见水果混合的图像,利用 Matlab 软件,对水果的识别进行研究。根据水果和背景的差别选取阈值,对去噪增强对比度后的图像进行二值化处理。再对图像进行边缘检测,选定连通区域,标记后再对不同种水果的颜色,形状,大小等特征进行快速识别水果,从而实现对水果的正确分拣。:水果识别、MATLAB、数字图像处理。

热情、奔放、快乐编程! 4854

android11源码编译,macOS Big Sur 编译Android11.0源码过程总结

配置设备MacBook Pro (15-inch, 2018) - macOS Big Sur全程按照 官方文档 配置即可下载由于国内的网络原因,需使用镜像进行init:repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-11.0.0_r1 --repo-url=https://gerrit-goo...

weixin_42627541的博客 832

优快云 付费专栏连载第 3 篇|Cadence Allegro 8 层板布局实战教程:RK3568 硬件模块化分区布局,DDR4 内存约束区域设置、布局禁忌避坑指南

本文是 RK3568 8 层板高速 PCB 设计实战专栏的第 3 篇,聚焦 DDR4 布局阶段的核心方法论与 Allegro 实操。文章从布局前 6 项前置检查清单入手,系统讲解模块化分区布局的五大黄金原则,并给出 160mm×100mm 样板的 5 大功能分区实战案例。随后以图文步骤演示如何在 Allegro 中创建 ROOM_DDR4 与 ROOM_CPU 约束区域,并强调 Hard Room 硬约束的强制校验作用。

weixin_44520581的博客 1732

【100%通过率】华为od机试C卷【出差 / 员工派遣】C++ 实现

某公司部门需要派遣员工去国外做项目。现在,代号为 x 的国家和代号为 y 的国家分别需要 cntx 名和 cnty 名员工部门每个员工有一个员工号 (1,2,3,......),工号连续,从 1开始。部长派遣员工的规则:

MISAYAONE的博客 2193

Android源码之路(一.安装Ubuntu系统)

1.前言:在VM12虚拟机创建ubuntu16.04,解决编译时:make: fork: 无法分配内存等跟window系统不太兼容的错误。 成功编译的结果2.安装ubuntu条件: 1.VMware12虚拟机 2.ubuntu-16.04.3-desktop-amd64.iso镜像文件 3.硬盘空间130g 3.安装过程 (1).新建 (2).选择自定义 (3).下一

秦城季的博客 2303

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Android9,墙都不扶就服你

三 . 下载源码 建立工作目录: mkdir aosp cd aosp 这里如果想使用清华镜像来更新repo,可以加上如下内容到你的~/.bashrc中: export REPO_URL=‘https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/’ 设置身份,添加自己的git邮箱和密码: git config --global user.email “usergmail@gmail.com” git config --global user.n

m0_64604842的博客 110

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

ubuntu16.04编译android6.0源码

经过了3天时间的煎熬 各种google 这里顺便黑下。度太垃圾,,终于把android 6.0的源码编译通过了,下面就讲下在这过程中遇到的坑,以帮助有需要的人 少走弯路,其实也是作为我的一个笔记来记的。下面进入正题. 编译环境 UbuntuKylin 16.04 LTS Android 6.0_r1 Open JDK 7 虚拟机 VMware12 安装教程:https://jingya

qq_16412311的博客 811

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

android获取源代码、编译、命令 .

2010-05-07 14:13 1249人阅读 评论(0) 收藏 举报 源码主页:http://android.git.kernel.org/ 正常下载步骤:         $ mkdir mydroid-froyo         $ cd mydroid-froyo         $ repo init -u git://android.g

hare_Lee的专栏 1228

GSYVideoPlayer项目中的IJKPlayer动态库编译指南

在视频播放器开发领域,IJKPlayer作为一个基于FFmpeg的轻量级Android/iOS视频播放器框架,因其强大的性能和灵活的扩展性被广泛应用。GSYVideoPlayer项目正是基于IJKPlayer进行二次开发的优秀播放器解决方案。 本文将详细介绍如何在各种环境下编译IJKPlayer的动态链接库(so文件),特别是支持HTTPS协议的自定义编译过程。这对于需要定制化播放器功能或优化性...

gitblog_00002的博客 863

firefly-rk3399开发板100篇 之 001 编译android代码,给开发板下载固件

firefly-rk3399开发板学习笔记第一篇 下载代码,编译代码。 给开发板下载固件。

sz189981的博客 3316

AOSP介绍

清华大学AOSP镜像站 AOSP | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror Android源码学习方法 参考:想学习android源码,该如何组织? - 知乎

DreamWendy 2986

AOSP解耦独立应用总结

本文基于Android Q,介绍将AOSP中的仓库解耦为独立应用时的一些疑难点。

进击的小宇宙 1856

Android Framework模块编译避坑指南:从修改到部署的完整流程

本文详细介绍了Android Framework模块从代码修改到部署上线的完整编译流程。针对Android Framework开发中常见的编译错误、模块定位、产物替换及权限设置等核心难点,提供了实用的避坑指南和解决方案,帮助开发者高效安全地完成系统级修改。

desk3的博客 431

Ubuntu搭建AOSP代码和运行emulator

更新repo的运行过程中会尝试访问官方的git源更新自己,如果想使用tuna的镜像源进行更新,可以将如下内容复制到你的~/.bashrc里。emulator -kernel 内核地址/goldfish/arch/x86/boot/bzImage。编译报错停止,可以free -m查看 swap分区的大小。源码目录下(首先要mak整编过aosp_x86_64-eng的分支)需要查看自己源码下prebuilts/gcc目录下的交叉编译环境。需要修改goldfish下的makefile文件。lunch 编译版本。

weixin_38916092的博客 1250
上一篇: Android源码之路(一.安装Ubuntu系统)
下一篇: 笔记之git工作使用
秦城季
博客等级 码龄10年 46粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值