Rom của tôi và tùy chỉnh cài đặt của tôi tuy cùng sử dụng Aroma Installer nhưng có nhiều điểm khác với các giả khác. Tuy nhiên có thể trao đổi với bạn cách sử dụng AROMA Installer của tôi.
Tôi sẽ trao đổi gồm 3 phần:
1- Giới thiệu chung về Aroma Installer
2- Cách soạn thảo (cú pháp,câu lệnh,hàm....) trong Arome Installer
3- Liên kết giữa file nhị phân và file script
Cài đặt và update hệ điều hành là 1 file zip chứa các gói để cài đặt
Gồm 2 loại file nhị phân (update-binary) để thực thi và script (updater-script) để cấu hình
update-binary đơn giản linux executable viết bằng C.
AROMA Installer
"AROMA" theo tiếng Bahasa Indonesia (tác giả là người Indonesian) có nghĩa là "Smells", nhưng còn có nghĩa là "Amarullz ROM Manifest". update-binary chứa Wizard Installation, Touch User Interface (AROMA UI), Customizable Packages, System Inspecting, Themeable, và User Interactive.
AROMA Installer hoạt động thế nào?
Bạn cần một chút kiến thức về C/C++ mot so cau lenh trong linus
Wizard UI
1. checkbox – Giao diện người dung (UI) bao gồm danh sách để lựa chọn và được lưu vào file *.prop.
2. selectbox – giống như checkbox, nhưng chỉ chọ được 1 mục.
3. textbox – hiển thị text
4. viewbox – giống như Textbox, nhưng không cuộn và hạn chế độ dài
5. agreebox – giống như Textbox, nhưng phải check vào đồng ý mới qua bước tiếp theo. Thường sử dụng cho License hoặc Terms of Use Interface.
6. menubox – hiển thị danh sách để chọn và không có phím Next button, vì khi chọn sẽ tự sang bước tiếp theo. Khi chọn sẽ lưu vào file *.prop
Dialog UI
Trong khi Wizard UI có giao diện Fullscreen, thì Dialog UI có giao diện Popup Windowvà thường dung để nhắc nhở như: "Are You Sure want to format the partitions?". Gồm các loại sau:
1. alert – popup dialog, hạn chế độ dài và chỉ có 1 nút OK.
2. confirm – popup dialog, hạn chế độ dài và có 2 nút "Yes" và "No"
3. textdialog – popup dialog, không hạn chế độ dài và có 1 nút “OK”.
Splash UI
Giao diện người dùng Splash Screen gồm file png files with được làm trễ trước khi chuyển sang trang tiếp theo. Ảnh sẽ tự căn giữa và phụ thuộc kích thước ảnh(có thể dung nhiều anh để tạo hiệu ứng animation). Nền sẽ mờ đi
AROMA Installer hỗ trợ:
1. setcolor – đăt màu
2. ini_set – cấu hình
3. calibrate – căn màn hình
4. getvar – nhận biến
5. setvar – đặt biến
6. appendvar – Chuỗi thành biến
7. prependvar – Thêmm tiền tố chuỗi vào biến
8. file_getprop – nhận giá trị các phím từ file *.prop
9. readfile – đọc file văn bản từ file zip
10. readfile_aroma – đọc file văn bản từ file zip trong thư mục META-INF
11. getdisksize – kích thước partition
12. getdiskfree – kích thước còn lại của partition
13. getdiskusedpercent – phân vùng sử dụng kích thước theo tỷ lệ phần trăm
14. cmp – so sánh số nguyên (>, <, ==,> =, <=, =!)
15. cal – phép tính số học đơn giản ( +, -, /, * )
16. iif – Inline if
17. if else – Câu lệnh điều kiện
18. pleasewait – thông báo xin chờ để tính toán
19. writetmpfile – Write/create temporary file with text contents
20. exit – Thoát ra và chấm dứt cài đặt (trơe về Recovery)
AROMA Installer, gồm thư mục META-INF/com/google/android và files aroma-config, updater-script.
Thí dụ về checkbox
checkbox(
"<#selectbg_g>Customize Page 2</#>", # Đây là tiêu đề
"Select the program or mod features you want installed.", #Đây là phụ chú bên dưới
"@personalize", #Đây là icon
"apps1.prop", # Đây là file .prop sau khi người dùng lựa chọn sẽ được ghi lại và
đặt trong thư mục tmp/
"<#c00>Social Networks</#>", "", 2,
"Facebook", "xxxxxxxx", 1, #mục 1.1 mặc định chọn
"Twitter", "xxxxxx", 1, #mục 1.2 mặc định chọn
"Flickr", "xxxxxx", 1,#mục 1.3 mặc định chọn
"Google Plus", "Google's social network", 0,#mục 1.4 mặc định không chọn
Thí dụ về selectbox
selectbox(
"<#selectbg_g>Options</#>",# Đây là tiêu đề
"Please Select:",#Đây là phụ chú bên dưới
"icons/apps",#Đây là icon trong thư mục icon
"wipe.prop",# Đây là file .prop sau khi người dùng lựa chọn sẽ được ghi lại và
đặt trong thư mục tmp/
"<#selectbg_g>Install Applications</#>", "", 2, #1
"<#c00>Full Installation</#>", "xxxx", 0,
"Minimal", "xxxx", 0,
"Custom", "xxxx", 1,
"<#selectbg_g>Wipe</#>","xxxx", 2, #2
"Install without wiping","", 1,
"Normal Wipe","xxxx", 0,
"Full Wipe", "Useful when coming from a difference ROM.\n" +
"WARNING: Your will lose all data!", 0
);
textbox(
"<#selectbg_g>System Information</#>",# Đây là tiêu đề
"Current system information.",#Đây là phụ chú bên dưới
"@info",#Đây là icon
getvar("sysinfo") #nội dung hiển thị file sysinfo
);
viewbox(
"<#selectbg_g>VnDroid ROM</#>",
"\n\n\n\n\n"+
" Welcome to VnOneX ROM\n"+
"\n"+
" by hanoiwap\n"+
"\n\n\n\n\n\n"+
" Thanks for using my ROM!\n"+
"\n"+
" Contact me\n"+
"\n"+
" <#selectbg_g>hanoiwap@gmail.com</#>\n"+
"\n"+
" IM: <#selectbg_g>hanoiwap</#>",
"@welcome"
);
agreebox(
"<#selectbg_g>Terms Of Use</#>",
"Please read the VnOneX Terms of Use ...",
"icons/agreement",
readfile_aroma("vndroid/agreement.txt"),
"I Agree",
"Please check the agreement..."
);
appendvar("installmsg","\n\nPlease Select Installation Type Below:");
menubox(
ini_get("rom_name") + ini_get("rom_version"),
"Please select from menu below",
"@apps",
"first.prop",
"<#c00>Installation Rom</#>","","@install", #1
"System Info","Get and show device/partitions informations","@info",
"Change Log", "View the Change Log", "@update",
"UseGuide", "View the UseGuide", "@update",
"Exit","","@install"
);