Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1849426
  • 博文数量: 16
  • 博客积分: 10895
  • 博客等级: 上将
  • 技术积分: 128
  • 用 户 组: 普通用户
  • 注册时间: 2005-11-09 14:13
个人简介

天道酬勤,有时候,光有勤劳是不够的,还需要智慧和勇气。

文章分类
文章存档

2016年(5)

2015年(11)

分类: Android平台

2015-11-23 11:22:06

本教程将为大家介绍X-UI的拼包移植教程.其实拼包移植,与其他UI的也是大同小异,有几点需要注意的,已经在文中注明了,请认真观看教程!祝您移植成功!

教程概览

  • 分析整个ROM包内的大致框架及各个文件的作用
  • 移植XUI刷机ROM前的准备
  • 移植过程所要执行的操作
  • 最后修改build.prop文件
  • 移植完成以后进行为ROM签名打包
  • 刷机测试过程中,对一些常见的bug的分析以及解决的方法

步骤方法

一、 分析整个ROM包内的大致框架及各个文件的作用

  1. 1
    system/app这个里面主要存放的是常规的应用程序,都是以apk格式结尾的文件,在这个文件夹下面的程序为系统默认的组件,个人安装的软件不会出现在这里,而是data文件夹中。
  2. 2
    system/bin 这个目录下的文件都是系统的本地程序,从bin文件夹名称可以看出是binary 二进制的程序,里面主要是Linux系统自带的组件。
  3. 3
    system/etc 该文件夹下保存的都是系统的配置文件,比如APN接入点设置等核心的配置。
  4. 4
    system/fonts 该文件夹下除了标准字体和粗体、斜体外可以看到文件体积最大的可能是中文字库或者一些unicode字库。
  5. 5
    system/framework 该文件夹下主要是一些核心的文件,是系统平台的框架。
  6. 6
    system/lib目录中存放的主要是系统的底层库,比如系统平台运行时的服务库,移植过程中很多关键的地方在于此。
  7. 7
    system/media 该文件下包括开机动画的文件、音乐铃声文件夹,除此以外还包括一些系统提示音文件
  8. 8
    system/usr 用户文件夹,包括一些共享、时区文件、键盘的一些布局文件。
  9. 9
    接下来是一些相关文件的介绍
    1、部分System/bin:
    \\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\\hcid HCID内核
    \\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\\servicemanager 服务管理器
    \\system\\bin\\ssltest SSL测试
    \\system\\bin\\su**ceflinger 触摸感应驱动
    \\system\\bin\\svc 服务

    2、部分system/etc
    \\system\\etc\\apns-conf.xml APN接入点配置文件
    \\system\\etc\\AudioFilter.csv 音频过滤器配置文件
    \system\\etc\\bookmarks.xml 书签数据库
    \\system\\etc\\dbus.conf 总线监视配置文件
    \\system\\etc\\favorites.xml 收藏夹
    \\system\\etc\\firmware 固件信息
    \\system\\etc\\gps.conf GPS设置文件
    \\system\\etc\\hcid.conf内核HCID配置文件
    \\system\\etc\\hosts 网络DNS缓存
    \\system\\etc\\mountd.conf 存储挂载配置文件
    \\system\\etc\\NOTICE.html 提示网页
    \\system\\etc\\permissions.xml 权限许可

    3、部分system/lib
    \\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\\libcamera.so 相机组件
    \system\\lib\\libcrypto.so 加密组件
    \\system\\lib\\libdrm1.so DRM解析库

