[MOD][2.56] AROMA Installer :: 121004-031 :: Open Source
The World's First ANDROID Touch And Customizable ROM Installer
Don't Forget To Donate To Me:
When you install Linux, Windows, Mac or applications on the PC
You can always customize your installation as you want.
WHY CAN'T WE DO THE SAME INSTALLING AN ANDROID ROM?
BECAUSE NOW
AROMA Installer GIVES YOU THIS POSSIBILITY!
For Questions and Answer about scripting and customizing your Installer, please post your problems in Q&A Thread below: AROMA Installer & Edify
Q & A THREAD
YOU DON'T NEED TO USE TOUCH RECOVERY TO MAKE THE TOUCH SCREEN WORKS
If your Recovery Kernel include Touch Screen Driver, even if the recovery not supported touch screen, it will works.
And Almost any recovery included touch screen driver in its kernel (Except some trimmed versions)
AROMA Installer gives users the possibility to choose which mods and applications they want to Install on to their device. Sometimes we want the clean install, without bloatware; and sometimes we want the full set of applications on our device. With AROMA Installer, you are your phone's master!
Benefits For Chefs/Developers
AROMA Installer gives chefs many benefits:
You don't ever again have to hear someone ask to remove or include something they like into your ROM, just for you to yell "Hey, that is only your opinion! Only you and some other people like it; most people don't! Go remove the apps on your own with WINRAR, you ^$#&*&#$", remember they are still a customer , and with AROMA Installer, this problem can be solved.
If you are good at customizing the AROMA Installer it was possible to make your ROM compatible with many devices using just one ROM File. You save your time, bandwith and hosting maintanance.
With the great user interface in your ROM installation, users will be very happy with it.
With AROMA Installer, You Are The Greatest ROM Developer
Completely new Input/Touchscreen Handler - Thanks to agrabren from TWRP
Remove all calibration need. calibtool(), calibrate() and calibrate_matrix() won't do anything now.
EDELWEIS - 2.51 - BUILD 120810-026
Supported Galaxy Nexus Touch Screen - And maybe other devices now supported
EDELWEIS - 2.50 - BUILD 120716-025
Add Calibration Matrix for More Accurate Touch screen calibration
Set ROBOTO as Default True Type Font
DAHLIA - 2.00 - BUILD 120425-020
Fix Installation Save Logs
Fix framebuffer mmap size
Fix status 0 error
Add Multilanguage functions
Change list bullet drawing method
Add support for kerning font when use TrueType/OpenType
Add AROMA Memory management and memory debuging build (COMPILE FROM SOURCE ONLY)
Add more limit size for AROMA texts
Add font glyph cache for faster freetype drawing & processing
Add support for Modern Standard Arabic
Add support for RTL
Add support for TrueType and OpenType fonts
Add support for UTF8 encoding in aroma-config and all AMS text. For updater-script use NO-BOM UTF8
Fix Memory leaks
Add ini_set("force_colorspace","rgba");
Add support for atmel_maxtouch - Asus Transformer Touch Screen
CEMPAKA- 1.64 - BUILD 120414-040
Fix framebuffer mmap size
Fix status 0 error
Previous Changelogs:
Code:
* CEMPAKA- 1.63 - BUILD 120306-032
* Add support for atmel_maxtouch (Down Event SYN) - Asus Transformer Prime Touch Screen
* CEMPAKA- 1.62 - BUILD 120303-030
* Fix some memory leaks (Important).
* Add ini_set("force_colorspace","rgba");
* CEMPAKA- 1.60 - BUILD 120227-026
* Add msb_right check for Endianess video memory
* Fix Installer text log drawing
* Add ini_get
* Add rom_date in ini_get
* Fix reboot and back function
* Add more and recreate Icons for themes and generic
* Rewrite text handler
* Add alignment, indentation and list in AROMA Markup String
* Change temp directory to /tmp/aroma, /tmp/aroma-data stil works
* Add Theme Support
* Add AROMA Markup for <b> Bold
* Add More Colorset
* Add More Text to Customize
* Add PNG Icon Load From Theme (Default Icons)
* Add Tab support in AROMA Markup String
* Change int to long for partition info, now support big storage information
* Config Init All/Theme Only
* Recreate new example (release) for binary release
* Customizable Font Runtime
* Reformat About Dialog
* Add show progress per time in installer (now support by files and by time).
* Themeable Progressbar
* Enhance Exec Functions to return exit status and autosave buffer into variable
* Fix glibc error in ag_close - Need workaround
* Move ai_trim to system libs
* Add Stretch function for png
* Add 9 Patch drawing function for png
* Fix Reboot Function
* Add Alternative Touch Method
* Add ziptotmp & restotmp
* Add support for mxt224 touch screen (SYN_MT_REPORT event)
* BOUGENVILLE - 1.10 - BUILD 120208-13
* Add Alternative Touch Method
* Added New Functions
- anisplash - ANIMATED SPLASH SCREEN
- prop - GET PROP FROM AROMA TMP
- zipprop - GET PROP FROM ZIP
- resprop - GET PROP FROM AROMA RESOURCE ZIP
- sysprop - GET RECOVERY PROP
- property_get - GET RECOVERY PROP
- write - WRITE STRING INTO FILESYSTEM
- readtmpfile - READ TEMPORARY FILE AS STRINF
- read - READ FILESYSTEM AS STRING
- zipread - Read String From Zip
- resread - Read Strinf From Resource
- zipexec - Exec Program From Zip
- resexec - Exec Program From Resource
- run_program - Run Program/Exec
- exec - Run Prohram/Exec
- back - BACK TO PREVIOUS WIZARD
- reboot - REBOOT DEVICE
* Deprecated Funcrions
- readfile - Will Renamed to zipread
- readfile_aroma - Will Renamed to resread
* Add Some Fix in Touch Up Handler
* Prop parsing, File Handling & Zip Handling has been managed in efficient functions
* Remove CERT.SA - Not Needed
* Add Licence Headers in all aroma source code Apache 2.0
* Add More Comments & Documentation in Souce Code
* Renamed functions for fit needs
* ANGGREK -1.00 - BUILD:120204-011
* Fix calibrating function not working when set in aroma-config
* Update and fix firmware command from update-binary-installer into recovery.
* ANGGREK -1.00 - BUILD:120202-10
* Improve touch handler compatibility. Now more accurate in every devices
* Add more chars into ROM Infos from only 31 to 63max
* Detail changelog from commit: 10
* ANGGREK -1.00 - BUILD:120201-009
* Stride/Pitch/Padding Framebuffer support for non multiply 8 screen size like qhd on sensation and evo3d
* Rewrite input handler, better keys & touch screen compatibility.
* Change calibration division data from integer to float, more accurate calibrating
* Improve fling and scrolling engine
* Add support for all possible screen bit depth 32/24/16bit. ARGB, ABGR, RGBA, BGRA. No problem now.
* Detail changelog from commit: 006, 007, 009ANGGREK -1.00 - BUILD:120129-005
* Remove Signature Check - Now You don't need to sign aroma-config and updater-script
* Calibration Tool now show before anything, so you can directly do calibration. you can disabled it in aroma-config by deleting calibtool(""); command.
* Fix some touch screen input handler
* Add 229 in menu keycode (F2 used in emulator as menu key)
ANGGREK -1.00 - BUILD:120128-004
* Open Source - Binary No Released
ANGGREK -1.00 - BUILD:120126-003
* Refer to defy recovery source code found HERE (Thanks walter79 for github source code) I add some keycode into input reader : Read Here
* Add confirmation if calibrated data will be used in current process (After Calibrating) - So you can try touchscreen without editing aroma-config after you calibrate it.
* Remove precision calculation in scrolling thread (Natural calculation but less fluid)... Feel faster now.
* Add function for aroma-config to define custom key code for up/down/select/back/menu, just like calibrate() function. with format like this: ini_set("customkeycode_up",130); or ini_set("customkeycode_select",13);, the keycode can be capture by aroma-keycapture-flashable.zipANGGREK -1.00 - BUILD:120125-002
* Add Home & Power Button To Select Items
* Unsigned Script Now Not Terminated Installer, but just show Alert That the script should be signed to pass install ui
* Add More Documentation in aroma-config
ANGGREK -1.00 - BUILD:120124-001
* Initial Release ( AROMA UI, AROMA Touch Handler, AROMA Markup String )
* Customizable ( Custom Theme Colors, Customizable Fonts and Images )
* Optimized Build ( Static, -o2, remove unused functions, remove png-write and zlib deflate functions )
Open Source?
There may be some people who will ask if the project is Open Source, and the quick answer is YES. It is an Open Source Project Now.
Why Release The Source?
I used some other work (modified) from the Open Source Community, especially Koush's recovery source code for getting the input mode, PNG, ZLIB, and some Framebuffer programming samples.
I want to make all chefs feel safe, so I guarantee that I won't make this into a money making program.
I got something from the community, and I want to give something back to it.
What Benefits?
Rapid development
I can get code review & patches - Not just bug reports
There are many innovations that I wrote in the program that may be useful for other needs, like the AROMA Graphic Framebuffer, the AROMA UI, the Amarullz Dithering Method, and the AROMA Simple PNG Fonts. It may be used in recovery, so recovery can use the AROMA Installer Interface
I can learn more about Open Sourcing programs (especially the CVS and licensing things - that always drive me to the question - what is it?)
I Need Help
As I said before, I am just a newbie at Android Development, or even as a user. I need someone who has a lot of knowledge about Open Sourcing the software, and a lot of knowledge about licencing (I don't know much, I just tried to make my software compatible with them: GPL, Apache, etc.)...
I also created "aroma-keycapture-flashable.zip" to capture the keycodes of your device (flashable in recovery - won't flash anything ). And in case the keys don't work, report the keycodes in this thread, with information like this example:
Prev Item/Up Key = 120
Next Item/Up Key = 110
Select Item/Enter/Select Key = 13
Back Key = 200
Menu Key = 193
To customize keycodes, open aroma-config and modify this code:
Code:
##
# Custom Key Code - Usefull For Some Device which not used
# Standard key code for up/down/select/back/menu
#
# You can capture the keycode in
# recovery using "aroma-keycapture-flashable.zip" Available in
# AROMA Installer Thread.
#
# Press some key when it run, it will return key code,
# that key can override up/down/select/back/menu actions in
# AROMA Installer, you can even set your home key for up, or
# volume down for select item
#
#-------- Uncomment & Modify this Code:
#
# ini_set("customkeycode_up", "115");
# ini_set("customkeycode_down", "114");
# ini_set("customkeycode_select", "116");
# ini_set("customkeycode_menu", "139");
# ini_set("customkeycode_back", "158");
#
AROMA Installer need Signing Their script to be able to pass Installer UI.
Select your aroma-config script and updater-script script in File Input below, then click Generate Signature, to download your Installer Sign File (CERT.SA). Place it in your META-INF folder, then pack your ROM.
Why I need Sign My Installer?
I Hate someone who use other works but don't know who actually created it... But I love someone use my works without even pay anything or buy anything for me. So This method is the best way to notice all users that the AROMA Installer was created by me. If you don't like the method, I can't force you to use my works...
AROMA Installer can be configured and customized as you like, there is so many features and functions you can used to implemented many things. In this manual, we will learn all the features and functions in technical ways and can be implemented directly in configuration for practice, or production.
AROMA Installer codename based on Alphabetical Indonesian Flower Names. Here the list of already used codename:
ANGGREK - 1.00
BOUGENVILLE - 1.10
CEMPAKA - 1.60 - 1.64
DAHLIA - 2.00
EDELWEIS - 2.50
Programming Language
It was application which runs on Android device but not on Android OS Environment that the native applications usually use Java. AROMA Installer use C (Pure C, not C++), so it may run on another platform like x86 with small modifications ofcourse.
Used Libraries
ZLIB - ofcourse, it was the most awesome thing in computer world
PNG
MinZIP
Freetype
All library need to compiled as static to make sure it runs without any dependency issue in any devices.
Official Binary
I Only support ARM device, but it was opensourced, so anyone can play with the source and compiled it for they own devices.
Hello to everyone. I have a Galaxy S3 (T-Mobile US), and was using HTC Sensation US version. On the Sensation, you can flash an International version rom via Aroma to the US Sensation. Aroma will then ask you on which Sensation version you have, International or US. Then Aroma will flash the Appropriate files needed for the model you have ( kernel, modem Etc.).
My Question is: Can we have something like this? have the Aroma flash the International Version Rom to US Galaxy S3, then Aroma will ask you which version you have, then flash the appropriate files needed ( kernel, modem, processor driver etc.. )
My apology if I posted this in the wrong place, Thanks and more power.
I'm not finished reading the whole thread yet, but did anybody notice that when you click on VirtousPrime link, you'll be redirected to Valhalla | BlackEdition page and vice versa? , well nothing special for that..but your AROMA smells really good and one of the best application out there!!!
regards
HTC Sensation XE with Beats Audio
Rooted---S-OFF---SuperCID
Hello. I wanted to rebase my script to v2.5 i started a new one. I took teh aroma zip provided in first post and started exploring it. I was with 2.00 and it was different. However i made myself a test here. I cleaned out syntax errors expect the error on the last empty line. How could i make this zip without errors. And i havent modified updater script. I puted teh one from aroma 2.5 zip
so here it is
Code:
# Info #
ini_set("rom_name", "Jelly Sandwich");
ini_set("rom_version", "6.1");
ini_set("rom_date", "22.09.2012");
ini_set("rom_author", "MrTapa");
ini_set("rom_device", "Xperia Ray");
# Spash #
splash(3000,"mgTerminator_big");
# Default theme #
theme("ics");
# Default screen size #
ini_set("dp","3");
# Default font type & font size #
fontresload("0","fonts/Roboto.ttf","12");
fontresload("1","fonts/Roboto.ttf","16");
########## Calibration ##########
# Xperia #
calibrate_matrix(
"49905.00","-1170.00","90937.50","1192.75",
"47526.50","334853.12","47900.00","0"
);
###################################################################################################################
#
# THEME
#
selectbox(
#-- Title
"<~themes.title>",
#-- Sub Title
"<~themes.desc>",
#-- Icon: <AROMA Resource Dir>/icons/personalize.png or <ThemeDir>/icon.personalize.png
"@personalize",
#-- Will be saved in /tmp/aroma/theme.prop
"theme.prop",
#---------------------------------[ Selectbox Without Group ]----------------------------------#
# TITLE | SUBTITLE | Initial Value #
#------------------+-----------------------------------------------------------+---------------#
"Generic", "Default AROMA Installer", 0, #-- selected.0 = 1
"MIUI Theme", "MIUI Theme", 0, #-- selected.0 = 2
"ICS Theme", "Ice Cream Sandwitch ", 0, #-- selected.0 = 3
"MIUI 4 Theme", "MIUI 4/ICS Theme ", 1, #-- selected.0 = 4
"Sense Theme", "HTC Sense Theme", 0 #-- selected.0 = 5
#--------[ Initial Value = 0: Unselected, 1: Selected, 2: Group Item, 3: Not Visible ]---------#
);
##
# SET THEME
#
#-- Change Info:
# file_getprop : should use absolute path "/tmp/aroma/theme.prop"
# prop : just use relative path "theme.prop" will automatically read the "/tmp/aroma/theme.prop"
#
if prop("theme.prop","selected.0")=="2" then
theme("miui");
endif;
if prop("theme.prop","selected.0")=="3" then
theme("ics");
endif;
if prop("theme.prop","selected.0")=="4" then
theme("miui4");
endif;
if prop("theme.prop","selected.0")=="5" then
theme("sense");
endif;
###################################################################################################################
#
# Installer
#
menubox(
#-- Title
"Hello",
#-- Sub Title
"Please select and item from the menu below",
#-- Icon
"@apps",
#-- Will be saved in /tmp/aroma/first.prop
"demo.prop",
#-------------------------+-----------------[ Menubox Items ]-------------------------+---------------#
# TITLE | SUBTITLE | Item Icons #
#-------------------------+-----------------------------------------------------------+---------------#
"Install Rom", "Flash Jelly Sandwich", "@install", #-- selected = 1
"Changelog", "Show the changelog for the rom", "@info", #-- selected = 2
"Exit", "Return to recovery", "@default" #-- selected = 3
);
##########################################################
####################### CHANGELOG ########################
##########################################################
if prop("first.prop","selected")=="2" then
textbox(
#-- Title
"Changelog",
#-- Subtitle
"Here it is",
#-- Icon
"@update",
#-- Arg 4
resread("changelog.txt")
);
##########################################################
########################## EXIT ##########################
##########################################################
if prop("first.prop","selected")=="3" then
if
confirm(
#-- Title
"Exit",
#-- Text
"Are you sure want to exit the Installer?",
#-- Icon (Optional)
"@alert"
)=="yes"
then
#-- Exit - NOTE: Add dummy argument
exit("");
endif;
##########################################################
###################### CUSTOMIZE #########################
##########################################################
if prop("first.prop","selected")=="1" then
selectbox(
#-- Title
"Select",
#-- Sub Title
"Please choose required features for teh rom",
#-- Icon: <AROMA Resource Dir>/icons/default.png or <ThemeDir>/icon.default.png
"@default",
#-- Will be saved in /tmp/aroma/mods.prop
"mods.prop",
#-----------------------------------[ Selectbox With Groups ]----------------------------------#
# TITLE | SUBTITLE | Initial Value #
#------------------+-----------------------------------------------------------+---------------#
"Statusbars", "", 2, #-- Group 1. key = "selected.1"
"Xperia Stock", "Sony's stock xperia statusbar", 0, #-- selected.1 = 1
"Xperia GX", "Xperia GX like statusbar", 0, #-- selected.1 = 2
"JellyBean", "Full Holo JellyBean statusbar", 1, #-- selected.1 = 3
"Boot Animation", "", 2, #-- Group 2. key = "selected.2"
"Default Nexus S", "Default Nexus S Android boot animation", 1, #-- selected.2 = 1
"AROMA Boot Animation","AROMA Earthquake logo boot animation", 0, #-- selected.2 = 2
"HTC Generic", "Generic white HTC Quitely Briliant boot animation", 0, #-- selected.2 = 3
"Old Android", "Old Android logo boot animation", 0, #-- selected.2 = 4
"SD-EXT Mods", "", 2, #-- Group 3. key = "selected.3"
"Generic APP2SD", "Generic app2sd, all non-system apk in sd-ext", 1, #-- selected.3 = 1
"AD2SDX", "All non-system files in sd-ext", 0, #-- selected.3 = 2
"Data2SD", "All data files in sd-ext", 0, #-- selected.3 = 3
"Input Method", "", 2, #-- Group 3. key = "selected.3"
"Android IME", "Android AOSP Keyboard", 1, #-- selected.3 = 1
"HTC IME", "HTC IME with T9 Support", 0, #-- selected.3 = 2
"Camera", "", 2, #-- Group 3. key = "selected.4"
"Android Camera", "Android AOSP Generic Camera", 1, #-- selected.4 = 1
"HTC Camera 3.5", "New and No FC Error, but No 720p Video Recording", 0, #-- selected.4 = 2
"HTC Camera 3.0", "Old Camera With 720p Recording, but FC Error in Preview.", 0 #-- selected.4 = 3
#--------[ Initial Value = 0: Unselected, 1: Selected, 2: Group Item, 3: Not Visible ]---------#
);
endif;
##
#
# Next Screen is Installation UI, So change the next button text to "Install Now"
#
ini_set("text_next", "Install Now");
###################################################################################################################
#
# STEP 9 - MAKE SURE USER KNOW THAT NEXT STEP WAS INSTALLATION PROCESS
#
viewbox(
#-- Title
"Ready to Install",
#-- Text
"The wizard is ready to begin installation.\n\n"+
"Press <b>Install Now</b> to begin the installation.\n\n"+
"If you want to review or change any of your installation settings, press <b>Back</b>. Press Menu Key -> Quit Installation to exit the wizard.",
#-- Icon
"@install"
);
##
#
# Next Button in successfull installation should be back to "Next >"
#
ini_set("text_next", "Next >");
#-- Extract sleep to /tmp/aroma/sleep. It will be used in updater-script for testing wait script
restotmp("exec_demo/sleep","sleep");
###################################################################################################################
#
# STEP 10 - INSTALLATION PROCESS
#
setvar("retstatus",
install(
#-- Title
"Installing",
#-- Installation Process message
"<b>"+ini_get("rom_name")+"</b> are being installed.\n\n"+
"Please wait while installation wizard installs <b>"+ini_get("rom_name")+
"</b>. This may take several minutes.",
#-- Installation Icon
"@install",
#-- Installation Finish Message
"The installation wizard has successfully installed <b>"+ini_get("rom_name")+
"</b>. Press Next to continue."
)
);
##
#
# Next Button is "Finish"
#
ini_set("text_next", "Finish");
###################################################################################################################
#
# STEP 11 - FINISH MESSAGE, Add Checkbox to Reboot or No. Save in "reboot_it" variable
#
# You can use return value or "reboot_it" variable to retrive checkbox value
# Example:
# if (checkviewbox(....)=="1" then
# ... checked ...
# endif;
#
checkviewbox(
#-- Title
"Installation Completed",
#-- Text
"<#selectbg_g><b>Congratulation...</b></#>\n\n"+
"<b>"+ini_get("rom_name")+"</b> has been installed into your device.\n\n"+
"Installer Status: "+getvar("retstatus")+"\n\n",
#-- Icon
"@welcome",
#-- Checkbox Text
"Reboot your device now.",
#-- Initial Checkbox value ( 0=unchecked, 1=checked ) - (Optional, default:0)
"1",
#-- Save checked value in variable "reboot_it" (Optional)
"reboot_it"
);
###
#
# Check if reboot checkbox was checked
if
getvar("reboot_it")=="1"
then
#
# reboot("onfinish"); - Reboot if anything finished
# reboot("now"); - Reboot Directly
# reboot("disable"); - If you set reboot("onfinish") before, use this command to revert it.
#
reboot("onfinish");
endif;
#---- FINISH
Thank you
Device: Xperia T Rom: OptiMax Kernel:DoomKernel Hit THANKS if you want to thank me if I have helped you! DONATE
I've been using my aroma installer fine in gingerbread but after I ported it to ICS I have noticed a few crashes (the phone reboots) or the installer hangs before the splash screen would normally be displayed.
Have any of you guys been having the same issue or is it just the way I ported the installer? Should I try starting from scratch again? Remember, this is happening to me on ICS
Given the amount of coverage that Android receives around here, you could almost be … more
XDA Developers was founded by developers, for developers. It is now a valuable resource for people who want to make the most of their mobile devices, from customizing the look and feel to adding new functionality. Are you a developer?