我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【Android】系统源码下载及编译

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【Android】系统源码下载及编译

源码及编译

步骤 1:创建一个空目录来存放源码:

mkdir aospcd aosp

步骤 2:获取最新版本的 repo 并签出 android-8.1.0_r1 分支:

repo init -u https://android.googlesource.com/platform/manifest -b android-8.1.0_r1

其中,android-8.1.0_r1 代表源码标记,代表我们将要获取 Android 8.1 的源码,如需查看其他版本的源码标记,可参阅 源代码标记和 build

步骤 3:将 Android 源码从默认清单中指定的代码库下载到本地工作目录:

repo sync

步骤 4:创建本地分支并关联 repo 上的所有仓库:

repo start ycx-dev --all

步骤 5:使用 envsetup.sh 脚本初始化编译环境:

source ./build/envsetup.sh

步骤 6:选择编译目标:

lunch aosp_arm64-eng

编译目标的格式说明:编译目标的格式是 BUILD-BUILDTYPE ,如 aosp_arm64-eng 这个目标,它的 BUILD 是 aosp_arm64,BUILDTYPE 是 eng 。

BUILD 指的是特定功能的组合的特定名称,即表示编译出的镜像可以运行在什么环境,例如 aosp_arm64-eng 中的 aosp(Android Open Source Project) 代表 Android 开源项目,arm 表示系统是运行在 arm 架构的处理器上的,arm64 则是指 64 位 arm 架构处理器

想查看 Android 设备的 cpu 架构,可以执行命令:adb shell getprop ro.product.cpu.abi

BUILDTYPE 指的是编译类型,通常有三种:

  • user:表示编译出的系统镜像版本可以用来正式发布到市场,这个版本是不能 root 的
  • userdebug:在 user 版本的基础上开放了 root 权限和 debug 权限
  • eng:表示开发工程师版本,拥有 root 权限,此外还附带了许多 debug 工具

如果我们在终端输入 lunch 命令,将会列出所有的编译目标:

在这里插入图片描述

步骤 7:开始编译(设置8个线程同时编译):

m -j8

参与编译的线程并不是越多越好,通常是根据你机器 cup 的核心来确定,公式为:core * 2,即当前 cpu 的核心的 2 倍

我们可以执行 cat /proc/cpuinfo| grep "cpu cores"| uniq 命令查看电脑 cpu 的核心数。

如果编译过程一切顺利,我们会在终端看到如下画面,表示编译成功!

在这里插入图片描述

步骤 8:如果我们 lunch 选中的编译目标是 1-6, 那么我们可以直接执行如下命令运行虚拟机看效果了:

emulator

稍等片刻,我们就可以在虚拟机上操作我们刚刚编译成功系统固件了。

如果我们 lunch 选中的编译目标是非 1-6, 那么我们可以编译的固件运行在真机上,具体步骤如下。

步骤 9:进入 fastboot 模式

adb reboot bootloader

步骤 10:解锁引导加载程序

fastboot flashing unlock

步骤 11:刷写设备

fastboot flashall -w

-w 选项会擦除设备上的 /data 分区;该选项在第一次刷写特定设备时可以加上,其他情况下不加也行。

刷写顺利的话,终端打印如下画面,则说明刷机成功了,此时机器会自动重启,稍等机器自动重启即可。

在这里插入图片描述

如果不想刷写所有分区,可以单独刷写某个指定分区,具体的命令为:

fastboot flash <分区名> <镜像文件名.img>

其中,<分区名> 指的是要刷写到哪个分区,比如 system、userdata 等;<镜像文件名.img> 指的是要刷写的 img 文件名称。

例如,如果想单独刷写 system.img,则可以输入以下命令:

fastboot flash system system.img

刷写完成后,不能直接简单的重启设备。需要执行以下命令来重新启动设备:

fastboot reboot

该命令会使设备从 fastboot 模式退出,并自动重启到正常的 Android 系统中。

编译问题

错误 1:flex-2.5.39: loadlocale.c:130:_nl_intern_locale_data

在这里插入图片描述

解决方法:在终端输入命令:export LC_ALL=C,然后重新编译即可。

错误 2:xmllint: command not found

解决方法:在终端输入命令:sudo apt-get install libxml2-utils,然后重新编译即可。

编译单模块并运行

例如,我们修改了 SystemUI 模块的代码,需要编译到机器上运行看看效果,那么可以这样,

步骤 1:在当前源码目录下执行编译命令:

