版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ROM简单制作教程前言经常看到网友问:哥几个,推荐一个好用的ROM啊?这时候我们要有信心说:自己制作的ROM才是最好的ROM。当然制作ROM并不是那么简单,但也不是难到一般人做不了。高端的大大可以从安卓源码开始编译ROM,但也是以团队的形式,比较出名的有CM和MIUI。一般人还是只能从底包提取文件进行修改制作。但这也不是轻易能完成的事。我写这个教程只是出于爱好,本人并非计算机专业,所以写的并不是很专业。但正因为如此,才能给大家更多的信心,我都能简单制作,你还怕你不行?本篇教程采用一种新的模式给大家展示这个教程。将会从简单的知识普及,制作工具,步骤等说明,工程巨大,错误也不少,但还是希望能帮助到大家。以下内容参考到的作者较多,就不一一详说了,感谢这些兄弟的奉献,让我们有一个更好的玩机空间。关键词:java环境配置制作工具update-script编写美化集成编译反编译一.制作目的:培养个人兴趣,感受动手动脑的快乐。学习手机基本知识,最终动手制作自己的ROM。帮助那些需要帮助的朋友(说不定有人喜欢你制作的ROM)二.制作原理:1.安卓基础知识普及:Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。目前,最新版本为Android2.4Gingerbread和Android3.0Honeycomb。底包:官方的系统包,相当于我们的Windows的操作系统,事实上它相当于一个纯净版或者内核版的系统包,是最底层的东西。扩展名为sbf,底包通常是官方发布的,ROM作者直接拿来用的,可以选择的版本不会太多,通常更新也不会频繁。底包通常使用PC端刷机工具(RSD)配合Bootloader的工程模式完成刷入。升级包(镜像包):广大玩家制作的底包增强包,通常表现为一个update.zip文件。升级包是对底包的扩展和增强,包含一系列的辅助工具和服务,没有中文的底包通过升级包可以实现中文。当然,很多功能也是通过升级包来实现的。可以说,在刷新了底包后,配合刷新相应的升级包,这样才形成一个完整系统。升级包通常通过Recovery工具,从SD卡读取刷入。Bootloader:相当于电脑里面的bios(基本输入输出系统),手机一开机,控制手机的就是Bootloader。我们通常所说的进入Bootloader,实际上是指进入Bootloader的工程模式,既是刷机模式,在此模式下可以将moto的sbf文件(底包)刷到机器里面。Recovery:Moto手机内置的一个独立备份恢复工具,类似电脑上的一些一键还原系统,既是在系统出现问题的时候仍然可以打开的一个模式。Moto的Recovery主要提供了WIPE(硬启,清除数据,恢复出厂设置)和Update(通常用于安装升级包,update.zip)功能。Recovery是不能直接刷新的底包的,通常它刷新的升级包(update.zip)的方式是:自动寻找SD卡上的特定文件,然后写入。基带(Baseband):是手机中的一块专门的代码,或者可以理解成为一个专门负责通讯的BIOS,负责完成移动网络中无线信号的解调、解扰、解扩和解码工作。基带的不同会造成信号效果的不同。因为各地、各网络实际情况不同,需要大家自己选择适合自己的基带。WIPE:wipe后就恢复了出厂设置,包括联系人、短信、安装的软件等全部删除。俗称硬启,恢复出厂设置。注意,wipe后app2sd和root权限需要重新做。而且app2sd重要的分区步骤也要重新来过。某些说法提到在刷新底包或者升级包前需要进行WIPE操作,我对此操作的必要性不是很确定。OpenRecovery(简称OR):由于MOTO很蛋疼的在update.zip上做了一些手脚,这些东西影响到了升级包的制作。于是高手们就搞出了一个OpenRecovery,这其实就一个第三方的增强版的Recovery工具,某些OpenRecovery已经发展成为一个具有很多功能的小系统了(类似WindowsPE),在这个OR中,可以完成很多东西,我们完全可以把OR想象成电脑上用的应急PE系统,在上面可以调整超频、基带、app2sd、更换启动画面、wipe、改变时区、调整键盘布局,甚至链接USB当读卡器等等,凡是recovery能做的,OR都可以做‘recovery不能做到,OR可以做到。一般OpenRecovery在sd卡上有两个部分存在:update.zip和OpenRecovery目录,最新的GOT底包添加了新的一个OpenRecovery-CFG目录,用来存放各种个人文件oupdate.zip就是用来坑MOTO一个标准的的zip升级包,而真正的升级包要放在/sdcard/OpenRecovery/updates目录下。App2sd:说白了,其实很简单,就是把APK文件安装到sd卡上,android是Linux脱胎而来,App2sd的原理就是对SD卡进行分区,然后把SD上划分出来的某个分区合并到系统分区中去(听不懂,不要紧),划分出来的分区是Ext2格式,一般Windows不能识别,不要惊慌,正常现象。App2sd对sd卡要求比较高,如果感觉app2sd后比较慢,可以试试换一张C4的sd卡。因为在2.1的环境下,app2sd需要对sd进行分区,操作比较复杂,E文不好的小白或者电脑基础薄弱的小白容易失误。建议对Android非常熟悉了再做App2sd。⑨Root:大家都知道android系统脱胎自Linux,也正是这个开源的内核让广大玩家可以自由发挥。Root是Linux系统下的系统级账号,拥有系统的全部权限,Android设计上的不开放这个用户的,目的是为了保护系统安全,但是这个保护似乎也带来很多不便。于是就一些工具和方法来开放这个账号。开放Root账号的方法似乎有很多,这里就不再细说。原理上分析,root的账号,应该通过在Android系统安装某个系统级别的服务,该服务具有root权限,然后其它需要root权限的程序再向这个服务请求root权限。WIPE、刷机都有可能会造成root权限失效,需要重新root权限。额外说明:①从原理上分析,通常底包,Bootloader,Recovery,基带都是可以刷新替换的,升级包当然更可以。但是底包、Bootloader很少会有第三方开发或者修改的,一般都使用官方发布的。底包有时候会内置Bootloader、Recovery,这样的底包刷新时会连上述两者一起更新(推测结果,不确定)。更新这样的底包是有危险的,有可能会造成Bootloader损坏,这个东西损坏了,基本就是变砖了,真正的变砖,只能花钱去修了。只有这个东西没坏,就不是砖。②我们通常所说的刷机ROM实际是升级包,升级包是对应于特定的底包制作的,所以刷机时务必确保使用的底包和升级包版本上保持一致。③需要注意版本号的还有:Bootloader版本、基带版本、Recovery版本④目前有些OpenRecovery工具支持底包、升级包一起从SD卡读取刷入⑤似乎刷机前确保系统干净整洁是很重要的,很多教程提到要通过WIPE-刷底包的步骤来确保刷机前的干净,实际上如果底包版本没有变化,刷底包似乎、也许、大概、可能是不必要的。系统结构及文件简单剖析:一个常见的自制ROM根目录会有以下几个文件夹及文件:data,META-IN,system,boot.img(锁了BL的可以无视这个,但制作时需要它,打包时把它拿出来。)系统目录说明①应用程序安装目录1) 系统应用程序所在目录/system/app/*.apk2) 用户安装应用程序所在目录/data/app/*.apk3)注意:a)在模拟器中,每重启一次,/system/app/下的应用都会被还原,有时/data/app下也会被清除b)若在/system/app和/data/app下有重名的应用,不一定会启动哪一个,尤其是在adbinstall杀死正在运行的程序时,有时旧的就会被启动■用户数据所在目录/data/data/应用包名/shared_prefs配置文件/data/data/应用包名/databases/*库文件所在目录.SD卡对应目录/sdcard/而我们需要处理的只是两个文件夹里面的内容:data/app——该文件夹里的文件可以全删,也可以自由添加自已所需安装的应用软件,刷机安装后可以自由删除。system/app——在这个文件夹下的程序为系统默认的组件,可以看到都是以APK格式结尾的文件,但有些系统自带的ROM里面还有和APK文件名对应的odex文件。我们主要是针对该文件夹里的文件进行精简,如果有odex文件的,删除APK文件名时同时也删除与其对应的odex文件。虽然一般定制时只是对以上两个文件夹里的文件做相应的增减,但我们还是一起来了解system相应目录常见相应文件的用途吧。rom版本不同,里面的APK也会不一样,其它文件夹下需要改动的较少,或者不需要改动。但app文件下是制作时的重点,所以详细列出:[url=file://system/app]\\system\\app[/url][url=file://system/app/AlarmClock.apk]\\system\\app\\AlarmClock.apk[/url]闹钟[url=file://system/app/Browser.apk]\\system\\app\\Browser.apk[/url]浏览器[url=file://system/app/Bugreport.apk]\\system\\app\\Bugreport.apk[/url]Bug报告\\system\\app\\Calculator.apk计算器\system\app\Calendar.apk日历\\system\\app\\CalendarProvider.apk日历提供\\system\\app\\Camera.apk照相机\\system\\app\\Contacts.apk联系人\\system\\app\\DownloadProvider.apk下载提供\\system\\app\\DrmProvider.apkDRM数字版权提供\\system\\app\\Email.apk电子邮件客户端\\system\\app\\FieldTest.apk测试程序\\system\\app\\GDataFeedsProvider.apkGoogleData提供\\system\\app\\Gmail.apkGmail电子邮件\\system\\app\\GmailProvider.apkGmail提供\\system\\app\\GoogleApps.apk谷歌程序包\\system\\app\\GoogleSearch.apk搜索工具\\system\\app\\gtalkservice.apkGTalk服务\\system\\app\\HTMLViewer.apkHTML查看器\\system\\app\\HtcTwitter.apk集成Twitter客户端PEEP\\system\\app\\IM.apk即使通讯组件包含MSN、yahoo通\\system\\app\\Launcher.apk启动加载器\\system\\app\\Maps.apk电子地图\\system\\app\\MediaProvider.apk多媒体播放提供\\system\\app\\Mms.apk短信、彩信\\system\\app\\Music.apk音乐播放器\\system\\app\\PackageInstaller.apkapk安装程序\\system\\app\\Phone.apk电话拨号器\\system\\app\\Settings.apk系统设置\\system\\app\\SettingsProvider.apk设置提供\\system\\app\\SetupWizard.apk设置向导\\system\\app\\SoundRecorder.apk录音工具\\system\\app\\Street.apk街景地图\\system\\app\\Sync.apk同步程序\\system\\app\\Talk.apk语音程序\\system\\app\\TelephonyProvider.apk电话提供\\system\\app\\Updater.apk更新程序\\system\\app\\***Services.apk***服务\\system\\app\\Vending.apk制造商信息\\system\\app\\VoiceDialer.apk语音拨号器\\system\\app\\VoiceSearch.apk语音搜索app文件夹内放的就是内置软件,有不想要的,直接删除之。请在删除之前先弄清楚它能不能删除。有些官方内置的软件,删除了ROM就废了。当然,你也可以在没弄清楚的情况下乱删一气,只要在刷机完发现问题之后,把删除的软件,一个个放回去排查,刷个十遍八遍,大约也就搞定了。所以我们要佩服那么敢于探索的先驱,不容易啊。fonts文件夹放的是手机的字体,如果没有美术细胞的人就不要乱改,改字体有时候会死人的,刺眼、字形不协调、大小不一致等等诸如此类。要改也刷机完以后再改。具体方法要参见自己区的人发的帖子。lib文件夹顾名思义,是内置软件的库文件。有些软件需要动态库支持才能正常使用的,比如常见的输入法之类的。所以,如果你向一个原本可以正常使用的ROM中加入了新的软件之后,反而出现某程序意外关闭某程序意外结束的情况后,那么基本上就是你忘了把库文件给它移动过去。bin文件夹中放的是系统内置的工具,像什么busybox,su之类的都在里面,没事不要删除它,可以添加,但不要删除。etc文件夹中放置的是系统的设置,诸如无线、GPS、DHCP、拨号、APN列表之类的设置。这个目录中,如果你改了重要的CONF文件,则可能系统出问题。也可以改一部分不重要的东西(比如说APN列表)而不出现问题,但貌似APN列表没必要改。framework目录就是系统的UI了,想改界面的人应该改这个目录中的文件。。大约也就是替换一些什么图片,换掉界面框架什么的,改改字体颜色什么的?以达到改换界面的目的。media目录是系统内置的媒体文件,如开机音乐,内置的通话铃声、信息铃声、闹钟铃声,可以改,但格式是OGG的,可以自己去搜索如何换格式。usr目录是系统的部分使用配置,包括键盘映射表什么的,没事不要改。。。xbin目录,好吧,这个目录可以放一些工具,而且貌似官方本身在里面放了一个tcpdump,是截获网络数据包的。没试过删除它,推荐有冒险精神的可以删除之,再将结果告诉我们。system:系统分区•我们刷机器一般就是刷的这个分区.userdata:数据分区.cache:缓存分区recovery:Recovery分区,相当于建立在hboot与android系统间的一个中间层,如名字一般,主要用于系统调试和恢复。.boot:存放内核和ramdisk的分区.hboot:这个是SPL所在的分区,即bootloadersplashi:这个就是开机第一屏幕了.radio:这个是无线所在的分区,即基带所在分区。misc:其他分区3■创建一个刷机包,update-script脚本语法说明简单举例:创建一个update.zip文件是很简单的事情,你所需要做的就是将文件放置到与Android文件系统中相对应的文件夹中,然后编写一个用来复制这些文件到手机对应位置的update-script,文件。作为举例,比如安装Calculator.apk到system/app文件夹,复制libsec-ril.so文件到system/lib文件夹:新建一个空文件夹(本文例:G:\android)新建用来放置Calculator.apk的文件夹C:\android\system\app以及用来放置libsec-ril.so的文件夹G:\android\system\lib0创建用来放置update-script文件的文件夹G:\android\META-INF\com\google\android。创建一个名为updater-script的文件,其内容如下:1.show_progress0.102.3.copy_dirPACKAGE:systemSYSTEM:4.5.show_progress0.1106.行1和行5:显示进度条行3:复制刷机包中的system文件夹到Android的/system注意:你应该在文件的最末尾多添加一个空行(也就是行6)将C:\android压缩中的所有内容压缩为zip包(千万记住:是压缩android这个文件夹中的内容,不是android文件夹本身)为android.zip签名基础语法篇copy_dir语法:copy_dir<src-dir><dst-dir>[<timestamp>]<src-dir>表示原文件夹,vdst-dir>表示目的文件夹,[<timestamp>]表示时间戳作用:将<src-dir>文件夹中的内容复制到<dst-dir>文件夹中。<dst-dir>文件夹中的原始内容将会保存不变,除非<src-dir>文件夹中有相同的内容,这样<dst-dir>中的内容将被覆盖举例:copy_dirPACKAGE:systemSYSTEM:(将升级包中的system文件夹复制到手机中)format语法:formatvroot>vroot>表示要格式化的分区作用:格式化一个分区举例:formatSYSTEM:(将手机/system分区完全格式化)注意:格式化之后的数据是不可以恢复的delete语法:delete<file1>[...<fileN>]vfilel>[…vfileN>]表示要格式化的文件,可以是多个文件用空格隔开作用:删除文件1,2到n举例:deleteSYSTEM:app/Calculator.apk(删除手机systen文件夹中app中的Calculator.apk文件)delete_recursive语法:delete_recursive<file-or-dirl>[...<file-or-dirN>]vfile-or-dir1>[…vfile-or-dirN>]表示要删除的文件或文件夹,可以使多个,中间用空格隔开作用:删除文件或者目录,删除目录时会将目录中的所有内容全部删除举例:delete_recursiveDATA:dalvik-cache(删除/data/dalvik-cache文件夹下的所有内容)run_program语法:run_program<program-file>[<args>...]<program-file>表示要运行的程序,[<args>...]表示运行程序所加的参数作用:运行终端程序举例:run_programPACKAGE:install_busybox.sh(执行升级包中的install_busybox.sh脚本)set_perm语法:set_perm<uid><gid><mode><path>[...<pathN>]vuid>表示用户名称,vgid>表示用户组名称,vmode>,表示权限模式,<path>[...<pathN>]表示文件路径,可以使多个,用空格隔开作用:设置单个文件或目录的所有者和权限,像linux中的chmod、chown或chgrp命令一样,只是集中在了一个命令当中举例:set_perm020000550SYSTEM:etc/init.goldfish.sh(设置手机system中的etc/init.goldfish.sh的用户为root,用户组为shel1,所有者以及所属用户组成员可以进行读取和执行操作,其他用户无操作权限)set_perm_recursive语法:set_perm_recursivevuid><gid>vdir-mode>vfi1e-mode>vpath>[...vpathN>]vuid>表示用户,vgid>表示用户组,vdir-mode>表示文件夹的权限,vfi1e-mode>表示文件的权限,<path>[...<pathN>]表示文件夹的路径,可以多个,用空格分开作用:设置文件夹及文件夹中的文件的所有者和用户组举例:set_perm_recursive0007550644SYSTEM:app(设置手机system/app文件夹及其中文件的用户为root,用户组为root,app文件夹权限为所有者可以进行读、写、执行操作,其他用户可以进行读取和执行操作,其中的文件的权限为所有者可以进行读写操作,其他用户可以进行读取操作)rwx对应421R读权限w写权限x执行权限5代表R+X,6代表R+W,7代表R+W+X。一般系统文件常见的权限是644。show_progress语法:show_progress<fraction><duration><表示一个小部分><表示一个小部分的持续时间>作用:为下面进行的程序操作显示进度条,进度条会根据<duration〉进行前进,当操作时间是确定的时候会更快举例:show_progress0.10(显示进度条当操作完成后前进10%)symlink语法:symlink<link-target><link-path>vlink-target>表示链接到的目标,vlink-path>表示快捷方式的路径作用:相当于linux中的ln命令,将<1ink-target>在<1ink-path>处创建一个软链接,vlink-target>的格式应为绝对路径(或许相对路径也可以),vlink-path>为“根目录:路径”的形式举例:symlink/system/bin/suSYSTEM:xbin/su(在手机中system中的xbin中建立一个/system/bin/su的快捷方式)assert语法:assert<boolexpr>作用:此命令用来判断表达式boolexpr的正确与否,当表达式错误时程序终止执行※此作用有待验证package_extract_file/dir语法:package_extract_file(file/dir,file/dir)作用:提取包中文件/路径举例:package_extract_dir("system","/system");package_extract_file("system/bin/modelid_cfg.sh","/tmp/modelid_cfg.sh");write_radio_image语法:write_radio_imagevsrc-image>作用:将基带部分的镜像写入手机,vsrc-image>表示镜像文件举例:write_radio_imagePACKAGE:radio.imgwrite_hboot_image语法:write_hboot_image<src-image>作用:将系统bootloader镜像写入手机,vsrc-image>表示镜像位置,此命令在直到在所有的程序安装结束之后才会起作用举例:write_hboot_imagePACKAGE:hboot.imgwrite_raw_image语法:write_raw_imagevsrc-image>vdest-root>作用:将boot.img写入手机,里面包含了内核和ram盘举例:write_raw_imagePACKAGE:boot.imgBOOT:③•根目录以及分区的定义(在Android源代码的rootc文件中定义)根目录:Linux块设备/挂载点/件系统大小描述BOOT:?]/dev/mtdblock[/(RAM)Raw内核、内存盘和引导配置。DATA:/dev/mtdblock5/datayaff91904kb用户、系统配置,软件配置以及软件
/s2(没有a2sd的话)CACHE/dev/mtdblock4/cache/yaffs230720kbOTA缓存,recovery/更新配置及临时文件夹MISC:/dev/mtdblock[?]N/ARaw,[?]kb(等待添加)PACKAGE:(相对于刷机包)N/A刷机包的伪文件系统。RECOVERY:/dev/mtdblock[?]/(RAM)Raw,[?]kbrecovery和更新环境的内核和内存盘。类似于BOOT:。SDCARD:/dev/mmcblk0(pl)/sdcard/fat332MB-32GTF卡。通常刷机包就放在这里。SYSTE/systyaffM:/dev/mtdblock3emJs292160kb系统分区,静态且是只读的。TMP:/tmp/(RAM)标准的Linux临时文件夹在关机/重启时清空。④.具体实例:1.assert(getprop("duct.device")=="swift"||getprop("duct")=="swift"||getprop("duct.board")=="swift");2.package_extract_file("system/bin/backuptool.sh","/tmp/backuptool.sh");3.set_perm(0,0,0777,"/tmp/backuptool.sh");4.run_program("/tmp/backuptool.sh","backup");5.show_progress(0.500000,0);6.format("yaffs2","MTD","system");7.package_extract_dir("recovery","/system");9.package_extract_dir("system","/system");10.symlink("busybox","/system/xbin/[","/system/xbin/[[",11."/system/xbin/arp","/system/xbin/ash","/system/xbin/awk",12."/system/xbin/basename","/system/xbin/bbconfig","/system/xbin/brctl",13."/system/xbin/bunzip2","/system/xbin/bzcat","/system/xbin/bzip2",14."/system/xbin/cal","/system/xbin/cat","/system/xbin/catv",15."/system/xbin/chgrp","/system/xbin/chmod","/system/xbin/chown",16."/system/xbin/chroot","/system/xbin/cksum","/system/xbin/clear",17."/system/xbin/cmp","/system/xbin/cp","/system/xbin/cpio",18."/system/xbin/cut","/system/xbin/date","/system/xbin/dc",21."/system/xbin/dmesg","/system/xbin/dnsd","/system/xbin/dos2unix",22."/system/xbin/du","/system/xbin/echo","/system/xbin/ed",23."/system/xbin/egrep","/system/xbin/env","/system/xbin/expr",24."/system/xbin/false","/system/xbin/fdisk","/system/xbin/fgrep",25."/system/xbin/find","/system/xbin/fold","/system/xbin/free",26."/system/xbin/freeramdisk","/system/xbin/fuser","/system/xbin/getopt",27."/system/xbin/grep","/system/xbin/gunzip","/system/xbin/gzip",28."/system/xbin/head","/system/xbin/hexdump","/system/xbin/id",29."/system/xbin/ifconfig","/system/xbin/insmod","/system/xbin/install",30."/system/xbin/ip","/system/xbin/kill","/system/xbin/killall",33."/system/xbin/lsmod","/system/xbin/lspci","/system/xbin/lsusb",34."/system/xbin/lzop","/system/xbin/lzopcat","/system/xbin/md5sum",35."/system/xbin/mkdir","/system/xbin/mke2fs","/system/xbin/mkfifo",36."/system/xbin/mkfs.ext2","/system/xbin/mknod","/system/xbin/mkswap",37."/system/xbin/mktemp","/system/xbin/modprobe","/system/xbin/more",38."/system/xbin/mount","/system/xbin/mountpoint","/system/xbin/mv",39."/system/xbin/netstat","/system/xbin/nice","/system/xbin/nohup",40."/system/xbin/nslookup","/system/xbin/ntpd","/system/xbin/od",41."/system/xbin/patch","/system/xbin/pgrep","/system/xbin/pidof",42."/system/xbin/ping","/system/xbin/pkill","/system/xbin/printenv",45."/system/xbin/renice","/system/xbin/reset","/system/xbin/rm",46."/system/xbin/rmdir","/system/xbin/rmmod","/system/xbin/route",47."/system/xbin/run-parts","/system/xbin/sed","/system/xbin/seq",48."/system/xbin/setsid","/system/xbin/sh","/system/xbin/sha1sum",49."/system/xbin/sha256sum","/system/xbin/sha512sum",50."/system/xbin/sleep","/system/xbin/sort","/system/xbin/split",51."/system/xbin/stat","/system/xbin/strings","/system/xbin/stty",52."/system/xbin/swapoff","/system/xbin/swapon","/system/xbin/sync",53."/system/xbin/sysctl","/system/xbin/tac","/system/xbin/tail",54."/system/xbin/tar","/system/xbin/tee","/system/xbin/telnet",57."/system/xbin/traceroute","/system/xbin/true","/system/xbin/tty",58."/system/xbin/tune2fs","/system/xbin/umount","/system/xbin/uname",59."/system/xbin/uniq","/system/xbin/unix2dos","/system/xbin/unlzop",60."/system/xbin/unzip","/system/xbin/uptime","/system/xbin/usleep",61."/system/xbin/uudecode","/system/xbin/uuencode","/system/xbin/vi",62."/system/xbin/watch","/system/xbin/wc","/system/xbin/wget",63."/system/xbin/which","/system/xbin/whoami","/system/xbin/xargs",64."/system/xbin/yes",65."/system/xbin/zcat");66.symlink("iwmulticall","/system/xbin/iwconfig","/system/xbin/iwgetid","/system/xbin/iwspy");69.symlink("toolbox","/system/bin/cat","/system/bin/cmp",70."/system/bin/date","/system/bin/dd","/system/bin/dmesg",71."/system/bin/getevent","/system/bin/getprop","/system/bin/hd",72."/system/bin/id","/system/bin/ifconfig","/system/bin/iftop",73."/system/bin/insmod","/system/bin/ioctl","/system/bin/ionice",74."/system/bin/kill","/system/bin/log","/system/bin/lsmod",75."/system/bin/mkdir","/system/bin/nandread","/system/bin/netstat",76."/system/bin/newfs_msdos","/system/bin/notify","/system/bin/printenv",77."/system/bin/ps","/system/bin/reboot","/system/bin/renice",78."/system/bin/rmdir","/system/bin/rmmod","/system/bin/route","/system/bin/setconsole","/system/bin/setprop","/system/bin/sleep",81."/system/bin/smd","/system/bin/start","/system/bin/stop",82."/system/bin/sync","/system/bin/top","/system/bin/uptime",83."/system/bin/vmstat","/system/bin/watchprops",84."/system/bin/wipe");85.set_perm_recursive(0,0,0755,0644,"/system");86.set_perm_recursive(0,2000,0755,0755,"/system/bin");87.set_perm(0,3003,02750,"/system/bin/netcfg");88.set_perm(0,3004,02755,"/system/bin/ping");89.set_perm(0,2000,06750,"/system/bin/run-as");90.set_perm_recursive(1002,1002,0755,0440,"/system/etc/bluetooth");91.set_perm(0,0,0755,"/system/etc/bluetooth");set_perm(1000,1000,0640,"/system/etc/bluetooth/auto_pairing.conf");93.set_perm(3002,3002,0444,"/system/etc/bluetooth/blacklist.conf");94.set_perm(1002,1002,0440,"/system/etc/dbus.conf");95.set_perm(1014,2000,0550,"/system/etc/dhcpcd/dhcpcd-run-hooks");96.set_perm_recursive(0,2000,0755,0750,"/system/etc/init.d");97.set_perm(0,0,0755,"/system/etc/init.d");98.set_perm(0,2000,0550,"/system/etc/init.goldfish.sh");99.set_perm(0,0,0544,"/system/etc/install-recovery.sh");100.set_perm_recursive(0,0,0755,0555,"/system/etc/ppp");101.set_perm_recursive(0,2000,0755,0755,"/system/xbin");102.set_perm(0,0,06755,"/system/xbin/hcitool");103.set_perm(0,0,06755,"/system/xbin/librank");set_perm(0,0,06755,"/system/xbin/procmem");105.set_perm(0,0,06755,"/system/xbin/procrank");106.set_perm(0,0,06755,"/system/xbin/su");107.set_perm(0,0,06755,"/system/xbin/tcpdump");108.show_progress(0.200000,0);109.show_progress(0.200000,10);110.package_extract_file("system/bin/backuptool.sh","/tmp/backuptool.sh");111.set_perm(0,0,0777,"/tmp/backuptool.sh");112.run_program("/tmp/backuptool.sh","restore");113.package_extract_file("system/bin/modelid_cfg.sh","/tmp/modelid_cfg.sh");114.set_perm(0,0,0777,"/tmp/modelid_cfg.sh");115.run_program("/tmp/modelid_cfg.sh");package_extract_file("system/bin/verify_cache_partition_size.sh","/tmp/verify_cache_partition_size.sh");117.set_perm(0,0,0777,"/tmp/verify_cache_partition_size.sh");118.run_program("/tmp/verify_cache_partition_size.sh");119.show_progress(0.200000,10);120.assert(package_extract_file("boot.img","/tmp/boot.img"),121.write_raw_image("/tmp/boot.img","boot"),122.delete("/tmp/boot.img"));123.show_progress(0.100000,0);124.unmount("/system");125.BL 手机爱好者心中最大的痛Bootloader从字面上来看就是启动加载的意思。用过电脑的都知道,windows开机时会首先加载bios,然后是系统内核,最后启动完毕。那么bootloader就相当于手机的bios,它在手机启动的时候根据基带初始化硬件,然后引导系统内核,直到系统启动。因此可以看出,bootloader很重要,如果bootloader不能正常加载,手机就是砖头一个,无法正常启动和使用。这也就是为什么bootloader被锁的手机必须要破解才能刷第三方rom。如果不破解bootloader,就无法初始化手机硬件,手机也就无法使用。先思考一下大家为什么想要解锁bootloader?肯定都是因为想要刷各种各样的第三方rom。为什么大家想要第三方的rom呢?一是因为官方的rom更新慢,并且官方的rom里面有各种各样运营商集成的软件。而第三方rom是根据google官方的rom源码重新打包编译的,也就是所谓的原生系统,很干净。这样很多用户都会选择第三方rom,这就损害了运营商的利益,这是摩托罗拉不愿意看到的二是因为摩托罗拉官方的rom集成了摩托罗拉自己的BLUR服务,主要是一些社交服务,国外的facebook、twitter等,国内的人人,新浪等。相信很多人都是用不到这些的,这些人也会选择第三方rom,这也是摩托罗拉不愿意看到的。摩托罗拉不愿意看到上面的情况发生,但偏偏安卓系统又是开源的,必须要公布源代码,无奈的摩托罗拉只好另辟蹊径,于是就有了锁bootloader。内核开源,但bootloader不需要开源,加密bootloader是合理的。于是摩托罗拉锁了bootloader并且给内核做了文件签名,只有签名通过的内核才能被bootloader识别。这样一个bootloader锁诞生了。bootloader锁直接导致摩托罗拉的手机无法使用各种第三方的rom,于是很多国外的高手开始破解bootloader。前一段有一个传闻说bootloader被破解了,但是被摩托罗拉官方发了律师函,于是便不了了之。这也正是摩托罗拉bootloader一直无法破解的原因,一是很难破解,二是高手们怕惹祸烧身。现在有消息说,官方会今年晚些时候会为手机解锁bootloader,算是一个值得期待的好消息,各位摩托罗拉用户可以耐心等待一下,不用着急。最后,送给摩托罗拉官方一句话:解锁Bootloader—摩托罗拉用户的心声。在这个用户至上的社会,千万不要因为一点小利益而忽略了用户,这注定会失败,无论你是一个多么老多么大的品牌厂商。在刷机过程中未停电且未断开数据线的情况下,开不了机普遍有两种可能。①boot.img是加过密的。就是锁了bl。各个手机制造商在做ROM的时候,以他们独自的加密算法,对整个文件进行CRC验算,然后将验算值添加到boot.img的最末尾。刷机的时候,手机的硬件BIOS就像一名尽职的士兵,对此进行验算,对不上口令的,那么对不起,请君离开,不离开我报警了~~呃,报不了警,那反正我不让你进门~~boot.img还有一个重要的参数,基址base,用于告诉手机从哪个地址开始,是准备给内存盘的入口,哪个地址是给kernel的入口。如果你对不上号,对不起,不能非法入室的。摩托常见刷机方法:例如:Milestone2系统备份+恢复+ZIP格式的刷机包+镜像文件刷机包的方法,非常适合经常刷机,DIY刷机包的童鞋们使用。先备份好系统后,不管你把ROM弄得怎么个乱,怎么个精减。出问题了直接恢复备份好的系统就是你完美的包包了。省去你重新刷机,重新精减,重装软件的麻烦事情。①备份Milestone2系统的方法:Milestone2必须要ROOT过,获得权限。按装恢复模式工具Droid2Boot3.0中文版,:'Droid2bootstrap3.0.apk(2.34MB)运行复模式工具选择引导恢复模式出现权限选择允许…确定然后选择重启到恢复模式选择——backupandrestore(备份和恢复)选择backup(备份)接下来软件自动备份开始,时间需要几分钟左右。e.备份结束后,选择rebootsystemnow 手机重启f.完整的Milestone2系统备份保存在:内存卡 clockworkmod文件夹 backup文件夹 备份时间文件夹 备份好的系统 备份容量大小500多M..android_s&cur已2011/7/195:13光盅晅辕刘牛3KEcache2011/7/195:13光盅映舷件11KBdata2011/7/195:13光盘BS像左件301,&23KBnandroid.md52011/7/195:13MD5文件1KBsyst&m2011/7/19光盘映煖文件233.026KB从另一个角度考虑,这也是提取system.img的一种办法。Milestone2系统备份还原的方法:a.运行复模式工具选择引导恢复模式出现权限选择允许确定然后选择…重启到恢复模式b.选择——backupandrestore(备份和恢复)c.选择Recovery(恢复备份的系统)软件将会从:内存卡 clockworkmod文件夹 backup文件夹 备份时间文件夹 备份好的系统,来恢复你曾经备份过的系统。恢复备份完成。重启手机。这样你完整的Milestone2系统又回来了。镜像文件的刷机包,刷机方法:只要把下载好的镜像文件刷机包放入到 内存卡 clockworkmod文件夹 backup文件夹 镜像刷机文件夹(文件名只能用英文,不能有空格哦)照着上面的恢复备份方法就可以刷镜像文件的刷机包了。ZIP格式刷机包,刷机方法:a.把下载好的ZIP格式的刷机包存放到放到内存卡根目录里b选择重启到恢复模式,手机重启c.choosezipfromsdcard选择installzipfromsdcard 在选择choosezipfromsdcarde.刷写完成后,按电源键返回 选择rebootsystemnow,手机重启,刷机完成删除恢复模式的方法:a:先删除恢复模式工具b:用RootExplorer进入/system/bin/c:点右上角,切换为读写状d:删除文件hijack,删除文件logwrapper,把文件logwrapper.bin改名为logwrappere:点击右上角按钮,切换回只读状态f:重启手机就OK啦三、制作工具1.jdk1.7.0:(115网盘)安装,配置jdk1.7.0:执行jdk安装程序,自定义路径,我的安装路径为:C:\ProgramFiles\Java\jdk1.7.0根据个人的具体路径)配置jdk:配置环境变量:Win7下为:计算机->属性->高级系统设置->环境变量->系统变量中添加以下环境变量:JAVA_HOME=C:\ProgramFiles\Java\jdkl・7・0(根据自己的路径修改)CLASSPATH=・;C:\ProgramFiles\Java\jdk1・7・0\lib\tools・jar;C:\ProgramFiles\Java\jdk1・7・0\lib\dt・jarpath=C:\ProgramFiles\Java\jdk1・7・0\bin;写一个简单的java程序来测试jdk是否已安装成功:publicclasshello{publicstaticvoidmain(Stringargs[]){System・out・println("Hello");}}将程序保存为文件名为hello・java的文件。打开命令提示符窗口,进入到hello・java所在目录,键入下面的命令javachello・javajavahello此时若打出来hello则安装成功,若没有打印出这句话,仔细检查以上配置是否正确。注意系统文件夹选项中应确定“隐藏已知文件类型的扩展名”不勾选。2.apktool工具箱(115网盘)可以解压放到你的emd默认目录下,这样就不用每次都那么麻烦进入工具hicrosoftWindows 6.1.7600]版权所有2009MicrosoftCorporationo保留所有权利。C:MJsers\user>GC:MJsers\user>aBS.EF7XN.COM比如我的默认目录为C:\Users\users,我就把解压出来的所有文件包括:aapt.exe,Apktool.bAt,apktool.jar放到这个文件夹下,具体的应用自己解决。简单应用举例:主要是在美化时用到。①apktoold"C:\framework-res.apk""C:\framework”命令行解释:apktoold要反编译的文件输出文件夹我们可以看到一个叫做res的目录,打开后看到一堆目录,所有的程序界面资源就放在这个res目录里面,我们这里简单的介绍一下这些目录对应的作用。drawable,这个目录是放程序需要用到的图标以及各种图片的layout-land,这个目录是放竖版界面的xml描述文件的layout-port,这个目录是放横版界面的xml描述文件的menu,这个顾名思义,就是放菜单布局的xml描述文件的values这个目录是汉化重头戏,绝大部分需要汉化的字符串资源定义就在这里面xml,其他不再详细分类的布局xml描述文件一个写的很规范的Android程序,会把整个程序里面所用到的字符串资源都分离出来,放在values的strings.xml文件里面,而放在values目录的,基本上就是英文字符串资源。而一般的程序在处理字符串资源上都是交给Android系统去判断是什么环境,从而自己选择语言的②apktoolb"C:\framework"命令行解释:apktoolb要打包内容所在文件夹UltraEdit:用于编写代码的好软件.(在115网盘)核心软件:厨房(115网盘)①为厨房安装Cygwin的步骤1) 1)解压下载到的压缩包(比如解压到C盘,解压出来的东西包括:包的文件夹u'cygwiLpackages、安装程序u'setup・exe、文档c:\安装说明■txt),记得路径中不要带中文,最好也不要带空格2) 运行Setup.exe,然后点击Next(下一步)。3) 选择"InstallfromLocalDirectory,"4) 接下来,指定根目录。也就是你想要安装Cygwin的位置(但不能是本压缩包解压出来的cygwin_packages文件夹)。如果你喜欢,可以是C:\Cygwin,注意要确定文件夹名种没有空格。然后,要指定的LocalPackageDirectory必须指定为cygwin_packages文件夹所在路径,例如C:\cygwin_packages假如跳出了一个警告对话框,点击确定(是)。6) 当安装程序显示出所有的包名时,点击更改上方的"All<->Default"为"All〈->Install"(需要点击那个箭头)7) 然后点击Next,安装程序就会为你安装好androidKitchen需要Cygwin提供的一切支持8) 最后,点击桌面上的Cygwin快捷方式以便为你创建home文件夹。搞定!本Cygwin安装包中包含了以下的包,这些都是厨房正常工作所需要的:*Devel/gccInterpreters/perlUtils/cpio*Utils/util-linux*Utils/ncurses*Archive/zip*Archive/unzip*Web/wget②如何开始使用ROM组专用定制工具:1) 完成上面的步骤后,将下载到ROM组专用定制工具解压到G:\Cygwin\home\Administrator文件夹中(这里假设你的Cygwin是安装在C盘根目录下,而且你电脑的用户名为Administrator。具体请根据各自的设置进行变通)。2) 点击桌面上的Cygwin快捷方式3) 执行命令:cdandroid_Kitchen4) 执行命令:./menu°K,剩下的事情就靠你自己自由发挥了。
78HTCAndroidkitchen -hydsixda<>78HTCAndroidkitchen -hydsixda<>1G机捧爬坛BBS.GFAN.COM输入选择:■:権职的洒-分解ROM色到工作目录中-毬力ilroot枚限-添加BusyBox-禁止开机音乐-舔抑WiFi共. _-艺谢珀缸"P%玄■任执行.-逻改ROfl的wipe^态£是否牟-修西仙的名字 ,_-检查update-script申是否存住错误-显示当前工作目录的信意PS:—个小技巧,使用用文本编辑器(例如EmEditor,不建议使用系统自带的记事本程序)打开C:\Cygwin\home\Administrator\.bashrc,在最后面添加以下两行。cdandroid_Kitchen/./menu这样做的好处是,一旦你点击了桌面上的Cygwin快捷方式,就会直接进入厨房界面了。ROM提取工具HTC:本人没有用过HTC的手机,这只是网上找的一篇文章以作参考,具体的还请自己尝试吧。第一步:下载官方RUU刷机程序(EXE文件)第二步:运行您已经下载的RUU刷机程序RUU_Legend_hTC_Asia_TW_1.31.709.2_Radio_4_7.05.35.26L_release_122023_signed)第三步:打开用户临时文件目录:以xp为例:C:\DocumentsandSettings'Administrator'LocalSettings'Temp(系统默认,Administrator为您登录xp的用户名,如果您修改了用户变量,则到您修改的目录,例如我的是:D:\Temp\Temp)第三步:查找类似{2EA82A29-B9B5-4A60-BB4F-B52F1BCD2E68}(每次打开都不同,建议查看文件夹创建时间就知道)的文件夹并打开第四步:进入刚刚打开的刷机临时目录,打开该目录下的唯一文件夹。(例如我的是:{50F2F878-636A-496F-A7CB-544C067E0C4B})第五步:复制该文件夹下的Rom.zip压缩文件,该文件即为官方原版ROM,该文件大小:135173407字节(以RUU_Legend_hTC_Asia_TW_1.31.709.2_Radio_4_7.05.35.26L_release_122023_signed版本为例);该ROM包含以下:文件列表小文件大文件说明其他说明android-info.txt节85字ROM版本及刷写配置信息
boot,img2342912字节手机启动的必要系统(Linux内核)Linux内核hboot_7227_0.43.0001_100218.nb0524288字节bootloader需要金卡就是因为这个东西吧?刷错一定变砖radio.img24379392字节无线通讯模块(包括电话、WIFI、蓝牙)取新的不一疋疋取好的。要和hboot匹配?rcdata.img41字脚本资源刷机时使用的脚本recovery・img3532800字节刷写Recovery模式(包含硬件底层驱动)恢复出厂设置、0TA升级补丁升级、Firmware升级splashl.nbO393216字节开机第一屏替换此文件可以修改开机第一屏224364096字节系统核心(应该是主要修改此文件)我们主要定制此部分的userdata.img2112字节用户的设置看起来应该是初始化用户数据至此,已获得官方RUU原版ROM根据我的理解,boot.imgradio.imgrecovery.imgsplash1.nb0system.img应该可以单刷的,我们定制rom主要修改system.img。首先运行要提取的官方RUU程序,本教程中就是RUU_Buzz_Froyo_HTC_WWE_2.22.405.1_Radio_4H_0_release_160191_signed.exe。这个时候手机无需连接上电脑(连接与否和提取没有关系),等待exe执行到出现第一个提示界面。运行任务管理器,点“进程〃标签,找到adb.exe,在其上右键,选择'打开所在目录〃。将打开的目录中的rom.zip复制出来,然后可以关闭官方RUU程序了。提取完成。摩托:鬆解底包工具.rar(610.63KB)①运行解SBF包工具MotoAndroidDepacker.exe程序②选择OpenFromFile找到你存放的SBF刷机包
③选择SplitToFolder,进行刷机包拆解过程④拆解完成,关闭软件,得到如下文件。,,CG31.smg2DI1/7/1119:3&SMG左彳牛18KB,,CG32.smg2011/7/1119:36SMG划牛130KB,|匚G33.smg2011/7/1119:3&SMG左件14,082KB||CG34.smg2011/7/1119:3&SMG文彳牛IBKB,,CG35.smg2011/7/1119:36SMG^B.192KEi:CG39.smg2011/7/1119:37SMG^334.594KB[_jCG40.smg2011/7/1119:37SMG文件4KBi~|匚G42.5mg2011/7/1119:37SMG文件256KEi,匚G45.smg2011/7/1119:37SWIG女件3,074KBijCG47.smg2011/7/1119:37SMG划牛8,192KB,iCG53.smg2011/7/1113:37SMG环2KBiiCG61.smg2011/7/1119:37SMG文件512KB,,CG64.smg2011/7/1119:37SMG女件18Kei:CG65.smg2011/7/1119:37SMG文件ISKB.,匚GS&.&mg2011/7/1113l37SMG文件166,114KB__^rmware.hmg2011/7/1119:36HMG划牛8KE一RAMDLD.smg2011/7/1119:36smgsn308KB般来说需要修改CG35.smg——boot.img,CG39.smg system.img,CG45.smg——radio.img,锁了bl的只需CG39.smg和CG45.img(如果需要切换基带)如下是一个典型SBF文件拆开之后的构成(uk3.4.3)每个smg本身都有签名,不签名不能刷,多半都有自己的版本号CG31.smg18,432版本4CG31/CDT是描述各文件版本号的,相当于注释文件CG32.smg 133,120版本1CG33.smg 14,419,968版本 1CG33/CDROM是个ISO文件,可以用WinRAR之类的打开,包含PC端程序(MotoHelperAgent)CG34.smg 18,432版本1/usr/data_resource,CG34应该说是皮肤铃声包,一些软件的信息和收藏夹的设置在这里面CG35.smg8,388,608版本2CG35/Boot包含了系统内核<-8.3MB的boot-only就是这个/ezx_userCG39.smg342,624,256版本4CG39/system分区就是恢复包中的system.imgCG40.smgcache缓存分区(国行多余的部分),显然里面什么都没有CG42.smg 262,144TOC\o"1-5"\h\zCG45.smg 3,147,776 版本 0CG45/Baseband基带固件CG47.smg 8,388,608 版本 2CG47/Recovery就是官方恢复,里面也包含独立的内核,但不用于启动CG53.smg 2,048CG61.smg 524,288版本1CG61/devtree包含设备描述符\o"CurrentDocument"CG64.smg 18,432 版本 1CG65.smg 18,432 版本 1RAMDLD.smg315,392RAMDLD/RamDisk&tmpfs,Android/Linux启动初始化的一部分,不涉及具体设备每次不可降级的升级中CG31和CG39版本都会升高(2.21/国行=2,2.51=3,3.4.x=4)而国行1.11和uk3.4.3-3不同的文件(md5值校验)如下而CG39就是个EXT3的文件系统镜像,其内容和镜像版的system.img(yaffs2文件系统)完全一致,可以直接从CG39创建system.img此时,你可以把CG39.smg重新命名为system.img(可能有些小问题,或者进一步提取)运行yaffs2img浏览器20.exe程序⑥选择打开选择CG39.smg点击打开⑦接下来,你可以选择全部导出也可以只提取你想要了文件就OK了⑧接下来把你提取出来的东西放到厨房工作文件夹下,也可开始制作。工具打包下载:/file/cl74ytbo#手机开发.rar四、制作步骤:
解压待修改ROM。将system.img和boot.img解压出来,如果需要在刷机时同时刷入radio.img,则把radio.img也解压出来。将文件(如果是修改其他制作者的ROM,文件则为*.zip,比如buzz_2.2_1.2-Beta2_android.zip)放到以下文件夹中(根据个人安装的位置决定,不再累述):G:\Cygwin\home\<用户名>\android_Kitchen\original_update支持的格式如图:2.修改ROM。运行厨房。双击执行桌面上的Cygwin快捷方式(也可以双击执行C:\Cygwin\Cygwin.bat),输入命令:01.cdandroid_Kitchen02../menu至此,厨房已成功运行。接下来就开始你的制作之旅吧。解压待修改的ROM。选择厨房的第1项“1-分解ROM包到工作目录中”然后根据情况的不同,选择对应的R°M。解压得到的文件位于以下文件夹中:C:\Cygwin\home\v用户名>\android_Kitchen\WORKING_v日期>_<时间>赧擁贈轉鶴铲35文件夬忆—T等待定制的ZIP文件—个包含的—T等待定制的ZIP文件—个包含的ZIP文仁一个包含官方中sySTEM+—人来自军为的口PP文件system,ing+ .ing用这个厨房制作的工作文件夹<側£[]来自官万Ml中约rom.zip>BOOT格式的远IP文件<例如来自削牛更新中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中物理听评课记录范文
- 十堰市郧县2024年一级造价工程师《土建计量》高分冲刺试卷含解析
- 商丘市睢县2024年一级造价工程师《土建计量》全真模拟试题含解析
- 山西省运城市盐湖区2024年一级造价工程师《土建计量》考前冲刺试题含解析
- 商业政府汇报课件模板模板
- 《整式活动数学活动》课件
- 国际租赁教学课件
- 《货款的支付信用证》课件
- 《光的双缝干涉》课件
- 生物学科德育渗透计划
- 离线论文 关于科学思维方法在实际生活和工作中的应用、意义
- 职业健康保护设施台帐
- 基础日语一(初级日语实用表达)知到章节答案智慧树2023年广东外语外贸大学
- 污水处理厂对项目理解以及重难点分析
- 收费《古法针刺举隅》完整,直接打印,互联网唯一
- 职业培训师理论考试复习题库(500题)
- 高钾血症病人护理查房
- 财务部门廉洁风险点及防控措施(通用7篇)
- 金属表面主要缺陷定义
- 云南消耗量定额说明及计算规则建筑
- 北京地铁某逆作法竖井施工方案
评论
0/150
提交评论