固态硬盘编译android源码,Mac 下的 Android 8.1源码编译(LineageOS 15.1 for XiaoMi Mix2)

2023-10-26

编译环境:

OSX 10.12

Xcode 8.3.3

JDK 8

Android SDK

需要用到的软件(作者编译时遇到需要安装的目前就这些,不排除有用到之前自己装过的)###

Sed

MacPorts

Homebrew

Imagemagick

Gnupg

Curl

Ccache

源码同步

代码同步服务,我们使用清华大学开源软件镜像站提供的源码同步服务,速度贼快,再也不用FQ了.

过程摘录

下载 安装 repo 工具阶段:

下载 repo 工具:

curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > 存放repo工具的路径/bin/repo 如果此处提示curl未安装,请移步"安装编译需要用到的软件"部分,进行curl的安装.

赋予 repo 执行权:

chmod a+x 存放repo工具的路径/bin/repo

设定 repo 工具更新源到系统环境变量里(建议必须设定,否则默认使用谷歌源同步repo更新,可能失败,或者使用repo工具都会有相当长的时间花在检测更新上):

设定 repo 工具到环境变量中

export PATH=你存放repo工具的路径:$PATH

至此,repo工具的配置就告一段落了.

代码同步:

1.创建一个大小写敏感的分区,或者创建一个大小写敏感的镜像文件,用来存放 同步下来的源码.

2.进入存放源码的路径

3.在当前路径下初始化源码仓库:

4.同步

repo sync -j x -c 这里的x代表线程数

5.如果同步出现错误:

repo sync中途出现error: error: Exited sync due to fetch errors

使用 repo sync -j x -f --force-sync

同步的时候出现bundle错误

使用 repo sync --no-clone-bundle

安装编译需要用到的软件

1.安装 Homebrew

2.安装Sed,mac本身自带了Sed软件,但是和源码中需要使用的版本不太一样,会有问题,会导致编译失败,所以需要安装新的.

3.安装 Imagemagick

brew install Imagemagick

3.安装 Gnupg

brew install Gnupg

4.安装 Ccache

brew install Ccache

在环境变量中添加

export USE_CCACHE=1

export CCACHE_COMPRESS=1

ccache -M 50G 这个50G代表缓存的大小,建议最小50G,作者配置了100G.

6.通过 MacPorts 获取 Make、Git 和 GPG Curl 程序包等.

POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg

总结一下安装编译需要用到的软件部分: Homebrew 真棒!

开始编译前的一些配置

环境变量添加:

export ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4G"

防止编译器内存溢出,从而导致编译失败.

开始编译 初次编译

cd 进入源码根路径

初始化编译环境

source build/envsetup.sh

将小米mix2 打开USB调试连接到电脑

cd 源码根路径/device/xiaomi/chiron

然后执行从小米手机获取系统底层所需的二进制文件以及配置,最好是miui9,miui10的底层有更新LineageOS 目前还未进行适配,也可以直接刷入LineageOS 最新版本,然后进行文件提取

./extract-files.sh

然后执行

breakfast chiron

返回源码根路径

croot

紧接着就是开始编译,执行

brunch chiron

然后就是漫长的等待.

博主的电脑:

1.MacBook Pro (13-inch, 2016, Two Thunderbolt 3 ports)

2.CPU 2 GHz Intel Core i5

3.8 GB 1867 MHz LPDDR3

4.256G固态

5.编译使用外置机械硬盘7200转

光编译应该花了最起码8小时,没有使用固态硬盘进行编译以及存放编译缓存(ccache),这么做的理由是,16款mbp的性能瓶颈在于CPU,用了固态还是一样,硬盘使用率并没有达到极致,内存也还好,使用路一直比较低,甚至还没有AndroidStudio高,编译全程CPU占用率爆表,硬盘使用率极低.

开始编译(适用于编译中断继续编译)##

初始化编译环境

source build/envsetup.sh

开始编译

brunch chiron

一些遇到的问题

jack-server 不常见错误之 Communication error with Jack server (1).

出现此类问题时,jack-server 无错误日志文件产生,按照错误提示进行自检也没有检测到错误,但就是无法启动jack-server.

FAILED: setup-jack-server

