阳光沙滩-课程笔记 阳光沙滩-课程笔记
首页 (opens new window)
VIP (opens new window)
  • 课程笔记

    • 《Android项目喜马拉雅FM》
    • 《Android项目领券联盟》
    • 《AndroidStudio技巧》
    • 《Android自定义控件》
    • 《Android开发基础》
    • 《Android约束布局》
    • 《AOSP安卓开源项目》
    • 《RecyclerView》
  • 《领券联盟Nuxt.js》
  • 《博客系统后台管理系统vue.js》
  • 《博客系统门户Nuxt.js》
  • 《博客系统前后端分离后台》
  • 《博客系统部署》
  • 《摸鱼君后台》
  • 《OTA升级管理系统》
  • 阳光沙滩API (opens new window)
  • 领券联盟API (opens new window)
  • 博客系统API (opens new window)
首页 (opens new window)
VIP (opens new window)
  • 课程笔记

    • 《Android项目喜马拉雅FM》
    • 《Android项目领券联盟》
    • 《AndroidStudio技巧》
    • 《Android自定义控件》
    • 《Android开发基础》
    • 《Android约束布局》
    • 《AOSP安卓开源项目》
    • 《RecyclerView》
  • 《领券联盟Nuxt.js》
  • 《博客系统后台管理系统vue.js》
  • 《博客系统门户Nuxt.js》
  • 《博客系统前后端分离后台》
  • 《博客系统部署》
  • 《摸鱼君后台》
  • 《OTA升级管理系统》
  • 阳光沙滩API (opens new window)
  • 领券联盟API (opens new window)
  • 博客系统API (opens new window)
  • Android开发基础

  • Android项目-喜马拉雅FM

  • Android项目-领券联盟

  • AndroidStudio使用技巧

  • Android-Jetpack

  • ConstraintLayout

  • RecyclerView

  • 自定义控件系列

  • AOSP

    • AOSP课程计划
    • AOSP团队开发模式
    • Android格式化sd卡
    • AOSP-android必备基础知识 Linux Shell
    • AOSP日记,修改分辨率,修改dpi,全屏禁止下拉拖出状态栏
    • Android系统编译说明(AOSP)
      • source build/envsetup.sh
      • 加载各产品进来
      • lunch 产品名
      • make -j40
      • out输出
      • 镜像文件
    • Android系统编译-AOSP-创建自己公司的产品
    • AOSP-Android系统定制下载系统源码
    • AOSP-Android系统源码目录结构
    • 常见的变量说明
    • 编译Android系统的步骤
    • 安装Samba
    • AOSP-Repo代码管理
    • Android.mk
    • 编译可执行so库和可执行程序
    • AOSP-Androidmk里:=与+=的区别是啥?
    • 创建属于自己的产品
    • iphone12
  • ADB

  • 安卓
  • AOSP
TrillGates
2021-09-25
目录

Android系统编译说明(AOSP)

Android系统编译说明(AOSP)

前面我们已经去编译了android系统,只是告诉了同学们步骤,但是没有给大家说明一下每个步骤里的参数是什么意思。

相关文章

AOSP-Android系统定制下载系统源码 (opens new window)

使用虚拟机VM,Ubuntu 18.04.2 LTS编译android系统7.1遇到的问题 (opens new window)

接下来我们回顾一下之前的编译过程,并再了解五相关的命令。

# source build/envsetup.sh

source build/envsetup.sh
1

这个指令什么意思呢?

souce envsetup.sh就是把envsetup.sh里的命令载到当前的bash中,可以直接调用里面的命令。

env就是环境的意思,setup可以理解为设置,这个文件加载可以理解为编译准备

比如说里面有launch指令,有mm指令,有make指令....

如果你没有source的话,这些指令就不有。

# 加载各产品进来

图片描述

我们可以看到,这里面我们source以后,加载了这么多产品进来

有华为的,有google的,有htc的,有摩托罗拉的...

这些产品呢,都在device下,也就是设备。

一般来说:device/公司名称/产品型号/vendorsetup.sh

有了这些知识,我们后面是不是可以定制自己公司的系统了!

后面我们就着手去添加一个属于我们的产品。

# lunch 产品名

lunch 这个命令是从哪里来的呢?

其实谅是从我们前面的source 的 envsetup.sh里来的

相关的命令我们可以看这里

图片描述

图片描述

也可以lunch回车

列出来的产品就前面我们加载的产品

图片描述

lunch后如图:

图片描述

这些版本从哪 里来的呢?

就是从我们前面载入的各种device里定义的

比如说我们第一个/device/asus/fugu/vendorsetup.sh

里定义了这些内容

add_lunch_combo full_fugu-userdebug
add_lunch_combo aosp_fugu-userdebug
1
2

就是添加full_fugu-userdebug和aosp_fugu-userdebug到列表里,lunch的时候会遍历

知道 这些,我们后面自定义自己的产品,就知道这个步骤的作用了。

# make -j40

make -j16

make 就是构建,可以理解根据make file编译内容了。-j是job,推荐使用cpu的线程数*4,比如说我的CPU是16核,32线程那么我就可以使用make -j128 全功率去编译。

在android源码里,make file,也就是make文件包括三大分

  • 在build/core下的mk
  • 在device目录下的各种mk
  • 以及各app/jar/aar模块单独的mk

另外,除了make以外,还要留意一下mm命令和mmm命令,这个命令也挺好用的。

我们可以单独编译某些模块

然后通过

make snod
1

生成新的镜像即可刷机

# out输出

当我们编译完系统以后,所编译的内容,包括结果,中间文件都会放在out目录下

  • /out/host/ 这个目录包含了针对主机的 Android 开发工具的产物。即 SDK 中的各种工具,例如:emulator,adb,aapt 等。

  • /out/target/common/ 该目录下包含了针对设备的共通的编译产物,主要是 Java 应用代码和 Java 库,有时候我们称为中间文件。

  • /out/target/product/<product_name>/ 包含了针对特定设备的编译结果以及平台相关的 C/C++ 库和二进制文件。

# 镜像文件

我们在out/target/product/<产品名称>/目录下可以找到这些产出的镜像,用于刷机

  • system.img 包含了 Android OS 的系统文件、库、可执行文件以及预置的应用程序,将被挂载为根分区
  • ramdisk.img 在启动时将被 Linux 内核挂载为只读分区,它包含了 /init 文件和一些配置文件。它用来挂载其他系统镜像并启动 init 进程
  • userdata.img 将被挂载为 /data,包含了应用程序相关的数据以及和用户相关的数据
  • boot.img Android系统启动下的Linux内核文件
  • xxx.bin Preloader,在Android系统启动前的引导程序
  • lk.bin 引导程序里面的轻量级操作系统
  • recovery.img 恢复模式镜像

好啦,先到这里,我们后面再去创建属于自己公司的产品,跟华为,htc,google这些一样。

编辑 (opens new window)
AOSP日记,修改分辨率,修改dpi,全屏禁止下拉拖出状态栏
Android系统编译-AOSP-创建自己公司的产品

← AOSP日记,修改分辨率,修改dpi,全屏禁止下拉拖出状态栏 Android系统编译-AOSP-创建自己公司的产品→

Theme by Vdoing | Copyright © 2022-2022 sunofbeach.net
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式