手机怎么刷机重装系统CyanogenMod系统

CyanogenMod倒下了,但还有这些第三方安卓ROM让你刷个痛快对于Android发烧友而言,最近最为重磅的消息就莫过于第三方Android ROM之首的CyanogenMod(简称CM)宣布。关于现在,也成为近期的一个热议话题:一方面,现在厂商固件的体验已经非常成熟,而大部分国内用户对原生安卓体验不太感冒。但另一方面,没有了第三方ROM,一旦厂商抛弃机型,用户就无法用上最新的安卓系统。但本着“不折腾不舒服斯基”的人道主义精神,小雷(微信ID:leitech)还是为大家奉上CM的“备胎”们,还不赶快动动小手刷起来。魔趣 MoKee魔趣(MoKee) 一向被认为是国内的CM,但因为成立时间相对较晚,知名度远远没有CM大,一直活在CM的阴影下。说到CM的备胎,魔趣可以说是绝对的不二之选,因为它也是基于谷歌原生Android进行开发的开源项目。只是,魔趣官方支持的机型并没有那么多,不像CM那样还有许多非官方移植的固件。因此,虽然魔趣的马丁龙猪称魔趣已成“全球最大安卓开源项目”,但从目前的情况来看还是有一定距离的。ParanoidParanoid基于谷歌原生Android源码进一步扩展体验,其在遵循系统原生设计元素的前提下又留有适度的创新,因此也曾被一些媒体认为是CM的最强竞争对手。除了曾经主打的支持缩放小部件、窗口、应用程序的“混合模式”外,Paranoid还新增了沉浸模式、手势等功能。该固件官方适配的机型数目并不太多,主要为谷歌、三星、索尼、一加旗下的手机或者平板电脑产品,比较小而美。SlimRomsSlimRoms也是国外比较出名的第三方安卓ROM,正如其名,它主打的是精简化固件,但却在原生Android项目(ASOP)的基础上提供丰富的功能。官方适配的机型几乎都是老手机,主要包括三星、HTC、LG、谷歌、Nextbit、一加等。ResurrectionRemixResurrectionRemix就是最近两年一度和CM齐名的RR了,它拥有丰富的可定制性,并且支持悬浮通知、Pitch Black主题、界面定制,以及充足的原生Android体验。ResurrectionRemix追求稳定、开源、较低的电池占用,并融合Paranoid Android、Omni、Slim和AOKP等第三方ROM的特色功能,还是比较全能的一款第三方ROM。crDroidcrDroid是一款第三方Android定制ROM,旨在为原生安卓的基础上提供更高的表现和可靠性,它主要是基于CM,并通过修改内核等文件进行定制。随着CM被官方停止支持,crDroid要么寻找其他开源项目进行修改,要么可能基于CM的源码继续开发,但目前来看它依然还在运转当中。XOSPXSOP是一个拥有索尼Xperia定制UI的第三方Android开源项目,其目前已经基于最新的Android 7进行开发,并且还提供了索尼风格的Xperia APP进行下载。只不过,该项目也是基于CM进行修改,CM停止支持后其可能也会转向其他项目,当然也可能就此放弃。MIUI说了上面这么多基于原生Android定制的,可能大家最熟悉的还是MIUI。其实MIUI一开始就是基于原生或CM进行修改的,并且支持不少第三方品牌机型。后来小米自己出手机后,就采取众包的策略,通过和第三方开发者合作的方式维护非小米机型。不过按照目前情况来看,绝大部分第三方机型的MIUI还停留在第七代,显然开发热情也已经有所倒退。不知道大家还记得乐蛙吗?号称专为千元机开发ROM,当年还被认为是MIUI的一大威胁。曾经在国内乐蛙和MIUI打的难分难解,并且还和诺基亚、小辣椒等厂商合作过。但乐蛙也已经宣布在国内停止固件更新,不得不说非常可惜。当然,还有很多形形色色的第三方ROM可以被用户尝试,如果不是以升级安卓版本为目的的话选择性还是比较多的。但是需要注意的是,不是每款机型都能适配得到第三方ROM,这要和你的机型版本、用户数量、热门程度等方面有关。但总的来说,至少在国内第三方ROM已经成为极客的玩具了,而一般的用户更追求稳定,这也是为什么以刷机出名的一加在国内份额依然不高,却在国外受到热捧。不过,我们还是要承认一些第三方ROM为我们提供了轻量纯净的系统体验和新颖有趣的功能。不管是和我们告别的CM,还是继续前进的LineageOS,优秀的系统总是不会变,变得仅仅只是一个名字而已。(图片来源于网络)17人已赞分享订阅Copyright&2014雷科技&&|&&责编:张剑锋
&CyanogenMod倒下&刷机大军们如何走&&&&作为一名安卓党,相信不少朋友对于安卓的刷机这一项&隐藏属性&不会陌生,而作为大名鼎鼎的CyanogenMod,近期可以说得到了一个非常不好的消息:Cyanogen公司在博客宣布,将在日结束所有Cyanogen的nightly&builds(这个版本叫做每夜构建版本)。&&&&不过Cyanogen之后又通过官方博客宣布:“作为Cyanogen整合计划的一部分,所有的服务和Cyanogen支持的每日构建都会在日停用。这个开源项目和源代码仍将对所有想要独自开发CyanogenMod的人开放。&CyanogenMod创始人Steve&Kondik&&&&看到这条消息可能对于刷机的朋友来讲立马就可以明白,而对于不刷机或者不熟悉的用户一头雾水。笔者就在这里给大家说明一下。&&&&大家都听说过,之前安卓品牌刚刚进入到中国时候因为多数内置了谷歌服务,大部分人是不需要用到谷歌服务的,同时因为谷歌服务常驻后台,不断进行服务请求,就带来了内存不足(当时大部分手机2GB内存,一个谷歌服务请求大概占用400M),手机过分耗电问题。因此CM&ROM就在玩机圈中非常火热的传开。&&&&CyanogenMod是一个基于开源Android系统提供手机使用的二级市场固件。它提供一些在官方Android系统或手机厂商没有提供的功能&,例如:支持Free&Lossless&Audio&Codec-(无损音频编码)音频格式的音乐,多点触控,从SD外置存储器运行程序,压缩缓存,大量APN的名单,重新启动功能,Wi-Fi无线网络支持,蓝牙,USB网络分享等。——不过要注意的是,这些仅仅是官方宣布自带的功能,如果获得官方权限,还可以安装“绿色守护”这样更加深入的,可以从底层直接限制软件启动。&&&&CyanogenMod当初创立的本质理念,就是要给手机使用者带来一个绝对干净的环境,不受任何公司内置软件的置入,包括谷歌。其实一开始CM&ROM是有谷歌软件框架的置入和相应App的。但Google于2009年9月发出律师信要求该团队不得再散布CyanogenMod,此举引起部份CyanogenMod爱好者的反弹,认为Google公司违反其“不作恶”的经营口号,CyanogenMod一度暂停运作,在两方协调之后,CyanogenMod恢复开发工作,但不能再包含Google的App,仅提供链接由用户自行安装。(笔者推断就是谷歌感觉到CyanogenMod已经威胁到在家AOSP的发展)。Cyanogen官方下载列表&&&&不过Cyanogen当初创建一条&理念&就是要&干掉&谷歌的原生安卓系统,带来更加开放、易用性更强的安卓系统——Cyanogen&OS,其实就是击败谷歌,结果可想而知,计划最终流产。&&&&不过也不用特别担心,因为nightly&builds(这个版本叫做每夜构建版本)虽然停止了服务,但是CyanogenMod并不会取消。笔者总结的CyanogenMod刷机版本说明&&&&但是可以从图中看出来,每夜版本只是众多分支的一个部分,而像正式版本、历史版、适配版、测试版本之后如何进行,目前官方并没有给完整说法。那刷机大军之后怎么办?其实有很多路都可以走:&&&&一、喜欢原生替代者&&&&不过刷机爱好者可以转投魔趣ROM&笔者感觉是国产ROM里边做的最好的了。&&&&不过喜欢尝鲜的用户可以说就比较遗憾了,并不能尝鲜新功能。之后他们将CyanogenMod&将更名为&LineageOS,之后他们怎么走其实和刷机爱好者关系并不大,如果&LineageOS做好了,确实可以吸引开发者为其优化。不过这个已经是之后的问题了。其实现在刷机爱好者还是有很多的选择。比如非常让大家熟知的魔趣。在马丁龙猪的一封信中就说明里魔趣还是会在2017年继续为刷机爱好者带来稳定的支持。(魔趣MoKee&OpenSource是基于Google&AOSP开发的一个Android分支)。个人体验是目前替代CyanogenMod最好选择&&&&二、或者去论坛上边下载优化精简的AOKP版本。&&&&这点要说明一下,AOKP可以说是一种非常保险的方式,用来表示这是一个被他人修改过的ROM,修改ROM的人不属于制作ROM的团队或没有该团队的授权,比如对于安卓原生系统的精简等。个人精简项目是AOKP核心价值(引自gfan)&&&&三、国内大ROM适配,这个适合那些不喜欢折腾用户。&&&&这点其实只要分为两个方面:&&&&1、官方适配其他机型,比如魅族,可以从其官方网站上看到有非常多的适配机型。Flyme官方论坛支持多种品牌刷机2、论坛移植优化&&&&这一种就是对于自身的系统感觉到过于臃肿,想去掉某种不必要的功能,比如谷歌内置框架。不同版本的刷机包也是刷机爱好者很愿意尝试的(引自gfan)&&&&可以看到,专业刷机论坛上边对于Nexus这种小众资源还是非常丰富的。&&&&四、转平台,比如iOS:编辑总结:&&&&笔者作为一个前手机刷机爱好者真是对于CyanogenMod境遇感到了蜜汁尴尬,也希望在2017年中之后的Lineage(中文译名:血脉)&OS系统可以为手机爱好者带来更出色的安卓系统体验,让血脉流传下去。&&&&最后,笔者会在今后出一些关于安卓手机刷机的技巧和分享,欢迎关注。本文属于原创文章,如若转载,请注明来源:.cn/621/6218974.html
主屏尺寸 4G网络
投诉欺诈商家:
天津重庆哈尔滨沈阳长春石家庄呼和浩特西安太原兰州乌鲁木齐成都昆明贵阳长沙武汉郑州济南青岛烟台合肥南京杭州东莞南宁南昌福州厦门深圳温州佛山宁波泉州惠州银川
本城市下暂无经销商
4¥24995¥45886¥22997¥34888¥44989¥239810¥2599【转载】如何把CyanogenMod 移植到到自己的android设备上 - 【Linux与安卓】 - 电子工程世界-论坛
后使用快捷导航没有帐号?
查看: 7270|回复: 2
【转载】如何把CyanogenMod 移植到到自己的android设备上
在线时间130 小时
威望3732分
芯币3826枚
TA的帖子TA的资源
五彩晶圆(中级), 积分 3732, 距离下一级还需 2268 积分
五彩晶圆(中级), 积分 3732, 距离下一级还需 2268 积分
前言& && && && &今年已经到了四月,不少工作任务与Android相关,于是准备开始开题学习Android。Android已经火热了几年,现在开始看,网上的文章汗牛充栋,想必是乏新可陈。我错过Android总是有缘因的,3年前开始,从moblin、Maemo、到MeeGo,误入Linux终端的领域,还没有来得及感叹一下自己的“新事业”,MeeGo于Nokia犹如被斩下的断臂,和被放弃保帅的车马,只留下特立独行的绝版神机诺基亚N9,在风中做“不跟随(N9的广告语)”的姿态。作为世间的饮食男女,MeeGo可以“不跟随”,我却不能不跟随,当年从事MeeGo的人大多转到了Android平台,我也赶紧爬上Android的大船,并祈祷这艘大船从此顺风顺水一路平安。然一份工作,若无足够钱物驱使,必要做得有趣(俗人本无所求,无非名利),对本人来说,只好看看怎么把事情做成有趣一些开心一些。
工欲善其事,必先利其器
1、基础环境
使用的环境:ubuntu 11.04环境,测试的Android机器 华为:C8500。
官方参考文档:
官方文档列出开发需要下列的软件包以及下载来源:
Python 2.5 -- 2.7,&&python.org.
GNU Make 3.81 -- 3.82,&&gnu.org
JDK 6 if you wish to build G JDK 5 for Froyo or older. You can download both from .这里安装的是JDK6
Git 1.7 or newer.&&.
官方文档说11.10的运行以下的安装命令如下:
$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
&&zip curl zlib1g-dev libc6-dev libncurses5-dev x11proto-core-dev \
&&libx11-dev libreadline6-dev libgl1-mesa-dev tofrodos python-markdown \
&&libxml2-utils xsltproc
网上有一安装的指引给出另一个安装命令
$sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev sun-java6-jdk pngcrush schedtool&&
由于懒得逐个包去甄别,上述两条命令我都运行和安装了。
注意:sun-java6-jdk是无法安装的,可以自己下载,请参考:
2、关于 USB 访问权限
Android的开发和调试使用的最主要连接设备的命令 adb和fastboot都需要使用USB连接,从文档上知道,Ubuntu下面USB的访问权限可能会出问题,解决的方法文档也列明了。
我的经验是如果访问不了连接的USB设备了,再查阅资料处理。为了以备以后查阅,记录下来如下:
针对摩托罗拉的设备,使用root文件创建/lib/udev/rules.d/11-android.rules,生成下列的配置到文件中。#号为注释符号,下列配置,第一行针对一种设备,第二行针对所有摩托罗拉设备。
#SUBSYSTEM==&usb&, ATTRS{idVendor}==&22b8&, ATTRS{idProduct}==&41db&,MODE=&0666,OWNER=&shallon&
SUBSYSTEM==&usb&, ATTRS{idVendor}==&22b8&, MODE=&0666&, OWNER=&shallon&&&#All Motorola
其中的idVendor和idProduct的值怎么来呢?用USB线连接设备,然后运行lsusb可以看到设备的这两个值,例如,下文显示摩托罗拉的ME811的相关配置值就是22b8和41db。
Bus 001 Device 082: ID 22b8:41db Motorola PCS Droid/Milestone (Debug mode)
Bus 001 Device 083: ID 046d:c018 Logitech, Inc. Optical Wheel Mouse
3、安装reporepo是一种更好的用git的一种工具环境。下面命令中repo安装到用户home目录的bin目录下。
$ mkdir ~/bin
$ PATH=~/bin:$PATH
& ~/bin/repo
$ chmod a+x ~/bin/repo
4、下载安装Android 源码 如果不打算编译Android源码,可以跳过。在WORKING_DIRECTORY上下载源代码,使用repo init命令指定下载源代码的版本,-b 参数指定版本号,如果不指定,则是最近的一个版本。
repo sync则是下载/同步代码的命令。
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
$ repo init -u
$ repo init -u
-b android-4.0.1_r1
$ repo sync
4.a、下载 cyanogenmod 的源码可以生成自定义的 Android RomCyanogenMod 致力于生成第三方的非官方的 Android 的 Rom ,目前比较火爆的小米手机的MIUI就是CyanogenMod的衍生产品。下面的命令获取 gingerbread 的版本的源代码。如果不打算尝试这些工作可以跳过此步。
$ mkdir -p ~/cyanogenmod
$ repo init -u git:///CyanogenMod/android.git -b gingerbread&&
$ repo sync -j16&&
n这里是16,表示同时打开的网络链接数,开启多个网络连接来下载,用以提升的下载的速度。
5、下载开发编译用的Android SDK
参考的官方文档:
5.1下载eclipse开发环境,推荐安装“Eclipse Classic”版本,介质下载的地址: 不用eclipse者可以略过
5.2下载Android SDK,介质安装的地址:
5.3下载安装eclipse 的ADT plug-in,ADT是 Android Development Tools的缩写。
详细的安装方法
5.4安装相关的工具包开发包。
安装的方法,可以从eclipse的IDE界面启动Android SDK Manager, Window & Android SDK Manager,或者在Android SDK的根目录运行android命令。
下列的开发包必须要安装:“SDK Tools”,“SDK Platform-tools”,“Android platforms(选择一个或者多个)”
6、测试Android SDK的主要开发工具
使用USB线连接一台测试的Android设备,运行adb 的两个命令
~/android/sdk/android-sdk-linux/platform-tools$ ./adb devices
List of devices attached
0A3AABB70502A00A device
~/android/sdk/android-sdk-linux/platform-tools$ ./adb shell 连接上设备,能够看到设备上的文件系统,证明adb的工具运作正常。
adb的工具很重要,主要用来调测设备。如果设备被“root”(系统被破解,开放了设备的管理员权限),连接上设备之后,能进行安装、删除软件,远程上传/下载文件,以及查看系统的日志等操作。如果设备没有“root”,则可以用的操作少很多。
6.2 fastboot
fastboot则是用来刷机的,主要用到的操作如下:
& & fastboot flash userdata userdata.img
& & fastboot flash system system.img
& & fastboot flash boot boot.img
& & fastboot reboot
6.3 SDK上的Android模拟器
~/android/sdk/android-sdk-linux/tools$ ./emulator ,显示命令存在,但是报错了,不要紧,这里运行一下只是看看是否正常安装了。
这三个工具的用法,请听下回分解
原文博客地址
如果对linux,Android,wince 等嵌入式底层有兴趣的,请加这个QQ群吧,群号:
在线时间130 小时
威望3732分
芯币3826枚
TA的帖子TA的资源
五彩晶圆(中级), 积分 3732, 距离下一级还需 2268 积分
五彩晶圆(中级), 积分 3732, 距离下一级还需 2268 积分
如何编译cyanogenmod
什么是cyanogenmod
CyanogenMod是一个Android第三方固件发布和维护的组织,基于官方的Android开源代码衍生出自己的版本。其中,CyanogenMod 6基于Android 2.2(Froyo),CyanogenMod 7基于Android 2.3(Gingerbread)以及CyanogenMod的定制代码,CyanogenMod 8基于Android 3.x(Honeycomb),CyanogenMod 9则基于Android 4.x( Ice Cream Sandwich)。国内有许多的智能手机民间的Android ROM定制社区,以及官方发布的深度定制OS大多是基于CyanogenMod衍生而来,其中著名的有小米的MIUI、盛大的乐众Rom等。这里使用CyanogenMod 7来进行研究。
此处,编译CyanogenMod的OS,只编译操作系统的主要部分,并不编译修改操作系统内核,使用现成的操作系统内核进行打包。关于cyanogenmod的源码目录怎么下载以及android的开发调试环境如何安装的问题,请参见我之前的文章。
CyanogenMod 7的源码目录中,用device目录下面列出了许多的厂商的各种机型。如果目标设备在其中,则可以直接进行编译。例如,华为的u8150设备在cyanogenmod 7上可以看到设备相关的目录“~/cyanogenmod/device/huawei/u8150”。这里可以推荐一个步骤一步一步执行即可(添加链接)。如果目标设备不在CyanogenMod支持的列表中,则需要生成设备相关的文件。
如何向CyanogenMod添加一种新的设备
基本上,这个很难,需要比较专业的人士才能做。基本的原理是,利用现成的的一个运作良好的设备,例如,买了一台智能手机后,将该智能手机破解(ROOT),权限打开后,将设备相关的文件逐个拷贝出来,这些设备相关的文件都是SO的文件(运行时链接的文件),这些文件在Cyanogenmod编译完成后直接进行打包。为何不直接编译生成SO文件呢?原因是这些文件直接和特定的设备相关,设备厂商并不开放这部分源代码(Android的License允许),主要是Android操作系统中HAL层的文件(关于Android的HAL结构,是导致设备相关的驱动逻辑没有放在内核,而是放在用户空间的原因,可以查资料了解一下)。
设备相关的文件如何获取呢?如何知道要从现成的机器抓取什么文件下来呢?这个对普通的CyanogenMod编译者来说,直接去网上看看有没有大牛的共享好了。例如,本人的C8500,不是cyanogenmod 7支持的设备类型,我只好在互联网上痛苦的寻找编译所缺失的文件,相关下载链接为试验的时候所用,不能保证该链接长久有效。(实际上,我已经发现部分链接无效了,瀑布汗)
C8500设备的编译准备工作
CyanogenMod源码下载请参见前文: 中的“下载 cyanogenmod 的源码可以生成自定义的 Android Rom” 部分
1.生成~/cyanogenmod/device/huawei的c8500设备目录
1.1下载设备描述文件:ioz9-android_device_huawei_cdd9b.zip(下载链接:)
1.2解开后将根目录改名为c8500
2.添加~/cyanogenmod/device/common/gps目录下c8500相关文件,解决编译找不到文件的问题
2.1.下载ShunYea-android_device_common_gps-b7f9c29.zip文件(下载链接:)
2.2.解开获取gps.conf_CN_SUPL文件和gps_cn_supl.mk文件拷贝到目录下
以下步骤主要为了向编译系统支持多一种设备的编译。
3.添加~/cyanogenmod/vendor/cyanogen/products目录下的cyanogen_c8500.mk文件
3.1下载ShunYea-android_vendor_cyanogen_products-7c7703d.zip文件(下载链接:)
3.2解开获取cyanogen_c8500.mk文件拷贝到目录下
4.~/cyanogenmod/vendor/cyanogen$ vi vendorsetup.sh
add_lunch_combo cyanogen_c8500-eng
5.~/cyanogenmod$ vi ./vendor/cyanogen/products/AndroidProducts.mk
$(LOCAL_DIR)/cyanogen_c8500.mk \
运行~/cyanogenmod/device/huawei/c8500$ ./setup-makefiles.sh
C8500设备的编译过程
1.获得设备相关的文件,将USB线连接一台ROOT之后的C8500设备,打开C8500设备的开发调试选项,并设置环境变量,使adb命令能被当前用户执行。请参见关于adb命令的部分。
cd ~/cyanogenmod/device/huawei/c8500
./extract-files.sh
实际上这个脚本就是调用adb pull命令将设备上的文件逐个抓下来,放到vender/huawei目录下。如果手上没有这样的一台设备,则可以去网上找一找,看看有没有人把目标设备的proprietary包共享出来,例如,C8500的设备,我找到了一个:
下载ioz9-proprietary_vendor_huawei-1d161c3.zip(下载链接:)
解开获取其中的c8500目录整个目录拷贝到~/cyanogenmod/vendor/huawei目录下
2.编译命令
cp ~/cyanogenmod/vendor/cyanogen/products/cyanogen_c8500.mk&&~/cyanogenmod/buildspec.mk
cd ~/cyanogenmod/
. build/envsetup.sh
lunch之后出现了设备列表,选择cyanogen_c8500-eng。eng是工程调试版本的意思。“make -j4”中的4可以修改,根据CPU的个数选择或者CPU个数的两倍来选择,用以加快编译速度。
3.经过漫长的编译过程之后
~/cyanogenmod/out/target/product/c8500目录下可以看到编译结果,主要有用的是:
userdata.img、system.img、boot.img、recovery.img等等。
使用fastboot命令将boot.img 、system.img、userdata.img刷入C8500,然后使用fastboot命令重启设备,详细参见的fastboot部分。
静待C8500启动,查看效果。4. 附录:userdata.img、system.img、boot.img、recovery.img的解包和重新打包工具。在~/cyanogenmod/out/host/linux-x86/bin/目录下,可以找到下列执行命令。
解开boot.img userdata.img system.img
~/cyanogenmod/out/host/linux-x86/bin/unpackbootimg -i boot.img
BOARD_KERNEL_CMDLINE mem=211M console=ttyMSM2, androidboot.hardware=c8500
BOARD_KERNEL_BASE
BOARD_PAGE_SIZE 4096
shallon@shallon-Joybook-R48:~/cyanogenmod/out/target/product/c8500/test$ ls -al
total 6056
drwxr-xr-x&&2 shallon shallon& & -20 14:22 .
drwxrwxr-x 10 shallon shallon& & -20 09:14 ..
-rw-r--r--&&1 shallon shallon 2-04-20 14:22 boot.img
-rw-rw-r--&&1 shallon shallon& && & 9
14:22 boot.img-base
-rw-rw-r--&&1 shallon shallon& && &61
14:22 boot.img-cmdline
-rw-rw-r--&&1 shallon shallon& && & 5
14:22 boot.img-pagesize
-rw-rw-r--&&1 shallon shallon&&2-04-20 14:22 boot.img-ramdisk.gz
-rw-rw-r--&&1 shallon shallon 2-04-20 14:22 boot.img-zImage
解开获得2个重要的文件,一个是操作系统的内核文件boot.img-zImage,一个是根文件系统ramdisk文件,boot.img-ramdisk.gz
~/cyanogenmod/out/host/linux-x86/bin/unyaffs userdata.img
解开可以看到userdata.img里面只有一个/data目录
~/cyanogenmod/out/host/linux-x86/bin/unyaffs system.img
解开可以看到原本位于system目录下的子目录。
将data目录生成文件userdata.img
out/host/linux-x86/bin/mkyaffs2image -f out/target/product/c8500/data out/target/product/c8500/userdata.img
生成boot.img
使用unpackbootimg再次打包生成新的myboot.img文件。该文件和原来的boot.img一样大小。
~/cyanogenmod/out/host/linux-x86/bin/mkbootimg --kernel boot.img-zImage --cmdline mem=211M console=ttyMSM2, androidboot.hardware=c8500 --base 0x --pagesize 4096 --ramdisk boot.img-ramdisk.gz --output myboot.img
生成system.img文件
~/cyanogenmod/out/host/linux-x86/bin/mkyaffs2image -f&&out/target/product/c8500/system out/target/product/c8500/obj/PACKAGING/systemimage_intermediates/system.img
如果对linux,Android,wince 等嵌入式底层有兴趣的,请加这个QQ群吧,群号:
在线时间130 小时
威望3732分
芯币3826枚
TA的帖子TA的资源
五彩晶圆(中级), 积分 3732, 距离下一级还需 2268 积分
五彩晶圆(中级), 积分 3732, 距离下一级还需 2268 积分
& & 昨天写了,今天继续说说Android开发调试的几大工具,主要是adb fastboot 和emulator。一般使用eclipse进行开发的Android开发者也许完全不需要用到这几个命令,但是,若要了解到系统内部,工具无疑就是解剖Android的手术刀。
Android的NAND结构与Root的过程& && & Android的刷机、Root、开发调试过程中不可避免的涉及到Android的NAND(翻译做闪存?)。耳熟能详的主要几大分区有boot、system、userdata、和recovery。
& && &&&system、userdata分区在Android文件系统中被挂载为/system和/data目录,这两个目录在使用调试工具adb的时候可以看得到,/data允许进行读写,主要存放用户自安装的程序以及使用设备产生的用户个人数据,system目录存放系统的文件以及预装的重要的系统应用,挂载到文件系统中不允许读写(除非设备被Root)。boot分区则存放操作系统的内核和initrd。recovery分区包含了一套后备的系统,主要在设备升级、备份、维护的时候使用,简单的说,要刷ROM需要进入recovery模式。
& && &&&在设备的正常工作状态(即是设备没有被Root的时候)下,只有userdata和cache分区是可读写的,其他分区则一般处在只读状态。这种设计的本意是保护系统以及系统的重要程序不被恶意纂改,保证系统的安全性,但是,当recovery分区上的recovery.img被覆盖成另一个版本(例如ClockWorkMod recovery image),recovery分区上的NAND保护机制被破坏了,NAND的分区就完全失去了保护,可以自由的更新system.img和boot.img,此时,可以说设备被Root了,或者说Nand处在&解锁(unlocked)&状态。因此,Android智能手机用户自己动手Root手机设备以及使用网上下载的手机文件来更新Nand(刷机),这是危险的举动。fastboot的用法& && &&&fastboot是Android SDK的用来读写NAND的工具,位于android-sdk-linux/platform-tools目录下,下面介绍fastboot的主要用法。
& && &&&1、手机首先要进入fastboot状态/recovery模式下,有些设备必须确保设备处在S-OFF (security off)状态。 下面以华为的C8500设备来说明。
& && &&&a:首先关机
& && &&&b:按住“音量减键”不放开,按住红色“挂断键”不放开(请一直不要放开按住的“音量减键”),按住“电源键”不放开(请一直不要放开按住的“音量减键”与红色“挂断键”)
& && &&&c:持续按住大约五秒钟(三键同时按住),手机显示停顿在华为Logo画面(手机主界面并没有继续启动,即一直停顿在华为Logo开机画面),即表示手机进入fastboot模式
2、下面这几个命令刷写NAND的主要分区,并重启。
fastboot flash userdata data.imgfastboot flash system system.imgfastboot flash boot boot.imgfastboot reboot3、刷写recovery分区并重启
fastboot flash recovery /path/to/&recovery&.imgfastboot reboot4、擦除分区
fastboot erase bootfastboot erase recovery
& && &&&刷机完成后,在日常开发调试过程中,最重要的工具是adb(Android Debug Bridge),这个工具位于android-sdk-linux/platform-tools目录下。豌豆夹之类的软件是基于adb的底层机制做成的应用(由于这种应用和adb一样需要设备工作在开发调试模式下,相信Android官方其实不想鼓励这种应用)。
& && &&&ADB的用法说明:
& && &&&1、使用USB连接线连接ubuntu和智能手机设备,并在设备上打开调试模式。设置-&应用程序-&开发-&USB调试选项打勾。
& && &&&2、adb devices能够看到设备的状态,adb shell能够连接上去设备看到一个linux的系统,使用ls还能看到文件目录
& && &&&~/android/sdk/android-sdk-linux/platform-tools$ ./adb devices
& && &&&List of devices attached
& && &&&0A3AABB70502A00Adevice
& && &&&~/android/sdk/android-sdk-linux/platform-tools$ ./adb shell
& && & # ls
& && & acct& && && && && &&&init& && && && && &&&sd-ext
& && & cache& && && && && & init.c8500.rc& && &&&sdcard
& && & config& && && && && &init.goldfish.rc& &&&sys
& && & d& && && && && && &&&init.rc& && && && &&&system
& && & data& && && && && &&&mnt& && && && && && &ueventd.goldfish.rc
& && & default.prop& && && &proc& && && && && &&&ueventd.huawei.rc
& && & dev& && && && && && &root& && && && && &&&ueventd.rc
& && & etc& && && && && && &sbin& && && && && &&&vendor
3、上传下载文件
& && &&&adb pull &remote& &local&
& && &&&adb push &local& &remote&
4、查看日志
& && &&&~/android/sdk/android-sdk-linux/platform-tools$ ./adb shell
& && &&&#logcat ActivityManager:I *:S
04-12 16:01:03.255&& I ActivityManager: Start proc com.tencent.mm for broadcast com.tencent.mm/.booter.NotifyReceiver: pid=25676& && & uid=10188 gids={, 1015}
04-12 16:01:03.482&& I ActivityManager: Displayed activity com.android.settings/.ApplicationSettings: 323 ms (total 323 ms)
4、运行系统上的命令,进入adb shell,可以查看到/system/bin有可运行的系统命令使用,此处以sqlite3为例,获取应用的用户数据(被Root的机器,好危险呀)。
& && &&&$ adb -s emulator-5554 shell
& && &&&# sqlite3 /data/data/com.example.google.rss.rssexample/databases/rssitems.db
& && &&&SQLite version 3.3.12
& && &&&Enter &.help& for instructions
& && &&&.... enter commands, then quit...
& && &&&sqlite& .exit
emulator的用法
& && &&&emulator一般的Android开发人员也许不会了解到,原因是万能的eclipse IDE配置好了之后,开发人员就直接写应用,然后在IDE上运行调试去了。这无疑很大程度的降低了开发人员的技术门槛。emulator位于android-sdk-linux/tools目录下,相关的官方文档:
& && &&&emulator的工作原理很简单,创建开发机器上的虚拟硬件设备,在虚拟硬件设备上面运行系统。如果使用eclipse IDE,在第一次运行程序的时候会自动提醒建立虚拟硬件设备(图形界面,直接点击即可)。手工使用命令行创建虚拟硬件设备也可以,参考。
& && &&&命令行下创建虚拟硬件设备:
& && &&&~/android/sdk/android-sdk-linux/tools$ ./android create avd -n my_android2.3 -t 3
& && &&&Auto-selecting single ABI armeabi
& && &&&Android 2.3.3 is a basic Android platform.
& && &&&Do you wish to create a custom hardware profile [no]
& && &&&Created AVD 'my_android2.3' based on Android 2.3.3, ARM (armeabi) processor,
& && &&&with the following hardware config:
& && &&&hw.lcd.density=240
& && &&&vm.heapSize=24
& && &&&hw.ramSize=256
& && &&&命令行下运行模拟器,可以看到一个基于qemu虚拟机上运行的android模拟设备的运行界面:
& && &&&~/android/sdk/android-sdk-linux/tools$ ./emulator -avd my_android2.3
& && &&&用模拟器加载非系统缺省的调试NAND文件,创建好虚拟硬件设备后,使用emulator的参数指定第三方NAND分区文件。例如,下面的命令指定了自编译出来的各种文件:
& && &&&./emulator -avd my_emulator_avd -system ~/cyanogenmod/out/target/product/c8500/system.img -data ~/cyanogenmod/out/target/product/c8500/userdata.img -kernel ~/cyanogenmod/out/target/product/c8500/kernel -ramdisk ~/cyanogenmod/out/target/product/c8500/ramdisk.img -debug all
& && &&&遗憾的是,上述命令我并没有调试成功,模拟器上面显示出黑屏,上述命令仅仅供参考吧。
如果对linux,Android,wince 等嵌入式底层有兴趣的,请加这个QQ群吧,群号:
EEWORLD 官方微信
EE福利 唾手可得
Powered by}

我要回帖

更多关于 华为怎么刷回官方系统 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信