/bin/bash -c "(prebuilts/sdk/tools/jack-admin install-server prebuilts/sdk/tools/jack-launcher.jar prebuilts/sdk/tools/jack-server-4.11.ALPHA.jar 2>&1 || (exit 0) ) && (JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4G" prebuilts/sdk/tools/jack-admin start-server 2>&1 || exit 0 ) && (prebuilts/sdk/tools/jack-admin update server prebuilts/sdk/tools/jack-server-4.11.ALPHA.jar 4.11.ALPHA 2>&1 || exit 0 ) && (prebuilts/sdk/tools/jack-admin update jack prebuilts/sdk/tools/jacks/jack-4.32.CANDIDATE.jar 4.32.CANDIDATE || exit 47 )"

Jack server already installed in "/Users/lion/.jack-server"

Communication error with Jack server (1), try 'jack-diagnose' or see Jack server log

Communication error with Jack server 1. Try 'jack-diagnose'

Communication error with Jack server 1. Try 'jack-diagnose'

解决方案:

此错误和当前系统所安装的一些软件有关,比如curl.还有openssl

6.通过 MacPorts 获取 Make、Git 和 GPG Curl 程序包等.

POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg

最后是一些相关文章或教程

遇到问题,或者有什么想法,或者有什么建议,或者哪里有问题,请留言或者加Q

853151446

如果我的这篇文章有帮到你,麻烦帮我点个赞,谢谢!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

固态硬盘编译android源码,Mac 下的 Android 8.1源码编译(LineageOS 15.1 for XiaoMi Mix2) 的相关文章

  • 51单片机学习笔记之中断(外部中断、定时器中断、中断嵌套)

    要学习51单片机中断的朋友 拥有这一篇博文就够了 深入浅出 里面包含了寄存器 外部中断 定时器中断 中断嵌套等的讲解 还有代码实战 快一万字 写得不容易 还请大家点赞支持一下 后续持续更新 一 寄存器 1 什么是寄存器 2 寄存器怎么用 二
  • Pcap文件详解

    Pcap文件详解 一 简介 pcap文件是常用的数据报存储格式 可以理解为就是一种文件格式 只不过里面的数据是按照特定格式存储的 所以我们想要解析里面的数据 也必须按照一定的格式 普通的记事本打开pcap文件显示的是乱码 用安装了HEX E
  • Java-数组的定义和使用

    一 数组的基本用法 1 什么是数组 数组本质上就是让我们能 批量 创建相同类型的变量 2 创建数组 动态初始化 数据类型 数组名称 new 数据类型 初始化数据 静态初始化 数据类型 数组名称 初始化数据 代码示例 int arr new
  • css样式表属性

    文章目录 css样式表属性 color background color font size font weight font family font style text decoration text indent line heigh
  • JDBC连接多个SQLServer实例

    机器上同时装有SQLServer2000和2005 并存在多个数据库实例时 在写dbURL时需要在服务器地址后加实例名称 否则将连接到机器默认的数据库实例 在注册表的HKEY LOCAL MACHINE SOFTWARE Microsoft
  • 几行代码,搞定 SpringBoot 接口恶意刷新和暴力请求

    在实际项目使用中 必须要考虑服务的安全性 当服务部署到互联网以后 就要考虑服务被恶意请求和暴力攻击的情况 下面的教程 通过intercept和redis针对url ip在一定时间内访问的次数来将ip禁用 可以根据自己的需求进行相应的修改 来
  • 跨域问题解决

    在网关中添加配置类 import org springframework context annotation Bean import org springframework context annotation Configuration
  • 程序员如何做好职业规划?

    1 了解自己的职业目标 首先 要明确自己的职业目标 包括想成为什么样的程序员 是否想做管理工作等 2 了解市场需求 了解市场对技能的需求 通过对人才市场的认识 了解市场对不同类型程序员的需求和薪资水平 3 学习技能 根据自己的职业目标和市场
  • 软件使用:如何彻底把VMware卸载干净

    1 禁用VM虚拟机服务 首先 需要停止虚拟机VMware相关服务 按下快捷键WIN R 打开windows运行对话框 输入services msc 点击确定 在服务管理中 找到VM开头的所有服务类别 将所有VM开头的服务禁用掉 右击选择属性
  • 直接插入排序(深入讲解哨兵的作用)---------通俗易懂,直击重点!!!

    直接插入排序详细讲解 直接插入排序 Straight Insertion Sort 哨兵 代码区实例 你好 欢迎来和我一起学习 直接插入排序算法内容 如果大佬们发现问题希望指出 我会尽全力来更改 希望我们共同进步 直接插入排序 Straig
  • Python:PyCharm 永久破解方法,真的超超超超超超超超超级简单!!!

    准备工作 1 破解包 gt gt gt 下载链接 gt gt gt 提取码 jjbf 2 注册码 gt gt gt 获取地址 gt gt gt 第一步 进入PyCharm 的安装目录的bin文件夹下 把破解包放到该目录 第二步 把bin 目
  • 正确理解stem教育

    成人对STEM教育的理解和态度将深刻地影响孩子们对STEM学习的信念和他们的能力发展 无论孩子天赋如何 STEM对所有的孩子非常有利 也对所有学科领域都很重要 格物斯坦小坦克告诉大家如何正确理解stem教育 当我们学习新技能时 大脑将整合之
  • Tensorflow中tf.nn.bias_add()以及tf.add()和tf.add_n的实现

    tf nn bias add 通俗解释 一个叫bias的向量加到一个叫value的矩阵上 是向量与矩阵的每一行进行相加 得到的结果和value矩阵大小相同 import tensorflow as tf a tf constant 1 1
  • Qt 内存回收机制

    关于 Qt 内存回收机制的 刚接触 Qt 不久 第一次看到这方面的问题 这篇文章需要在对Qt有很多了解后才会理解的更透彻 在你不断补充知识时 温故而知新 看到更全面和更官方的内容时随时更新 C GUI Programming with Qt
  • 多线程+隧道代理:提升爬虫速度

    在进行大规模数据爬取时 爬虫速度往往是一个关键问题 本文将介绍一个提升爬虫速度的秘密武器 多线程 隧道代理 通过合理地利用多线程技术和使用隧道代理 我们可以显著提高爬虫的效率和稳定性 本文将为你提供详细的解决方案和实际操作价值 同时附上Py
  • H5页面实现跳转微信公众号主页面

    由于考虑到微信商城内用户分享给未关注用户 所以进行openid判断 并且进行 跳转 谨此记录一下 1 登录公众号管理后台 2 F12 进入element 模块 3 ctrl f 搜索uin base64字段 4 在下面代码中填入uin ba
  • 戴尔计算机网卡驱动程序,dell戴尔网卡驱动如何安装

    网卡是电脑连接外部网络的重要设备 可以实现局域网传输介质之间的物理连接和电信号匹配 不过想要正常使用网卡设备还需要安装网卡驱动 下面 我就以Dell网卡为例 教大家安装驱动的方法 Dell 戴尔 以设计 生产 销售类型电脑而闻名 戴尔电脑质
  • vue-element-admin项目关闭eslint校验

    事情是这样的 今天在启动项目的时候报错了 报错差不多是这样的 我们都知道 ESLint 是一个代码规范和错误检查工具 对于代码的语法格式的规范相当的严格 我忘记自己在哪里的代码写的出现问题了 但现在直接启动不了就很麻烦了 只有先关闭一下es
  • CentOS7.6服务器搭建SFTP服务及JAVA工具类

    一 SFTP的简介 sftp Secure File Transfer Protocol 是一种安全的文件传送协议 是ssh内含协议 也就是说只要sshd服务器启动了 sftp就可使用 不需要额外安装 它的默认端口和SSH一样为22 1 s

