下载LineageOS 源码编译
前才准备好
motoX 连接
至于说要安装什么依赖什么工具的,可以等出问题时再apt-get,以下仅简述流程。
源码下载
源码下载与其他的是一样的,git地址在这里,同样也是使用repo下载。
- 初始化下载
这里下载cm14.1
repo init -u git://github.com/LineageOS/android.git -b cm-14.1
- 驱动下载
由于我是要使用nexus5的男人,所以需要把n5的驱动设备信息也下下来- 到.repo新建local_manifests目录
- 创建文件 roomservice.xml
文件内容如下,这部分的源是来自于
hammerhead
hammerheadcaf
<?xml version="1.0" encoding="UTF-8"?>
<manifest><project name="LineageOS/android_device_lge_hammerheadcaf" path="device/lge/hammerheadcaf" remote="github" /><project name="LineageOS/android_device_lge_hammerhead" path="device/lge/hammerhead" remote="github" /><project name="LineageOS/android_kernel_lge_hammerhead" path="kernel/lge/hammerhead" remote="github" />
</manifest>
- 下载同步代码
repo sync
包括说以后需要更新源码也可以使用sync来同步 。
至于说git的配置啊,账号什么的,不在这篇文章的记录范围。
完成后就可以开始构建了
构建
- 设置环境变量
与aosp编译类似,编译前同样需要引入环境
source build/envsetup.sh
- lunch
准备构建前,需要先告诉编译系统你要编译什么,这里的话与aosp有点差异,它使用的是一个叫”breakfast“的命令,与lunch类似,但后面加的构建信息可以是直接从devices目录下的名字,如n5为hammerhead
breakfast hammerhead
如果上一步没啥问题,就会显示
获取驱动(这里可以下载)
- 未获取n5的vendor,结果就是差了这一步导致编译出来的包不能进入系统
- 需要在device/lge/hammerhead下执行extract-files.sh,这里会要求连接手机,我就刷了个别人的cm14.1,然后连上了就会获取到驱动了。
- 记得要开启ADB的root权限
为了加速以后的编译过程,可以开启ccache
ccache -M 50G
- 还需要开启配置jack编译器
export JACK_SERVER_VM_ARGUMENTS=”-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx16g”
./prebuilts/sdk/tools/jack-admin kill-server
./prebuilts/sdk/tools/jack-admin start-server
其中,-Xmx设置的是可申请的最大内存范围,按实际要求设置,如我是16G内存,就可以设置为16G。
- 开启ROOT
- 默认构建的是userdebug版本,但奇怪的是lineage居然不自带root,也没有su命令
- 如果需要支持root,需要在开始构建前设置变量
export WITH_SU=true
- 开始构建
好了就可以开始真正地构建了,使用brunch命令,与make类似
brunch hammerhead
然后就是等待和出错的调试了。
出包刷机
cm的源码一个好处就是可以看到整个编译的进度,最后打完后会如下图所示
然后就可以去./out/target/product/hammerhead拿包了。
包也与aosp不同,这个更加友好,帮你把刷机包给做好了,不用fastboot去flash,直接使用twrp就可以了。
以后遇到问题再记录问题与解决办法。
创建模拟器
此处的模拟器并非使用lineageos来创建的,而是使用androidN的原生码码使用mini-emulator-x86_64来编译的,编译好后自动会设计ANDROID_PRODUCT_OUT的环境变量,如果需要切换加载的地方就切换到其他目录即可,否则就为类型“out/target/product/mini-emulator-x86_64”的目录,使用直接调用
emulator
就会自动创建模拟器了。
[link]
Info about hammerhead
Build for hammerhead
Install Lineage on hammerhead
root
commanders
单独编译
可以使用mmm单独编译一个模块,使用重新打入到system.img当中,如
mmm packages/apps/Launcher2/
jack server问题记录
此处只记录一个我遇到的神奇情况。开始的时候在start-server时监控是会后台运行的,但在我更新了系统后,发现再start-server就不行了,会一直卡在那,我开始还以为是由于SSL啊还是什么鬼的版本问题导致的,折腾了老久,才发现原来卡住是正常的,显示
我以为这里已经出了问题,毕竟之前是不会卡住的,于是一直找 办法。
事实上这个问题有可能是与我手动install-server有关,如果在是uninstall-server所有server的情况下(包括home目录下的.jack-server,.jack,.jack-setting文件),直接进行brunch或者make,这个lunch server的过程能够正常,即不会卡住。所以在构建前还是不要多手,手动去开启和安装jack-server。
编译问题
error: ro.build.fingerprint cannot exceed 91 bytes
xda上有人是这么回答的:
Edit build/tools/post_process_props.py. Change lines as follows:
PROP_NAME_MAX = 31
#PROP_VALUE_MAX = 91
PROP_VALUE_MAX = 128
Edit bionic/libc/include/sys/system_properties.h. Change lines as follows:
#define PROP_NAME_MAX 32
// #define PROP_VALUE_MAX 92
#define PROP_VALUE_MAX 128
Do
make clean
make
You can also run the second make command in parallel using syntax such as make -j8
但这样改了后会导致编译失败
原因在于还有文件未改全,导致assert失败。
Edit frameworks/native/cmds/installd/installd_deps.h . Change lines as follows:
//constexpr size_t kPropertyValueMax = 92u;
constexpr size_t kPropertyValueMax = 128u;
下载LineageOS 源码编译相关推荐
- Ubuntu 小米6 LineageOS源码编译
小米6 LineageOS 源码编译官方教程:https://wiki.lineageos.org/devices/sagit/build#extract-proprietary-blobs 1. 安 ...
- 安装包没意思?带你手动下载OpenWrt源码编译安装!
一.OpenWrt的代码管理工具 OpenWrt社区同时使用Subversion和Git两种工具来管理代码. 备注:OpenWrt的外围代码已经逐渐转到github提供的Git托管空间上,直到2016 ...
- 下载AOSP源码编译、调试、刷机
一.准备工作 系统最好是Linux或者mac OS(本文基于Ubuntu). Ubuntu设置永不休眠,在setting中搜索power.blank-screen选择never. 一块大一点儿的硬盘, ...
- 最好用的Redis Desktop Manager 0.9.3 版本下载 以及源码编译教程
文章目录 一.前言 二.编译教程 2.1 [redis destop manager 的源码地址](https://github.com/uglide/RedisDesktopManager) 2.2 ...
- php5模块怎么下载,centos源码编译php5 mcrypt模块步骤详解
步骤: 1.从php.net上面下载php5.3.x版本的源码; 2.centos安装相应的扩展包: 代码如下: yum install libmcrypt libmcrypt-devel mcryp ...
- android 6.0.1原生系统源码下载以及源码编译----framework修改
1.源码下载前参数配置 1️⃣配置usb所需 sudo apt-get update sudo apt-get install git-core gnupg flex bison gperf buil ...
- 编译 LineageOS 源码,并重定义 kernel log
1.下载清华源的 repo curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo chmod +x repo ../repo i ...
- 【Android NDK 开发】Android Studio 的 NDK 配置 ( 源码编译配置 | 构建脚本配置 | 打包配置 | CMake 配置 | ndkBuild 配置 )
文章目录 I . 源码编译配置 II . 构建脚本配置 III . NDK 函数库打包配置 IV . Java 与 C 代码示例 V . CMake 配置 ( CMakeLists.txt ) VI ...
- 源码编译系列之mpv播放器编译教程
源码编译系列之mpv播放器编译教程 编译mpv播放器有两种方法: 手工下载mpv源码编译,然后编译安装,. 通过mpv-build工具编译安装,编译简单,依赖库版本脚本自动下载,但跟X相关库问题还是需 ...
- 【流媒体开发】VLC Media Player - Android 平台源码编译 与 二次开发详解 (提供详细800M下载好的编译源码及eclipse可调试播放器源码下载)
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42707293 转载请注明出处 : http://blog.csd ...
最新文章
- Squid故障与解决方法汇总
- python内置函数用来返回数值型序列中所有元素之和_Python内置函数______用来返回数值型序列中所有元素之和...
- linux 内核 sleep,linux内核是如何支持深度睡眠(deep sleep)方式的?
- 教育部:2006年江西高职(专科)院校名单
- Android之上下文context
- C语言试题八十八之实现选冒泡排序算法
- angularJs关于指令的一些冷门属性
- ble 连接成功后找不到服务_闷声发大财的BLE芯片龙头
- 出现警告defaultlib library conflicts with use of other libs; use /NODEFAULTLIB:library .
- Python办公自动化(六)|自动更新表格,
- vrrp 的mac是怎么算出来的_宇宙总质量约10^55kg,与大家掰一掰是怎么算出来的
- 695.岛屿的最大面积(力扣leetcode) 博主可答疑该问题
- Ajax实现--javascript
- sas编程技术教程 人大经济论坛sas培训
- 计算机硕论题目,硕士论文题目精选(计算机方向)
- 【转】支持向量机回归模型SVR
- Linux用户管理基本配置命令运用1
- 如何恢复Windows默认共享
- 阿泰,水晶报表--push样式模板
- IDEA 2021.2.3添加GitHub账户并提交代码到GitHub