第一次接触电视盒子的开发,遇到一些坑,这里记录下Rom包修改和升级的方法。

这边使用的硬件是:

Amlogic S905x 2GBx16GB

准备工作:

1、ROM包(aml_upgrade_package.img)

2、Customization Tool(aml解压包工具)

3、USB_Burning(烧入工具)

修盖Rom包:

第一步:解压

打开Customziation tool工具:

c98860558072

Customziation_tool.PNG

点击加载,选择解压项目,如图:

c98860558072

客制化选项.PNG

选择需要解压的aml_upgrade_package.img。完成解压。

查看文件包:

解压成功后,能获取到“产品信息”,“基本信息”,“系统APK”等信息。

这里我们只说明如何添加系统内置apk。

我们点开“高级” –> “System”

打开文件夹:(如下图)

c98860558072

android系统结构.PNG

文件结构:

\system\app

在这个文件夹下的程序为系统默认程序(如:信息、音乐播放器、相机等),自己安装的软件将不会出现在这里,而是\data\app文件夹中。

\system\bin

这个目录下的文件都是系统的本地程序,从bin文件夹名称可以看出是binary二进制的程序,里面主要是Linux系统自带的组件(命令)

\system\etc

从文件夹名称来看保存的都是系统的配置文件,比如APN接入点设置等核心配置。

\system\fonts

字体文件夹,除了标准字体和粗体、斜体外可以看到文件体积最大的可能是中文字库,或一些unicode字库,从T-Mobile G1上可以清楚的看到显示简体中文正常,其中DroidSansFallback.ttf文件大小 。

\system\framework

framework主要是一些核心的文件,从后缀名为jar可以看出是是系统平台框架。

\system\lib

lib目录中存放的主要是系统底层库,一些so文件,如平台运行时库。

\system\media\system\media\audio

铃声音乐文件夹,除了常规的铃声外还有一些系统提示事件音。

\system\sounds

默认的音乐测试文件,仅有一个test.mid文件,用于播放测试的文件。

\system\usr

用户文件夹,包含共享、键盘布局、时间区域文件等。

添加三方内置apk:

我们放进内置系统apk一般都需要用到系统权限。

可以参考:http://www.jianshu.com/p/47265c8899b5 签名自己的apk包。

把apk包放入/app文件夹中,如果有so文件,也一并放入,如图:

c98860558072

放入apk.PNG

** lib文件夹中放入的就是so文件(如果不放,apk启动会失败) **

压缩:

这里我遇到了一个坑,在压缩之前,需要替换Uboot文件。

点击“高级” –> “Uboot”

c98860558072

替换文件.PNG

最后点击“压缩”,打包完成。

烧录固件:

打开USB_Burning_Tool:

c98860558072

USB_Burning_tool.PNG

点击“文件”–>“导入烧入包”

其他烧录配置使用默认就好,点击“开始”,等烧录成功后点击“停止”。完成烧录。

连接硬件

有可能会出现硬件连接不上问题。

1、检查线是否有问题

2、按着‘reset’键不放,再插入usb线,等待几秒。

开机崩溃,进入boot界面

c98860558072

boot 界面.jpg

开始我修改过的Rom包一直都会出现这个问题。

遇到这种情况,一定要使用我提供的rom包,在压缩之前替换Uboot文件。

Amlogic解包打包的工具有两个:

  1. Customization tool , windows下面运行的, 不过很久没更新, 用起来会有错误出现.

  2. amlogic tool kit , linux 下面运行的, github上面一直再维护:

https://github.com/natinusala/linux-amlogic-toolkit

==================本贴是基于Linux的tool去解包打包image文件===============

  1. 虚拟机安装

安装虚拟机, VMWare , 安装centOS .

配置网络, 使虚拟机能连接外网. 最简单就是 查看虚拟网络配置的 NAT 和 DHCP , 手动更改你的cnetOS的网络为静态IP.

  1. Tool build

到 github上面下载最新的toolkit , 拷贝到cnetOS 的桌面.

仔细查看guthub下面的how to use 安装所有需要的库和工具

gcc, zlib1g-dev, libblkid-dev, i386 …

所有的工具安装完成之后, 运行 tool目录 ./bin/build 文件, 确认运行完成之后, 没有任何错误出现.

  1. 解包

拷贝线刷的image到虚拟机

运行 ./bin/unpack ***.img , tool会自动解包image文件, 并且挂在system目录.

编辑system目录里面的文件.

  1. 打包

运行 ./bin/repack .img, tool会自动打包成.img文件.

  1. 线刷工具

下载USB burn tool

文件->选择 你的image 文件.

不要选择 “擦除Flash”

不要选择 “擦除bootloader”

点击开始

盒子USB 拔掉, 拔掉电源线, 然后重新插上USB 线, 插上电源线.

自动进入刷机模式, 开始image刷机.

PS: USB burn 上面的两个擦除每次选择, 可能有些人会忘记.

   打开USB burn目录, 修改BurnCfgUI.ini文件, 按照下面修改, 就不会默认打钩了.

[EraseFlash]

Enable = false

Show = true

[EraseBootLoader]

Enable = false

Show = true