android 开机流程完整的MOD定制流程

Android平台ROM的定制及精简教程
查看: 3723|
摘要: 现在 ROM 有很多,最新的有第三方Android 4.03版本,但这些ROM的制作者都会跟据自已的个人喜欢会增加和增少相应的功能或是界面,但我们往往不喜欢这些ROM的某些小方面,所以随着而来面对的问题就是怎样把这个ROM修改 ...
& && & 速度与华丽,你喜欢那个。是不是想要一个又够速度又华丽的ROM呢?我是一个追求新鲜的人,对于手机的ROM,我又追求稳定、精简、美观、省电。现在 ROM 有很多,最新的有第三方Android 4.03版本,但这些ROM的制作者都会跟据自已的个人喜欢会增加和增少相应的功能或是界面,但我们往往不喜欢这些ROM的某些小方面,所以随着而来面对的问题就是怎样把这个ROM修改成为一个自已真正需要的ROM呢?以往一直是依靠“大杀器”来解决,但觉得还是过于麻烦,所以寻求办法自己动手修改ROM。于是有了本文。废话少说,进入正题。
& & 本教程主要内容有:Android系统文件夹结构解析、应用软件说明、定制精简、ROM签名打包等内容。刷机有风险,出问题自负。本文有部份内容来自于网络。
一、Android系统文件夹结构 一个完整的ROM根目录会有以下几个文件夹及文件:dataMETA-INsystemboot.img系统目录说明
<FONT color=#. 应用程序安装目录1) 系统应用程序所在目录/system/app/*.apk2)用户安装应用程序所在目录/data/app/*.apk3) 注意:a)在模拟器中,每重启一次,/system/app/下的应用都会被还原,有时/data/app下也会被清除b)若在/system/app和/data/app下有重名的应用,不一定会启动哪一个,尤其是在adb install杀死正在运行的程序时,有时旧的就会被启动
<FONT color=#.用户数据所在目录/data/data/应用包名/shared_prefs 配置文件/data/data/应用包名/databases/* 库文件所在目录
<FONT color=#. SD卡对应目录/sdcard/
而我们需要处理的只是两个文件夹里面的内容:data/app –该文本夹里的文件可以全删,也可以自由添加自已所需安装的应用软件,刷机安装后可以自由删除。system/app –在这个文件夹下的程序为系统默认的组件,可以看到都是以APK格式结尾的文件,但有些自制的ROM里面还有和APK文件名对应的odex文件。我们主要是针对该文件夹里的文件进行精简,如果有odex文件的,删除APK文件名时同时也删除与其对应的odex文件。
虽然一般定制时只是对以上两个文件夹里的文件做相应的增减,但我们还是一起来了解system相应目录相应文件的用途吧。(rom版本不同里面的APK也会不一样)
\\system\\app
\\system\\app\\AlarmClock.apk 闹钟\\system\\app\\Browser.apk 浏览器\\system\\app\\Bugreport.apk Bug报告\\system\\app\\Calculator.apk 计算器\\system\\app\\Calendar.apk 日历\\system\\app\\CalendarProvider.apk 日历提供\\system\\app\\Camera.apk 照相机\\system\\app\\com.amazon.mp3.apk 亚马逊音乐\\system\\app\\Contacts.apk 联系人\\system\\app\\DownloadProvider.apk 下载提供\\system\\app\\DrmProvider.apk DRM数字版权提供\\system\\app\\Email.apk 电子邮件客户端\\system\\app\\FieldTest.apk 测试程序\\system\\app\\GDataFeedsProvider.apk GoogleData提供\\system\\app\\Gmail.apk Gmail电子邮件\\system\\app\\GmailProvider.apk Gmail提供\\system\\app\\GoogleApps.apk 谷歌程序包\\system\\app\\GoogleSearch.apk 搜索工具\\system\\app\\gtalkservice.apk GTalk服务\\system\\app\\HTMLViewer.apk HTML查看器\\system\\app\\HtcTwitter.apk 集成Twitter客户端PEEP\\system\\app\\IM.apk 即使通讯组件包含MSN、yahoo通\\system\\app\\ImCredentialProvider.apk\\system\\app\\ImProvider.apk\\system\\app\\Launcher.apk 启动加载器\\system\\app\\HtcNaviPanel.apk 导航软件\\system\\app\\Maps.apk 电子地图\\system\\app\\MediaProvider.apk 多媒体播放提供\\system\\app\\Mms.apk 短信、彩信\\system\\app\\Music.apk 音乐播放器\\system\\app\\MyFaves.apk T-Mobile MyFaves程序\\system\\app\\NewsReader.apk 新闻阅读器\\system\\app\\PackageInstaller.apk apk安装程序\\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\\VpnServices.apk VPN服务\\system\\app\\Vending.apk 制造商信息\\system\\app\\VoiceDialer.apk 语音拨号器\\system\\app\\VoiceSearch.apk 语音搜索\\system\\app\\YouTube.apk Youtube视频
\\system\\bin
这个目录下的文件都是系统的本地程序,从bin文件夹名称可以看出是binary二进制的程序,里面主要是Linux系统自带的组件,Android手机网就主要文件做下简单的分析介绍:\\system\\bin\\akmd\\system\\bin\\am\\system\\bin\\app_process 系统进程\\system\\bin\\dalvikvm Dalvik虚拟机宿主\\system\\bin\\dbus-daemon 系统BUS总线监控\\system\\bin\\debuggerd 调试器\\system\\bin\\debug_tool 调试工具\\system\\bin\\dexopt DEX选项\\system\\bin\\dhcpcd DHCP服务器\\system\\bin\\dumpstate 状态抓取器\\system\\bin\\dumpsys 系统抓取器\\system\\bin\\dvz\\system\\bin\\fillup\\system\\bin\\flash_image 闪存映像\\system\\bin\\hciattach\\system\\bin\\hcid HCID内核\\system\\bin\\hostapd\\system\\bin\\hostapd_cli\\system\\bin\\htclogkernel\\system\\bin\\input\\system\\bin\\installd\\system\\bin\\itr\\system\\bin\\linker\\system\\bin\\logcat Logcat日志打印\\system\\bin\\logwrapper\\system\\bin\\mediaserver\\system\\bin\\monkey\\system\\bin\\mountd 存储挂载器\\system\\bin\\netcfg 网络设置\\system\\bin\\ping Ping程序\\system\\bin\\playmp3 MP3播放器\\system\\bin\\pm 包管理器\\system\\bin\\qemud QEMU虚拟机\\system\\bin\\radiooptions 无线选项\\system\\bin\\rild RIL组件\\system\\bin\\sdptool\\system\\bin\\sdutil\\system\\bin\\service\\system\\bin\\servicemanager 服务管理器\\system\\bin\\sh\\system\\bin\\ssltest SSL测试\\system\\bin\\surfaceflinger 触摸感应驱动\\system\\bin\\svc 服务\\system\\bin\\system_server\\system\\bin\\telnetd Telnet组件\\system\\bin\\toolbox\\system\\bin\\wlan_loader\\system\\bin\\wpa_cli\\system\\bin\\wpa_supplicant
\\system\\etc
从文件夹名称来看保存的都是系统的配置文件,比如APN接入点设置等核心配置。\\system\\etc\\apns-conf.xml APN接入点配置文件\\system\\etc\\AudioFilter.csv 音频过滤器配置文件\\system\\etc\\AudioPara4.csv\\system\\etc\\bookmarks.xml 书签数据库\\system\\etc\\dbus.conf 总线监视配置文件\\system\\etc\\dhcpcd\\system\\etc\\event-log-tags\\system\\etc\\favorites.xml 收藏夹\\system\\etc\\firmware 固件信息\\system\\etc\\gps.conf GPS设置文件\\system\\etc\\hcid.conf内核HCID配置文件\\system\\etc\\hosts 网络DNS缓存\\system\\etc\\init.goldfish.sh\\system\\etc\\location 定位相关\\system\\etc\\mountd.conf 存储挂载配置文件\\system\\etc\\NOTICE.html 提示网页\\system\\etc\\permissions.xml 权限许可\\system\\etc\\pvplayer.conf\\system\\etc\\security\\system\\etc\\wifi WLAN相关组件\\system\\etc\\dhcpcd\\dhcpcd-hooks\\system\\etc\\dhcpcd\\dhcpcd-run-hooks\\system\\etc\\dhcpcd\\dhcpcd.conf\\system\\etc\\dhcpcd\\dhcpcd-hooks\\01-test\\system\\etc\\dhcpcd\\dhcpcd-hooks\\20-dns.conf\\system\\etc\\dhcpcd\\dhcpcd-hooks\\95-configured\\system\\etc\\firmware\\brf6300.bin\\system\\etc\\location\\gps\\system\\etc\\location\\gps\\location 定位相关\\system\\etc\\location\\gps\\nmea GPS数据解析\\system\\etc\\location\\gps\\properties\\system\\etc\\security\\cacerts.bks\\system\\etc\\security\\otacerts.zip OTA下载验证\\system\\etc\\wifi\\Fw1251r1c.bin\\system\\etc\\wifi\\tiwlan.ini\\system\\etc\\wifi\\wpa_supplicant.conf WPA验证组件
\\system\\fonts
字体文件夹,除了标准字体和粗体、斜体外可以看到文件体积最大的可能是中文字库,或一些unicode字库,从T- Mobile G1上可以清楚的看到显示简体中文正常,其中DroidSansFallback.ttf文件大小\\system\\fonts\\DroidSans-Bold.ttf\\system\\fonts\\DroidSans.ttf\\system\\fonts\\DroidSansFallback.ttf\\system\\fonts\\DroidSansMono.ttf\\system\\fonts\\DroidSerif-Bold.ttf\\system\\fonts\\DroidSerif-BoldItalic.ttf\\system\\fonts\\DroidSerif-Italic.ttf\\system\\fonts\\DroidSerif-Regular.ttf
\\system\\framework
framework主要是一些核心的文件,从后缀名为jar可以看出是是系统平台框架。\\system\\framework\\am.jar\\system\\framework\\am.odex\\system\\framework\\android.awt.jar AWT库\\system\\framework\\android.awt.odex\\system\\framework\\android.policy.jar\\system\\framework\\android.policy.odex\\system\\framework\\android.test.runner.jar\\system\\framework\\android.test.runner.odex\\system\\framework\\com.google.android.gtalkservice.jar GTalk服务\\system\\framework\\com.google.android.gtalkservice.odex\\system\\framework\\com.google.android.maps.jar 电子地图库\\system\\framework\\com.google.android.maps.odex\\system\\framework\\core.jar 核心库,启动桌面时首先加载这个\\system\\framework\\core.odex\\system\\framework\\ext.jar\\system\\framework\\ext.odex\\system\\framework\\framework-res.apk\\system\\framework\\framework-tests.jar\\system\\framework\\framework-tests.odex\\system\\framework\\framework.jar\\system\\framework\\framework.odex\\system\\framework\\input.jar 输入库\\system\\framework\\input.odex\\system\\framework\\itr.jar\\system\\framework\\itr.odex\\system\\framework\\monkey.jar\\system\\framework\\monkey.odex\\system\\framework\\pm.jar 包管理库\\system\\framework\\pm.odex\\system\\framework\\services.jar\\system\\framework\\services.odex\\system\\framework\\ssltest.jar\\system\\framework\\ssltest.odex\\system\\framework\\svc.jar 系统服务\\system\\framework\\svc.odex
\\system\\lib
lib目录中存放的主要是系统底层库,如平台运行时库。\\system\\lib\\libaes.so\\system\\lib\\libagl.so\\system\\lib\\libandroid_runtime.so Android运行时库\\system\\lib\\libandroid_servers.so 系统服务组件\\system\\lib\\libaudio.so 音频处理\\system\\lib\\libaudioeq.so EQ均衡器\\system\\lib\\libaudioflinger.so 音频过滤器\\system\\lib\\libbluetooth.so 蓝牙组件\\system\\lib\\libc.so\\system\\lib\\libcamera.so 超相机组件\\system\\lib\\libcameraservice.so\\system\\lib\\libcorecg.so\\system\\lib\\libcrypto.so 加密组件\\system\\lib\\libctest.so\\system\\lib\\libcutils.so\\system\\lib\\libdbus.so\\system\\lib\\libdl.so\\system\\lib\\libdrm1.so DRM解析库\\system\\lib\\libdrm1_jni.so\\system\\lib\\libdvm.so\\system\\lib\\libexif.so\\system\\lib\\libexpat.so\\system\\lib\\libFFTEm.so\\system\\lib\\libGLES_CM.so\\system\\lib\\libgps.so\\system\\lib\\libhardware.so\\system\\lib\\libhgl.so\\system\\lib\\libhtc_ril.so\\system\\lib\\libicudata.so\\system\\lib\\libicui18n.so\\system\\lib\\libicuuc.so\\system\\lib\\liblog.so\\system\\lib\\libm.so\\system\\lib\\libmedia.so\\system\\lib\\libmediaplayerservice.so\\system\\lib\\libmedia_jni.so\\system\\lib\\libnativehelper.so\\system\\lib\\libnetutils.so\\system\\lib\\libOmxCore.so\\system\\lib\\libOmxH264Dec.so\\system\\lib\\libpixelflinger.so\\system\\lib\\libpvasf.so\\system\\lib\\libpvasfreg.so\\system\\lib\\libpvauthor.so\\system\\lib\\libpvcommon.so\\system\\lib\\libpvdownload.so\\system\\lib\\libpvdownloadreg.so\\system\\lib\\libpvmp4.so\\system\\lib\\libpvmp4reg.so\\system\\lib\\libpvnet_support.so\\system\\lib\\libpvplayer.so\\system\\lib\\libpvrtsp.so\\system\\lib\\libpvrtspreg.so\\system\\lib\\libqcamera.so\\system\\lib\\libreference-ril.so\\system\\lib\\libril.so\\system\\lib\\librpc.so\\system\\lib\\libsgl.so\\system\\lib\\libsonivox.so\\system\\lib\\libsoundpool.so\\system\\lib\\libsqlite.so\\system\\lib\\libssl.so\\system\\lib\\libstdc++.so\\system\\lib\\libsurfaceflinger.so\\system\\lib\\libsystem_server.so\\system\\lib\\libthread_db.so\\system\\lib\\libUAPI_jni.so\\system\\lib\\libui.so\\system\\lib\\libutils.so\\system\\lib\\libvorbisidec.so\\system\\lib\\libwbxml.so\\system\\lib\\libwbxml_jni.so\\system\\lib\\libwebcore.so\\system\\lib\\libwpa_client.so\\system\\lib\\libxml2wbxml.so\\system\\lib\\libz.so\\system\\lib\\modules\\system\\lib\\modules\\wlan.ko
\\system\\media
铃声音乐文件夹,除了常规的铃声外还有一些系统提示事件音\\system\\media\\audio\\system\\media\\audio\\alarms 闹铃音\\system\\media\\audio\\notifications 提示音\\system\\media\\audio\\ringtones 铃声\\system\\media\\audio\\ui 界面操作事件音\\system\\media\\audio\\alarms\\Alarm_Beep_01.ogg\\system\\media\\audio\\alarms\\Alarm_Beep_02.ogg\\system\\media\\audio\\alarms\\Alarm_Beep_03.ogg\\system\\media\\audio\\alarms\\Alarm_Buzzer.ogg\\system\\media\\audio\\alarms\\Alarm_Classic.ogg\\system\\media\\audio\\alarms\\Alarm_Rooster_02.ogg\\system\\media\\audio\\notifications\\Beat_Box_Android.ogg\\system\\media\\audio\\notifications\\CaffeineSnake.ogg\\system\\media\\audio\\notifications\\DearDeer.ogg\\system\\media\\audio\\notifications\\DontPanic.ogg\\system\\media\\audio\\notifications\\F1_MissedCall.ogg\\system\\media\\audio\\notifications\\F1_New_MMS.ogg\\system\\media\\audio\\notifications\\F1_New_SMS.ogg\\system\\media\\audio\\notifications\\Heaven.ogg\\system\\media\\audio\\notifications\\Highwire.ogg\\system\\media\\audio\\notifications\\KzurbSonar.ogg\\system\\media\\audio\\notifications\\OnTheHunt.ogg\\system\\media\\audio\\notifications\\TaDa.ogg\\system\\media\\audio\\notifications\\Tinkerbell.ogg\\system\\media\\audio\\notifications\\Voila.ogg\\system\\media\\audio\\ringtones\\BeatPlucker.ogg\\system\\media\\audio\\ringtones\\BentleyDubs.ogg\\system\\media\\audio\\ringtones\\BirdLoop.ogg\\system\\media\\audio\\ringtones\\CaribbeanIce.ogg\\system\\media\\audio\\ringtones\\CrazyDream.ogg\\system\\media\\audio\\ringtones\\CurveBall.ogg\\system\\media\\audio\\ringtones\\DreamTheme.ogg\\system\\media\\audio\\ringtones\\EtherShake.ogg\\system\\media\\audio\\ringtones\\FriendlyGhost.ogg\\system\\media\\audio\\ringtones\\GameOverGuitar.ogg\\system\\media\\audio\\ringtones\\Growl.ogg\\system\\media\\audio\\ringtones\\InsertCoin.ogg\\system\\media\\audio\\ringtones\\LoopyLounge.ogg\\system\\media\\audio\\ringtones\\LoveFlute.ogg\\system\\media\\audio\\ringtones\\MidEvilJaunt.ogg\\system\\media\\audio\\ringtones\\MildlyAlarming.ogg\\system\\media\\audio\\ringtones\\NewPlayer.ogg\\system\\media\\audio\\ringtones\\Noises1.ogg\\system\\media\\audio\\ringtones\\Noises2.ogg\\system\\media\\audio\\ringtones\\Noises3.ogg\\system\\media\\audio\\ringtones\\OrganDub.ogg\\system\\media\\audio\\ringtones\\Ring_Classic_02.ogg\\system\\media\\audio\\ringtones\\Ring_Digital_02.ogg\\system\\media\\audio\\ringtones\\Ring_Synth_02.ogg\\system\\media\\audio\\ringtones\\Ring_Synth_04.ogg\\system\\media\\audio\\ringtones\\RomancingTheTone.ogg\\system\\media\\audio\\ringtones\\SitarVsSitar.ogg\\system\\media\\audio\\ringtones\\SpringyJalopy.ogg\\system\\media\\audio\\ringtones\\T-Jingle.ogg\\system\\media\\audio\\ringtones\\Terminated.ogg\\system\\media\\audio\\ringtones\\TwirlAway.ogg\\system\\media\\audio\\ringtones\\VeryAlarmed.ogg\\system\\media\\audio\\ringtones\\World.ogg\\system\\media\\audio\\ui\\Effect_Tick.ogg
\\system\\sounds
默认的音乐测试文件,仅有一个test.mid文件,用于播放测试的文件。\\system\\sounds\\test.mid
\\system\\usr
用户文件夹,包含共享、键盘布局、时间区域文件等。\\system\\usr\\keychars\\system\\usr\\keylayout\\system\\usr\\share\\system\\usr\\srec\\system\\usr\\keychars\\qwerty.kcm.bin\\system\\usr\\keychars\\qwerty2.kcm.bin\\system\\usr\\keychars\\trout-keypad-qwertz.kcm.bin\\system\\usr\\keychars\\trout-keypad-v2.kcm.bin\\system\\usr\\keychars\\trout-keypad-v3.kcm.bin\\system\\usr\\keychars\\trout-keypad.kcm.bin\\system\\usr\\keylayout\\h2w_headset.kl\\system\\usr\\keylayout\\qwerty.kl\\system\\usr\\keylayout\\trout-keypad-qwertz.kl\\system\\usr\\keylayout\\trout-keypad-v2.kl\\system\\usr\\keylayout\\trout-keypad-v3.kl\\system\\usr\\keylayout\\trout-keypad.kl\\system\\usr\\share\\bsk\\system\\usr\\share\\zoneinfo\\system\\usr\\share\\bsk\\V_FD_speed_101.bsk\\system\\usr\\share\\bsk\\V_FD_std_101.bsk\\system\\usr\\share\\zoneinfo\\zoneinfo.dat\\system\\usr\\share\\zoneinfo\\zoneinfo.idx\\system\\usr\\srec\\config\\system\\usr\\srec\\config\\en.us\\system\\usr\\srec\\config\\en.us\\baseline.par\\system\\usr\\srec\\config\\en.us\\baseline11k.par\\system\\usr\\srec\\config\\en.us\\baseline8k.par\\system\\usr\\srec\\config\\en.us\\dictionary\\system\\usr\\srec\\config\\en.us\\g2p\\system\\usr\\srec\\config\\en.us\\grammars\\system\\usr\\srec\\config\\en.us\\models\\system\\usr\\srec\\config\\en.us\\dictionary\\basic.ok\\system\\usr\\srec\\config\\en.us\\dictionary\\cmu6plus.ok.zip\\system\\usr\\srec\\config\\en.us\\dictionary\\enroll.ok\\system\\usr\\srec\\config\\en.us\\g2p\\en-US-ttp.data\\system\\usr\\srec\\config\\en.us\\grammars\\VoiceDialer.g2g\\system\\usr\\srec\\config\\en.us\\models\\generic.swiarb\\system\\usr\\srec\\config\\en.us\\models\\generic11.lda\\system\\usr\\srec\\config\\en.us\\models\\generic11_f.swimdl\\system\\usr\\srec\\config\\en.us\\models\\generic11_m.swimdl\\system\\usr\\srec\\config\\en.us\\models\\generic8.lda\\system\\usr\\srec\\config\\en.us\\models\\generic8_f.swimdl\\system\\usr\\srec\\config\\en.us\\models\\generic8_m.swimdl
MIUI系统可精简的GOOGLE服务
/system/app/Gmail.apk/system/app/GoogleCalendarSyncAdapter.apk/system/app/GooglePartnerSetup.apk/system/app/Talk.apk/system/app/GoogleBackupTransport.apk/system/app/GoogleContactsSyncAdapter.apk/system/app/GoogleServicesFramework.apk/system/app/MarketUpdater.apk/system/app/Vending.apk最好不要删除GoogleServicesFramework.apk,网络定位的NetworkLocation.apk需要它,除非你把NetworkLocation.apk一起删除。删除之后再OTA不会受影响,如果安装完整包,需要重新删除这些文件。
OK,了解Android系统文件夹结构和相应文件的作用后,我们进行下一步真正定制工作。
<FONT color=#、下载相应的ROM2、下载签名工具,并且解压。我这里解压成生的文件夹名为:“APKMake”。工具下载:<FONT color=#、把ROM内的所有文件用WinZip或是WinRAR解压到某一文件夹,为教程容易明白,我将这文件夹在这里起名为“NewsROM”,你自已喜欢怎样起名都无所谓。<FONT color=#、进入NewsROM文件夹,再进入data\app目录,看这里是否有你所需的程序,不需要的请删除。你还可以添加你需要的默认安装软件。如:搜狗输入法,只需要把SogouIme.apk文件直接拖放到压缩包\data\app目录内即可。<FONT color=#、进入NewsROM文件夹,再进入system\app删除你不想要的组件、或是添加你需要的组件。由于有一些组件与其它组件是有依赖的,所以删除时请注意。但也不要怕,如果你删除的组件不对,刷机时最多是无法进入系统,你用完整ROM重新刷一次既可。一般不会变成砖的。<FONT color=#、删除、添加软件完毕,然后把 ROM 文件夹(NewsROM)拖动到APKMake/APKMake.bat 即可(重新打包、自动签名)。在APKMake目录里打包签名完成后自动会生成NewsROM.zip(刚才文件夹起名不同,这里生成文件名也不同),这个就是我们已精简的ROM了。
请如果 Recovery 已经准备好。请按严格安装以下步骤操作刷入 ROM:
<FONT color=#. 把 ROM 文件复制到 SD 卡,重命名为update.zip。2. 系统更新选择重启Recovery或关机,然后按住电源键+音量向上启动手机,进入 Recovery 模式。
<FONT color=#. 清除所有用户数据4. 在 Recovery 中选择将update.zip刷入系统一。4. 重新启动到系统一即可。
四、定制注意事项
<FONT color=#、细心、细心、细心2、为安全起见,建议只对data/app和system/app这两个文件夹内的文件做删除、添加。3、不知或是不太清楚要删除的文件是干啥的,那请保留不要删除。4、本文中的Android系统文件夹结构可能比较旧,如果碰到不知该文件是干什么的,建议搜索一下找答案。
按照本教程来定制ROM,如果在定制过程自已失误删除相应的软件,那造成的后果最多也是无法进入系统,重新刷一个完整&&的ROM一般解决问题。还是那句话:刷机有风险,出问题自负。
刚表态过的朋友 ()
楼主的头像好有内涵啊。
Copyright (C) 2014 MIUI 京ICP备号当前位置: >
> 在OpenSuSE上编译CyanogenMod全过程(备考版)
在OpenSuSE上编译CyanogenMod全过程(备考版)
qningyong & at
在OpenSuSE上编译CyanogenMod全过程(备注版)
  在OpenSuSE12.1RC2下编译CyanogenMod的全过程,主要是按照官方的文档操作,增加了注意事项和异常处理(绿色粗体部分),欢迎交流。
  原文链接:(Linux)
  How to compile CyanogenMod for the Android Emulator.
  This how-to was written for Ubuntu 10.04 & Ubuntu 10.10, Android Emulator r08, CyanogenMod 7.x (Gingerbread), on 2 February 2011.
  Contents
