查看: 1150|回复: 10

[教程] Aroma Install 傻瓜ROM制作1

[复制链接]
发表于 2013-8-24 22:18:35 | 显示全部楼层 |阅读模式
本帖最后由 1170888181 于 2013-8-24 22:37 编辑

-------------------------公告-------------------------------
使用新版本是一定要对Aroma-config和updater-script进行签名的否则出现什么后果我可不知道(是真不知道这点请基友自测)请大家相信我!
是在线签名的 附链接地址:http://www.amarullz.com/signer/
以上!


一.Aroma Install 启动启动原理
Aroma和一般刷机包的区别就在于多出了
aroma-config  update-binary-installer
以及一个 Aroma 的一个资源目录
Aroma的启动过如下:
首先Recover会先从ZIP固件包中提取  Update-binary 并运行,这一步普通的固件包也是这样的,接下来普通固件包会直接运行  Update-script 也就是我们经常说的刷机脚本,与之不同的是Aroma的刷机包接着会解析 Aroma-configAroma-config这是一个UI配置文件)并加载UI以及各种命令,随后主导权交由用户,在完成一系列的选择后Aroma会运行 update-binary-installer紧接着解析并运行 Update-script 里面的命令然后整个刷机过程就结束了。
大概就是这么个情况。

Aroma Install 语法及命令(1/2)

·aroma-config和updater-script之间的链接是通过临时文件。
·prop文件是以 = 作为键和值之间分隔符的简单纯文本格式,以新行作为一个键值与另一个键值之间的分隔符。

例如:
key1=value1
key2=value2
key_3=value3
last.name=amarullz

这样我们就可以轻松的以file_getprop在updater-script中访问

例如:
·file_getprop("example.prop","key1");

用这样一条简单的命令,file_getprop就会返回“key1”的值也就是“value1”这样我就可以将它用在 IF/IF else 的表述中我们所需要的地方。prop文件中并不限制键值名,换句话说就是可以使用比如 . 与 下划线 但必须要注意的
就是键值中绝不可以加入引号。在ARoma中prop文件属于临时文件 而沟通aroma-config和updater-script正是prop文件 所以我们必须知道prop文件的默认保存目录,/tmp/aroma-data/

所以我们像这样使用prop文件

writetmpfile(“test.prop”,”key1=ok”);

test.prop 文件会被定位在 /tmp/aroma-data/test.prop
比如说像这样的示例:

Aroma-config代码

writetmpfile(
  "kernel.prop",
  "snq =yes\n"+
  "call.2way=no\n"
);

updater-script代码

if
  file_getprop("/tmp/aroma-data/kernel.prop","snq") == "yes"
then
  # Install Kernel
  write_raw_image("/tmp/boot.img", "boot");
endif;

if
  file_getprop("/tmp/aroma-data/kernel.prop","call.2way") == "yes"
then
  # Do Something here
else
  # Do Something here
endif;

因为这样的一个特殊性使得Aroma得到了定制安装这样一个功能  
·if 和 if else
  Edify只支持有限的控制结构,只支持if和if else。但是只拥有这个结构就已经足以创建一个交互的安装器
If结构的基本语法是:

if
  "comparison"=="comparison"
then
  .. commands ..
endif;

if else的结构是:

if
  "comparison"=="comparison"
then
  .. true commands ..
else
  .. false commands ..
endif;

Aroma中没有任何迭代/循环控制结构,界面中的Next和Back由程序自动操控。

·比较和逻辑运算
   Edify script不支持算术运算符,但它支持简单比较和逻辑运算符,就像其它基于C语言的程序设计语言(java,php,javascript)一样,它使用简单运算符语法。

例如:
# Equal
val1 == val2

# Not Equal
val1 != val2

# Or
val1 || val2

# And
val1 && val2

# Not
!val1

# Logical & Comparison
(val1 == val2)||(val3 != val4)

(val1 == val2)&&(val3 != val4)

!((val1 == val2)&&(val3 != val4))

是的,它不支持小于和大于比较,因为它只支持字符串和布尔字符串。整数比较用cmp函数,但它只在aroma-config脚本中支持。





评分

参与人数 2金钱 +2 收起 理由
Ryuuku + 1 赞一个!
caesaryahoo + 1 很给力!

查看全部评分

发表于 2013-8-24 22:29:31 来自手机 | 显示全部楼层
支持楼主,学习下
发表于 2013-8-24 22:38:02 | 显示全部楼层
技术贴  看不懂  定露珠
 楼主| 发表于 2013-8-24 22:38:55 | 显示全部楼层
西门小兵汉化的post2.3就是用的这个软件封装的,呵呵
发表于 2013-8-24 22:45:27 | 显示全部楼层
路过...............
发表于 2013-8-25 12:43:51 | 显示全部楼层
完全怒不知道楼主再说什么
 楼主| 发表于 2013-8-25 18:36:01 | 显示全部楼层
我晕你。小白,晕,aroma  这个软件是用来封装刷机包的,就和电脑上边封装系统一个道理,哎呀,我感觉自己不会解释。就是刷机包用这个软件封装之后,可以用图形界面智能安装,或者选择性安装,个性化比较强。以前卡卡刷包,不是一开始刷机,就不用管了么。这个选择性很多,我晕,不知道怎么解释了,我 觉得,要看懂这个解释要么电脑不错,要么手机不错,但是感觉你回复很难小白
发表于 2013-8-25 19:11:21 | 显示全部楼层
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
发表于 2013-8-25 19:28:29 来自手机 | 显示全部楼层
支持啦,,,,
发表于 2013-8-25 21:12:23 来自手机 | 显示全部楼层
不明觉厉
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注公众号
关于盛悦|手机版|小黑屋|盛悦网

相关侵权、举报、投诉及建议等,请发 E-mail:admin@discuz.vip

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.|粤ICP备12017825号

在本版发帖
关注公众号
QQ客服返回顶部