二、移植XUI刷机ROM前的准备

  1. 1
    首先建议安装对比工具BeyondCompare (网上资源很多,直接百度或google 搜索BeyondCompare)
  2. 2
    建议Linux环境ubuntu系统(该系统下可以使用赫赫有名的Android厨房工具)
  3. 3
    Android厨房工具的使用方法在此略过...(Android厨房工具中文版里面相关的功能都有明确的指导,简单易用)
  4. 4
    准备要移植机型的底包,移植XUI,找到合适的底包也是关键所在。本教程中我们讲的是第三方ROM的移植,不包括官方ROM和官方ROM美化版。选取底包的条件是:
    1、首先在相应官网找到分辨率类似的机型。 
    2、首先要找到自己对应机型ROM,如CM 10,如果是Android4.0的推荐使用AOKP(谷歌开源非官方代码项目)版本的ROM。
    3、所选择的作为底包的ROM要尽量功能完善;还要保证刷机脚本的通用性;在刷机包的 META-INF/com/google/android/内的updater-script是刷机的脚本,打开刷机脚本,将其中的第一行关于机型验证的代码删除。
    4、如果为自己机型开发的ROM不是很多的话,则尽量选取使用同一厂商同一平台的其它机器的 ROM。

三、移植过程所要执行的操作

  1. 1
    首先移植XUI的应用层和framework层,该步骤是将替换system文件夹下的app和framework为XUI的文件内容,如下图:
  2. 2
    移植应用层(system/app)
    ALovePhone2.0.1(1175).apk XDA助手 可以不替换
    Apollo.apk 阿波罗音乐播放器 建议替换
    ApplicationsProvider.apk XDA应用支持 必须替换
    Bluetooth.apk 蓝牙应用组件 必须替换
    Calculator.apk 计算器应用 必须替换
    Calendar.apk 日历应用 必须替换
    CalendarProvider.apk 日历支持 必须替换
    Camera.apk 相机应用 必须替换
    Contacts.apk 通讯录应用 必须替换
    ContactsProvider.apk 通讯录支持 必须替换
    DefaultContainerService.apk 默认集成服务 可以不替换
    DeskClock.apk 时钟应用 必须替换
    DownloadProvider.apk 下载管理应用 可以不替换
    DownloadProviderUi.apk 下载管理应用支持 可以不替换
    DrmProvider.apk 受保护数据存储服务 可以不替换
    Email.apk 邮件相关应用 可以不替换
    Gallery2.apk 图库相关应用 必须替换
    GanOptimizer.apk 接入网络优化应用 可以不替换
    HoloSpiralWallpaper.apk 整体动态壁纸应用相关 可以不替换
    HTMLViewer.apk Html查看相关应用 可以不替换
    LiveWallpapers.apk 动态壁纸应用相关 可以不替换
    MediaProvider.apk 媒体应用支持 可以不替换
    Mms.apk 短信消息应用 必须替换
    PackageInstaller.apk 安装包管理应用 可以不替换
    Phone.apk 电话通讯应用 必须替换
    QuickSearchBox.apk 快速搜索应用 可以不替换
    Settings.apk 设置相关 必须替换
    SettingsProvider.apk 设置支持 必须替换
    SoundRecorder.apk 录音应用 必须替换
    SystemUI.apk 系统状态相关应用 必须替换
    ThemeChooser.apk 主题选择应用 必须替换
    ThemeManager.apk 主题管理 必须替换
    Torch.apk 手电筒应用 可以不替换
    xda_clock_white.apk XDA桌面时钟 必须添加
    XdaClock.apk XDA锁屏相关 必须添加
    备注:如果没有上述文件,就要添加。
  3. 3
    移植系统框架层(system/framework)如下图:
    am.jar 必须替换
    android.policy.jar 必须替换
    android.test.runner.jar 必须替换
    apache-xml.jar 必须替换
    bmgr.jar 必须替换
    bouncycastle.jar 必须替换
    bu.jar 必须替换
    com.android.future.usb.accessory.jar 可以不替换
    com.android.location.provider.jar 必须替换
    core.jar 必须替换
    core-junit.jar 必须替换
    ext.jar 必须替换
    filterfw.jar 必须替换
    framework.jar 必须替换
    framework-res.apk 必须替换
    ime.jar 必须替换
    input.jar 必须替换
    javax.obex.jar 必须替换
    monkey.jar 必须替换
    pm.jar 必须替换
    send_bug.jar 必须替换
    services.jar 必须替换
    svc.jar 必须替换
    备注:如果没有上述文件,就要添加。
  4. 4
    移植lib库文件 (system/lib) 如下图:
    libandroid.so 必须替换
    libandroid_servers.so 必须替换
    libreference-ril.so 必须替换
    libchromatix_s5k3h1gx_default_video.so 必须替换
    libchromatix_s5k3h1gx_hfr.so 必须替换
    libchromatix_s5k3h1gx_preview.so 必须替换
    libchromatix_s5k3h1gx_zsl.so 必须替换
    libganril.so 必须替换
    libkineto.so 必须替换
    libmpl_jni.so 必须替换
    libqmiservices.so 必须替换
    librilswitch.so 必须替换
    备注:如果没有上述文件,就要添加。
  5. 5
    移植bin文件(system/bin) 如下图:
    hostapd 必须替换
    hostapd_cli 必须替换
    netsharing 必须替换
    debuggerd 必须替换
    备注:如果没有上述文件,就要添加。
  6. 6
    系统内的system/etc文件暂时不需要移植
  7. 7
    在system/media文件内是开机动画和一些系统铃声已经自己添加的铃声,可以根据自己的喜好来决定是否移植。