1 Prepare the Build Environment
1.1 Install the ADB
1.2 Install the Build Packages
1.3 Create the Directories
1.4 Install the Repository
2 Download RomManager
3 Building CyanogenMod
3.1 Check for updates
3.2 Configure Build
3.3 Compile
Prepare the Build Environment
NOTE: You only need to do these steps the first time you build. If you previously prepared your build environment, skip to Download RomManager.
在准备开工之前,请务必确保硬盘工作空间不少于20G(最低不能低于15G),且不能是VFAT或NTFS格式。
Install the ADB
Install the Android SDK.
Install the Build Packages
  Install using the package manager of your choice:
  For 32-bit & 64-bit systems:
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 schedtools
  NOTE:
  FOR OPENSUSE : bison flex gperf schedtool squashfs libesd-devel build libSDL-devel gcc-c++ java-1_6_0-sun java-1_6_0-sun-devel
  For 64-bit only systems:
g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline5-dev gcc-4.3-multilib g++-4.3-multilib
  Note: On Ubuntu 10.10, and variants, you need to enable the parter repository to install sun-java6-jdk:
add-apt-repository "deb "
Create the Directories
  You will need to set up some directories in your build environment.
  To create them:
mkdir -p ~/bin
mkdir -p ~/android/system
Install the Repository
  Enter the following to download make executable the "repo" binary:
