阿里云
阿里云多端小程序中小企业获客首选
发表主题 回复主题
  • 3296阅读
  • 1回复

[安全漏洞公告专区]编译可在Nexus5上运行的CyanogenMod13.0 ROM(基于Android6.0)

发帖
107
云币
373
Em Ut/]  
编译可在Nexus5上运行的CyanogenMod13.0 ROM(基于Android6.0)
  
作者:寻禹@阿里聚安全
%2D'NZS  

-6_<]  
前言 )cQ KR4x0^  
w_`;Mn%p  
+ah4 K(+3  
下文中无特殊说明时CM代表CyanogenMod的缩写。 下文中说的“设备”均指Android设备。 M-Vz$D/aed  
proprietary-blobs.txt文件的路径:device/lge/hammerhead/proprietary-blobs.txt 0hkYexX73  
/-lW$.+{?  
参考资料 U<XfO'XJ  
U"@p3$2QW  
How To Build CyanogenMod For Google Nexus 5 (“hammerhead”) ~IO'"h'w  
本文中只列出与上面的参考资料中不同的地方,所以需要将上面的参考资料与本文结合起来阅读。 `3[W~Cq  
^oDs*F  
下载CM13.0 ROM e]!`94f  
\Qnr0t@0  
repo init -u git://github.com/CyanogenMod/android.git -b cm-13.0 G~&q  
+  rN#  
注意事项 Gl{2"!mt=  
po]<sB  
构建ROM之前设备上必须先安装相应的ROM I YptNR  
WQw11uMt@q  
在参考资料中有这么一段话: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. rjfWty%6pX  
这段话的意思是,如果你要为Nexus5设备构建cm13.0的rom,你必须先在Nexus5设备中安装cm13.0的rom。 HWou&<EK  
s;Zi   
仔细检查extract-files.sh在终端中的输出 j}@LiH'Q  
k?3mFWc  
仔细检查extract-files.sh在终端中的输出,因为这里面可能包含一些执行时出错的信息,一旦有错误信息就要修复错误,修复错误的思路请参考“问题解决”一节。 GmUm?A@B  
="@f~~  

问题解决 =VWH8w.3  
{RsdI=%  
Mp5Z=2l5  
adb拉取apk文件失败 Y>nQ<  
z:Ru`  
执行./extract-files.sh脚本时可能会出现下面的错误:ERROR: Pull file /system/app/shutdownlistener.apk from a device running CyanogenModERROR: Pull file /system/app/TimeService.apk from a device running CyanogenMod a(-t"OL\  
这是由于指定的apk文件路径不对,要从设备上拉取的文件列表记录在"proprietary-blobs.txt”中。 |t$%kpp  
8-L -W[  
qw|B-lT{:  
解决办法 h}m9L!+n8  
U; #v-'Z  
=ZV+*cCC=q  
找到“proprietary-blobs.txt”文件中的下面两行:-/system/app/shutdownlistener.apk-/system/app/TimeService.apk JsX}PVuL  
更改为:-/system/app/shutdownlistener/shutdownlistener.apk-/system/app/TimeService/TimeService.apk 7}mr C@[i  
oC!z+<  
/GNm>NSK  
adb拉取/system/bin下面的文件失败 {*F8'6YQ$  
VB+_ kR6Zv  
执行./extract-files.sh脚本时可能会出现下面的错误:remote object '/system/bin/bridgemgrd' does not exist oSR;Im<2  
这个文件在设备上是存在的。这个文件在设备上的权限是: +I.{y  
-rwxr-xr-x 1 root shell 46900 2008-12-31 21:00 bridgemgrd p{0rHu[  
可以发现other用户是可以读取这个文件的,但是奇怪的是无法通过adb pull命令拉取。 5S! !@P!,  
; jJ%<  
}f6_ 7W%5  
解决办法 8hX /~-H  
|)ALJJ=+  
v?q)E%5j  
1、在CM ROM中是可以开启ROOT访问的,此时我的CM ROM的设备上显示的语言是英文的,所以我以英文来说。打开设备上的”Developer options”(即,开发者选项),找到”Root access”并点击,然后点击”Apps and ADB”,这样设置完后app和adb都可以无碍的申请root权限。 Hq <!&  
2、在pc的终端中输入命令:adb root,表示设备上以root权限重启adbd。然后就再次adb pull拉取设备/system/bin目录中的文件将会成功。 Bv}i#D  
Lnltt86  
找不到/system/prev-app中的apk thh0~g0/  
W_]onq 6  
RDu{U(!  
执行./extract-files.sh脚本时可能会出现下面的错误:ERROR: Pull file /system/priv-app/OmaDmclient/OmaDmclient.apk from a device running CyanogenModERROR: Pull file /system/priv-app/SprintHiddenMenu/SprintHiddenMenu.apk from a device running CyanogenMod )3!z2f:e  
Kl :x?"g)  
N*}g+ IS  
解决办法 yzL6oU-{&  
[jKhC<t}  
c38ENf  
找到"proprietary-blobs.txt”文件中的下面两行:-/system/priv-app/OmaDmclient/OmaDmclient.apk GUvEOD=p  
-/system/priv-app/SprintHiddenMenu/SprintHiddenMenu.apk ",45p@  
ShU1RQk  
e6'y S81  
更改为:-/system/app/OmaDmclient/OmaDmclient.apk-/system/app/SprintHiddenMenu/SprintHiddenMenu.apk %Wg8dy|  
e:;u_ be~  
K!|J/W  
当遇到这个问题时只改"proprietary-blobs.txt”文件中的内容是不够的。找到”device/lge/hammerhead/setup-makefiles.sh”文件,将该文件中相应的”priv-app”更改为”app”。找到"vendor/lge/hammerhead/proprietary/Android.mk”文件,将该文件中相应的”priv-app”更改为”app”。 {60U6n  
*)qxrBc0  
lD1m<AC  
[Pz['q L3t  
~d=Y98'xS  
作者:寻禹@阿里聚安全,更多技术文章,请访问阿里聚安全博客 .arWbTR)~U  
39Tlt~Psz  
[ 此帖被移动安全在2016-08-03 15:50重新编辑 ]
级别: 论坛版主
发帖
9349
云币
14165
只看该作者 沙发  发表于: 2016-08-03
CM14 估计也快了
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
验证问题: ECS是阿里云提供的什么服务? 正确答案:云服务器
上一个 下一个
      ×
      全新阿里云开发者社区, 去探索开发者的新世界吧!
      一站式的体验,更多的精彩!
      通过下面领域大门,一起探索新的技术世界吧~ (点击图标进入)