为啥要搞机

最近准备找工作,想想自己工作几年来做了不少项目,也从中学到了不少东西。但是总是忙于实现各种业务逻辑,修复各种 BUG ,从来没有静下心来,好好地整理一下自己学到的知识点。

这就造成了一个问题,虽然我确实完成了客户需求,也解决了不少 BUG 。但是对于系统的一些模块,我都只有粗浅的了解,并没有真正深入去学习整个模块的架构,以及其中的整个工作原理。

这样其实对于自己个人的成长是非常不利的,毕竟,对于程序员而言,实现业务逻辑只是最基础的要求。真正区分程序员能力的,还是要看他的架构思想,对整个系统及框架的把控能力。

所以,必须得跳出舒适圈,要先逼自己一把,从写文章开始。

既然从事 Android framework 层开发,没什么比自己搞一个系统更有意思的事了。一来,在搞机的过程中,不免会接触到各个系统模块,可以从中深入去研究这些模块的架构及原理。二来,把搞机过程中学到的知识整理成一篇博客,加深自己对系统的了解,又能锻炼自己的总结和写作能力。三来,做出一个有个性的系统,不仅自己用起来爽,还能装装逼,一举三得,妙哉妙哉。

为啥选择LineageOS

LineageOS 是一个开源系统,前身是 CyanogenMod ,代码与 AOSP 基本相同,仅在上面做了一点改动。能够支持更多的机型,门槛更低。所以选择它作为搞机的系统。

此外,在公司的工作中,我陆续参与过 Android 4.4、5.1、7.1、8.1 的系统开发,再玩一样的系统就没啥意思了。正好 lineageOS 最新开源的代码已经到了 17.1 ,对应于 Android 10 ,这样也能顺便研究下新版本的特性。

搞机前的准备

刷机之前,首先要先确认你的机器是否支持 LineageOS。

最简单的方式,就是到 LineageOS 官网 https://download.lineageos.org/,看有没有对应的机型信息。

如果有,恭喜你,直接下载 recovery 镜像和固件包就行了。我

用来调试的机器是 google 亲儿子 nexus 6,所以下载的就是 shamu 对应的包。刷机这一块我不多讲,百度就有了,主要流程就是先刷 recovery,然后再通过线刷或卡刷下载固件包,就 ok 了。

如果对应机型在 LineageOS 官网上没有相应的包,理论上也是有可能刷这个系统的,但是我对刷机这一块了解得不多,具体可以自行百度。

下载源码

首先提醒一下,如果要下载和编译源码,最好预留 200G 以上的空间。(我这份代码才编译了两三次,目前占用的空间已经达到了 147G!)

源码的下载,直接参考清华的源就行了:lineageOS 源代码镜像使用帮助

当然,也可以直接到 github 上下载:LineageOS/android

注意,这里由于下载的是 17.1 的源码,要修改一下清华源中初始化仓库的指令:

repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/lineageOS/LineageOS/android.git -b lineage-17.1

另外,我初始化仓库后,.repo 目录下是没有 manifest.xml 这个文件的,所以清华源中修改 repo 实际要修改的是 .repo/manifest/default.xml 这个文件。

另外,这里强调一下,repo 的修改,一定要严格对照清华源的修改去作改动,否则后面编译还会遇到不少的坑。说起来都是泪,就因为 repo 的修改有问题,导致我后面编译遇到了不少的坑,断断续续浪费了我几天的时间 /(ㄒoㄒ)/~~

这里大家可以参考下我的改动

其余的,按照清华源的操作来就行了。

PS:由于源码有几十 G,拉取的耗时很长,最好选择半夜或者大清早去下载源码。

编译源码

按照清华源的操作,repo sync执行完后,并不代表可以直接编译固件了,还需要拉取 kernel、device、vendor 下对应机型的代码,才能完成最终的编译。

我的调试机是 nexus6,执行的操作如下:

在 /kernel/moto/shamu/ 下拉取代码:LineageOS/android_kernel_moto_shamu

在 /device/moto/shamu/ 下拉取代码:LineageOS/android_device_moto_shamu

在 /vendor/motorola/ 下拉取代码:TheMuppets/proprietary_vendor_motorola

其他的机型,可以自行在 github

