[Dev][Guide][All-About-Aroma][For-Tab2] - Galaxy Tab 2 7" Android Development

guys i started a new thread for devs that still don't use the aroma installer binary
Click to expand...
Click to collapse
okay 1 step what is aroma
aroma installer: Is an excutable binary that is based on the edify scripting that contains 2 excutables in meta-inf/com/google/android 1.is the ordinary update-binary (know as update binary installer) and the 2.is the aroma binary that split into two parts a.the aroma config and the b.the binary the config is which instructs the binary to make the ui like alert box and the menu box..
Click to expand...
Click to collapse
LETS DIG DEEPER NOW
Setting Rom/Mod Name in Aroma-config
Use these codes to show the name of your rom /mod
copy pasta this code just under the license
Code:
ini_set("rom_name", "example rom");
ini_set("rom_version", "you rom version");
ini_set("rom_author", "mythi");
ini_set("rom_device", "GT-P31XX");
ini_set("rom_date", "date");
Then we need to Show this info so follow and some more typing !!
add this just beneath the lines added previously
Code:
###################################################################################################################
#
# STEP 1 - SHOW ROM INFORMATION
#
viewbox(
#-- Title
"Hello!", <<------ This can be changed
#-- Text
"You are about to install <b>"+ <<--------- this can be changed
#-- Get Config Value
ini_get("rom_name")+
"</b> for <b>"+ini_get("rom_device")+"</b>.\n\n"+
" VERSION\t: <b><#selectbg_g>"+ini_get("rom_version")+"</#></b>\n"+
" UPDATED\t: <b><#selectbg_g>"+ini_get("rom_date")+"</#></b>\n\n\n"+
"Press <b>Next</b> to continue the installation.",
^^^
| <----- this can be changed !!
|
#-- Icon
"@welcome"
); <<----------- Remmeber this one
We are not done yet !!
ADD CREDITS SECTION !!
TYPE THESE IN AROMA CONFIG
Code:
###################################################################################################################
#
# STEP 3 - CREDITS
#
textbox(
#-- Title
"Thanks To", << THIS CAN BE CHANGED--------------
#-- Subtitle
"", << THIS CAN BE CHANGED--------------
#-- Icon
"@update", << THIS CAN BE CHANGED--------------
#-- Arg 4
resread("thanks.txt") << THIS CAN BE CHANGED--------------
); << REMMEBER THIS--------------
NOW GOTO META-INF\COM\GOOGLE\ANDROID\AROMA\HERE AND MAKE A NEW NOTE PAD FILE CALLED thanks AND SAVE AS TXT THEN TYPE WHAT YOU WANT OR USE A TEMPLETE BY ME IN ATTACHMENT NOW YOU ADDED CREDITS PAGE HAVE FUN
ADD LICENCE PAGE IN AROMA
TYPE THESE
Code:
###################################################################################################################
#
# STEP 2 - TERMS OF USE
#
agreebox(
#-- Title
"Important notes!",
#-- Subtitle / Description
"",
#-- Icon
"@quarantine",
#-- Text Content
resread("agreement.txt"), <<------------------ THIS CAN BE CHANGED
#-- Checkbox Text
"I agree with these and I am not high,drunk,mad !!.", <<------------- THIS TEXT SHOWS BEHIND THE CHECK BOX !!
#-- Unchecked Alert Message
"You need to agree with the Terms of Use..." <<---------------- THIS SHOWS WHEN BOX IS NOT CHECKED
); <<--------------- REMMBER THIS
NOW GO TO META-INF\COM\GOOGLE\ANDROID\AROMA\HERE CALLED agreement AND SAVE AS TXT ANDWHAT YOU WANT TO BE DISPLAYED OR USE TEPELATE BE ME !! IN ATTACHMENT :silly:
INSTALLING PROCESS
TYPE THESE
Code:
###################################################################################################################
#
# STEP 4 - INSTALLING
#
ini_set("text_next", "Install now");
viewbox(
"Almost Done !!",
"You are now ready to begin installation.\n\n"+
"Press <b>GOGOGO</b> to start.\n\n"+
"If you want to review or change any of your installation settings, press <b>Back</b> Button.",
"@install"
);
ini_set("text_next", "GOGOGO"); <<----------- THIS CAN BE CUSTOMIZED
install(
"Installing",
"Flashing <b>"+ini_get("rom_name")+"</b>...\n"+
"Please Wait...",
"icons/install",
"Done! Press <b>Next</b> button"
);
viewbox(
"Installation was successful!",
"You are now running <b>"+ini_get("rom_name")+"</b>.\n\n"+
"<b>If installation sucsess please reboot your tab and don't touch any thing</b>\n\n"+
"<b>Leave the tab for 5minutes</b>\n\n"+
"<b>After that setup basic installation</b>\n\n"+
"<b>Don't setup google account !</b>\n\n"+
"<b>If you choose to flash anything on top of the rom you may loose the mods included in it !</b>\n\n"+
"<#selectbg_g><b>Please hit thanks to support the author of this ROM is greatly appreciated!</b></#>\n\n",
"@Welcome To FastDream HD"
ALL OF THE ABOVE CAN BE CUSTOMIZED !!
); <<------------- REMMBER THIS
COMING UP
1.ADD COMPLICATED MENU BOXES
2.ADD SIMPLE MENU BOXES
3.MAKE CUSTOM THEMES FOR AROMA
now going to sleep more later

reserved

Related

[TUT] Aroma Installer 2.5 S5570

