编译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 ...
随机推荐
- ltp-ddt nand_ecc_tests
NAND_S_FUNC_ECC_2K_BCH8_8ERRS_NO_OOB_ERR source "common.sh"; nandecc_tests.sh -r "0:0 ...
- Linux centos7安装git
1.下载git wget https://github.com/git/git/archive/v2.14.1.zip 2.安装依赖 yum -y install zlib-devel openssl ...
- 【抓包工具之Fiddler】增加IP列;session高亮
Fiddler 在处理每个session时,脚本文件CustomRules.js中的方法都会运行,该脚本使得你可以隐藏,标识或任意修改负责的session.规则脚本在运行状态下就可以修改并重新编译,不 ...
- 【串线篇】Mybatis缓存之整合第三方缓存
为什么要用第三方缓存?因为mybatis的缓存机制说白了就是一个map,不够强大.但幸好mybatis有自知之明将其Cache做成了一个接口开放出来,我们可以实现这个接口用第三方专业的缓存框架去自定义 ...
- 苹果的AR赌注仍然有很多需要证明的
苹果公司为开发者主题发布会做准备,其中一个更大的公告很可能是其增强现实平台的新变化.自从去年宣布ARKit以来,这家科技巨头几乎对其对AR的潜力抱有信心. 在很多讨论背后,人们都相信技术的实用性,但在 ...
- 转:C++ 11 Lambda表达式
转:https://www.cnblogs.com/DswCnblog/p/5629165.html C++11的一大亮点就是引入了Lambda表达式.利用Lambda表达式,可以方便的定义和创建匿名 ...
- springBoot02- 配置文件读取测试
1.照例登陆http://start.spring.io/ ,改个项目名(Artifact),然后下载导入Eclipse 2. 项目结构如下, 在pom中添加web依赖(不添加,就找不到RestCon ...
- LVS负载均衡中arp_ignore和arp_annonuce参数配置
先简单的介绍下关于LVS负载均衡 LVS(Linux Virtual Server)Linux服务器集群系统 针对高可伸缩,高可用服务的需求,给予IP层和内容请求分发的负载均衡调度解决方法,并在Li ...
- “pod repo push”遇到的2个问题的解决方案
podspec文件push到遇到的第一个问题,将进行记录,主要是参考了下面大神的解决方案,主要是为了方便学习和记录 第一个问题: xcrun: error: invalid active develo ...
- AtCoder Grand Contest 012 A - AtCoder Group Contest(贪心)
Time limit : 2sec / Memory limit : 256MB Score : 300 points Problem Statement There are 3N participa ...