• Introducing XDA Computing: Discussion zones for Hardware, Software, and more!    Check it out!

[APP] AROMA Installer

Search This thread

amarullz

Inactive Recognized Developer
Jan 16, 2007
1,061
7,261
Bandung
amarullz.blog.unikom.ac.id
logo.png

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!

_________________________________________
------=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=------


W.A.R.N.I.N.G.!!!
THIS DEVDB DISCUSSION ONLY FOR DEVELOPMENT DISCUSSION.
USE Q&A TO ASK ABOUT SCRIPT, HOW TO, AND INSTALLATION

  • FOR ROM CHEFS/DEVELOPERS ONLY
    ROM Chef/Developers? What is that? ... Here the video.
    DON'T ASK ABOUT HOW TO INSTALL IT, BECAUSE IT MEANS YOU DON'T KNOW WHAT IT IS FOR
    IT ISN'T AN APPLICATION YOU CAN USE OR INSTALL ON TO YOUR PHONE LIKE ANGRY BIRDS OR FACEBOOK

  • MOST IMPORTANT THING BEFORE CUSTOMIZING IT
    Make sure You took an update-binary from a working ROM, renamed it to update-binary-installer and overwrote the one in my AROMA Installer zip

  • BACKGROUND
    Android has an advanced system for installing the OS and updates, unlike other mobile OS's that distribute the contents of the OS in static ROM image(s), Android distributes the OS and updates in a plain .zip file that contains all of the packages, files, and the updater for processing the installation.

    The updater splits in 2 types, the binary (update-binary) and script (updater-script), while the binary is an executable file, and the script was a configuration script that tells the binary executable what to do.

    But this advanced technology never expanded into its highest potential ability. The update-binary was simply the linux executable wrote in C that runs in root mode, and can do anything to your system; including accessing the Display FrameBuffer, accessing keys and the touch screen, set vibrate, run programs, parse files, load png(s) and .zip's, and read and write to the filesystem.

    The old update-binary only supported a few functions that can controlled only by the updater-script to instal the files. It didn't have a single function that allowed the installer to interact with the user. There is a program called "yesno" that shows a "Yes" or "No" interface, but it wasn't enough to create a more customizable updater.

    Now with AROMA Installer update-binary, all of this limitation is gone, and this advanced technology is expanded to the highest level of its pontential.

  • What is AROMA Installer?
    "AROMA" was taken from Bahasa Indonesia (Indonesian Language) and it means "Scent", but it is also an abbreviation of "AMARULLZ ANDROID ROM MANIFESTATION". It is an advanced update-binary for Android that contains many features like Wizard Installation, Touch User Interface (AROMA UI), Customizable Packages, System Inspecting, Themeable, and User Interactive. All release versions will have "flower" codenames, for example, the 1st version is codenamed "Anggrek", which mean "Orchid".

  • How AROMA Installer Works?
    How can it work in recovery mode, and how can it so smooth when it scrolls? It works because I hired Chuck Norris to force the recovery to run the installer, and the phone is too afraid to show any lag :cool:.

    No, seriously, when the user selects the .zip file to install it, the recovery will extract the update-binary and run it with a few arguments. All processes are handled by the update-binary, and the recovery will only show the information passed by update-binary via a custom pipe. The great thing is that the update-binary can do anything if we can code it in C/C++, but not all people can easily play with C/C++. Its also not very effective or fun to compile it every time we need to change the process. That's why the custom script is used in AROMA Installer, it is simply edify scripting that is used as the normal updater-script, but with expanded functions available.

    It wasn't a simple thing to archive something like this, because the update-binary is simply the "linux executable" that doesn't even support dynamic links of libraries, basic drawing functions like drawrect, drawline, and I don't think it OpenGL can be included in it's binary. It runs on it's own. Even User Interface was wrote from scratch to manipulate directly into the display framebuffer, user input was read directly from the raw kernel input device, png and .zip was read with a static link library, and the configuration was parsed in it's own program. It is the result of one full month of developing, but you can learn it instantly, without any need to know how to manage memory usage and pointers.

    The AROMA Installer will read, parse, and run the script commands to show it's UI, calculate partition sizes, create, read, and write temporary prop files, set & get variables, do simple integer comparisons and math sequences, do the if else or inline if conditions, configure the UI color scheme, configure rom information, and much more.

  • Benefits For Users
    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 :cool:, 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