You all know Aroma Installer, in the past, with the early versions it didnt work properly with LDPI devices, now i must confirm that it works preatty well; and there was no noob frendly tutorial out there ...
So i decided to make a very short, simple as possible tutorial on how to set it up for your build(no advanced backup setup etc), you must have basic knowledge of the system tree, editing scripts. and kitchen work. If you got any questions or bugs please report them here.
ALL THE CREDIT IS FOR AMARULLZ FOR HIS WORK ON THIS PROJECT,AND DSIXDA FOR THE KITCHEN
ORIGINAL TOPIC
KITCHEN
1. THE START​
First of all you must download the installer HERE and THE KITCHEN if you dont have it.
2. AROMA-CONFIG​
I wont explain how to set up the kitchen, you just have to go on the development topic and check that out.
Now, lets focus on the installer, you got the zip file, on the time of this topic it is v2.51, extract it where you want.
Create a folder (name it as you desire) lets say: DANY here you'll put all the apps/tweeks, in separate subfolders( will use this later)
Inside you will see a META-INF folder, i want you to open it, then navigate to the android subfolder.
Here you will see alot of stuff, that you may or may not be familiar with. For those who dont really know whats in there i suggest to leave this topic...now, for the people that are 5% familiar with the tree/editing (as i); all our focus is on 2 config files updater-script, aroma-config and one folder aroma
The starting point of the installer is the aroma-config from there the update-binary-installer, update-binary pull the instructions and send it to the updater-script so it will know what to install or what not... ok.
Next i want you to open the aroma-config, here you will see aalooot of info that maybe you have no ideea what it is for or what is does, no proplem i will try to explain as explicit as i can be.
Here in the config, as i said above are the main instructions that are sent to the updater-script, but also the main settings so that the installer can work on your device, here you set the : touch screen calibration settings, hardware keys, res of the installer...now note that all these resources so that the installer could display data are pulled from the aroma folder,witch will get to that later on.
Now what you have to do is: 1. on line 54 of the config remove the "#"
Code:
ini_set("force_colorspace","rgba");
what this does, its "For device which have a problem with color ( not displaying the correct color ) " as it says above on the config, so we must prevent that from happening.
2. lines 66-71 delete them.Here we must set our devices PPi, you just copy this
Code:
if sysprop("ro.sf.lcd_density")=="120" then
ini_set("dp","1"); #-- LDPI ( 240x320 / QVGA )
endif;
if sysprop("ro.sf.lcd_density")=="160" then
ini_set("dp","2"); #-- MDPI ( 340x480 / HVGA )
endif;
if sysprop("ro.sf.lcd_density")=="240" then
ini_set("dp","3"); #-- HDPI ( 480x800 / WVGA )
endif;
3. line 87, the touch screen calibration,delete the old one and copy this line of code
Code:
calibrate_matrix(
"11583.00", "432.00", "5356.50", "105.00",
"11830.00", "-28077.50", "12079.50", "0"
);
4. line 119 to 123, hardware buttons
Code:
ini_set("customkeycode_up", "115");
ini_set("customkeycode_down", "114");
ini_set("customkeycode_select", "102");
ini_set("customkeycode_menu", "139");
ini_set("customkeycode_back", "158");
5. line 129-133, i think that you can figure this out
6. 139-144, here you can define a .png splash screen 235X99
7. 172, 211-268 here you can define the font size, and the languages that you want in the build, recommanded font size is 19-20 or you can let it be as it is, but it will be small, you have to test it to see
Code:
if prop("lang.prop","selected.0")=="6" then
loadlang("langs/fr.lang");
fontresload( "0", "ttf/Roboto-Regular.ttf", "19" );
fontresload( "1", "ttf/Roboto-Regular.ttf", "20" );
endif;
8. 295-370, are the themes for Aroma Installer, we wont touch this
9. Now, from where you'll see STEP5( i dunno the exact line :cyclops delete all the way down to STEP6, here the installer starts a demo, and we dont want all those options/tests and Copy this ---->
Code:
# STEP 5 - SHOW MENUBOX - AROMA INSTALLER MENU
#
menubox(
#-- Title
"MENU",
#-- Sub Title
"Select a menu to start:",
#-- Icon
"@apps",
#-- Will be saved in /tmp/aroma/demo.prop
"menu.prop",
#-------------------------+-----------------[ Menubox Items ]-------------------------+---------------#
# TITLE | SUBTITLE | Item Icons #
#-------------------------+-----------------------------------------------------------+---------------#
"Install "+ini_get("rom_name"), "Install Rom using AROMA Installer", "@install", #-- selected = 1
"System Info", "Info about Device/Partions", "@info", #-- selected = 2
"Return to...", "Retun to a previous Menu...", "@customize", #-- selected = 3
"Other Option", "Show Other Optionsi", "@apps" #-- selected = 4
);
###################################################################################################################
# #
# AROMA INSTALLER #
# #
###################################################################################################################
##--------------------------------------
#
# System Info
#
if prop("menu.prop","selected")=="2" then
#-- Show Please Wait
pleasewait("Getting System information...");
#-- Fetch System Information
setvar(
#-- Variable Name
"sysinfo",
#-- Variable Value
"<@center><b>Device Information!</b></@>\n\n"+
"Model\t\t\t: <b><#selectbg_g>"+sysprop("ro.product.model")+"</#></b>\n"+
"Name\t\t\t: <b><#selectbg_g>"+sysprop("ro.product.name")+"</#></b>\n"+
"Device Name\t\t: <b><#selectbg_g>"+sysprop("ro.product.device")+"</#></b>\n"+
"Board Name\t\t: <b><#selectbg_g>"+sysprop("ro.product.board")+"</#></b>\n"+
"Manufacturer\t\t: <b><#selectbg_g>"+sysprop("ro.product.manufacturer")+"</#></b>\n\n"+
"CPU\t\t\t: <b><#selectbg_g>"+sysprop("ro.product.cpu.abi")+"</#></b>\n"+
"LCD Desinty\t\t: <b><#selectbg_g>"+sysprop("ro.sf.lcd_density")+"</#></b>\n\n"+
"System Size\t\t: <b><#selectbg_g>"+getdisksize("/system","m")+" MB</#></b>\n"+
"\tFree\t\t: <b><#selectbg_g>"+getdiskfree("/system","m")+" MB</#></b>\n\n"+
"Data Size\t\t: <b><#selectbg_g>"+getdisksize("/data","m")+" MB</#></b>\n"+
"\tFree\t\t: <b><#selectbg_g>"+getdiskfree("/data","m")+" MB</#></b>\n\n"+
"(/mnt/sdcard)\t\t: <b><#selectbg_g>"+getdisksize("/mnt/sdcard","m")+" MB</#></b>\n"+
"\tFree\t\t: <b><#selectbg_g>"+getdiskfree("/mnt/sdcard","m")+" MB</#></b>\n\n"+
"SDCard Size\t\t: <b><#selectbg_g>"+getdisksize("/sdcard","m")+" MB</#></b>\n"+
"\tFree\t\t: <b><#selectbg_g>"+getdiskfree("/sdcard","m")+" MB</#></b>\n\n"+
"SD-EXT Size\t\t: <b><#selectbg_g>"+getdisksize("/sd-ext","m")+" MB</#></b>\n"+
"\tFree\t\t: <b><#selectbg_g>"+getdiskfree("/sd-ext","m")+" MB</#></b>\n\n"+
""
);
#-- Show Textbox
textbox(
#-- Title
"System info",
#-- Subtitle
"Loading...",
#-- Icon
"@info",
#-- Text
getvar("sysinfo")
);
#-- Show Alert
#alert(
#-- Alert Title
#"Info",
#-- Alert Text
#"You will get back to main menu now",
#-- Alert Icon
#"@alert"
#);
#-- Back to Demo Menu ( 2 Wizard UI to Back )
back("2");
endif;
##--------------------------------------
#
# Back Sequence Demo
#
if prop("menu.prop","selected")=="3" then
#-- Show Back Menu
menubox(
#-- Title
"Main Menu",
#-- Sub Title
"Please select the option that suits your needs.",
#-- Icon
"@customize",
#-- Will be saved in /tmp/aroma/back_demo.prop
"back_demo.prop",
#-------------------------+-----------------[ Menubox Items ]-------------------------+---------------#
# TITLE | SUBTITLE | Item Icons #
#-------------------------+-----------------------------------------------------------+---------------#
"Main Menu", "Return to main menu", "@apps", #-- selected = 1
"Changelog", "Return to changelog", "@update", #-- selected = 2
"Terms and Conditions", "Agreement", "@license", #-- selected = 3
"Start Menu", "Return to start menu", "@welcome", #-- selected = 4
"Select theme", "Return to theme menu", "@personalize" #-- selected = 5
);
#-- Back Size will be saved in "back_value" variable
setvar(
#-- Variable Name
"back_value",
#-- Variable Value ( use calculate to set selected+1 )
cal(
#-- First Value
prop("back_menu.prop","selected"),
#-- Operator (+ = add)
"+",
#-- Second Value
"1"
)
);
#-- Do Back Action
back(
getvar("back_value")
);
endif;
##--------------------------------------
#
# Other Demo
#
if prop("menu.prop","selected")=="4" then
#-- Show Other Demo
menubox(
#-- Title
"Other Options",
#-- Sub Title
"Select a option below.",
#-- Icon
"@apps",
#-- Will be saved in /tmp/aroma/other_demo.prop
"other_demo.prop",
#-------------------------+-----------------[ Menubox Items ]-------------------------+---------------#
# TITLE | SUBTITLE | Item Icons #
#-------------------------+-----------------------------------------------------------+---------------#
"Reboot", "Reboot the device", "@alert", #-- selected = 1
"Exit", "Exit rom installation, "@install" #-- selected = 2
);
#-- Reboot
if prop("other_demo.prop","selected")=="1" then
if
confirm(
#-- Title
"Rebooting",
#-- Text
"Do you really want to reboot the Device?",
#-- Icon (Optional)
"@alert"
)=="yes"
then
#
# reboot("onfinish"); - Reboot if anything finished
# reboot("now"); - Reboot Directly
# reboot("disable"); - If you set reboot("now") before, use this command to revert it.
#
reboot("now");
endif;
endif;
#-- Exit
if prop("other_demo.prop","selected")=="2" then
if
confirm(
#-- Title
"Exit",
#-- Text
"Are you sure want to exit to CWM??",
#-- Icon (Optional)
"@alert"
)=="yes"
then
#-- Exit - NOTE: Add dummy argument
exit("");
endif;
endif;
#-- Back To Other Demo Menu
back(
getvar("1")
);
endif;
###################################################################################################################
# #
# INSTALLATION #
# #
###################################################################################################################
###################################################################################################################
#
# STEP 6 - SHOW MENUBOX - INSTALLATION TYPE
#
menubox(
#-- Title
"Installation Type",
#-- Sub Title
"Choose the installation type that best suits your needs.",
#-- Icon
"@install",
#-- Will be saved in /tmp/aroma/type.prop
"type.prop",
#-------------------------+-----------------[ Menubox Items ]-------------------------+---------------#
# TITLE | SUBTITLE | Item Icons #
#-------------------------+-----------------------------------------------------------+---------------#
"Default", "Will install default features and configurations", "@install", #-- selected = 1
"Typical", "All recommended features will be installed", "@default", #-- selected = 2
"Minimalist", "Only required features will be installed", "@apps", #-- selected = 3
"Custom", "Choose which program or mod features you want to installed. "+
"Recommended for advanced users", "@customize" #-- selected = 4
);
10. Here starts the fun part, as seen above in the STEP6 code, there are 4 options "DEFAULT, TYPICAL, MINIMALISTIC, CUSTOM", you can keep only 2 or 1 option, that depends to you and what you need. You will also notice this line #-- Will be saved in /tmp/aroma/type.prop
"type.prop", what this mean is that for each option you press, the info in stored in a so called TYPE.PROP file that later on the updater-script will pull the info from, and this is not present just here, this is how aroma stores the information in .prop files
11. STEP 7- STEP 8 here we gonna define what kernel we want to install/mod/bootanimation, default or custom install.
Lets Focus on STEP7 to explain a little , line 1431-1443, what we see here,( i will translate :laugh: ) IF we selected the Default installation, then it will install by default 2.6.0 kernel, Nexus boot animation, generic app2sd etc.
The Code Part!!!
You can define here, witch apps,mods will be installed by default by pressing Default installation button. In mods.prop the binary wrote the option 1 so the updater script now what to do THEN the binary olso wrote the default app config on another .prop file, mods.prop.Applications are defined by a syntax so its easyer to assign selected1.=1, selected.2=2 you get the ideea.
Below now, on line 1464 (i guess), where the kernel, boot animation is, you can define the names of the Kernel, Mods
ex:
Code:
"Select Kernel", "", 2, #-- Group 1. key = "selected.1"
"SUPER EXTREME KERNEL", "YOU WILL SH*T BUTTER IF YOU INSTALL IT", [color=red]1, #-- selected.1 = 1[/color]
Note that the 1, it shows if i want to installet or not and selected.1 = 1 is for reference so you now with syntax is for witch application, and also selected.X.X the red X shows the group of the apps,the blue the order.
12. Now that you understood a lil, i will show you a CUSTOM config, so you can understand better
Code:
#-- IF Installation type = "Custom" Show Customize Selection
checkbox(
#-- Title
"Customize Your Installation",
#-- Sub Title
"Select the program or mod features you want to installed.\n"+ witch
"Select an item in the list below to change how a feature is installed.",
#-- Icon: <AROMA Resource Dir>/icons/personalize.png or <ThemeDir>/icon.personalize.png
"@personalize",
#-- Will be saved in /tmp/aroma/customize.prop
"customize.prop",
#------------------------------------------------[ Checkbox Without Group ]----------------------------------------------#
# TITLE | SUBTITLE | Initial Value #
#------------------+-------------------------------------------------------------------------------------+---------------#
"Applications", "",
2, #-- Group 1. key = "item.1.x"
"Deezer", "Listen to music online", 1,
"ES File Explorer ", "File manager", 1,
"Facebook", "Facebook app", 1,
"Google +", "Google Plus App", 1,
"Instagram", "Capture photos and share them", 1,
"No Frills CPU", "Overclock cpu change i/o", 1,
"Shazam", "Music/video recognison", 1,
"Swype", "Keyboard", 1,
"Twitter", "Twitter app", 1,
"Zedge", "Wallpapers/ringtones/live wp", 1,
"FM Radio", "FM Radio", 1,
"Terminal", "Terminal Emulator", 1,
"DPS Manager", "Phone equalizer", 1,
"Jelly Walls", "Jb wallpapers", 1,
"ICS Standard", "theme", 1,
"ICS Standard2", "theme", 1,
"ICS Blue", "theme", 1,
"Holo Locker", "Screen Locker", 1
#--------[ Initial Value = 0: Unselected, 1: Selected, 2: Group Item, 3: Not Visible ]---------#
);
endif;
Here in the code, you wil see the the info it will be writen to customize.prop, Grop Key: Group 1. key = "item.1.x, the Select values , all the apps are selected, but on the top, you saw something new, and that is checkbox, now, with this syntax on the screen will be displayed a menu where you can select the apps that you need and the info stored on customize.prop, not like in the previous type.prop that a set of apps was selected and you couldent do anything. Also note that checkbox is similar to menu box, but the menu box displays the option that you want to start with, and then displays a checkbox. But i will stop here so i wont confuse you.
3.UPDATER-SCRIPT​That was the aroma script basic understanding, editing. Now the updater script, now we need to pull the info from the aroma config, i wont explain edify-script you must search that on google, im just showing you the the updater-script pulls the data from the aroma-config.
I dont know if i mentioned this before...but all the .prop files will be stored in /tmp/aroma this is the path of the temporary folder.
Now lets open the default updater-script you will see on line73 ui_print("@INFORMATIONS"); in brackets you can insert what text you want, next on lines81 to 109 is all the mounting that must occur so that the installation process can happen, here are the syntaxes that you will need at first.
Code:
package_extract_file("system/bin/backuptool.sh", "/tmp/backuptool.sh");
set_perm(0, 0, 0777, "/tmp/backuptool.sh");
run_program("/tmp/backuptool.sh", "backup");
ui_print("FORMATING SYSTEM");
format("ext4", "EMMC", "/dev/block/stl12");
ui_print("MOUNTING SYSTEM")
mount("ext4", "EMMC", "/dev/block/stl12", "/system");
ui_print(" Mounting /data");
ui_print("|||||||||||");
unmount("/data");
mount("ext4", "EMMC", "/dev/block/stl13", "/data");
set_progress(0.04);
ui_print("Please Wait...");
ui_print("|||||||||||");
set_progress(0.05);
ui_print("|||||||||||");
ui_print("@ Wiping Data");
if
file_getprop("/tmp/aroma/wipe.prop","selected") == "1"
then
set_progress(0.06);
ui_print(" Formatting /data");
format("ext4", "EMMC", "/dev/block/stl13");
ui_print(" Formatting /cache");
format("ext4", "EMMC", "/dev/block/stl14");
ui_print(" Mounting /data");
ui_print(" Formatting /sd-ext");
format("ext4", "EMMC", "/dev/block/mmcblk0p2");
ui_print("|||||||||||");
set_progress(0.08);
ui_print(" Wiping /sdcard/.android_secure");
delete_recursive("/sdcard/.android_secure");
endif;
if
file_getprop("/tmp/aroma/wipe.prop","selected") == "0"
then
ui_print("SKIPING RESET");
endif;
Is like in linux, define the path: mount, unmount or format ,search on google for a better understanding.
Lets say in the aroma-config we defined that /system will be wiped, how does updater-script figure that out? Easy, will invoke the file where the date is stored plus a if sentance, the file is in tmp/aroma/wipe.prop and here is the code
Code:
if
file_getprop("/tmp/aroma/wipe.prop","selected") == "1"
then
set_progress(0.06);
ui_print(" Formatting /data");
unmount("/data");
format("ext4", "EMMC", "/dev/block/stl13");
ui_print(" Mounting /data");
mount("ext4", "EMMC", "/dev/block/stl13", "/data");
set_progress(0.07);
ui_print(" Formatting /sd-ext");
unmount("/sd-ext");
format("ext4", "EMMC", "/dev/block/mmcblk0p2");
ui_print("|||||||||||");
set_progress(0.08);
ui_print(" Wiping /sdcard/.android_secure");
delete_recursive("/sdcard/.android_secure");
endif;
TRANSLATED:if we selected to wipe the previous rom it will wipe the data partition, the EXT4 partition and .android_secure
But if we selected not to wipe?!
Code:
if
file_getprop("/tmp/aroma/wipe.prop","selected") == "0"
then
ui_print(" SKIP Wipe Data!");
set_progress(0.08);
endif;
and it will do nothing, wil move to the next step.
For the apps, the code is in customize.prop and the syntax looks like this
Code:
if
file_getprop("/tmp/aroma/customize.prop","item.1.1") == "0"
then
delete("/system/app/FM.apk");
ui_print("Deleting FM");
endif;
# Bootanim
if
file_getprop("/tmp/aroma/customize.prop","item.1.2") == "1"
then
ui_print(" Bootanimation");
package_extract_file("DANY/animationname.zip", "/system/media/animationname.zip");
endif;
TRANSLATED: IF item FM radio was selected to be installed then so it will be, if 0, (not) then it will be deleted. If the boot animation is selected to be installed, ( remember that i wanted you to create a folder in step 2?! we called it DANY there is the custom bootanimation stored as you can see, and keep attention on this folder cuz we gonna use it in our update.zip) it will be moved to /system/media.
4.AROMA FOLDER​Here we are not gonna edit much, in the langs folder you can edit some text that that will apare in the installer itself, and in the main folder of aroma replace the sample.png with one that you desire, and in the splash folder you can resize the animation at startup 235X99 and the icons.
5.KITCHEN​Now all you have to do is save all the work, grab your META-INF and DANY folder place them on the working folder of the kitchen, but take note that you must delete the old META-INF in the kitchen also 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
Build the rom. but the zip on SD card, reboot into CWM then wipe cache ,reboot recovery, next install zip from SD card ,choose the zip and hope for the best
That covers it, enjoy now testing aroma in your device, and im sorry if i misspeled something, say thanks if i helped you and please, please correct me if i wrote something wrong!!!, i was so tired.
so now, i need your help guys so that we can get it working
thank for the guide!!!!!
Messi10 said:
i have resized aroma 2 months ago but the hardisk is damaged:crying:
Click to expand...
Click to collapse
thats a shame, but i quess ill have to start to edit the updater script step by step
i see that no one is interested...ok
I would if I could... sorry
Verstuurd van mijn GT-S5570 met Tapatalk
guy what is aroma installer??????
lackhoo said:
guy what is aroma installer??????
Click to expand...
Click to collapse
google it.
i will see what i can do
ive tried using the aroma installer on my mini
the basic tour thingy works on our device and even the touch but not so accurate
and editing the scripts, pm me, i'd like to help
P.S. i can handle scripts decently; not a noob
id made a clean updater script, but the problem is the config file...i wont start the installing process, id missed some atributes for sure
to use a good color, try to change it from aroma-config:
Code:
ini_set("force_colorspace","abgr");
to
Code:
ini_set("force_colorspace","rgba");
change font size:
Code:
fontresload( "0", "ttf/DroidSans.ttf", "15" );
fontresload( "1", "ttf/DroidSans.ttf", "24" );
to
Code:
fontresload( "0", "ttf/DroidSans.ttf", "20" );
fontresload( "1", "ttf/DroidSans.ttf", "22" );
here is my calibration data:
Code:
calibrate_matrix(
"11448.00","-27.00","6459.50","175.00",
"11375.00","-46075.00","11483.75","10"
);
interface problem isn't from AROMA Installer, its from recovery.
to fit interface, use recovery 4.0.0.5. (tass-recovery-cwm.tar)
sorry for my bad english
try using config files of this
http://forum.xda-developers.com/showthread.php?t=1381355
samsung rom with aroma installer
i guess this shall be a help!
ahmadsafar said:
to use a good color, try to change it from aroma-config:
Code:
ini_set("force_colorspace","abgr");
to
Code:
ini_set("force_colorspace","rgba");
change font size:
Code:
fontresload( "0", "ttf/DroidSans.ttf", "15" );
fontresload( "1", "ttf/DroidSans.ttf", "24" );
to
Code:
fontresload( "0", "ttf/DroidSans.ttf", "20" );
fontresload( "1", "ttf/DroidSans.ttf", "22" );
here is my calibration data:
Code:
calibrate_matrix(
"11448.00","-27.00","6459.50","175.00",
"11375.00","-46075.00","11483.75","10"
);
interface problem isn't from AROMA Installer, its from recovery.
to fit interface, use recovery 4.0.0.3. (tass-recovery-cwm.tar)
sorry for my bad english
Click to expand...
Click to collapse
still, this is not the most importent problem now, the installer wont load the system files to flash the rom, and the problem here is the config
http://www.youtube.com/watch?v=PsIOpVuslr4&feature=player_embedded Look good and interesting. I'll be waiting for it .
dany547 said:
still, this is not the most importent problem now, the installer wont load the system files to flash the rom, and the problem here is the config
Click to expand...
Click to collapse
try my AROMA Installer mod
https://www.box.com/shared/1de09310762fbf24b32b
it's tested & works for me!
ahmadsafar said:
try my AROMA Installer mod
https://www.box.com/shared/1de09310762fbf24b32b
it's tested & works for me!
Click to expand...
Click to collapse
on what recovery you used ?
dany547 said:
on what recovery you used ?
Click to expand...
Click to collapse
CWM 4.0.0.5.
i make that from original aroma installer 2.50 with your config.
It is really working?
Sent from my GT-S5570 using xda premium
Trublood_ said:
It is really working?
Sent from my GT-S5570 using xda premium
Click to expand...
Click to collapse
Yep..i tested and it works
Sent from my GT-S5570 using xda premium

