编译可在Nexus5上运行的CyanogenMod13.0 ROM(基于Android6.0)
编译可在Nexus5上运行的CyanogenMod13.0 ROM
(基于Android6.0)
作者:寻禹@阿里聚安全
前言
下文中无特殊说明时CM代表CyanogenMod的缩写。
下文中说的“设备”均指Android设备。
proprietary-blobs.txt文件的路径:device/lge/hammerhead/proprietary-blobs.txt
参考资料
How To Build CyanogenMod For Google Nexus 5 (“hammerhead”)
本文中只列出与上面的参考资料中不同的地方,所以需要将上面的参考资料与本文结合起来阅读。
下载CM13.0 ROM
repo init -u git://github.com/CyanogenMod/android.git -b cm-13.0
注意事项
构建ROM之前设备上必须先安装相应的ROM
在参考资料中有这么一段话:
Note:Your device should already be running a build of CyanogenMod for the branch you wish to build for the extract-files.sh script to function properly.
这段话的意思是,如果你要为Nexus5设备构建cm13.0的rom,你必须先在Nexus5设备中安装cm13.0的rom。
仔细检查extract-files.sh在终端中的输出
仔细检查extract-files.sh在终端中的输出,因为这里面可能包含一些执行时出错的信息,一旦有错误信息就要修复错误,修复错误的思路请参考“问题解决”一节。
问题解决
adb拉取apk文件失败
执行./extract-files.sh脚本时可能会出现下面的错误:
ERROR: Pull file /system/app/shutdownlistener.apk from a device running CyanogenMod
ERROR: Pull file /system/app/TimeService.apk from a device running CyanogenMod
这是由于指定的apk文件路径不对,要从设备上拉取的文件列表记录在"proprietary-blobs.txt”中。
解决办法
找到“proprietary-blobs.txt”文件中的下面两行:
-/system/app/shutdownlistener.apk
-/system/app/TimeService.apk
更改为:
-/system/app/shutdownlistener/shutdownlistener.apk
-/system/app/TimeService/TimeService.apk
adb拉取/system/bin下面的文件失败
执行./extract-files.sh脚本时可能会出现下面的错误:
remote object '/system/bin/bridgemgrd' does not exist
这个文件在设备上是存在的。这个文件在设备上的权限是:
-rwxr-xr-x 1 root shell 46900 2008-12-31 21:00 bridgemgrd
可以发现other用户是可以读取这个文件的,但是奇怪的是无法通过adb pull命令拉取。
解决办法
1、在CM ROM中是可以开启ROOT访问的,此时我的CM ROM的设备上显示的语言是英文的,所以我以英文来说。打开设备上的”Developer options”(即,开发者选项),找到”Root access”并点击,然后点击”Apps and ADB”,这样设置完后app和adb都可以无碍的申请root权限。
2、在pc的终端中输入命令:adb root,表示设备上以root权限重启adbd。
然后就再次adb pull拉取设备/system/bin目录中的文件将会成功。
找不到/system/prev-app中的apk
执行./extract-files.sh脚本时可能会出现下面的错误:
ERROR: Pull file /system/priv-app/OmaDmclient/OmaDmclient.apk from a device running CyanogenMod
ERROR: Pull file /system/priv-app/SprintHiddenMenu/SprintHiddenMenu.apk from a device running CyanogenMod
解决办法
找到"proprietary-blobs.txt”文件中的下面两行:
-/system/priv-app/OmaDmclient/OmaDmclient.apk
-/system/priv-app/SprintHiddenMenu/SprintHiddenMenu.apk
更改为:
-/system/app/OmaDmclient/OmaDmclient.apk
-/system/app/SprintHiddenMenu/SprintHiddenMenu.apk
当遇到这个问题时只改"proprietary-blobs.txt”文件中的内容是不够的。找到”device/lge/hammerhead/setup-makefiles.sh”文件,将该文件中相应的”priv-app”更改为”app”。找到"vendor/lge/hammerhead/proprietary/Android.mk”文件,将该文件中相应的”priv-app”更改为”app”。
作者:寻禹@阿里聚安全,更多技术文章,请访问阿里聚安全博客
编译可在Nexus5上运行的CyanogenMod13.0 ROM(基于Android6.0)的更多相关文章
- 系列篇|编译可在Android上运行的依赖库(一):glib库
前言 这是系列文章,它们由<编译可在Android上运行的glib库>及其他4篇文章组成,这4篇文章在“编译依赖库”一节中列出.由于glib库依赖于其他第三方库,所以需要先将依赖的第三方库 ...
- 编译可在Android上运行的qemu user mode
前言 本文在Ubuntu 64位系统上对qemu项目进行交叉编译,并且只编译与qemu user mode有关的代码. 下文中的”NDK”若无特殊说明均指”Android NDK”. 下文中”$NDK ...
- Spark源码编译并在YARN上运行WordCount实例
在学习一门新语言时,想必我们都是"Hello World"程序开始,类似地,分布式计算框架的一个典型实例就是WordCount程序,接触过Hadoop的人肯定都知道用MapRedu ...
- 如何在国产龙芯架构平台上运行c/c++、java、nodejs等编程语言
高能预警:本文内容过于硬核,涉及编译器原理.cpu指令集.机器码.编程语言原理.跨平台原理等计算机专业基础知识,建议具有c.c++.java.nodejs等多种编程语言开发能力,且实战经验丰富的资深开 ...
- 高射炮打蚊子,杀鸡用绝世好剑:在SAP Kyma上运行UI5应用
国人在表述"大材小用"这个场景时,总喜欢用一些实物来类比,比如:高射炮打蚊子. 英国QF 3.7英寸(94mm)高射炮,战斗全重超过9.3吨,全长近5米,最大射程约18公里,最大射 ...
- 开源即时通讯GGTalk 8.0发布,增加Linux客户端,支持在统信UOS、银河麒麟上运行!
GGTalk在2021年推出7.0后,经过一年多时间的开发,终于推出8.0版本,实现了Linux客户端. 这几年,信创国产化的势头越来越猛,政府事企业单位都在逐步转向使用国产OS.国产CPU.国产数据 ...
- .netcore跨平台 之 windows上编译,ubuntu上运行
1 下载并安装netcore sdk 下载地址 https://github.com/dotnet/cli 选取合适的版本下载安装即可 打开 CMD ,输入dotnet,出现以下信息说明已安装好 ...
- [转]C#程序无法在64位系统上运行之.NET编译的目标平台
今天将编译的C#的exe拷贝到测试机上(Win7_64bit),一运行就挂了,提示“stop working”,一开始怀疑测试机上没有安装.net framework框架,追究半天原来是编译的目标平台 ...
- 在Ubuntu 64位OS上运行hadoop2.2.0[重新编译hadoop]
最近在学习搭建Hadoop, 我们从Apache官方网站直接下载最新版本Hadoop2.2.官方目前是提供了linux32位系统可执行文件,结果运行时发现提示 “libhadoop.so.1.0.0 ...
随机推荐
- Power BI for Office 365 概览
伴随着数据量的日益增长,通过自服务式的商业智能把数据转换成辅助决策支持的工具,越来越成为迫切的需求.在以前,处理这些数据往往只是IT人员范围内的事,但是通过Power BI for Office 36 ...
- 关于ubuntu16无线网卡RTL8723BE频繁掉线及信号不足的解决办法
最近在新电脑上装了ubuntu16,结果wifi经常连不上,连上了过段时间就掉线,路由器就在电脑的旁边,而且信号非常的若. 但是windows系统没有任何问题,所以就在网上找解决办法,也按照网上的方法 ...
- 蓝桥杯算法提高 P1001(大数乘法)
算法提高 P1001 时间限制:1.0s 内存限制:256.0MB 当两个比较大的整数相乘时,可能会出现数据溢出的情形.为避免溢出,可以采用字符串的方法来实现两个大数之间的乘法. 具体 ...
- Winform窗体用对象数组做一个小项目
首先我我们看一下需求:我们要做的是显示员工信息,实现项目经理给员工评分的功能! 首先项目经理是评分的人所以没有用,因为我们自己写,评分的就是我们自己.所以我们要做的是先在vs也就是我们的环境里建一个项 ...
- vue-cli
vue-cli 脚手架 vue-loader 作用:提供基本项目结构 本身集成了很多项目模板:simple,webpack ,webpack-simple; simple:几乎没什么用: webp ...
- linux内存和虚拟内存的使用
- js数组操作大全
原文(http://www.cnblogs.com/webhotel/archive/2010/12/21/1912732.html) 用 js有很久了,但都没有深究过js的数组形式.偶尔用用也就是简 ...
- mysql的查询、子查询及连接查询
>>>>>>>>>> 一.mysql查询的五种子句 where(条件查询).having(筛选).group by(分组). ...
- 【转】Wireshark基本用法
原地址:http://blog.jobbole.com/70907/ 按照国际惯例,从最基本的说起. 抓取报文: 下载和安装好Wireshark之后,启动Wireshark并且在接口列表中选择接口名, ...
- Greenplum查询计划分析
这里对查询计划的学习主要是对TPC-H中Query2的分析. 1.Query的查询语句 select s_acctbal, s_name, n_name, p_partkey, p_mfgr, s_a ...