~/bin/repo
chmod a+x ~/bin/repoNOTE: You may need to reboot for these changes to take effect.
  Now enter the following to initialize the repository:
cd ~/android/system/
repo init -u
repo sync -j16
1、完整下载约5G多,下载过程不能断网;
2、实际表明,使用http连接方式获取代码更佳;
3、如果下载过程断链出错退出,或者手动kill过python进程,在执行sync之前需要删除临时文件:
find .repo/ -name tmp* -exec rm {} \;
4、如果下载完成,长时间等待下面提示时;
Fetching projects: 98% (208/211)
则需要kill掉python进程,去掉 -j16 参数再次同步
5、如果下载过程中报某个目录一直出错,则需删除该目录再同步
6、如果想少下载一些文件,则可以不下载针对具体设备的代码(可以减少下载2G左右的内容),方法如下:
a. repo init 执行完毕后,编辑 .repo/manifest.xml 文件,注释掉device相关的projiect,如下
  &project path="dalvik" name="CyanogenMod/android_dalvik" /&
  &project path="development"
name="CyanogenMod/android_development" /&
  &project path="device/common"
name="CyanogenMod/android_device_common" /&
  &project path="device/sample"
name="CyanogenMod/android_device_sample" /&
  &project path="device/advent/vega" name="CyanogenMod/android_device_advent_vega" /&