四、最后修改build.prop文件

  1. 1
     ro.xda.version=此处的值必须保留所移植的XUI的build.prop内的该值,比如是Bate1.9,  则该值必须是Bate1.9,否则会影响新版本XUI的升级提示。
      ro.build.date=该移植版本的制作日期。(请注意日期显示的格式,否则会出现乱编码)
      ro.build.display.id= "在此可以添加自己的昵称,签上制作者名"
      ro.product.model=手机的型号;便于一些辅助软件的正确识别(比如豌豆荚、91助手等)。
       ro.xda.device=该值是手机设备的名称
      ro.modversion=所移植的ROM的版本号。(比如该版本是X-UI-Beta1.9)
      等等...

五、移植完成以后进行为ROM签名打包

  1. 1
    顺利完成上述步骤后,有关XUI移植的ROM工作基本完成,接着要对移植的文件进行签名打包,这个时候就要用的上文中提到的“android厨房工具”,有关android厨房的签名打包过程,在这里就不一一赘述。
    将打包得到的zip压缩文件放于sd卡,进入刷机模式进行刷机,想必大家进行移植操作的对刷机流畅都很熟悉了。

六、刷机测试过程中,对一些常见的bug的分析以及解决的方法

  1. 1
    鉴于每位ROM制作者所移植的机型不同,进行了不同的修改和替换,难免在刷机和测试过程可能出现一些bug,接下来是一些常见的bug以及问题的解决方法:
    1、bug:在进行刷机测试时候,手机屏幕卡在第一屏不能进去系统或者卡在开机动画或者无限重启。
       解决方法:对该机型单刷底包的boot.img。如果是自己在移植过程中多替换或者没有替换system/etc或者system/bin内的文件,单刷boot.img也是无济于事。
    2、 bug:刷机测试能进去系统,但是会提示launcher异常终止、手机主界面图标显示不完全  
      解决方法:重新找到和所要移植的XUI分辨率相同或者相似的合适的底包。
    3、bug:刷机测试wifi、和蓝牙打不开  
      解决方法:替换底包或者相同机型的其他ROM的wifi或者蓝牙相关的组件。同时也不排除是在移植过程中没有正确移植相应的库文件和驱动。
     4、bug:刷机测试,手机SIM卡上网是信号时有是无  
      解决方法:找到所移植的XUI包内的lib文件夹下,将libganril.so和libreference-ril.so(不同的机型相关文件可能还有其他几个)重新替换到移植后的底包,再重新打包刷机。
     
      以上只是简简单单的提到几个常见的问题和解决的方法,可能在移植过程和测试过程中还会有其他的bug,欢迎大家将问题反馈到XDA智能手机论坛,这里有专业的技术团队成员为您解答疑惑,同时XDA论坛有更加丰富的智能手机资源。
   最后,祝您移植XUI成功!请大家不要觉得该移植过程繁琐,因为只有亲身体会了才知道移植ROM其中的乐趣和刷机成功那一刻的兴奋与激动。
阅读(3290) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~