编译可在Nexus5上运行的CyanogenMod13.0 ROM(基于Android6.0)

简介: 编译可在Nexus5上运行的CyanogenMod13.0 ROM


编译可在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”。



作者:寻禹@阿里聚安全,更多Android技术文章,请访问阿里聚安全博客


阿里聚安全由阿里巴巴移动安全部出品,面向企业和开发者提供企业安全解决方案,全面覆盖移动安全、数据风控、内容安全、实人认证等维度,并在业界率先提出“以业务为中心的安全”,赋能生态,与行业共享阿里巴巴集团多年沉淀的专业安全能力。


相关文章
|
6月前
|
存储 消息中间件 人工智能
【03】AI辅助编程完整的安卓二次商业实战-本地构建运行并且调试-二次开发改注册登陆按钮颜色以及整体资源结构熟悉-优雅草伊凡
【03】AI辅助编程完整的安卓二次商业实战-本地构建运行并且调试-二次开发改注册登陆按钮颜色以及整体资源结构熟悉-优雅草伊凡
228 3
|
6月前
|
存储 API Android开发
【02】完整的安卓二次商业实战-配置gradle-构建打包原生安卓项目-调试本地运行模拟器-优雅草伊凡
【02】完整的安卓二次商业实战-配置gradle-构建打包原生安卓项目-调试本地运行模拟器-优雅草伊凡
484 4
【02】完整的安卓二次商业实战-配置gradle-构建打包原生安卓项目-调试本地运行模拟器-优雅草伊凡
|
11月前
|
缓存 Android开发 开发者
Flutter环境配置完成后,如何在Android设备上运行Flutter应用程序?
Flutter环境配置完成后,如何在Android设备上运行Flutter应用程序?
2027 62
|
11月前
|
开发工具 Android开发 开发者
在Android设备上运行Flutter应用程序时,如果遇到设备未授权的问题该如何解决?
在Android设备上运行Flutter应用程序时,如果遇到设备未授权的问题该如何解决?
765 61
|
8月前
|
存储 Android开发 数据安全/隐私保护
Thanox安卓系统增加工具下载,管理、阻止、限制后台每个APP运行情况
Thanox是一款Android系统管理工具,专注于权限、后台启动及运行管理。支持应用冻结、系统优化、UI自定义和模块管理,基于Xposed框架开发,安全可靠且开源免费,兼容Android 6.0及以上版本。
974 4
|
算法 数据处理 Android开发
掌握安卓性能优化的秘诀:电池寿命与运行效率的提升
【10月更文挑战第6天】 本文深入探讨了安卓应用开发中的性能优化技巧,重点分析了影响电池寿命和运行效率的关键因素,并提供了针对性的优化策略。通过代码优化、资源管理、后台任务处理等方法,开发者可以显著提升应用的续航能力和流畅度。同时,结合具体案例,展示了如何在实际开发中应用这些技巧,确保应用在各种场景下都能保持高效运行。本文旨在为安卓开发者提供实用的性能优化指导,助力其打造更优质的应用体验。
536 2
|
Java Android开发 C++
Android Studio JNI 使用模板:c/cpp源文件的集成编译,快速上手
本文提供了一个Android Studio中JNI使用的模板,包括创建C/C++源文件、编辑CMakeLists.txt、编写JNI接口代码、配置build.gradle以及编译生成.so库的详细步骤,以帮助开发者快速上手Android平台的JNI开发和编译过程。
1295 1
|
缓存 Java 测试技术
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
1808 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
689 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
Java Unix Linux
Android Studio中Terminal运行./gradlew clean build提示错误信息
遇到 `./gradlew clean build`命令执行出错时,首先应检查错误信息的具体内容,这通常会指向问题的根源。从权限、环境配置、依赖下载、版本兼容性到项目配置本身,逐一排查并应用相应的解决措施。记住,保持耐心,逐步解决问题,往往复杂问题都是由简单原因引起的。
1374 2