编译lineageos1
lineageos 前奏 -- 搭建编译环境
我目前使用的手机是红米note4x 目前lineageos15.1已经官方支持,下文是按照官网文档编译安装包操作总结
构建环境搭建主要参考官方文档
参考文档: https://wiki.lineageos.org/devices/mido/build
下面对主要步骤进行简单说明(以ubuntu为例)
依赖软件包 (ubuntu16.04测试官网给出的列表完整)
bc bison build-essential ccache curl flex g++-multilib gcc-multilib git gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev liblz4-tool libncurses5-dev libsdl1.2-dev libssl-dev libwxgtk3.0-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev
低于ubuntu16.04需要将libwxgtk3.0-dev 换成 libwxgtk2.8-dev
java环境
官网给出的说明
LineageOS 14.1-15.1: OpenJDK 1.8 (install openjdk-8-jdk)
LineageOS 11.0-13.0: OpenJDK 1.7 (install openjdk-7-jdk)*
ubuntu16.04默认java是jdk8, 所以直接apt-get install openjdk-default-jdk 或者 apt-get install openjdk-8-jdk
对于ubuntu14.04默认软件仓库jdk最高只有jdk7,不足以编译lineageos14.1-15.1
这里推荐android官网的解决方案https://source.android.com/setup/build/initializing#installing-the-jdk
直接下载三个对应的debian包进行安装(不必另外添加ppa源对有洁癖的人来说总是好事),这里的jdk版本比较老了,当然也可以直接从oracle官网下载安装(建议还是直接ubuntu16.04,免除不必要的麻烦)
openjdk-8-jre-headless_8u45-b14-1_amd64.deb with SHA256 0f5aba8db39088283b51e00054813063173a4d8809f70033976f83e214ab56c0
openjdk-8-jre_8u45-b14-1_amd64.deb with SHA256 9ef76c4562d39432b69baf6c18f199707c5c56a5b4566847df908b7d74e15849
openjdk-8-jdk_8u45-b14-1_amd64.deb with SHA256 6e47215cf6205aa829e6a0a64985075bd29d1f428a4006a80c9db371c2fc3c4c
安装repo和同步源码仓库
这个没什么好说的,建议开个vps直接编译,这里顺便说下我开了一个6核12G内存的机器编译大概花了4个小时完成,设置了30G的ccache,硬盘最好在200G左右,我第一次设置150G造成硬盘用尽
真的想自己机器编译的或者类似情况的可以考虑使用清华大学或者中科大的源进行加速
这是帮助文档 https://mirrors.tuna.tsinghua.edu.cn/help/lineageOS/
提取设备专有内容
可能像pixel这些设备不需要吧 Some devices require a vendor directory to be populated before breakfast will succeed
对于红米note4x是需要的,因为在vps上编译所以采用下载已有zip包并解包的方式,操作参考 https://wiki.lineageos.org/extracting_blobs_from_zips.html
在这里有个地方需要注意,google在lineageos15.1里面的system.transfer.dat已经改成用brotli压缩了,执行unzip -l path/to/lineage-*.zip你将发现对应的文件是system.transfer.dat.br
所以需要使用brotli先进行解压,解压工具下载地址 https://android.googlesource.com/platform/external/brotli/
brotli官网提供了好几种安装方式,这里采用Autotools-style CMake的方式(cmake不在上面的必须软件列表里面,这里需要单独安装),当然也可以尝试直接用python的pip安装
$ mkdir out && cd out
$ ../configure-cmake
$ make
$ make test
$ make install
安装完brotli解压工具后,使用 brotli -d system.new.dat.br -o system.new.dat进行解压即可
另外对于上面的内容还有个问题需要说明
这步操作的时候sudo mount system.img system/可以先检测system.img是不是有问题 file system.img看返回是否正常,如果只是简单的data文件,那么上一步的解压可能存在问题
挂载好system.img后还有个问题,挂载目录下面的vendor是个链接文件,指向 /vendor, 看lineageos官网的介绍好像主要是复制vendor里面的内容,而system.img里面并没有这个文件,查看zip包内容unzip -l path/to/lineage-*.zip会发现有个 vendor.new.dat.dr文件,猜测这个就是我们需要的文件,按照上面操作 system.new.dat.dr 文件的步骤再次执行,并挂载到 /vendor 目录即可,后面运行正常无报错
最后
后面就没有什么问题了,等了4个小时,提取 out/target/product 里面的生成文件就可以了
还有个小问题,手机刷入安装包的时候在twrp里面一直找不到zip包,无法挂载手机data分区
最后无奈,将data分区重新格式化,利用adb将zip安装包上传上去,重新刷入
这里有经验的小伙伴可能看出问题了, 是的我格式化了data分区,手机所有数据已丢失 (手动滑稽)
如果你哪天发现我电话打不通,即时聊天软件长时间无回应,那么我可能正在努力修手机中
番外
这里基本都是遵循官网给出的文档进行操作,没有做任何个人修改。后期有时间我将进一步整理lineageos的内容
未完。。。待续。。等。
编译lineageos1的更多相关文章
- TODO:macOS编译PHP7.1
		