XDA:DevDB Information
AROMA Installer, App for all devices (see above for details)

Contributors
amarullz
Source Code: https://github.com/amarullz/AROMA-Installer


Version Information
Status: Beta
Current Stable Version: 3.00
Stable Release Date: 2015-02-28
Current Beta Version: 3.00b1
Beta Release Date: 2015-02-28

Created 2013-08-17
Last Updated 2015-02-27
 

Attachments

  • aroma.zip.screenshoot-1.jpg
    aroma.zip.screenshoot-1.jpg
    24.7 KB · Views: 98,884
  • aroma.zip.screenshoot-2.jpg
    aroma.zip.screenshoot-2.jpg
    56.5 KB · Views: 97,156
  • aroma.zip.screenshoot-3.jpg
    aroma.zip.screenshoot-3.jpg
    31.7 KB · Views: 96,374
  • aroma.zip.screenshoot-4.jpg
    aroma.zip.screenshoot-4.jpg
    21.6 KB · Views: 94,130
Last edited:

Turge

Inactive Recognized Developer
Sep 20, 2008
4,792
20,768
Hamilton
venomroms.com
Hey Amarullz,

Where are you at with the dynamic/JSON stuff or have you already implemented it?

Also, are you aware of Aroma randomly hanging at 0% when launching aroma-binary-installer? This happens on the HTC One.

Thanks,
Turge
 
  • Like
Reactions: Dagwood33

amarullz

Inactive Recognized Developer
Jan 16, 2007
1,061
7,261
Bandung
amarullz.blog.unikom.ac.id
Hey Amarullz,

Where are you at with the dynamic/JSON stuff or have you already implemented it?

Also, are you aware of Aroma randomly hanging at 0% when launching aroma-binary-installer? This happens on the HTC One.

Thanks,
Turge