&project path="device/common" name="CyanogenMod/android_device_common" /&
&project path="device/zte/blade" name="CyanogenMod/android_device_zte_blade" /&
  &project path="device/zte/v9" name="CyanogenMod/android_device_zte_v9" /&
  &project path="external/alsa-lib"
name="CyanogenMod/android_external_alsa-lib" /&
b. repo sync 完成后,编辑 vendor/cyanogen/products/AndroidProducts.mk
文件,只保留下面内容
PRODUCT_MAKEFILES := \
$(LOCAL_DIR)/cyanogen_generic.mk
7、如果在需认证的proxy(如公司网络)下同步,则请务必更新python版本到2.7,否则可能出错。
Download RomManager
NOTE: This only needs to be done when an update to RomManager is released. If you are-up-to date, you may skip toBuilding CyanogenMod.
  Download ROM Manager which is needed by the build:
cd ~/android/system/vendor/cyanogen/
./get-rommanager
Building CyanogenMod
Check for updates
  First, check for updates in the source:
cd ~/android/system/
Configure Build
  Now, your environment must be configured to build specifically for the Android Emulator. To set up your build environment:
. build/envsetup.sh
lunch cyanogen_generic-eng
1、新建shell进入工作目录之后都需要执行上述命令
2、如果想彻底重新编译,需执行 make clean
3、FOR OPENSUSE:
去掉OpenSuSE普通用户下执行envsetup.sh的提示:修改 schedtool 为 /usr/sbin/schedtool 即可。
function mka() {
case `uname -s` in
make -j `sysctl hw.ncpu|cut -d" " -f2` "$@"
/usr/sbin/schedtool -B -n 1 -e ionice -n 1 make -j `cat /proc/cpuinfo | grep "^processor" | wc -l` "$@"
  Next, we will build the actual ROM.
1、参考编译时间:90min(ThinkPad T61 ,3GB RAM )
2、编译出错处理(自己摸索的,非官方)
错误1:编译约1个小时后出现的:
target Strip: libutils (out/target/product/generic/obj/lib/libutils.so)
target Dex: QuickSearchBox
frameworks/base/core/java/android/widget/VideoView.java:46: package com.ti.omap.omap_mm_library does not exist
import com.ti.omap.omap_mm_library.OmapMML
frameworks/base/core/java/android/widget/VideoView.java:62: cannot find symbol
: class OmapMMLibrary
location: class android.widget.VideoView
private OmapMMLibrary mOmapMMHandle =
frameworks/base/core/java/android/widget/VideoView.java:196: cannot find symbol
: class OmapMMLibrary
location: class android.widget.VideoView
mOmapMMHandle = new OmapMMLibrary();
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
make: *** [out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes-full-debug.jar] Error 41
make: *** Waiting for unfinished jobs....
错误分析和处理:
看起来是OmapMMLibrary的找不到,后来发现此代码在framework/base/omapmmlib中,修改 build/core/pathmap.mk的FRAMEWORKS_BASE_SUBDIRS,如下
FRAMEWORKS_BASE_SUBDIRS := \
$(addsuffix /java, \
graphics \
location \
telephony \
keystore \
omapmmlib\
错误2:编译即将完成时出现的,此时system.img还未生成
Checking API: checkapi-last
Checking API: checkapi-current
(unknown): error 13: Class android.app.Profile changed final qualifier
(unknown): error 13: Class android.app.ProfileGroup changed final qualifier
(unknown): error 24: Method android.app.ProfileManager.getProfile has changed deprecation state
(unknown): error 24: Method android.app.ProfileManager.setActiveProfile has changed deprecation state
(unknown): error 3: Added class MultiSelectListPreference to package android.preference
(unknown): error 4: Added public method android.app.Profile.getProfileGroup
(unknown): error 4: Added public method android.app.Profile.getStatusBarIndicator
(unknown): error 4: Added public method android.app.Profile.getUuid
(unknown): error 4: Added public method android.app.Profile.setStatusBarIndicator
(unknown): error 4: Added public method android.app.ProfileGroup.getUuid
(unknown): error 4: Added public method android.app.ProfileManager.getProfile
(unknown): error 4: Added public method android.app.ProfileManager.profileExists
(unknown): error 4: Added public method android.app.ProfileManager.setActiveProfile
(unknown): error 4: Added public method android.telephony.TelephonyManager.isDormancyRejected
(unknown): error 4: Added public method android.telephony.TelephonyManager.setDormancyRejected
(unknown): error 5: Added public field android.Manifest.permission.RAW_AUDIO
(unknown): error 9: Removed public method android.app.Profile.getProfileGroup
(unknown): error 9: Removed public method android.app.ProfileGroup.getName
******************************
You have tried to change the API from what has been previously approved.
To make these errors go away, you have two choices:
1) You can add "@hide" javadoc comments to the methods, etc. listed in the
errors above.
2) You can update current.xml by executing the following command:
make update-api
To submit the revised current.xml to the main Android repository,
you will need approval.
******************************
make: *** [out/target/common/obj/PACKAGING/checkapi-current-timestamp] Error 38
make: *** Waiting for unfinished jobs....
htmlDir not a directory: out/target/common/docs/gen
DroidDoc took 252 sec. to write docs to out/target/common/docs/doc-comment-check
错误处理:执行一次 make update-api 后编译可以顺利完成。
Create a folder called android-9-cyanogen on Your/Android-SDK/platforms/
Copy the contents of Your/Android-SDK/platforms/android-9 into Your/Android-SDK/platforms/android-9-cyanogen
Copy the ramdisk.img system.img and userdata.img file from ~/android/system/out/target/product/generic toYour/Android-SDK/platforms/android-9-cyanogen/images/
Run the Android AVD Manager and select the second Android 2.3 target.
  多谢您,尤其是“如果下载过程中报某个目录一直出错,则需删除该目录再同步”这句~qnshun & &
& & (0)(0)
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&增值电信业务经营许可证湘B2-

我要回帖

更多关于 727495 的文章

 

随机推荐