前才准备好
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 源码编译相关推荐

  1. Ubuntu 小米6 LineageOS源码编译

    小米6 LineageOS 源码编译官方教程:https://wiki.lineageos.org/devices/sagit/build#extract-proprietary-blobs 1. 安 ...

  2. 安装包没意思?带你手动下载OpenWrt源码编译安装!

    一.OpenWrt的代码管理工具 OpenWrt社区同时使用Subversion和Git两种工具来管理代码. 备注:OpenWrt的外围代码已经逐渐转到github提供的Git托管空间上,直到2016 ...

  3. 下载AOSP源码编译、调试、刷机

    一.准备工作 系统最好是Linux或者mac OS(本文基于Ubuntu). Ubuntu设置永不休眠,在setting中搜索power.blank-screen选择never. 一块大一点儿的硬盘, ...

  4. 最好用的Redis Desktop Manager 0.9.3 版本下载 以及源码编译教程

    文章目录 一.前言 二.编译教程 2.1 [redis destop manager 的源码地址](https://github.com/uglide/RedisDesktopManager) 2.2 ...

  5. php5模块怎么下载,centos源码编译php5 mcrypt模块步骤详解

    步骤: 1.从php.net上面下载php5.3.x版本的源码; 2.centos安装相应的扩展包: 代码如下: yum install libmcrypt libmcrypt-devel mcryp ...

  6. android 6.0.1原生系统源码下载以及源码编译----framework修改

    1.源码下载前参数配置 1️⃣配置usb所需 sudo apt-get update sudo apt-get install git-core gnupg flex bison gperf buil ...

  7. 编译 LineageOS 源码,并重定义 kernel log

    1.下载清华源的 repo curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo chmod +x repo ../repo i ...

  8. 【Android NDK 开发】Android Studio 的 NDK 配置 ( 源码编译配置 | 构建脚本配置 | 打包配置 | CMake 配置 | ndkBuild 配置 )

    文章目录 I . 源码编译配置 II . 构建脚本配置 III . NDK 函数库打包配置 IV . Java 与 C 代码示例 V . CMake 配置 ( CMakeLists.txt ) VI ...

  9. 源码编译系列之mpv播放器编译教程

    源码编译系列之mpv播放器编译教程 编译mpv播放器有两种方法: 手工下载mpv源码编译,然后编译安装,. 通过mpv-build工具编译安装,编译简单,依赖库版本脚本自动下载,但跟X相关库问题还是需 ...

  10. 【流媒体开发】VLC Media Player - Android 平台源码编译 与 二次开发详解 (提供详细800M下载好的编译源码及eclipse可调试播放器源码下载)

    作者 : 韩曙亮  博客地址 : http://blog.csdn.net/shulianghan/article/details/42707293 转载请注明出处 : http://blog.csd ...

最新文章

  1. Squid故障与解决方法汇总
  2. python内置函数用来返回数值型序列中所有元素之和_Python内置函数______用来返回数值型序列中所有元素之和...
  3. linux 内核 sleep,linux内核是如何支持深度睡眠(deep sleep)方式的?
  4. 教育部:2006年江西高职(专科)院校名单
  5. Android之上下文context
  6. C语言试题八十八之实现选冒泡排序算法
  7. angularJs关于指令的一些冷门属性
  8. ble 连接成功后找不到服务_闷声发大财的BLE芯片龙头
  9. 出现警告defaultlib library conflicts with use of other libs; use /NODEFAULTLIB:library .
  10. Python办公自动化(六)|自动更新表格,
  11. vrrp 的mac是怎么算出来的_宇宙总质量约10^55kg,与大家掰一掰是怎么算出来的
  12. 695.岛屿的最大面积(力扣leetcode) 博主可答疑该问题
  13. Ajax实现--javascript
  14. sas编程技术教程 人大经济论坛sas培训
  15. 计算机硕论题目,硕士论文题目精选(计算机方向)
  16. 【转】支持向量机回归模型SVR
  17. Linux用户管理基本配置命令运用1
  18. 如何恢复Windows默认共享
  19. 阿泰,水晶报表--push样式模板
  20. IDEA 2021.2.3添加GitHub账户并提交代码到GitHub

热门文章

  1. 京东数据分析工具(京东销售数据如何查询)
  2. 高性能stun服务器搭建,STUN/TURN服务器搭建
  3. Mac安装jdk17和jdk18
  4. sql语句学习之having用法
  5. 计算机组成原理微课版(谭志虎主编)预习笔记
  6. 高等代数——大学高等代数课程创新教材(丘维声)——1.1笔记+习题
  7. 西门子V90 PN伺服EPOS模式+FB284功能库使用示例教程(图文)
  8. solidworks导出xml文件 (matlab打开)
  9. C++、QT的物业管理系统
  10. 系统工具-文件夹同步软件