make SystemUI

稍等片刻,就可以看见编译成功了:

在这里插入图片描述

步骤 2:获得系统写入权限:

adb root && adb remount

步骤 3:接下来把编译产物 push 到设备上即可:

adb push out/target/product/xxx/product/priv-app/SystemUI /system/product/priv-app/

步骤 4:重启设备上层:

adb shell stop && adb shell start

重启完毕后即可看到修改后的效果了。

来源地址:https://blog.csdn.net/yang553566463/article/details/129029734

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

【Android】系统源码下载及编译

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Ubuntu Android源码以及内核下载与编译

本教程是基于Ubuntu下Android6.0.1源码以及内核的下载和编译,记录一下,以后也就不用自己去找资料,一遍一遍的尝试了。可以翻墙的,英语好的,直接去AndroidSource. 系统环境:Ubuntu14.04LTSAndroid
2022-06-06

Deepin下载Android源代码并编译

1.下载Git $ sudo apt-get install git 终端中输入Git验证是否安装完毕  2.安装python sudo apt-get install python 3.安装curl sudo apt-get instal
2022-06-06

windows系统下载android源码

入不了source.android.com,故是网友介绍的一种方式下载的。下载完毕后,源码目前有3.83G大小。首先,你先到 http://code.google.com/p/msysgit/downloads/list 上下载Git-xx
2022-06-06

Android源码 在Ubuntu上下载,编译和安装

看完了前面说的几本书之后,对Linux Kernel和Android有一定的认识了,是不是心里蠢蠢欲动,想小试牛刀自己编译一把Android源代码了呢?一直习惯使用Windows系统,而Android源代码是不支持在Wi
2022-06-06

Android内核源码 在Ubuntu上下载,编译,安装

从源代码树下载下来的最新Android源代码,是不包括内核代码的,也就是Android源代码工程默认不包含Linux Kernel代码,而是使用预先编译好的内核,也就是prebuilt/android-arm/kernel/kernel-q
2022-06-06

Android笔记之:CM9源码下载与编译的应用

公司最近也开始基于android4.0 ICS修改框架了,公司的手机暂时不适合拿回家测试,也没有kernel的权限。从个人的角度看,我手上现在有两部手机,一部是Htc G9 Aria,一部是Samsung I9100 Galaxys2,Cy
2022-06-06

下载、编译、运行android 7.1系统详解(ubuntu 16.0.4)

Android 7的系统版本新增的很多的新功能,比如说任务处理功能,允许用户双击“最近”按钮去快速切换到自己上一次使用的应用程序中。同时,“最近”菜单中还有一个“清除全部”按钮。再比如说新增了省流量功能,在接近用户计费周期末,或是流量包本身
2022-06-06

编译harmonyos的下载源码以及搭建环境过程

编译harmonyos的下载源码以及搭建环境过程,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1、环境搭建编译鸿蒙的源码建议在Ubuntu20.04下进行,windows下
2023-06-15

利用源码编译Android系统的APK和可执行命令的方法

编译Android系统APK 1、设置环境export ANDROID_HOME=/home/administrator/soft/android export PATH=$PATH:$ANDROID_HOME/out/host/linux
2022-06-06

从源码编译Android系统的Java类库和JNI动态库的方法

利用源码编译Android系统Java类库 1、编写Java项目和Android.mk文件├── Android.mk└── src└── com└── lhw└── framework└── led└── Led.javaLed.java
2022-06-06

mac 系统下 编译 php7.1 报错及解决方式

在使用 configure 配置过程中报的错误。$ ./configure --prefix=/usr/local/php7/ --enable-debug --enable-maintainer-zts --enable-mysqlnd
mac 系统下 编译 php7.1 报错及解决方式
2024-02-27

Android中图片压缩方案详解及源码下载

Android中图片压缩方案详解及源码下载 图片的展示可以说在我们任何一个应用中都避免不了,可是大量的图片就会出现很多的问题,比如加载大图片或者多图时的OOM问题,可以移步到Android高效加载大图及多图避免程序OOM.还有一个问题就是图
2022-06-06

Android编程实现手绘及保存为图片的方法(附demo源码下载)

本文实例讲述了Android编程实现手绘及保存为图片的方法。分享给大家供大家参考,具体如下: 运行效果图预览:应 yzuo_08 要求做了此Demo,跟以前那个手写板Demo不同的是可以将画布的内容保存为图片。 附上关键代码: MainVi
2022-06-06

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录