JSON Implementation will be available on new core (because current version doesn't included JSON library).
But for dynamic content, you can use "eval" function to run aroma script from text.
You can create dynamic script using shell, then use eval to run it.

Eval Example:
Code:
eval("alert(\"On Eval Function\",\"This Alert was executed from Eval Function...\", \"@info\");");

Eval Example with shell
alertcode.sh
Code:
#!/bin/sh
echo "alert(\"On Eval Function\",\"This Alert was executed from Eval Function...\", \"@info\");"
aroma-config
Code:
resexec("script/alertcode.sh");
eval(getvar("exec_buffer"));

Eval Example with shell file
alertcode.sh
Code:
#!/bin/sh
echo "alert(\"On Eval Function\",\"This Alert was executed from Eval Function...\", \"@info\");" >> /tmp/test.edify
aroma-config
Code:
eval(read("/tmp/test-edify"));

I didn't test the code, but I hope you understand what I mean.
 
  • Like
Reactions: Z1cK and JustArchi

amarullz

Inactive Recognized Developer
Jan 16, 2007
1,061
7,261
Bandung
amarullz.blog.unikom.ac.id
This is new AROMA Markup String Engine :D :cool: :cool:

attachment.php


This is the script for it:
Code:
<8>AROMA Markup String
<4>This is example of using <b>NEW AROMA Markup String <u>(AMS)</u> from <5>New AROMA CORE</b>. Now 
<5>you can <f1>Change The Font Face and <7>Font Size. <4>And even including <f2>Some Image <6>With 
simple AMS TAG: 
<[file:///sdcard/0/apps.png;72dp;72dp]> was resized, and <f1>This image:
<f1>Font <[file:///sdcard/0/install.png]> without resized.

<6>
<f0>This is font ID=0 - Roboto-Regular.ttf
<f1>This is font ID=1 - RobotoCondensed-Bold.ttf
<f2>This is font ID=2 - DroidSerif-Italic.ttf

*** ugh.. xda convert high quality png into jpeg :silly: Not cool...
 

Attachments

  • ams.jpg
    ams.jpg
    33.3 KB · Views: 5,753

titanic_fanatic

Senior Member
Sep 21, 2012
2,070
1,947
36
Calgary
This is new AROMA Markup String Engine :D :cool: :cool:

attachment.php


This is the script for it:
Code:
<8>AROMA Markup String
<4>This is example of using <b>NEW AROMA Markup String <u>(AMS)</u> from <5>New AROMA CORE</b>. Now 
<5>you can <f1>Change The Font Face and <7>Font Size. <4>And even including <f2>Some Image <6>With 
simple AMS TAG: 
<[file:///sdcard/0/apps.png;72dp;72dp]> was resized, and <f1>This image:
<f1>Font <[file:///sdcard/0/install.png]> without resized.

<6>
<f0>This is font ID=0 - Roboto-Regular.ttf
<f1>This is font ID=1 - RobotoCondensed-Bold.ttf
<f2>This is font ID=2 - DroidSerif-Italic.ttf

*** ugh.. xda convert high quality png into jpeg :silly: Not cool...

Quick question, will there be a requirement for a closing tag like so:


Sent from my SGH-I757M using XDA Premium 4 mobile app
 

amarullz

Inactive Recognized Developer
Jan 16, 2007
1,061
7,261
Bandung
amarullz.blog.unikom.ac.id
Quick question, will there be a requirement for a closing tag like so:

Sent from my SGH-I757M using XDA Premium 4 mobile app

AROMA Markup String doesn't strict like HTML. In fact it doesn't even save the previous state of formatting (It was linear formatting).

Code like this is valid, and will result very different in html:
Code:
Normal Text <b>Bold Text and <b>Next Bold Text</b> This will not bold.

and the color example (default color is black)
Code:
Black Color <#900>Red Color <#009>Blue Color</#> This is black - not red</#> This second closing was unusable

The closing tag in AMS isn't the pair of opening tag.

Same with font
Code:
Default font <f1>Font ID=1 <f2>Font ID=2 </f> Font ID=0/Default

For fontsize, you don't have any closing tag.
<0> default size
<1> .. <9> font size 1..9.

-------

NOTE: The sintax of image, fontsize and font tag is subject to change. Any suggested syntax is welcome... You can vote syntax below, or suggest your own syntax (easier to use and easier/efficient to parsed will be used).

And If You willing it, please share this vote with your friend...


My Font sintax suggestions:
Code:
1. <f0><f1><f2><f3> - </f> ---> Current
2. <font=0><font=1><font=2><font=3> - </font>
3. <f=1><f=0><f=0> - </f>

My Fontsize sintax suggestions:
Code:
1. <0><1><2>..<9> ---> Current
2. <fontsize=1><fontsize=1><fontsize=2>...<fontsize=9> - </fontsize>
3. <size=1><size=1><size=2>...<size=9> - </size>
4. <sz=1><sz=1><sz=2>...<sz=9> - </sz>
5. <$1><$1><$2>...<$9> - </$>

My Image sintax suggestions (width/height can be in dp or px - if dp/px not defined px will be used):
Code:
1. <[URL;width;height]> <[IMAGE_URL;width]> <[IMAGE_URL;0;height]> ---> Current
2. <img="URL" 40dp,50dp> <img="URL" 40px> <img="URL" 0,50>
3. <img=URL;40dp;50dp> <img=URL;40px> <img=URL;0;50px>
4. <img="URL" w=40dp h=50dp> <img="URL" w=40px> <img="URL" h=50px>

I know that tag with attribute was easier to read by human, but more compact sintax was easier for parser :laugh: .
So please vote for it...
 
Last edited:

titanic_fanatic

Senior Member
Sep 21, 2012
2,070
1,947
36
Calgary
My Font sintax suggestions:
Code:
1. <f0><f1><f2><f3> - </f> ---> Current
2. <font=0><font=1><font=2><font=3> - </font>
3. <f=1><f=0><f=0> - </f>

Vote: 1

My Fontsize sintax suggestions:
Code:
1. <0><1><2>..<9> ---> Current
2. <fontsize=1><fontsize=1><fontsize=2>...<fontsize=9> - </fontsize>
3. <size=1><size=1><size=2>...<size=9> - </size>
4. <sz=1><sz=1><sz=2>...<sz=9> - </sz>
5. <$1><$1><$2>...<$9> - </$>

Vote: 1

My Image sintax suggestions (width/height can be in dp or px - if dp/px not defined px will be used):
Code:
1. <[URL;width;height]> <[IMAGE_URL;width]> <[IMAGE_URL;0;height]> ---> Current
2. <img="URL" 40dp,50dp> <img="URL" 40px> <img="URL" 0,50>
3. <img=URL;40dp;50dp> <img=URL;40px> <img=URL;0;50px>
4. <img="URL" w=40dp h=50dp> <img="URL" w=40px> <img="URL" h=50px>

Vote: 3

Sent from my SGH-I757M using XDA Premium 4 mobile app
 

franzyroy

Senior Member
Aug 23, 2010
7,924
5,015
Normandy
forum.xda-developers.com
This is new AROMA Markup String Engine :D :cool: :cool:

attachment.php


This is the script for it:
Code:
<8>AROMA Markup String
<4>This is example of using <b>NEW AROMA Markup String <u>(AMS)</u> from <5>New AROMA CORE</b>. Now 
<5>you can <f1>Change The Font Face and <7>Font Size. <4>And even including <f2>Some Image <6>With 
simple AMS TAG: 
<[file:///sdcard/0/apps.png;72dp;72dp]> was resized, and <f1>This image:
<f1>Font <[file:///sdcard/0/install.png]> without resized.

<6>
<f0>This is font ID=0 - Roboto-Regular.ttf
<f1>This is font ID=1 - RobotoCondensed-Bold.ttf
<f2>This is font ID=2 - DroidSerif-Italic.ttf

*** ugh.. xda convert high quality png into jpeg :silly: Not cool...

marvellous!!! :good:;):good:
@titanic_fanatic, you can say me thanks ;) cause, I gave you a thanks by error.
 
  • Like
Reactions: titanic_fanatic

amarullz

Inactive Recognized Developer
Jan 16, 2007
1,061
7,261
Bandung
amarullz.blog.unikom.ac.id
Have an idea to embed LUA - http://en.wikipedia.org/wiki/Lua_(programming_language) for more advance AROMA customizing.

And No, Main config Is still edify.

An idea is like this:

aroma-config:
* Show list of menu, select & checkbox
* Show Text box, alert, etc.
* Do simple calculations, run shell script, etc.
* I want to do some programming and custom interface --> lua("luascript.lua");

The lua script will be called from aroma-config. this lua script will containing all useful features like looping, variables, array, functions, etc.
Did I can do it with shell script??, Yes, but you can't communicate & access AROMA features directly (only with stdout).

The lua script (will be usable if it) contains all features that aroma-config already have. Plus custom UI (but you need programming skills),
You can create window, add controls into it, then show it, and manage control message (like, what will it do when some button clicked, or some checkbox checked).

This lua script also usable for you who want to make simple application (not just installer), you can make your own GUI.

Tell me if you like an Idea??
 
  • Like
Reactions: 3DSammy and CNexus

Top Liked Posts

  • There are no posts matching your filters.
  • 214
    logo.png

    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!

    _________________________________________
    ------=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=------


    W.A.R.N.I.N.G.!!!
    THIS DEVDB DISCUSSION ONLY FOR DEVELOPMENT DISCUSSION.
    USE Q&A TO ASK ABOUT SCRIPT, HOW TO, AND INSTALLATION

    • FOR ROM CHEFS/DEVELOPERS ONLY
      ROM Chef/Developers? What is that? ... Here the video.
      DON'T ASK ABOUT HOW TO INSTALL IT, BECAUSE IT MEANS YOU DON'T KNOW WHAT IT IS FOR
      IT ISN'T AN APPLICATION YOU CAN USE OR INSTALL ON TO YOUR PHONE LIKE ANGRY BIRDS OR FACEBOOK

    • MOST IMPORTANT THING BEFORE CUSTOMIZING IT
      Make sure You took an update-binary from a working ROM, renamed it to update-binary-installer and overwrote the one in my AROMA Installer zip

    • BACKGROUND
      Android has an advanced system for installing the OS and updates, unlike other mobile OS's that distribute the contents of the OS in static ROM image(s), Android distributes the OS and updates in a plain .zip file that contains all of the packages, files, and the updater for processing the installation.

      The updater splits in 2 types, the binary (update-binary) and script (updater-script), while the binary is an executable file, and the script was a configuration script that tells the binary executable what to do.

      But this advanced technology never expanded into its highest potential ability. The update-binary was simply the linux executable wrote in C that runs in root mode, and can do anything to your system; including accessing the Display FrameBuffer, accessing keys and the touch screen, set vibrate, run programs, parse files, load png(s) and .zip's, and read and write to the filesystem.

      The old update-binary only supported a few functions that can controlled only by the updater-script to instal the files. It didn't have a single function that allowed the installer to interact with the user. There is a program called "yesno" that shows a "Yes" or "No" interface, but it wasn't enough to create a more customizable updater.

      Now with AROMA Installer update-binary, all of this limitation is gone, and this advanced technology is expanded to the highest level of its pontential.

    • What is AROMA Installer?
      "AROMA" was taken from Bahasa Indonesia (Indonesian Language) and it means "Scent", but it is also an abbreviation of "AMARULLZ ANDROID ROM MANIFESTATION". It is an advanced update-binary for Android that contains many features like Wizard Installation, Touch User Interface (AROMA UI), Customizable Packages, System Inspecting, Themeable, and User Interactive. All release versions will have "flower" codenames, for example, the 1st version is codenamed "Anggrek", which mean "Orchid".

    • How AROMA Installer Works?
      How can it work in recovery mode, and how can it so smooth when it scrolls? It works because I hired Chuck Norris to force the recovery to run the installer, and the phone is too afraid to show any lag :cool:.

      No, seriously, when the user selects the .zip file to install it, the recovery will extract the update-binary and run it with a few arguments. All processes are handled by the update-binary, and the recovery will only show the information passed by update-binary via a custom pipe. The great thing is that the update-binary can do anything if we can code it in C/C++, but not all people can easily play with C/C++. Its also not very effective or fun to compile it every time we need to change the process. That's why the custom script is used in AROMA Installer, it is simply edify scripting that is used as the normal updater-script, but with expanded functions available.

      It wasn't a simple thing to archive something like this, because the update-binary is simply the "linux executable" that doesn't even support dynamic links of libraries, basic drawing functions like drawrect, drawline, and I don't think it OpenGL can be included in it's binary. It runs on it's own. Even User Interface was wrote from scratch to manipulate directly into the display framebuffer, user input was read directly from the raw kernel input device, png and .zip was read with a static link library, and the configuration was parsed in it's own program. It is the result of one full month of developing, but you can learn it instantly, without any need to know how to manage memory usage and pointers.

      The AROMA Installer will read, parse, and run the script commands to show it's UI, calculate partition sizes, create, read, and write temporary prop files, set & get variables, do simple integer comparisons and math sequences, do the if else or inline if conditions, configure the UI color scheme, configure rom information, and much more.

    • Benefits For Users
      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 :cool:, 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

    XDA:DevDB Information
    AROMA Installer, App for all devices (see above for details)

    Contributors
    amarullz
    Source Code: https://github.com/amarullz/AROMA-Installer


    Version Information
    Status: Beta
    Current Stable Version: 3.00
    Stable Release Date: 2015-02-28
    Current Beta Version: 3.00b1
    Beta Release Date: 2015-02-28

    Created 2013-08-17
    Last Updated 2015-02-27
    20
    Reserved

    Reserved for Wiki and Manual Table of Contents
    19
    Reserved

    Reserved for Release and Development Information
    12
    Sorry everybody for waiting the new release :crying: !!
    I had so many works in past years, and cannot managed to touch any aroma's code, but luckly I have a couple of project that use many aroma code, and already modify it into the library. I just publish (still usable source) it in github with name "libaroma" and will be next big step core for AROMA Filemanager and AROMA Installer -> https://github.com/amarullz/libaroma - but I need to modify and restructure all filemanager/installer code to use the new library, but It will support even many devices and fixes many bugs and performance.