随机推荐

  • thinkphp6 入门(4)--数据库操作 增删改查

    一 设计数据库表 比如我新建了一个数据库表 名为test 二 配置数据库连接信息 本地测试 直接在 env中修改 不用去config database php中修改 正式环境 三 增删改查 引入Db库 use think facade Db
  • 分析 Spring 的依赖注入模式

    一 依赖注入 二 Field Injection 优点 缺点 三 Constructor Injection 优点1 容易发现 code smell 优点2 容易厘清依赖关系 优点3 容易写单元测试 优点4 Immutable Object
  • 微信小程序 用户协议和隐私协议

  • 金山桌面软件测试实习生笔试面试

    2014年5月 实习生 笔试 3道数列推导题 1道推理题 2道编程题 2道设计测试用例题 推理题 A B C D E五个人将来的职业分别是预言师 侍女 舞蹈师 魔术师 侍应生 这5个人现在说的话 只有将来是预言师的那个人说的才是正确的 A
  • 经常使用runOnUiThread(),你真的理解它吗

    在Android开发的过程中 主线程主要来完成UI绘制和响应用户的操作 默认情况下 我们大部分的代码都是在主线程 中执行的 因此我们时刻要考虑主线程的情况 我们都知道要开启一个子线程来完成一个耗时操作 以避免阻塞主线程影响 用户体验 甚至A
  • FCM——(Fuzzy C-means)模糊C均值算法

    FCM算法是一种基于划分的聚类算法 它的思想就是使得被划分到同一簇的对象之间相似度最大 而不同簇之间的相似度最小 模糊C均值算法是普通C均值算法的改进 普通C均值算法对于数据的划分是硬性的 而FCM则是一种柔性的模糊划分 模糊聚类的目标函数
  • 【目标跟踪】1、基础知识

    文章目录 一 卡尔曼滤波 二 匈牙利匹配 一 卡尔曼滤波 什么是卡尔曼滤波 状态估计器 卡尔曼滤波用于在包含不确定信息的系统中做出预测 对系统下一步要做什么进行推测 且会结合推测值和观测值来得到修正后的最优值 卡尔曼滤波就是利用 t 1 状
  • k-medoids聚类算法

    引言 上一篇博客介绍了k means聚类算法 该算法虽然高效快速 但却受异常点的影响严重 如果样本中存在异常点 则聚类结果会产生极大的偏差 针对异常点对聚类结果的影响 本文介绍k medoids聚类算法 k medoids算法能有效削弱异常
  • vue2项目打包dist文件后如何部署访问(本地部署和网络部署)

    1 本地部署 前提 1 注意端口的占用 防火墙的放行 2 注意后端服务的请求链接3 记得不要关闭运行4 记得element ui的引入要放在vue版本导入的后面 1 1 新建一个文件夹打开之后打开终端 1 2 npm i express s
  • 知识图谱技术概述

    1知识图谱定义与架构 1 1知识图谱定义 维基百科上对知识图谱的定义是这样的 知识图谱是谷歌及其提供的服务所使用的知识库 目的是通过从各种来源收集信息以增强其搜索结果的展示 这个定义时侠义的 知识图谱 是结构化的语义知识库 用于以符号形式描
  • 5分钟解决阿里云oss对象存储

    5分钟解决阿里云OSS对象存储 后附关键代码 启动代码如下 pom xml里添加依赖 com aliyun oss aliyun sdk oss 2 8 3 1 建类AliyunOSSClientUtil package io import
  • Centos8用户和组的管理

    1 用户和组的相关配置文件 1 1 用户的分类 linux用户三种角色 超级用户 普通用户 虚拟用户 超级用户 root 拥有对系统的最高的管理权限 UID 0 普通用户 系统用户 UID范围 1 999 Centos7 8版本 1 499
  • Python数据分析与挖掘——线性回归预测模型

    线性回归模型属于经典的统计学模型 该模型的应用场景是根据已 知的变量 自变量 来预测某个连续的数值变量 因变量 例如 餐 厅根据每天的营业数据 包括菜谱价格 就餐人数 预定人数 特价菜 折扣等 预测就餐规模或营业额 网站根据访问的历史数据
  • 超好用的开发工具-VScode插件EIDE

    EIDE介绍 一款适用于8051 STM8 Cortex M RSCv的单片机开发环境 在 vscode上提供8051 STM8 Cortex M RISC V 项目的开发编译烧录等功能 使用文档 简介 em ide com 论坛地址 Em
  • android 日期相减得天数_用 bash 倒计时日期

    需要知道重要事件发生前有多少天吗 让 Linux bash 和 date 命令可以帮助你 Sandra Henry stocker 作者 随着即将来临的重要假期 你可能需要提醒你还要准备多久 幸运的是 你可以从 date 命令获得很多帮助
  • 大量大数据如何进行查询

    1 两种查询引擎查询速度 myIsam 引擎 InnoDB 中不保存表的具体行数 也就是说 执行select count from table时 InnoDB要扫描一遍整个表来计算有多少行 MyISAM只要简单的读出保存好的行数即可 注意的
  • MySQL触发器

    MySQL触发器是用于在数据表上自动执行SQL代码的对象 触发器会在指定的数据库事件发生之前或之后触发 这些事件包括 INSERT 向表中插入数据之前或之后 UPDATE 更新表中的数据之前或之后 DELETE 从表中删除数据之前或之后 触
  • SpringBoot中logback不同环境日志配置

  • 高阶数据结构之LRU Cache

    文章目录 什么是LRU Cache LRU Cache的实现 JDK中自带的数据结构 模拟实现LRU Cache 双向链表 哈希表 什么是LRU Cache LRU的全称是 Least Recently Used 的缩写 表示最近最少的使用
  • 固态硬盘编译android源码,Mac 下的 Android 8.1源码编译(LineageOS 15.1 for XiaoMi Mix2)

    编译环境 OSX 10 12 Xcode 8 3 3 JDK 8 Android SDK 需要用到的软件 作者编译时遇到需要安装的目前就这些 不排除有用到之前自己装过的 Sed MacPorts Homebrew Imagemagick G