Breaking News
recent

FLASH ZIPS FILES WITHOUT RECOVERY

THIS IS A WORK IN PROGRESS, CURRENTLY AT A
VERY EARLY STAGE OF DEVELOPMENT
What is Flash Gordon ?
In laymen's words, Flash Gordon is an apk which allows you
to flash any flashable zip (except for Roms) without having
a recovery installed.
You just point it to the zip you want to flash, (be it a
kernel, a mod, a gapps package, a modem, a RIL, a
recovery...) and it will interpret the updater-script of this
package and install its content just like a recovery would.
How does it work ?
Here is what happens step by step :
1. You tap the "select a zip" button, select the built-in file
explorer to select the zip you want to flash
2. Flash Gordon will first extract this zip, depending on its
size it can take a little time
3. When you press the "Flash Now" button, Flash Gordon
will locate the updater-script and start translating it
into shell code, line by line
4. It will output the resulting translated bash script on
your sdcard and execute it, thus installing the zip's
content
5. The app creates a notification, just tap on it to reboot
In order to achieve those last 2 steps, I'm writing a full
Edify to Bash parser and translator.
Here is the list of all the Edify commands this parser can
currently process and what their respective bash translation
is (in green), using examples:
(more will be added over time, this is really just a draft)
By no means am I a bash expert, so if you have suggestions
for better bash equivalents of any edify commands please
post them
Code:
package_extract_file("path/to/source/fi
busybox cp -fp /path/to/source/file.tx
package_extract_dir("/source/folder", "
busybox cp -rfp /source/folder/* /dest
set_perm(0, 2000, 0755, "/file/or/fold
chown 0:2000 /file/or/folder
chmod 0755 /file/or/folder
set_perm_recursive(0, 2000, 0644, 0755
chown -R 0:2000 /path/to/set/permissio
chmod 0644 /path/to/set/permissions/re
chmod -R 0755 /path/to/set/permissions
delete("file/to/delete");
busybox rm -f /file/to/delete
run_program("/script/to/run.sh");
sh /script/to/run.sh
mount("ext4", "EMMC", "/dev/block/mmcb
busybox mount -o rw,remount -t auto /s
unmount("/system");
busybox mount -o remount,ro /system
symlink("busybox", "/system/xbin/[", "
"/system/xbin/adjtimex", "/sys
This is just a proof of concept for the moment, I'm aiming
at adding all the possible Edify commands, and maybe doing
it backwards (Bash2Edify) in the future, too
This is from the apk I use for debugging, so the UI is pretty
barebones atm, it will quickly evolve to something more fancy
and featureful
Contribute
Flash Gordon is fully Open-Source, and contributions are
more than welcome!
You can check-out the full source code on my github at :
https://github.com/Androguide/FlashGordon
This app depends on the following Open-Source libraries :
My fork of the CardsUI library by Nadav Fima
aFileChooser by Paul Burke
Frequently Asked Questions
Q: Why can't I flash a Rom with Flash Gordon ?
A: Because when some system files are replaced while the
device is running, it causes it to crash and will stop in the
middle of the installation, resulting in a bootloop.
Q: Where can I see the bash script translation of the
package I selected ?
A: After tapping the Flash Now button, head to /sdcard/
RecoveryEmulator/tmp/flash_gordon.sh
The full translation is also output to the logcat while
flashing.
Q: I select a flashable zip but it tells me it is not valid or
that it's not a zip package, why ?
A: Make sure that there is no whitespace in the name of the
zip package you're trying to flash, otherwise it won't be
recognized.
If your package has no whitespace but the app still gives
this error, try to shorten its name.
Q: Which versions of Android are supported ?
A: From Froyo (2.2) up to the latest JellyBean (4.2.2)
Q: Why is this app useful?
A: Some people might not be able to install a custom
recovery on their device, either because there is no custom
recovery for this model, or maybe their bootloader is locked.
Flash Gordon allows them to flash packages even then.
Or maybe you're simply lazy and you don't want to have to
reboot to recovery to flash that new kernel or that new cool
flashable mod ? Then Flash Gordon is for you too.
Or maybe just for the heck of it ?^^
Requirements
All you need is a rooted Android device with a proper
busybox installed. Required applets include :
mount
sed
unzip
rm
cp
Changelog
To Do List
Using a private version of busybox to remove having
busybox installed/installing new applets as a requirement
for the user
Implementing an equivalent of nandroid backups (zipping
the content of the defined partition(s) and generating
an updater-script to allow the user to restore the
backup either through recovery or through Flash Gordon
Translating ui_print(); to echo in bash and make the
"Flashing" ProgressDialog's message display the content
of those ui_print();
Disclaimer
If you're going to test this app, make sure you have a
nandroid backup handy as it is very far from stable.
I won't be held responsible for any damage done to anything
whatsoever. You use this tool at your own risk.
Download
A preview/pre-alpha/proof-of-concept/work-in-progress/
whatever-but-stable apk is attached to this post.
Again, make sure to have a nandroid backup before flashing
anything through Flash Gordon for the moment.
DOWNLOAD LINK
Credits : @SHIVAM PANDEY
Unknown

Unknown

No comments:

Post a Comment

Tech Ninjaz™. Powered by Blogger.