TODO:macOS编译PHP7.1 本文主要介绍在macOS上编译PHP7.1,有兴趣的朋友可以去尝试一下. 1.下载PHP7.1源码,建议到PHP官网下载纯净到源码包php-7.1.0.tar.g ...
 - Centos6.5下编译安装mysql 5.6
		
一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm -qa | grep mysql 有的话通过下面的命令来卸载掉 rpm -e mysql //普通删除模式 rpm -e ...
 - CENTOS 6.5 平台离线编译安装 PHP5.6.6
		
一.下载php源码包 http://cn2.php.net/get/php-5.6.6.tar.gz/from/this/mirror 二.编译 编译之前可能会缺少一些必要的依赖包,加载一个本地yum ...
 - CENTOS 6.5 平台离线编译安装 Mysql5.6.22
		
一.下载源码包 http://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.22.tar.gz 二.准备工作 卸载之前本机自带的MYSQL 安装 cmake,编 ...
 - Android注解使用之注解编译android-apt如何切换到annotationProcessor
		
前言: 自从EventBus 3.x发布之后其通过注解预编译的方式解决了之前通过反射机制所引起的性能效率问题,其中注解预编译所采用的的就是android-apt的方式,不过最近Apt工具的作者宣布了不 ...
 - Hawk  6. 编译和扩展开发
		
Hawk是开源项目,因此任何人都可以为其贡献代码.作者也非常欢迎使用者能够扩展出更有用的插件. 编译 编译需要Visual Stuido,版本建议使用2015, 2010及以上没有经过测试,但应该可以 ...
 - android studio 使用 jni 编译 opencv 完整实例 之 图像边缘检测!从此在andrid中自由使用 图像匹配、识别、检测
		
目录: 1,过程感慨: 2,运行环境: 3,准备工作: 4,编译 .so 5,遇到的关键问题及其解决方法 6,实现效果截图. (原创:转载声明出处:http://www.cnblogs.com/lin ...
 - 在Windows上编译和调试CoreCLR
		
生成CoreCLR - Windows篇 本文的唯一目的就是让你运行Hello World 运行环境 Window 7+ Visual studio 2015 确保C++ 工具已经被安装,默认是不安装 ...
 - 【踩坑速记】二次依赖?android studio编译运行各种踩坑解决方案,杜绝弯路,总有你想要的~
		
这篇博客,只是把自己在开发中经常遇到的打包编译问题以及解决方案给大家稍微分享一下,不求吸睛,但求有用. 1.大家都知道我们常常会遇到dex超出方法数的问题,所以很多人都会采用android.suppo ...
 
随机推荐
- 【学习笔记】圆方树(CF487E Tourists)
			
终于学了圆方树啦~\(≧▽≦)/~ 感谢y_immortal学长的博客和帮助 把他的博客挂在这里~ 点我传送到巨佬的博客QwQ! 首先我们来介绍一下圆方树能干什么呢qwq 1.将图上问题简化到树上问题 ...
 - python3修改文件指定行
			
方法可以有三个,但其实是一个方法,因为不同的方法都是文件存储的方法,文件修改就只有一个方法: 将文件导入list后,重新写入文件(另一个文件或者当前文件) 1.当前文件读取后,list修改内容,写入另 ...
 - 微信小程序相关操作
			
显示用户基本信息 在微信小程序中,经常会碰到需要展示微信用户的基本信息,如果只是为了显示用户信息,最简单有效的办法是使用open-data,这是微信小程序内置的用于展示微信开放数据的组件,通过改变ty ...
 - vue 中使用scss
			
1.下载 npm install --save-dev sass-loader npm install --save-dev node-sass npm install sass-loader --s ...
 - 集训队8月3日(A*+IDA*)
			
刷题数:4 今天看书看了A*与IDA*,算法竞赛入门经典124~133页. 先说一下看书后对知识点的认识,A*算法就是设计一个估价函数,附加到其优先队列的权值比较中,然后还是得到目标状态的解.值得一提 ...
 - rm -rf无法删除文件解决方法
			
# 列出 file.sh 文件的属性 lsattr file.sh # 列出当前目录下所有文件以及文件夹的属性 lsattr # 为 file.sh 文件增加 i 标识 chattr +i file. ...
 - Asp.Net Core 第04局:依赖注入
			
总目录 前言 本文介绍Asp.Net Core中默认的依赖注入(DI)模式. 环境 1.Visual Studio 2017 2.Asp.Net Core 2.2 开局 第一手:依赖注入说明 1.一个 ...
 - Flask Session ,pymysql ,wtforms组件 虚拟virtualenv venv
			
https://www.cnblogs.com/wupeiqi/articles/5713330.html session def create_app(): print() app=Flask(__ ...
 - 怎样理解Functor与Monad
			
1. 复合函数操作符 Prelude> :t (.) (.) :: (b -> c) -> (a -> b) -> a -> c Prelude> (.) ( ...
 - jQuery设置checkbox 为选中状态
			
1设置第一个checkbox 为选中值$('input:checkbox:first').attr("checked",'checked');或者$('input:checkbox ...