How to port Aroma installer to your Rom

(1) Download this META-INF
(2) Extract & you will find "META-INF" folder.
(3) Go to META-INF/com/google/android/, replace the updater-script in this folder with your ROM/MOD updater-script.
(4) In the same folder, "aroma-config" file is also present, its contents are as follows:
HTML:
[CODE]Code:
##
#
# AROMA Installer - based on the Mod-installer by KamikaZeeFu
# (c) 2011 by Ahmad Amarullah
# amarullz - xda-developers
# [url]http://www.amarullz.com/[/url]
# NEO ROM AROMA SCRIPT BY LEVENTCCC
[CODE]theme("ics");[/CODE]
calibrate("0.9263","21","0.9944","1","yes");
viewbox(
"Welcome",
"\n\n\n\n\n"+
" You're about to flash\n"+
" NeO RoM v3.0\n\n"+
"\n\n\n"+
"Press Next to continue the installation...",
"icons/info"
);
textbox(
#-- Title
"NEO ROM v3",
#-- Subtitle
"FEATURES",
#-- Icon
"@update",
#-- Arg 4
resread("changelogs.txt")
);
appendvar("installmsg","\n\nPlease Select Installation Type Below:");
install(
"Installing",
"Now flashing the Neo ROM...\nPlease Wait...",
"icons/install"
);
# Set Next Text fo Finish
ini_set("text_next", "Finish");
viewbox(
"Installation Completed",
"Congratulations...\n\n"+
"Your installation is now complete\n\n"+
"Press Finish, reboot and enjoy.\n\nThanks",
"icons/info"[/CODE]
);
(5) Editing aroma-config file:
Code:
theme("ics");
4 themes are available- ics, sense, miui, miui4
Code:
resread("changelogs.txt")
"changelogs.txt" is also present in the folder
Code:
META-INF/com/google/android/
Edit this file to include features/changelog of your ROM/MOD.:good::laugh:
(6) Final step is to replace your ROM's META-INF folder with this META-INF
222
Thanks will give a try to this.
--------------------Signature--------------------
Don't Ever Post A Thanks Post,
If I Helpes You, Your Hand Will Automatically Hit THANKS
Do Visit My Website For More Information.
www.hmpshah.com
Will try this asap... Sounds niceeee... :victory:

[GUIDE][Difficulty: Intermediate] Save top 100 quotes from your favourite subreddit

Greetings.
After successfully implementing this, I've tried
to take this task a further and tried to save the quotes in one (text) file at user desired location along with a prompt of how many posts user wants to pull from reddit.
Taker Detail : Get desired (totally customizable from variables) titles/quotes from popular subreddits (like r/quotes) and save them in a text file for future use.
GUIDE :
1. Task -> New Task
2. Variable -> Set -> Name "%subreddit" Value "quotes" {or your desired subreddit}
3. Variable -> Set -> Name "%NoOfPosts" Value "25" {25 by default, you can change it as well}
Go back to main Task view.
4. Scene -> New Scene -> Name : Reddit1.
5. Add a TextFiled -> Name : How many posts?
6. Add Element -> NumberPicker -> Set Min : 1 , Max=100, Default = 25. Go to VALUE SELECTED Tab ->
New Action -> Variable Set -> Name : "%NoOfPosts" to "%new_val" {Thanks to Reddit API, max can be 100 only}
7. Go Back to main scene edit screen.
8. Add Element -> Button -> Label : "OK" -> Go to TAP tab -> Add Action -> Destroy Scene -> Name : "Reddit1".
9. Go Back to TASKS tab.
10. Go to previously created task. {from step 3}
11. SCENE -> Show Scene -> Select "Reddit1" -> UnCheck : Continue Task Immediately
12. Add -> Alert -> Flash -> Text : Getting your data from %subreddit.
13. Add -> NET -> HTTP Get -> Serverort = "json.reddit.com/r/%subreddit/top/?sort=top&t=all&limit=%NoOfPosts" -> TimeOut : 82 {Again thanks to Reddit api} {You can change sort modes by looking at the reddit api}
14. Add -> Alert -> Flash -> Text : Saving %NoOfPosts posts from r/%subreddit...
15. Add -> Code -> Java Scriptlet -> Add following code :
Code:
var arr = JSON.parse(global("HTTPD"));
var i = 0;
var mytext = "";
var myarr = [];
var i2 = 0;
var path1 ="/storage/emulated/0/apks/myquotes3.txt";
var newtext = "";
for (;arr.data.children[i];) {
myarr.push(arr.data.children[i].data.title);
i++;
}
for(;myarr[i2];)
{
newtext = myarr[i2] + "\n \n" ;
var ok = writeFile(path1, newtext, true )
i2++;
}
{you need to change the 'path1' variable}
16. Add-> Variable Clear -> Name : %HTTPD*
17. Add -> Alert -> Text : Saved!
Congratulations. You've saved some of the good life quotes directly from reddit.
Future enhancements : We can make some automated task where from this text file, daily (or at some interval) we can grab one quote and post it to any particular WhatsApp group or even send a text message.
New Ideas are always welcomed.
Screenshots here.
@tjhackz : Thank you for sharing! By the way, there is a ";" missing after ")" , before i2++. I was getting a error because that. You should edit your post and add it, because new tasker beginners ( like me ) will have a problem . Once again, thank you!

[Magisk] Magisk Mount ReSize IMG