上(https://github.com/LineageOS)搜索对应机型的关键字,找到对应的仓库进行下载。

拉取机型对应的代码后,执行 source build/envsetup.sh。

接着,不是像平时 Android 源码那样执行 lunch 选择编译的机型和版本,而是使用 LineageOS 的 breakfast 指令,选择相应的机型(我使用的 nexus6 选择的是 lineage_shamu-userdebug)。

最后再执行 brunch 指令,再选择机型后,开始编译,需要好几个小时才能编译成功。

PS:其实以上拉取代码的操作,如果不执行提前执行,在编译过程中都是会有相应提示的,我就是在编译过程中提示各种各样的错后,自己去对应仓库拉取代码的,中间走了很多弯路。提前下载好可以省去许多麻烦,如果自己手动拉也没关系,编译过程根据提示下载就行了。

刷机

由于之前已经刷过 recovery 了,直接 adb reboot bootloader,进入 recovery 模式。

选择线刷,再执行 adb 指令: adb sideload out/target/product/shamu/lineage-17.1-20200512-UNOFFICIAL-shamu.zip,将固件包下载到机器上,忽略签名,重启。

一切搞定,开始愉快地玩机。。。吧

device刷机包 适合的android_nexus6 刷 LineageOS 17.1 实战相关推荐

  1. android 4.3刷机包,联想B8080-F官方固件刷机包4.3rom线刷包(Root权限+驱动)

    联想B8080-F平板YOGA手机:支持联通3G网络,还支持联通移动2G网络,单卡手机配置为: 处理器:四核心(高通骁龙 MSM8268 ARM Cortex-A80 ) 内存RAM:2048MB 电 ...

  2. adb命令行刷机 使用adb sideload命令推送刷机包到recovery直接刷机

    还在烦恼复制黏贴刷机包到手机内存里的烦恼吗?还在烦恼USB挂载无法移动的烦恼吗?使用adb sideload命令推送刷机包到recovery直接刷机.就算你的手机无法进入系统或者已经崩溃了使用ADB命 ...

  3. 360手机刷机包 360手机线刷包 360手机卡刷包

    360手机刷机包 360手机线刷包 360手机卡刷包 360手机刷机包下载 360手机刷机包下载:360手机刷机 360手机救砖 360手机刷机包twrp.root (360iphoneos.gith ...

  4. r9m刷机包root,r9s 刷机包

    oppor9m手机怎么刷机 1.插上USB数据线连接电脑,根据客户端提示,打开USB调试,会自动匹配对应刷机包,找到相 应的刷机包后,点击一键刷机,系统会进入刷机包下载界面,刷机包下载完成后会自动解析 ...

  5. 转:三星安卓手机刷机包(ROM)刷机教程与ROOT教程总索引

    三星安卓手机刷机包(ROM)刷机教程与ROOT教程总索引  [复制链接]     admin 管理员 串个门 加好友 打招呼 发消息 电梯直达 楼主  发表于 2012-1-10 16:14:22 | ...

  6. r7c刷机android6.0,奇兔刷机全网首发OPPO R7c(电信4G)刷机包 独家支持一键刷机

    OPPO R7c(电信4G)作为R系列的最新机型,集合了市面上几乎所有手机的流行元素,凭借高颜值的全金属机身,良好的拍照体验以及VOOC闪充功能,取得了单月销量过百万的成绩.近日,奇兔刷机已全网首发O ...

  7. OPPO A53刷机包下载 OPPO A53T刷机包下载_oppo密码忘记怎么办?来这里搞定

    固件包下载地址:http://url88.cn/u/GGjSK?keyword=A53 品质:官方客服专用固件,经过真机操作测试,必须OK. 纯净:100%人工检测,绝对是最纯净ROM,适合长期使用. ...

  8. OPPO A37m刷机包_OPPO A37m线刷包教程

    此刷机包用于救砖升级 解决手机反复重启,不开机,包内附带刷机教程. OPPO A37m线刷包下载  <百度云下载> <网盘下载>  没有百度云会员的推荐使用网盘下载更快速.

  9. 【官方固件】OPPO A37t刷机包_OPPO A37t线刷包

    此刷机包用于救砖升级 解决手机反复重启,不开机,包内附带刷机教程. OPPO A37t刷机包下载 

最新文章

  1. 数据库中的select 1,select count(1),order by 1
  2. 人类“换头术”现在就是一场炒作 但医学界不会放弃研究
  3. P6 根轨迹分析法-《Matlab/Simulink与控制系统仿真》程序指令总结
  4. GIS讲堂第二课-地图切片简介以及OL中的调用
  5. 笔记本vm系统的分辨率不好调整_关于超高分辨率小动物超声成像系统(3100LT)和多模式、超高分辨率小动物光声/超声成像系统(2100)测试费价格调整通知...
  6. Windows下VTK6.0.0安装详解(CMake使用说明)
  7. ES6之Module 的加载实现(3)
  8. xtrabackup 排错
  9. Django 的系统时区设置 RPC
  10. [仁润云技术团队]并发编程-(1)基本概念
  11. python批量安装第三方库_使用Python批量安装第三方库
  12. k8s踩坑记第2篇--3个IP折磨人的故事
  13. SIGPIPE信号处理
  14. 新手入门Java疯狂讲义遇到的100个问题
  15. 数据库知识点总结归纳
  16. 电位计,电子尺0-5欧姆或0-50欧姆转换成电流电压0-10MA/0-10V转换器,隔离器
  17. java身份证以及手机号的工具类
  18. 终结拖延症——行动的理由
  19. 资深程序员才能看懂的幽默时刻
  20. c语言书面作业,巢湖学院2011级网络工程1,2班C语言书面作业(江家宝)版

热门文章

  1. C程序设计的抽象思维-递归过程-砝码称重
  2. 3D显示Cell效果
  3. dell support
  4. 10月第2周.ORG总量TOP10:中国增1701个 涨幅最大
  5. python mysql 转义方法
  6. jQuery验证控件jquery.validate.js使用说明+中文API
  7. SQL学习总结-思维导图
  8. iOS swift2.3 迁移到3.0 遇到的一些问题
  9. 微软,一个分裂的存在
  10. Mysql 面试复习