OmTheme

友情提示:此站模板还处于开发模式......

AROMA图形化刷机界面教程

AROMA install是由XDA的大神amarullz创建的一个开源项目,这个项目主旨就是让安卓的刷机界面图形化,触摸化,用户自定义化。

一、AROMA的结构
相比一般zip刷机包,AROMA中在刷机脚本文件夹中多了一些东西,首先来看这些。
对比普通zip刷机包,我们可以发现多了aroma文件夹,aroma-config和update-binary-installer文件。
aroma文件夹里主要是这个图形刷机界面的一些资源的存放目录,比如图片,字体,语言配置等,具体进去看里面的文件名就很明白了
至于aroma-cnfig和update-binary-installer就得说说他们的关系了
二、刷机进行流程

1.普通zip刷机包运行时,系统首先调用update-binary这个脚本解释文件,解释updater-script文件,通过执行updater-script进行刷机操作,很单一,过程不能由用户干预。
2.而aroma模式,系统也是首先调用update-binary(和普通的update-binary的内容不同),首先进行执行aroma-config,加载用户UI界面。这一步便是用户参与的rom安装时的选择过程,选择过程中,用户数据保存在一个prop的临时文件中,当确认安装时,调用update-binary-installer执行updater-script。参照临时的prop设置的参数进行安装过程。
三、prop临时文件的介绍
由于用户数据在aroma-config和updater-script中的参数分享是通过prop文件实现的,所以必须知道这个文件的一些使用方法。
作者作品发布页对prop文件的介绍是这样的
key1=value1
key2=value2
key_3=value3
last.name=amarullz

不同参数之间用换行(回车)分开。
这个临时文件储存在/tmp/aroma-data中,明白这点是调用的前提条件
比如在aroma-config文件中写入数据是这样的格式:
writetmpfile("example.prop","key1=ok");
或者
writetmpfile("example.prop","key1=ok\n"+"key2=no\n");
\n是转义符,换行的意思
在updater-script中读取,是这样的:
if
file_getprop("/tmp/aroma-data/example.prop","key1") == "yes"
then
# Install Kernel
write_raw_image("/tmp/boot.img", "boot");
endif;
if
file_getprop("/tmp/aroma-data/example.prop","key2") == "no"
then
# Do Something here
else
# Do Something here
endif;
The prop file format was simple plain text format with (=) token as delimiter between key and values, and newline as delimiter between onekey=values with another key=values.
prop文件是以 = 作为键和值之间分隔符的简单纯文本格式。新的键值与前一个由换行分隔。
也就是说prop文件其实就是一个纯文本文件,通过以 key=value 这种格式赋值进行aroma-config和updater-script中的参数分享的
多行参数这样定义
英语好的可以移步XDA AROMA发布页

aroma脚本命令
·ui_print("@ Title");
设置刷机进度说明的命令
例:ui_print("@ System 分区格式化完毕")
·set_progress(0.5);
设置刷机进度的命令
如:format("MTD", "system");
set_progress(0.05);
#格式化System分区后进度条前进百分之5
# 0=0% 0.5=50& 1=100%
·show_progress(0.2, 400);
同样也是设置刷机进度的与前者不同的是这条命令需要附加一个条件才可能成立,括号里0.2指的是刷机进度,400指的是要处理的文件数
意思是:在处理了400个文件后进度条增加百分之2
如:show_progress(0.02, 500);
·mount("ext4", "EMMC", "/dev/block/mmcblk0p12", "/system");
意思是挂载system分区,也就是12分区,因为要对12分区写入文件,
所以必须先对12分区进行挂载,只有挂载以后才可以进行下一步操作。
·unmount("/system");
与之前的命令不同的是这句是对System分区进行卸载
·format("ext4", "EMMC", "/dev/block/mmcblk0p12", "0");
用简洁的语言介绍下 那就是 格式化system分区 值得一提的是
EMMC和MTD是不一样的哦 具体的情况 请询问度娘 完毕(哗)
·package_extract_dir("system", "/system");
把刷机包中所有system下的目录和文件写入到12分区
·symlink("/factory/hdcp.keys", "/system/vendor/firmware/hdcp.keys");
symlink你可以将这条命令理解为创建快捷方式。(不对的请各位纠正下)
·set_perm_recursive
是给文件夹赋予相应的权限,以后自己做包的时候可以直接参考下面的内容。set_perm 是给文件赋予权限。大家自几看下不同文件夹和文件需要的权限,看到下面的数字是不是不懂什么意思?读r=4写w=2执行x=1对应的数相加 就是相应的权限。
例:set_perm_recursive(0, 0, 0755, 0644, "/system");
·package_extract_file("boot.img", "/cust/image/boot.img");
这一行是写入boot.img
·Delete
删除命令,比如补丁包的时候就会用到了,这样可以不用格式化system 直接删除
system中不用的文件
例:delete("system/app/GooglePlayStore.apk");
·delete_recursive
删除文件夹的
·run_program
这个是运行脚本用的命令
语法:run_program(<path>);
Aroma2.5.6注意
1、先把上面独立模块解压出来,
2、然后把META-INF\com\google\android所有文件放到ROM的对应位置
3、接着编译文件aroma-config这个文件
这个文件主要是配置文件,配置下主题和刷机程序的功能。
其中里面有控件selectbox和menubox是以表的形式出现,控件种类比较多。
有些脚本写得很凌乱完全无法阅读。注意在控件的文字显示方面可以从aroma-config文件直接输入中文,

也可以从语言文本中实现调用,
然而我希望奉劝大家第二种,用语言脚本调用,方便修改。
改完后多检查,切勿出错。
4、修改updater-script刷机脚本,在CM9和CM10的刷机脚本中基本都是新的四参数
如:format("yaffs2", "MTD", "system", "0", "/system");
mount("yaffs2", "MTD", "system", "/system");
这两行命令必须简化,简化成
format("MTD", "system");
mount("MTD", "system", "/system");
不然无法运行脚本。
另外,在刷机脚本中加入并且获取用户选择结果,并切执行。

AROMA-installer 2.56下载

密码: 42w7

快给朋友分享吧!

评论

  • 评论列表
  • 暂无评论

    大牛,别默默的看了,快帮我点评一下吧!:)