Magisk Mount , UnMount & ReSize IMG
This is Magisk Mount , UnMount & ReSize IMG ZIP for Users/Developers.
A.K.A. "M2RI" in Short For MagiskMountReSizeIMG.
By Dark❶
Profile @ XDA-Developers : Dark❶ .
Profile @ GitHub : Dark❶ .
Magisk Mount & UnMount IMG :-
GitHub Pages Site : Magisk Mount & UnMount IMG
GitHub Repository : MagiskMountUnMountIMG
XDA Developers Topic : [Magisk] Magisk Mount & UnMount IMG
Notes :
Useful for Users/Developers who wants to Edit Magisk IMG.
This script is Depending on "Magisk" Binary File , Will Not work without IT.
Module folder can be [Deleted/Added] to [Remove/Add] a Module.
File can be [Edited/Modified/Deleted/Added] as per Users/Developers wish.
This ZIP Mount's OR UnMount's on Different Condition's :
1. If "magisk.img" is NOT Mount'ed , Then Mount "magisk.img" To "/Magisk" .
2. If "magisk.img" is Mount'ed , Then UnMount "/Magisk" From "magisk.img" .
This ZIP ReSize's on Different Mounting OR UnMounting ReSize Mode Condition's.
Following is the Pseudo Code for Mount & UnMount :
IF [ ReSize Mode Only ] , Then :
Will UnMount Magisk IMG If Mounted. ~ UnMount "/Magisk" ⇏ "magisk.img" .
This ZIP will ReSize Magisk IMG as-per User Requirement.
ELSE-IF [ "magisk.img" is NOT Mount'ed AND Mounting is Allowed ] , Then :
This ZIP will ReSize Magisk IMG as-per User Requirement.
Then , will Mount Magisk IMG. ~ Mount "magisk.img" ➔ "/Magisk" .
ELSE-IF [ "magisk.img" is Mount'ed AND UnMounting is Allowed ] , Then :
This ZIP will UnMount Magisk IMG. ~ UnMount "/Magisk" ⇏ "magisk.img" .
Then , will ReSize Magisk IMG as-per User Requirement.
ELSE , Then :
This ZIP will Do Nothing BUT Print some Sh*t InFo.
Following is the Pseudo Code for ReSize Mode :
CASE "ReSizeMode" IN
0 , Then :
Display InFo of Magisk IMG "magisk.img".
1 , Then :
ReSize** to Default "64MB" OR MoRe Depending on Current Used IMG Size.
2 , Then :
ReSize to *User Specified Size* ,
BUT NOT less than "64MB" OR Current Used IMG Size.
*User Specified Size* Need's to be Positive[+] Only.
3 , Then :
**ReSize** to Current IMG Size + User Specified Size = Total,
BUT *Total* is *NOT* less than "64MB" OR Current Used IMG Size.
*User Specified Size* Can be Positive[+] OR Negative[-].
I have Copied the Code from "magisk-module-template" ZIP by @topjohnwu.
I have Edited some part of the Code to make it work.
I have Added some part of the Code to make it work.
I have Added some Necessary File(s).
I have Removed Un-Necessary part of Code Because It is Either Not Used OR Not Needed.
I have Removed Un-Necessary Directory(s) & File(s) Because It is Either Not Used OR Not Needed.
I have DoNe Some Optimization to code.
Download : MagiskMountReSizeIMG-v2.0.zip
Download History : XDA:DevDB Downloads OR This Post .
...
XDA:DevDB Information
Magisk Mount ReSize IMG, Tool/Utility for all devices (see above for details)
Contributors
Dark❶
Source Code: https://github.com/dark-1/MagiskMountReSizeIMG
Version Information
Status: Stable
Current Stable Version: 2.0.0
Stable Release Date: 2017-10-25
Created 2017-09-19
Last Updated 2017-10-25
Reserved
Reserved
Explanation :
Explanation from "config.sh" :
Code:
###############################################
## Mount / UnMount Switch [..SW] ##
###############################################
#
# To be Set For "MTSW" , "UTSW" & "ROSW". [..SW]
#
# Set to " true " , To Allow Mount / UnMount .
# Set to " false " , To Prevent Mount / UnMount .
#
# Default is " true " , For Both , "MTSW" & "UTSW". [..SW]
# And " false " For "ROSW".
#
###############################################
###############################################
## ReSize Mode [..RSMO] ##
###############################################
#
# To be Set For "MTRSMO" , "UTRSMO" & "RSMO". [..RSMO]
#
# Set to " 0 " , To Display InFo of Magisk IMG "magisk.img".
# Set to " 1 " , To ReSize to Default "64M" OR MoRe Depending on "Current Used Size".
# Set to " 2 " , To ReSize to "User Specified Size".
# Set to " 3 " , To ReSize to "Current IMG Size" + "User Specified Size".
#
# Default is " 0 " , For All , "MTRSMO" , "UTRSMO" & "RSMO". [..RSMO]
#
###############################################
###############################################
## User Specified Size [..RSMB] ##
###############################################
#
# To be Set For "MTRSMB" , "UTRSMB" & "RSMB". [..RSMB]
#
# All Number's Here Should be Multiple of " 4 " AND in MegaBytes[M].
# AND No Need to Specify character " M " OR " MB ", Just a Number.
#
# IF ReSizeMODE is " 2 " ,
# Then "User Specified Size" Should NOT be less-than "64MB" OR "Current Used IMG Size".
# AND "User Specified Size" Need's to be Positive[+] Only.
# No Need to Specify character " + ".
# IF ReSizeMODE is " 3 " ,
# Then "Current IMG Size" + "User Specified Size" = "Total",
# AND "Total" Should NOT be less-than "64MB" OR "Current Used IMG Size".
# "User Specified Size" Can be Positive[+] OR Negative[-],
# Hence Need to Specify character " + " OR " - ".
#
# Default is " 64 " , For All , "MTRSMB" , "UTRSMB" & "RSMB". [..RSMB]
#
###############################################
Example from "config.sh" :
Code:
###############################################
## Example's ##
###############################################
#
# While Mounting , you want the "magisk.img" to be 80MB,
# then "MTRSMO" & "MTRSMB" will be :
# MTRSMO=2
# MTRSMB=80
#
# Now , after Mounting the "magisk.img" ,
# And While UnMounting , you want the "magisk.img" to be Reduced by 12MB [-12MB],
# then "UTRSMO" & "UTRSMB" will be :
# UTRSMO=3
# UTRSMB=-12
#
###############################################
EnJoY ...
Download History :
Download :
v1.0 : MagiskMountReSizeIMG-v1.0.zip
v2.0 : MagiskMountReSizeIMG-v2.0.zip
Changelog
v0.0
- Initialized.
v1.0
- Initial Release.
- Copied the Code.
- Edited some part of the Code.
- Added some part of the Code.
- Added some Necessary File(s).
- Removed Un-Necessary part of Code.
- Removed Un-Necessary Directory(s) & File(s).
v2.0
- Yea! Jump in Version.
- Updated "update-binary".
- Fix a Critical Bug due to Duplicate Code.
- Optimized the Code.
- Added some Checks.
Credit's
Thank's @topjohnwu for Magisk & for the code in "magisk-module-template" , could not have done without it.
Announcement :
This Thread is not Completed , Kindly give Me some Time Slag .....
Thread is now Completed. Thanks for your Patience.
MagiskMountReSizeIMG v2.0
Here is MagiskMountReSizeIMG v2.0 :
- Yea! Jump in Version.
- Fix a Critical Bug due to Duplicate Code.
- Optimized the Code.
- Added some Checks.
Download : MagiskMountReSizeIMG-v2.0.zip
Wouldn't mind a set of usage instructions that are a bit clearer as opposed to being outlined in pseudo-code. What I'm gathering is that you flash to mount/unmount and that image resizing is automated based on your additions/deletions. That sound about right? Is this to be flashed in recovery or via Magisk Manager?
return.of.octobot said:
Wouldn't mind a set of usage instructions that are a bit clearer as opposed to being outlined in pseudo-code. What I'm gathering is that you flash to mount/unmount and that image resizing is automated based on your additions/deletions. That sound about right? Is this to be flashed in recovery or via Magisk Manager?
Click to expand...
Click to collapse
Yea!!!
& Only in Recovery. This is NOT a Module.
Check my 4th Post : https://forum.xda-developers.com/showpost.php?p=73852785&postcount=4
Cleaner Instruction than that ,,,, then I'll need some time.
Best regards. :good:
Dark❶ said:
Yea!!!
& Only in Recovery. This is NOT a Module.
Check my 4th Post : https://forum.xda-developers.com/showpost.php?p=73852785&postcount=4
Cleaner Instruction than that ,,,, then I'll need some time.
Best regards. :good:
Click to expand...
Click to collapse
No, you're right, my issues had less to do with lack of instructions and more to do with the fact that I'm trying to resize magisk.img on a device with A/B partitions. I don't know why it is, but I've tried plethora of resizing methods, as well as modules that should auto-resize but they all fail and I've discovered in the terminal app systemizer thread that there's a commonality of this issue on A/B devices.
Any chance for update, so it'll work with /data/adb/img?
ch3mn3y said:
Any chance for update, so it'll work with /data/adb/img?
Click to expand...
Click to collapse
Yea!!! I'll try , but no ETA.
I don't think it works with Magisk 17...
I get an error Magisk not found... ?
Dante63 said:
I don't think it works with Magisk 17...
I get an error Magisk not found... ?
Click to expand...
Click to collapse
Yea! I'll Update it soon ....
I am busy with other stuff...
Best regards :good:
Dark❶ said:
Yea! I'll Update it soon ....
I am busy with other stuff...
Best regards :good:
Click to expand...
Click to collapse
I'll be fixing myself...
I know what to do... ?
Great job though
Dante63 said:
I'll be fixing myself...
I know what to do... ?
Great job though
Click to expand...
Click to collapse
If you could make a PR , that would be highly appreciated my friend.
Best regards :good:
Dark❶ said:
If you could make a PR , that would be highly appreciated my friend.
Best regards :good:
Click to expand...
Click to collapse
I'm not good with binary I guess...
Since I get error 2...
I only do script...
I added the script in binary "I know it's different" but that's what I know and I simply crossed fingers hoping it's right ?...
I suppose I'll have to wait for you...
Dante63 said:
I'm not good with binary I guess...
Since I get error 2...
I only do script...
I added the script in binary "I know it's different" but that's what I know and I simply crossed fingers hoping it's right ...
I suppose I'll have to wait for you...
Click to expand...
Click to collapse
Hey!
Try this PR : https://github.com/dark-1/MagiskMountReSizeIMG
I have updated my repo , but it's not tested with all conditions yet.
but if you could , give it a try.
Best regards :good:

[ROM] - Universal ROM One UI for any Galaxy A

Universal ROM One UI for any Galaxy A:
Hello guys, this time I bring you something different... it is a zip to convert stock to rom, this project is based on Dynamic Installer.
I am not responsible for damaged phones, install at your own risk.
Dynamic Installer: https://forum.xda-developers.com/t/...1-android-10-or-earlier.4279541/post-85046055
Features:
Spoiler: Features
Working on Snapdragon and Exynos devices
Debloat
Mod flag secure
Mod Outdoor mode
Mod remove permission when installing apps
Mod Theme Store
Vaultkeeper disabled
Proca disabled
Cass disabled
SCS disabled
CSC Features
Floating Features
knox counter at 0 (Samsung Health)
optimizations
Higher audio quality (Disabled DRC, which deeply compresses audio)
Deknoxed full (Including KnoxGuard)
Fix bluetooth pairings loss
and more
Installation:
This zip is meant to install from stock, if you have any problems please send it to me Universal_ROM_v2.x.log and recovery.log too, If it's a problem with the debloat send me too:
/sdcard/blacklist.txt
/Sdcard/packages.txt
Have stock One UI installed
Make a backup of the partitions (optional)
Just flash via recovery (TWRP recommended)
Format data
Reboot system
Downloads:
Version 2.1.1:
MD5: aa4e1555a5911b38687acd87568ce0af
AndroidFileHost: Download
Version 2.1.2:
MD5: 70607d913bd219018bea53321be43c5c
AndroidFileHost: Download
Version 2.1.3:
MD5: 4c24c7c2a0c22eb3678af6664ae02108
AndroidFileHost: Download
Version 2.1.4:
MD5: 83c658902ef14b675da9c61223fcca88
AndroidFileHost: Download
Version 2.1.5:
MD5: 8a91a604a7a3079571e7d25d93f8c38a
AndroidFileHost: Download
Version 2.2:
MD5: c4b8a62e229733b47ab73206e773ca36
AndroidFileHost: Download
Version 2.2.1:
MD5: 98696b8a42b7c02880891ec60c783c34
AndroidFileHost: Download
Version 2.2.1-b:
MD5: dbe0fd10d866ca8e2839de72cb7c1629
AndroidFileHost: Download
Credits:
@Gollo99 - Help and tips
@Nico04 - Help and tips
@3arthur6 - Fixed bluetooth pairing
@ShaDisNX255 - Mods
@BlassGO - Dynamic installer.
Thanks to all the users who tested
Paypal: Paypal.me ...
if you want to support the project
Telegram:
Channel: t.me/Swx...
XDA: DevDB Information
Universal, ROM for any Samsung Galaxy A
ROM OS Version: Android 11
Based on: ONE UI
Version Information
Status: Stable
Current Stable Versionl: 2.2.1-b
Stable Release Date: 2021-11-30
Edit the zip
Something I like about using this zip is that you can edit it according to your tastes or needs. I will show you how (Dynamic Installer Based Script Codes)
- Debloat:
You just have to add or delete the name of the apks that you want to be deleted during the installation in:
Apk name: "Universal ROM One UI v2.x.zip/META-INF/addons/blacklist.txt"
Apk package name: "Universal ROM One UI v2.x.zip/META-INF/addons/blacklist_packages.txt"
Script code:
Bash:
#Debloat normal
setdefault debloat_paths "
/system/app
/system/priv-app
/product/app
/product/priv-app
"
#Check IF AAPT WORKS
if ! can_run aapt; then
savelog "AAPT: FAIL"
else
savelog "AAPT: WORKS"
fi
#Start
apps=0
bloat=0
delete "$TMP/userlist.txt"
delete "$TMP/packages.txt"
for search in $debloat_paths; do
for userlist in $(find $search -type f -name "*.apk"); do
package=$(apk_package "$userlist")
echo "$userlist" >> "$TMP/userlist.txt"
echo "$(basename "$userlist")=$package" >> "$TMP/packages.txt"
export apps=$(($apps + 1))
done
done
#CAt debloat list
cat "$TMP/userlist.txt" > /sdcard/userlist.txt
cat "$TMP/packages.txt" > /sdcard/packages.txt
#Debloat blacklist.txt
for blacklist in $(cat "$addons/blacklist.txt"); do
black=$(grep -m1 "$blacklist" "$TMP/userlist.txt")
if defined black && exist "$black"; then
delete_recursive "$black"
if ! exist "$black"; then
export bloat=$(($bloat + 1))
package=$(get_file_prop $TMP/packages.txt "$(basename "$black")")
savelog " removed:blacklist:$bloat: package=$package path=$black"
huh=$(string escape "$(basename "$black")")
sed -i "/$huh/d" "$TMP/userlist.txt"
sed -i "/$huh/d" "$TMP/packages.txt"
else
savelog " -- CANT DELETE: $(basename "$black") "
fi
fi
done
#Debloat blacklist_packages.txt
for blackpack in $(cat "$addons/blacklist_packages.txt"); do
black=$(grep -m1 "$blackpack" "$TMP/packages.txt" | cut -d '=' -f1)
[ -z "$black" ] && continue
black=$(grep -m1 "$black" $TMP/userlist.txt)
if defined black && exist "$black"; then
delete_recursive "$black"
if ! exist "$black"; then
export bloat=$(($bloat + 1))
package=$(get_file_prop $TMP/packages.txt "$(basename "$black")")
savelog " removed:blacklist:$bloat: package=$package path=$black"
huh=$(string escape "$(basename "$black")")
sed -i "/$huh/d" "$TMP/userlist.txt"
sed -i "/$huh/d" "$TMP/packages.txt"
else
savelog " -- CANT DELETE: $(basename "$black") "
fi
fi
done
#end of debloat
ui_print " -- Removed $bloat of $apps applications"
- Decode OMC and csc features
Edit the following .xml files which are the features that will be added
cscfeatures.xml: "Universal ROM One UI v2.x.zip/omc/cscfeatures.xml"
cscfeatures_network.xml: "Universal ROM One UI v2.x.zip/omc/cscfeatures_network.xml"
Script code:
Bash:
#OMC
try_mount -e -rw /odm
#Check if dalvikvm work
run_jar_addon omc-decoder.jar > /dev/null || abort " CANT USE: run_jar: dalvikvm not available"
#Getting OMC type
if exist /system_root/optics/configs /system_root/prism/etc; then ported=true
elif exist /optics /prism; then newdevice=true
elif exist "$(find /product -type d -name "omc")" || exist "$(find /odm -type d -name "omc")"; then partdevice=true
elif exist "$(find /system -type d -name "omc")" || exist /system/csc; then olddevice=true
fi
#Getting OMC path
if defined newdevice; then
try_mount -rw -e /optics || abort " CANT MOUNT: /optics "
omc_path=/optics
elif defined partdevice; then
for omc in /product /odm; do
tryomc=$(find "$omc" -type f -name "cscfeature.xml" | head -n1)
if defined tryomc; then
if is_substring "/conf/" "$tryomc"; then
conf=true
omc_path=$(dirname "$(dirname "$(dirname "$tryomc")")")
else
omc_path=$(dirname "$(dirname "$tryomc")")
fi
fi
done
elif defined olddevice; then
if exist /system/csc; then
omc_path=/system/csc
else
tryomc=$(find /system -type f -name "cscfeature.xml" | head -n1)
if defined tryomc; then
omc_path=$(dirname "$(dirname "$tryomc")")
fi
fi
fi
#Decode All cscfeature.xml cscfeature_network.xml
error=0
ui_print " -- Decoding: $omc_path"
while read csc; do
if undefined csc; then abort "CANT FIND VALID PATH"; fi
if ! run_jar_addon omc-decoder.jar -d -i "$csc" -o "$csc"; then echo2 "CANT DECODE: $csc" && error=$(calc $error + 1); fi
done <<< $(find "$omc_path" -type f -name cscfeature.xml -o -name cscfeature_network.xml)
#Check results
if [[ "$error" != "0" ]]; then
abort " -- The installation had: $error ERRORs "
fi
#CSC Features
ui_print " -- Adding csc features... "
package_extract_dir omc "$TMP/omc"
#Get custom cscfeature.xml cscfeature_network.xml
base_csc=$(cat "$TMP/omc/cscfeature.xml")
base_network=$(cat "$TMP/omc/cscfeature_network.xml")
#Editing cscfeature.xml
for csc in $(find $omc_path -type f -name cscfeature.xml); do
content=$(string -f "$csc" extract '<FeatureSet>' '</FeatureSet>')
if defined content; then
replace "$content" "$base_csc" "$csc"
else
echo2 "CANT GET CONTENT: $csc"
fi
done
#Editing cscfeature_network.xml
for csc in $(find $omc_path -type f -name cscfeature_network.xml); do
content=$(string -f "$csc" extract '<FeatureSet>' '</FeatureSet>')
if defined content; then
replace "$content" "$base_network" "$csc"
else
echo2 "CANT GET CONTENT: $csc"
fi
done
#Remove enforcedeletepackage.txt enforceskippingpackages.txt
find $omc_path -type f -name enforcedeletepackage.txt -delete
find $omc_path -type f -name enforceskippingpackages.txt -delete
- Floating Features
Edit the following file to add the features to floating features (It does not matter if the line already exists in the stock file, it will be omitted)
Floating_Features.xml: "Universal ROM One UI v2.x.zip/META-INF/addons/floating.txt"
Script code:
Bash:
#Floating features
ui_print " -- Adding Features... "
update_file_string '<SEC_FLOATING_FEATURE_FRAMEWORK_CONFIG_AOD_ITEM>aodversion=7,clearcoveroff,clocktransition</SEC_FLOATING_FEATURE_FRAMEWORK_CONFIG_AOD_ITEM>' /vendor/etc/floating_feature.xml
force_update_file_addon floating.txt /vendor/etc/floating_feature.xml
- Tweaks build.prop
You can add or remove tweaks in the following files (in the same way as floating, if the line already exists it will be omitted)
/system/build.prop: "Universal ROM One UI v2.x.zip/META-INF/addons/newprops.txt"
/vendor/build.prop: "Universal ROM One UI v2.x.zip/META-INF/addons/vendorprops.txt"
Script code:
Bash:
#Define common files
if exist /system/build.prop; then
system_build="/system/build.prop"
else
abort "FATAL ERROR: Failed to find system partition "
fi
if exist /vendor/build.prop; then
vendor_build="/vendor/build.prop"
else
abort "FATAL ERROR: Failed to find vendor partition "
fi
#build.prop
update_file_string 'ro.build.display.id=Universal ROM One UI v2.2.1-b' $system_build
replace "ro.config.tima=1" "ro.config.tima=0" $system_build
update_file_string 'ro.config.dmverity=false' $system_build
force_update_file_addon newprops.txt $system_build
force_update_file_addon vendorprops.txt $vendor_build
update_file_string 'restore.feature.use_samsung_smart_switch_flow=0' /system/etc/prop.default
- Extra script codes
Flag Secure
Bash:
ui_print " "
ui_print " You want the patch for Flag Secure? "
press
if $yes; then
ui_print " -- Flag secure will be disabled"
flag=true
else
ui_print " -- Flag secure will not be disabled"
fi
#Flag secure
disable='
.locals 1
const/4 v0, 0x0
return v0
'
if defined flag; then
stock_services="/system/framework/services.jar"
mod_services="/system/framework/services.jar"
if ! unzip -l "$stock_services" | grep classes.dex >/dev/null; then
abort " You need a deodexed services.jar"
fi
ui_print " -- Decompiling services.jar... "
apktool -f d "$stock_services" -o "$TMP/services"
ui_print " -- Disabling Flag Secure... "
smali_kit -c -m "isSecureLocked()Z" -re "$disable" -d "$TMP/services"
smali_kit -c -m "preventTakingScreenshotToTargetWindow" -re "$disable" -d "$TMP/services"
ui_print " -- Recompiling services.jar (Please wait)..."
apktool --copy-original -f b "$TMP/services" -o "$mod_services"
if [ ! -e "$mod_services" ]; then
abort " -- Some ERROR occurred during the recompilation of services.jar ! "
elif ! unzip -l "$mod_services" | grep classes.dex >/dev/null; then
abort " -- Invalid file: services.jar "
fi
fi
Outdoor mode
Bash:
ui_print " "
ui_print " -- You want mod of Outdoor mode? "
press
if $yes; then
outdoor=true
ui_print " -- Outdoor mode will be enabled"
else
ui_print " -- Outdoor mod will not apply"
fi
#Outdoor mode
enable='
.locals 1
const/4 v0, 0x1
return v0
'
if defined outdoor; then
ui_print " -- Finding SecSettings.apk"
SecSettings=$(find_apk com.android.settings /system)
if undefined SecSettings; then
abort " CANT FIND: SecSettings.apk"
fi
ui_print " -- Decompiling SecSettings.apk"
dynamic_apktool -decompile "$SecSettings" -output "$TMP/Settings"
ui_print " -- Enabling outdoor mode..."
smali_kit -c -m "isAvailable" -remake "$enable" -dir "$TMP/Settings" -name "SecOutDoorModePreferenceController"
ui_print " -- Recompiling SecSettings.apk (Please wait)..."
dynamic_apktool -preserve-signature -recompile "$TMP/Settings" -output "$SecSettings"
if ! is_valid "$SecSettings"; then
abort "Some error in the SecSettings.apk recompilation"
fi
fi
ThemeCenter Patch
Bash:
ui_print " "
ui_print " -- You want mod of ThemeCenter Patch? "
press
if $yes; then
themes=true
ui_print " -- The mod will be applied"
else
ui_print " -- Mod will not apply"
fi
#ThemesCenter mod
dummy='
.registers 5
return-void
'
if defined themes; then
ui_print " -- Finding ThemeCenter.apk"
ThemesCenter=$(find_apk com.samsung.android.themecenter /system)
if undefined ThemesCenter; then
abort " CANT FIND: ThemesCenter.apk"
fi
ui_print " -- Decompiling ThemeCenter.apk"
dynamic_apktool -decompile "$ThemesCenter" -output "$TMP/Center"
ui_print " -- Patching ThemeCenter.apk..."
smali_kit -c -m "setTrialExpiredPackage" -remake "$dummy" -d "$TMP/Center"
smali_kit -c -m "setAlarm" -remake "$dummy" -d "$TMP/Center"
ui_print " -- Recompiling ThemeCenter.apk (Please wait)..."
dynamic_apktool -preserve-signature -recompile "$TMP/Center" -output "$ThemesCenter"
if ! is_valid "$ThemesCenter"; then
abort "Some error in the ThemesCenter.apk recompilation"
fi
fi
permission when installing apps
Bash:
ui_print " "
ui_print " -- You want remove permission when installing apps? "
press
if $yes; then
permission=true
ui_print " -- The mod will be applied"
else
ui_print " -- Mod will not apply"
fi
#permission when installing apps
disabledd='
.registers 6
invoke-direct {p0}, Lcom/android/packageinstaller/PackageInstallerActivity;->initiateInstall()V
return-void
'
if defined permission; then
ui_print " -- Finding GooglePackageInstaller.apk "
googleinstaller=$(find_apk com.google.android.packageinstaller /system)
if undefined googleinstaller; then
abort " CANT FIND: GooglePackageInstaller.apk"
fi
ui_print " -- Decompiling GooglePackageInstaller.apk"
dynamic_apktool -decompile "$googleinstaller" -output "$TMP/googleinstaller"
ui_print " -- Removing permission when installing apps..."
smali_kit -c -m "checkIfAllowedAndInitiateInstall" -remake "$disabledd" -dir "$TMP/googleinstaller" -name "PackageInstallerActivity"
ui_print " -- Recompiling GooglePackageInstaller.apk (Please wait)..."
dynamic_apktool -preserve-signature -recompile "$TMP/googleinstaller" -output "$googleinstaller"
if ! is_valid "$googleinstaller"; then
abort "Some error in the GooglePackageInstaller.apk recompilation"
fi
fi
fstab file (encryption storage)
Bash:
#fstab
for fstab in $(find /vendor/etc -type f -name "fstab.*"); do
if $(cat "$fstab" | grep -q "encryptable=ice"); then
savelog "device no encrypt"
else
ui_print " -- Patching $fstab... "
replace "fileencryption" "encryptable" $fstab
fi
done
Version 1.1.0:
- Fixed side key option (Bixby removed)
- Added ViperFX and OnePlus Launcher to apps that should not be removed
- Themes mod was added (Apply themes without trial limit)
- DFE was added on installation
- Optimizations
Version 1.1.1:
- Random WIFI MAC address error fixed
- Samsung Max was added to the apps that need to be removed
Version 2.1.1:
- Now works on any Galaxy A device that is Snapdragon or Exynos
- Optimizations added
- Updated the base of Dynamic Installer to version 3.0
- Other changes
Version 2.1.2:
- Fixed some bugs in exynos
- Other small changes
Version 2.1.3:
- Added ripple animation on devices with FOD (optional)
- Fixed option to change clock on devices without always on display
- Corrections in the debloat
Version 2.1.4:
- The following services were disabled: Frp, cass, vaultkeeperd, proca, wsm and encryption [fstab file]
- AirCommand added [SPen feature] (optional)
- Disable DRC audio is now optional
- Removed multidisabler and DFE
- Dynamic Installer base was updated to version 3.2
- Some corrections
Version 2.1.5:
- Fixed creating custom omc on devices with unsupported csc (Csc Features)
- Knox removal improved
- Camera features returns for Galaxy A70 devices
- Debloat was improved for snapdragon devices with dynamic partitions
- Removing some apps like Chrome, Game Launcher, Samsung Free, etc, is now optional (This will only ask if the app exists)
Version 2.2:
- Fixed installation on newer devices like Galaxy A72, A52, etc
- The system should be more stable
- Debloat improvements
- Redesigned debloat code logic
- Now decode the existing cscfeatures.xml and cscfeatures_network.xml during the installation and add the new features in them (before it deleted the existing ones and created a new one)
- The precision of the extra debloat was improved
- Added flag secure mod
- Now the bootanimation will keep the stock
- Will now delete bixby residues
- DeKnox improvements (will now clear knox permissions)
- Now delete permissions of some deleted apps
- Now disable scs service (services disabler)
- Now recovery-from-boot.p is also deleted
- Fixes some file contexts on installation
- AirComand was deleted
- Camera features was deleted from galaxy a70 due to some bugs
- The visual error in the TIMA version was corrected
- Smart switch is disabled in the initial android setup
- Samsung cloud was deleted because if bixby does not work it does not work and is useless
- Now wipe cache and dalvik is automatic at the end of the installation
- Wallpaper was updated
- Dynamic Installer base was updated to version 4.x
- And more
Version 2.2.1:
- Dynamic Installer base was updated to version 4.1-b
- Outdoor mod added
- Added mod of disable permission when installing apps
- Fixed selection to remove Chrome and Google app on devices with dynamic partitions
- VPN networks should work now
- Debloat improvements
- Now a installation log is created in /sdcard/Universal_ROM_v2.1.1.log, if you have any problems please send it to me and recovery.log too, If it's a problem with the debloat send me too:
/sdcard/blacklist.txt
/Sdcard/packages.txt
Version 2.2.1-b:
- Project name change to "Universal ROM One UI"
- Theme Store mod added
Devices tested:
- Galaxy A20
- Galaxy A30
- Galaxy A70
- Galaxy A51
- Galaxy A71
- Galaxy A21s
Please let me know if it works on other devices.
This is modifed original ROM?
oli231 said:
This is modifed original ROM?
Click to expand...
Click to collapse
It is a zip to edit your stock rom or stock base with only flash that you already have installed
Followed your steps and am having a bloat-free experience till now. Samasung health also working. No bugs whatsoever. Excited for future updates. Would really appreciate more development for this device. (A705gm)
Thanks
kirbyNx said:
Universal ROM Galaxy A70:
Hi guys, this time I bring something different... it is a zip to convert stock to a rom, this project is based on Dynamic Installer and SuperR custom zip.
This time it works for all variants of the Galaxy A70 ( SM-: A705FN, A705MN, A705GM, etc...)
I am not responsible for damaged phones, install at your own risk.
FEATURES:
Spoiler: Features
Debloat
Vaultkeeper disabled
Proca disabled
Wsm disabled
Cass disabled
Custom CSC Features
Floating Features
knox counter at 0 (Samsung Health)
optimizations
Higher audio quality (Disabled DRC, which deeply compresses audio)
Deknoxed full (Including KnoxGuard)
Secure Folder working
Multidisabler
Fix bluetooth pairings loss
and more
Installation:
This zip is intended to be installed over stock but if you get bootloop you can use one of the bases where encryption is disabled to allow booting
Just flash via recovery (TWRP recommended)
Format data
Reboot system
Downloads:
Version 1.0.1:
AndroidFileHost: download
Version 1.1.1:
AndroidFileHost: download
Download direct: download
Bases stock:
Extract .7z with an unzip program
Reboot recovery
Full wipes (Cache, Dalvik cache, system, vendor y data)
Install "system.img" as "system" image in TWRP
Install "vendor.img" as "vendor" image in TWRP
Install "boot.img" as "boot" image in TWRP
SM-A705MN: download
SM-A705FN: download
SM-A705GM: download
Credits:
@Gollo99 - Help and suggestions
@SuperR. - kitchen SuperR to make the zip
@Nico04 - Help and suggestions
@3arthur6 - Fixed bluetooth pairing
@BlassGO - Mods, secure folder, Dynamic Installer.
@itz_rogue_77 - Help, suggestions, and more
@ Samsung - FIrmware
Samsung Open Source
opensource.samsung.com
BTC: bc1qqtg3pgxkhm7egmh35qnsq8xmnjjte6zeyz8s30
Paypal: Paypal.me...
if you want to support the project
XDA: DevDB Information
Universal, ROM for the Samsung Galaxy A70
ROM OS Version: Android 11
Based On: ONE UI
Version Information
Status: Stable
Current Stable Version: 1.1.0
Stable Release Date: 2021-07-18
Click to expand...
Click to collapse
Al flashear el archivo pierde la aleatorizacion de Mac address y muestra la del dispositivo, puede solucionar eso por favor? . Mac Rndomization es muy importante para la privacidad
When flashing the file loses the Mac address randomization and shows that of the device, can you fix that please? . Mac Rndomization is very important for privacy
javierami said:
Al flashear el archivo pierde la aleatorizacion de Mac address y muestra la del dispositivo, puede solucionar eso por favor? . Mac Rndomization es muy importante para la privacidad
When flashing the file loses the Mac address randomization and shows that of the device, can you fix that please? . Mac Rndomization is very important for privacy
Click to expand...
Click to collapse
Logs please...
logs mac randomization not work
javierami said:
logs mac randomization not work
Click to expand...
Click to collapse
Ok, I have fixed it, I will update Universal ROM later
javierami said:
logs mac randomization not work
Click to expand...
Click to collapse
Meanwhile, you can fix it with just flash this file
after installing rom it goes in downoald mode
what are the differences between this and swx rom?
Awesome software and all working like it should GZ!!
One question, does this method remove TWRP? I cant enter it somehow. What are the keys to press? I watched youtube and none work...
rolarocka said:
Awesome software and all working like it should GZ!!
One question, does this method remove TWRP? I cant enter it somehow. What are the keys to press? I watched youtube and none work...
Click to expand...
Click to collapse
I think you can Access twrp if your phone connected to cable and use combination (up+power) then release
Second if you have root access you can use magisk manager or any boot app to enter twrp
Kraitos said:
I think you can Access twrp if your phone connected to cable and use combination (up+power) then release
Second if you have root access you can use magisk manager or any boot app to enter twrp
Click to expand...
Click to collapse
True, didn't know they changed that and made it annoying
Flash this file, and you will be able to turn on TWRP mode without connecting the power cord
kissa67zwi said:
Flash this file, and you will be able to turn on TWRP mode without connecting the power cord
Click to expand...
Click to collapse
Tyvm
kissa67zwi said:
Flash this file, and you will be able to turn on TWRP mode without connecting the power cord
Click to expand...
Click to collapse
Flash it how. i tried with twrp and it tells me i need magisk to use that file.
WharfRat4 said:
Flash it how. i tried with twrp and it tells me i need magisk to use that file.
Click to expand...
Click to collapse
After flashing magisk this file works

Categories

Resources