How to create your own ROM update.zip for the T-Mobile MyTouch 3G
Things you will need to perform this:
Java SE Dev Kit from Sun. java.sun.com
May need Cygwin with zlib0 package, from cygwin.com
This will give you Android 1.6 with all the Google applications, Root access.
I never found one place where all this information is all together, so that is why I compiled this together.
Now anyone can do this themselves.
Thanks to all the hard work others have done before this.
1.
First Root your phone and install a new Recovery image, either Amon Ra or Cyanogens Recovery image.
Instructions for one-click root: http://theunlockr.com/2009/08/22/how-to-root-the-mytouch-3g-or-g1-in-one-click/
2.
Download the Android 1.6 System image from
http://developer.htc.com/google-io-device.html
extract the contents of signed-google_ion-img-14721.zip.
3.
You now need to extract the contents of system.img using a tool called unyaffs. The source code is here:
http://code.google.com/p/unyaffs/downloads/list
Or download a prebuilt win32 version here.
http://jiggawatt.org/badc0de/android/index.html
Note you may also need cygwin1.dll and cygz.dll (zlib0 package). Found at cygwin.com
Of course if you already have Cygwin installed with the GCC packages, you can just compile it yourself. Then also
if you comment out the line 67 to "// symlink(oh->alias, full_path_name);"
then it will not create the copies of the symbolic link file, and you will not have to worry about deleting duplicate
symbolic link files later.
Now in the directory where system.img exists, create a new directory called "system"
go into the "system" directory.
type the following command:
unyaffs ..\system.img
That should extract all the files from the system.img file into the system directory.
4.
Now we just need to clean up some items. Since the system.img is a linux file system, it has symbolic
links built into it, but when we extracted it, it just created duplicate files, if you used the prebuilt unyaffs.exe.
So we can just delete the duplicates and have a script recreate the symlink on install.
So we need to delete some extra files from the system\bin directory.
Run the attached DeleteExtras.bat file from the same directory where system.img is in.
If you notice, all the files it deletes are 28 byte files, and if you open them in notepad only contain:
"!<symlink>toolbox..."
And we will remake the symbolic link when it is installed.
5.
Now from the directory where the system.img is, enter the following commands
mkdir META-INF
mkdir META-INF\com
mkdir META-INF\com\google
mkdir META-INF\com\google\android
Now copy the included file "update-script.txt" into the "META-INF\com\google\android" directory
and RENAME it to just "update-script".
This update-script gets run to recreate the symbolic links.
Not sure if these two are needed but they are in some custom ROMs here:
Copy the two files "fix_permissions" and "flash_image" to the "system\bin" directory.
6.
-- Optional --
These add root and Superuser access to the ROM, plus the Terminal Emulator application.
Copy the file "su" from Cyanogen's rom to the folder "system\bin"
Copy the file "Superuser.apk" to the folder "system\app"
Copy the file "Term.apk" to the folder "system\app"
You can also replace the "system\etc\apns-conf.xml" with a more complete one from here:
http://forum.xda-developers.com/showthread.php?t=547718
or here
http://docs.google.com/Doc?docid=0AZNbAmKkmakoZGZxZHNwMnpfMjJkaHg3ejN3eg&hl=en
Turn data roaming off by default by editing line in the build.prop file:
ro.com.android.dataroaming=false
Also to fix the Market program to show "Protected" applications change the ro.build.fingerprint line to the following:
ro.build.fingerprint=tmobile/opal/sapphire/sapphire:1.5/COC10/150449:user/ota-rel-keys,release-keys
Only phones with a fingerprint of a "released" device can access some market applications.
--------------
7.
Now we just need to create a ZIP file for the final ROM
Zip up the following file and two folders:
boot.img
META-INF
system
8.
Now sign the zip file.
See here how to sign a ZIP file for flashing it.
http://androidforums.com/developer-101/8665-how-signing-roms.html
9.
Copy it to your SD card, boot into recovery, wipe, apply the update, Reboot.
You are now running Android 1.6!
the finger print is found in build.prop is this correct and what app do you use to edit your build.prop
Yes the fingerprint is in build.prop
Make sure to use an advanced text editor like TextPad, UltraEdit, or EditPlus. It has to handle UNIX text files.
Also use this for the update_script.
how abt kernel parameters?
How would one go about customizing this with Hero? Or is that not possible at this point?
detox702 said:
How would one go about customizing this with Hero? Or is that not possible at this point?
Click to expand...
Click to collapse
Would like more info on hot to incorporate senseui
Thanks for sharing... Got nothing to do today, so I experimented on my phone... I gotta say, I'm pretty amazed w/ this feature. Was able to sort out and organize my files.
Kudos!
How does one create the system.img file once one has the system files...
What I want to do is use some of the custom roms here and put it on an AVD emulator system.
Can someone help with this please.
NOTE: I dont have linux. So if there is an alternative to mkbootimg, it will be excellent.
the ion is the 32b if I'm not mistaken?
Is there an image for the 32a or do we always have to use the ion and throw a patch over it?
Sorry if this is a stupid question
in step 5. it says
Not sure if these two are needed but they are in some custom ROMs here:
Copy the two files "fix_permissions" and "flash_image" to the "system\bin" directory.
Where do i copy the files from or download please?
thanks in advance
P.S. any tips on changing the splash screen would be much appreciated.
DeleteExtras.txt or DeleteExtras.bat doesn't work. I have to delete the extra files by myself - one by one.
codysoloman said:
DeleteExtras.txt or DeleteExtras.bat doesn't work. I have to delete the extra files by myself - one by one.
Click to expand...
Click to collapse
check this: http://forum.xda-developers.com/showthread.php?t=633246
Perhaps someone here knows or could point me to the right resources, but if the phone isn't supported by Cyanogen, how would a custom rom be made in that case?
How is a custom rom made from scratch? Since android is just linux, is it simply a matter of building it with the right drivers for the phone and installing it? How can an image be manually copied to the phone if it isn't supported by Clockwork recovery? How can it's steps be manually done?
ping pong...
Can i install my own rom on samsung ace?????
anybody knows how to make a ROM customized and make a "update.img" to run on a un-rootable device? I know when you backup a linux image for example ubuntu, this image will run on all other PCs, the image will automatically knows the new PC's drivers and adapt everything with that, is it what happening to an android too ?
---------- Post added at 08:36 AM ---------- Previous post was at 08:33 AM ----------
and pls let me know how to open/edit a "update.img" file, thnx
Question
androidcustomrom said:
How to create your own ROM update.zip for the T-Mobile MyTouch 3G
Things you will need to perform this:
Java SE Dev Kit from Sun. java.sun.com
May need Cygwin with zlib0 package, from cygwin.com
This will give you Android 1.6 with all the Google applications, Root access.
I never found one place where all this information is all together, so that is why I compiled this together.
Now anyone can do this themselves.
Thanks to all the hard work others have done before this.
1.
First Root your phone and install a new Recovery image, either Amon Ra or Cyanogens Recovery image.
Instructions for one-click root: http://theunlockr.com/2009/08/22/how-to-root-the-mytouch-3g-or-g1-in-one-click/
2.
Download the Android 1.6 System image from
http://developer.htc.com/google-io-device.html
extract the contents of signed-google_ion-img-14721.zip.
3.
You now need to extract the contents of system.img using a tool called unyaffs. The source code is here:
http://code.google.com/p/unyaffs/downloads/list
Or download a prebuilt win32 version here.
http://jiggawatt.org/badc0de/android/index.html
Note you may also need cygwin1.dll and cygz.dll (zlib0 package). Found at cygwin.com
Of course if you already have Cygwin installed with the GCC packages, you can just compile it yourself. Then also
if you comment out the line 67 to "// symlink(oh->alias, full_path_name);"
then it will not create the copies of the symbolic link file, and you will not have to worry about deleting duplicate
symbolic link files later.
Now in the directory where system.img exists, create a new directory called "system"
go into the "system" directory.
type the following command:
unyaffs ..\system.img
That should extract all the files from the system.img file into the system directory.
4.
Now we just need to clean up some items. Since the system.img is a linux file system, it has symbolic
links built into it, but when we extracted it, it just created duplicate files, if you used the prebuilt unyaffs.exe.
So we can just delete the duplicates and have a script recreate the symlink on install.
So we need to delete some extra files from the system\bin directory.
Run the attached DeleteExtras.bat file from the same directory where system.img is in.
If you notice, all the files it deletes are 28 byte files, and if you open them in notepad only contain:
"!<symlink>toolbox..."
And we will remake the symbolic link when it is installed.
5.
Now from the directory where the system.img is, enter the following commands
mkdir META-INF
mkdir META-INF\com
mkdir META-INF\com\google
mkdir META-INF\com\google\android
Now copy the included file "update-script.txt" into the "META-INF\com\google\android" directory
and RENAME it to just "update-script".
This update-script gets run to recreate the symbolic links.
Not sure if these two are needed but they are in some custom ROMs here:
Copy the two files "fix_permissions" and "flash_image" to the "system\bin" directory.
6.
-- Optional --
These add root and Superuser access to the ROM, plus the Terminal Emulator application.
Copy the file "su" from Cyanogen's rom to the folder "system\bin"
Copy the file "Superuser.apk" to the folder "system\app"
Copy the file "Term.apk" to the folder "system\app"
You can also replace the "system\etc\apns-conf.xml" with a more complete one from here:
http://forum.xda-developers.com/showthread.php?t=547718
or here
http://docs.google.com/Doc?docid=0AZNbAmKkmakoZGZxZHNwMnpfMjJkaHg3ejN3eg&hl=en
Turn data roaming off by default by editing line in the build.prop file:
ro.com.android.dataroaming=false
Also to fix the Market program to show "Protected" applications change the ro.build.fingerprint line to the following:
ro.build.fingerprint=tmobile/opal/sapphire/sapphire:1.5/COC10/150449:user/ota-rel-keys,release-keys
Only phones with a fingerprint of a "released" device can access some market applications.
--------------
7.
Now we just need to create a ZIP file for the final ROM
Zip up the following file and two folders:
boot.img
META-INF
system
8.
Now sign the zip file.
See here how to sign a ZIP file for flashing it.
http://androidforums.com/developer-101/8665-how-signing-roms.html
9.
Copy it to your SD card, boot into recovery, wipe, apply the update, Reboot.
You are now running Android 1.6!
Click to expand...
Click to collapse
Could you tell me where I can correct the fake data in the phone like the real RAM is 512 MB but it say 1GB ,can you tell me how to
correct it thanks in advance:good:
INTRODUCTION:
Boot Buddy will allow you to run Linux shell scripts when your Android device is booting up. It will run your scripts early in the boot process, before the home screen appears.
The intended audience is generally intermediate to advanced users, and those who want to play with shell scripting on their device.
FEATURES:
BootBuddy is similar to init.d scripts, but with a core difference that it stores boot scripts on your SDcard instead of the internal system. This allows for several interesting enhancements. Feature listing-
Much more Safe than init.d. If you have a script that is malfunctioning, just boot with the sdcard out, and put the sdcard back in after your device reaches home screen. Your device is Saved, No Problem!
Boot Buddy is designed from the start to run scripts right from your SDcard. Just download any scripts to your boot_buddy_scripts directory and they're ready to run. (No more screwing around with permissions and files in your /system/etc/init.d/*)
SDcard storage allows you to copy a script to another device, or multiple devices easily.
Boot Buddy's author has several years of scripting and programming experience. It is streamlined, fast, and doesn't perform worthless functions like repeatedly logging the authors name and time (*hint to a t-init author*).
Clear goals of making operation simple, intuitive, and clean.
If you're currently using an "init.d" solution, BootBuddy can integrate seamlessly with it.
If you try BootBuddy and you don't like it, the installer also works as an uninstaller for easy clean removal.
BootBuddy is Open Source GNU GPL. Open for anyone to modify and improve upon.
As a developer, I make software to operate the way I would want if I were an end user, because I actually do use it, and I am an end user like you.
REQUIREMENTS:
Android 4.0 and up
Rooted device
An sdcard
Script Manager Free (or any other app that can run scripts as root)
Boot Buddy Installer bb_install.sh
INSTALL:
Start Script Manager, and allow/grant root access.
Navigate to the bb_install.sh file.
Tap on the file to show the menu options.
At the top, highlight the "Su" icon.
On the top-left, tap "Run".
The script will run quickly. It will automatically detect your sdcard location and create a folder on your sdcard named "boot_buddy_scripts". In that folder, you put the scripts you want to run at system boot. A log file will be kept at /data/boot_buddy.log
If you need your scripts to run in order, they are ordered by filename using the busybox "sort" program. They will run in alphabetical order using this format 0-9A-Za-z.
YOUR FIRST SCRIPTS: (OPTIONAL)
Here are a couple example scripts you may use.
The Android /system is normally mounted with read-only permissions by default. We will change that with the first script listed below. It will cause /system to be remounted to read-write permissions during boot.
The second script will create a file at every boot named /mnt/sdcard/sys_mount_info.txt. That txt file will give us information about how /system is currently mounted.
Download the file 00rw_system.sh into your boot_buddy_scripts folder.
Download the file 99sys_mount_info.sh into your boot_buddy_scripts folder.
Reboot your phone.
That's it, you just installed 2 new scripts and had them run at boot. It's Really just that simple to add startup scripts to your system.
To verify they are running, use any text viewer to open the file /mnt/sdcard/sys_mount_info.txt. It may show more than one line of text. There should be a line similar to this:
/dev/block/(device specific text) /system (fstype) rw,(more text)
The rw means that /system was successfully remounted as read-write during boot.
At any time you can delete either script if you choose. Easy!
UNINSTALL:
If for any reason you find you don't want or don't like Boot Buddy, you can cleanly uninstall it using the installer bb_install.sh. These instructions are almost identical to installing. (All match the installation steps, except step 4)
Start Script Manager, and allow/grant root access.
Navigate to the bb_install.sh file.
Tap on the file to show the menu options.
Type --uninstall in the text area labeled Arguments.
At the top, highlight the "Su" icon.
On the top-left, tap "Run".
Boot Buddy will be uninstalled. It will not remove the contents of your boot_buddy_scripts folder. If you have an "init.d" system installed, it will cleanly remove only Boot Buddy parts and leave the rest.
MUST READ
ADVANCED NOTES:
Boot Buddy will Not cause harm to your system, but it may not work on custom roms. Also, it may fail to detect the real location of your SDcard. It requires that /system/etc/install-recovery.sh is run during the boot process, and that file will be created if it does not exist. Also the file /data/boot_buddy.sh will be created. The script /system/etc/install-recovery.sh will run /data/boot_buddy.sh. The script /data/boot_buddy.sh will run the scripts on your sdcard. The file /data/boot_buddy.log will log any script output.
For Windows and Mac users- If you download the installer to your pc first, do not edit the installer with a text editor. Your computer will add hidden markers at the ends of each line that will prevent the installer from running. If you want to edit it, you should do so on a Linux pc or directly on your Android device.
Tell us about your results!!!
BootBuddy source code: http://github.com/Sepero/bootbuddy
NOTE : I AM NOT A DEVELOPER I AM ONLY SHARING THIS. So Try On Your Own Risk. I Can't Help Anything.
Credits :
[email protected]
Script mgr says I'm not root, despite me in a root terminal elsewhere. wtf ?? ...
I'm not root in script mgr., even though I'm showing up as root in terminal.
I've installed Super user (chains sd ), just in case the App doesn't support my other Supersu App or similar.
I've utilised the su icon and run.
I did tick run as executable.
No reboot tried.
What am I missing ??
Please advise.
I give you 5 stars to the thread
Almost first!!! haha.... this is awesome dude this could be HUGE.
Steve Eligoyo said:
I'm not root in script mgr., even though I'm showing up as root in terminal.
I've installed Super user (chains sd ), just in case the App doesn't support my other Supersu App or similar.
I've utilised the su icon and run.
I did tick run as executable.
No reboot tried.
What am I missing ??
Please advise.
Click to expand...
Click to collapse
You must to select root when start on script mgr, you have skull head with crossed bones
Steps to complete failure: Page 96 ?? ...
Here are the steps I've taken to get kicked in the teeth:
Boot phone > menu > script mgr. > start > scroll to file (in this case bb _install.sh ) > open file > tick su ( tried boot and bgr several times, nada amigo ) as instructions state > run > unexpected oper error: your not root > rinse and repeat sixty times > open terminal > su > Works just fine > Post my question on xda in the WTF Thread
Update:
After creating the directories and files needed to make this train wreck into a working setup, (obviously a few are missing here, working on it), I reopened script mgr and browsed the file system, which shows bb _install.sh file (and the other two in this
Thread as well) with the green su skull and crossbones with the boot dot next to those skulls, yet the apps shell /console says oper error - Your not root.
Again, I open terminal, su > enter > Viola!, I'm root.
I've installed the sdcard v. of script mgr as well and I get a message stating /data/system/xbin does not exist.
I'll likely need to tweak the script mgr settings to /sdcard 0/externalsd /directory bind /system /xbin/bb _install.sh - something like that.
Still doesn't explain why the app is putting the brakes on root terminal in the nag screen.
Any ideas ??
MAN THANK YOU !!!! as a noob i couldn´t get init.d to work right. so i tried your script on the xperia z3c with stock 4.4.4
to make it compatible with z3c you need to edit the file /data/boot-buddy.sh after the installation
and replace both
/boot_buddy_scripts/
with
/storage/emulated/legacy/boot_buddy_scripts/
or
/storage/sdcard1/boot_buddy_scripts/
or another prefered location
then make a new folder boot_buddy_scripts in the location.
really it executes the scripts way before the apps are starting , this is so nice and will be on my phones from now on !
edit: i also now changed the log file creation to the sd card for quick access (most filebrowsers open there by default)..
the logfile is major awesome btw if something didn´t go right , its easy to debug , thanx alot again
Won't install says I don't have busybox. I have it but it has to go in system bin instead of xbin. Amy way to get this working?
Current as of March 29, 2018.
I've been saving this for a rainy day and it's raining at my house today I have been with XDA for about a year and a half now. I made a list of several goals I wanted to accomplish, mainly to do so without root. Though I have been successful at many tricks and hacks on these tablets WITHOUT root, sometimes, no matter how hard you try, some things can't currently be done without it. One of the goals I set was activating Android's stock Daydream screensaver. This is something that was built into Android and is a feature that is greatly underappreciated and many people just don't know it exists. It's also a feature Amazon blocks us from using. Another goal was to find a way to change the lock screen wallpapers after you got rid of Amazon Photos.
After several weeks of reading and researching, I finally discovered a working way to edit the framework and successfully install it back onto at least two of the Amazon tablets I own. In doing so I discovered how Amazon blocks the use of certain features and settings and in some cases, have been able to reverse their code and replace it with values that activate those things. As you can see in the screenshot below, the Daydream screensaver feature is installed onto the tablet. Using Activity Launcher, tap the top left pull down menu and select 'all activities. Scroll until you see the settings option and tap it. Then scroll until you see 'Daydream'. That's as far as you can go. If you tap it, the display settings is what pops up. Furthermore, if you disable or delete Amazon Photos, and you're stuck with their lock screen wallpapers for the rest of time, until now.
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
In this case the settings don't redirect to another app like setting your lock screen wallpapers, which until now, required Amazon Photos to change. They simply take advantage of the framework, and block the use of the Daydream function through settings within it. That setting, among many more settings, are all allowed to be blocked and are options Android provides to manufacturers and service providers when they purchase the rights to a copy of an Android OS.
Today I am proud and very happy to announce through modding the FireOS framework on the Fire 7 and HD 10, I have successfully activated Android's stock Daydream screensaver, while at the same time, not destroying the fabric of FireOS. I have also found a way for you to once and for all, change your lock screen wallpapers WITHOUT the use of Amazon Photos.
In this TWO PART guide, I'll show you how to enable the use of the Daydream screensaver, install the 'Colors' add-on and show you how to change your lock screen wallpapers. The best part about Daydream, I have been able to track down the proper APK for Android's stock 'Colors' screensaver, also known as 'BasicDreams' and as you can see in the screenshot below, it surprisingly worked on both the Fire 7 and HD 8
The hardest part of all this, once Daydream was activated, was finding the proper APK to get this working. It took me about a week or more to track down the closest version of the 'BasicDreams' APK for our version of Lollipop and I provide it to you today as well. Follow the guide below on how to get Daydream activated and in part two, learn how to change your lock screen wallpapers WITHOUT the use of Amazon Photos.
*****WARNING*****
Editing or modifying the system framework can be very damaging to your device. I have spent an extensive amount of time studying it and ways to edit it. I am writing this guide now because I believe this method is the safest way to edit the framework without damaging your tablet. With that said, your results might not be the same. As such, from this point forward in this guide, I cannot be responsible for any damage that may occur to your device. Please only continue if 1) You are willing to risk a possible brick 2) If you are willing to flash back to the last version of FireOS that your tablet was on in case a brick does occur.
Part 1: Enable 'Daydream' Screensaver
Requirements:
- Rooted Amazon Fire 7 or HD 10.
- Windows PC with ADB installed.
- APKtool (Please note you need to install Java version 7 or greater in order to use APKtool).
- 7-Zip
- Proper 'BasicDreams' screensaver APK, provided at the bottom of this post.
- Notepad++
- ADB insecure
- Patience.
Instructions:
1. On your PC, Download and install 7-Zip, Java (INSTALL JAVA BEFORE YOU INSTALL APKTOOL!!), APKtool and Notepad++ and ADB Insecure, if you haven't done so already, from the links provided above. Download links and install instructions for APKtool can be found here. On your Fire 7 or HD 10, download and install ADB insecure from the link provided above. For APKtool, I recommend you create a folder named 'apktool' in your C:\ directory, as seen in the screenshot below:
2. Once you've installed those two things, plug your tablet into your PC and make sure you have ADB debugging enabled in developer options. (Tap settings, device options, tap serial number 7 times, tap developer opeions and enable ADB). Open an ADB window. We need to get a copy of your framework package by typing the command below into your ADB window and pressing enter. This command assumes you installed APKtool into your C:\ directory:
Code:
adb pull /system/framework/framework-res.apk C:\apktool
3. Now on your PC, you need to navigate to your APKtool folder in C:\. When the window opens, open a command window by holding down shift and right clicking on the APKtool folder window and select 'open command window here'. An example of how that command window would look is posted below:
4. Now we need to install the framework APK into APKtool so it's able to decompile it. In the APKtool command window, type the following command:
Code:
apktool if framework-res.apk
5. Time to decompile the framework so we can look inside of it and make ONLY one edit. Yes that's all it takes is one edit. Amazon only blocks out the Daydream screensaver by using one word. Type the following command in the APKtool window to decompile the framework APK:
Code:
apktool d framework-res.apk
6. Now go back to your APKtool folder on your PC. Another folder should have been created inside the APKtool folder. The folder will be called 'framework-res'. Open up the folder and double click the RES folder. Scroll down until you see the folder named 'values' and double click it. You then should then see a list of XML files, like in the screen shot posted below:
7. Right click on the file named 'bools.xml' and select 'Open with Notepad++'. Slowly scroll the page and look for the configuration setting as seen below. On my Fire 7 the configuration is on line 98:
Code:
<bool name="config_dreamsSupported">false</bool>
8. In the configuration it will say 'false'. Change it to 'true' (no quotation marks) so it looks like this:
Code:
<bool name="config_dreamsSupported">[B]true[/B]</bool>
9. Then save the file by clicking on the floppy disc icon at the top left of Notepad++. DO NOT MAKE ANY OTHER EDITS!! You can now close Notepad++ and open the command window for APKtool again. We have to recompile the framework. Do that by typing the following command into the APKtool command window:
Code:
apktool b framework-res
10. You might get an error or three as the APK recompiles. As long as APKtool builds the APK, ignore the errors. If any pop up during the rebuild process, at most there will be 3 that will say something about an 'ellipsis' and time formatting. They don't mean anything as far as I can tell. If there are more errors which are fatal for the framework APK building, APKtool will not complete the build process. If the build process successful, move onto the next step. Otherwise please repeat the process from step two and make sure you don't edit anything else.
11. Back on your PC, bring up the APKtool folder again. Open the 'framework-res' folder. A few new folders have been created by APKtool. The only one you need to worry about is 'dist'. Double click that folder. This is where APKtool puts rebuilt APKs. Right click on the 'framework-res.apk' file and choose '7-Zip' and 'open archive'. DO NOT CHOOSE UNZIP!!! (Unzipping or decompiling the APK improperly will result in undesirable consequences when you install it back on your tablet.)
12. A 7-Zip window will open up listing a few files. You can make it a little smaller and move it out of the way, but don't minimize it. Back at the APKtool folder (you should still be inside the dist folder), click the back or arrow up button until you are back in the main APKtool folder. Right click your OLD framework-res.apk file and select 7-Zip and 'open archive'. Again do NOT unzip or decompile the APK. You can make the 7-Zip window that opens, smaller if you like, but now make sure the two 7-zip windows are side by side, noting which one is the OLD and which is the NEW archive (the one with 'dist' in the directory is the NEW APK. See below):
13. Highlight the 'res' folder in the 7-Zip window containing the NEW archive. Now drag the 'res' folder from the new archive into the 7-Zip window containing the OLD archive. A window will appear asking if you "really want to copy the folder". Click yes. Now highlight the 'resources.arsc' file in the NEW archive window and then drag it to the OLD archive window and click yes when it asks you if you really want to copy it. You can now close both 7-Zip windows and navigate back to your APKtool window.
14. Now it's time to install the modified framework. Open ADB Insecure if you've already installed it. Grant it SuperUser rights and check the box next to "enable insecure adbd" and open an ADB command window. In order for this next step to be successful, you MUST have insecure adbd enabled. When you're ready, type the command:
Code:
adb remount
15. The window should reply with 'remount succeeded" as seen above. Now we are going to install the framework to the system. Don't worry about setting permissions for the framework. Because we are pushing the framework into the system via ADB and because the framework-res APK was already a system app, ADB will automatically set the proper permissions for the framework APK. This is the moment of truth! Type the following command below (this is assuming you installed APKtool into the C:\ directory). Once installed, within 5-10 seconds some buttons may appear different or be a different color. This is normal and generally signals a successfull installation. If within 5-10 seconds your tablet automatically reboots itself, that generally signals a soft brick. Here we go! Type the commands below, into your ADB command window one at a time:
Code:
adb push C:\apktool\framework-res.apk /system/framework/framework-res.apk
adb reboot
16. If your tablet rebooted successfully, congrats, you just activated Daydreams Before we install the Colors screensaver, go ahead and navigate to your display settings on the tablet. You'll notice a new tile, 'Daydream'. Tap on it and a new window opens. From here you can use the stock desk clock app for the screensaver, install 'Colors' or choose the Amazon screensaver. For Colors: Download the attached BasicDreams APK at the bottom of this post, but do NOT install it. Place the APK into your ADB folder. When done type the following command below. Again no need to worry about setting permissions to the APK as ADB will do it for us:
Code:
adb push BasicDreams.apk /system/app
adb reboot
17. When your tablet reboots, download and install Activity Launcher if you haven't done so already. Tap the pull down at the top left and select all activities. Scroll down until you see SystemUI and tap on it, then tap 'Dessert Case'. To stop the screensaver, tap and pull up near the navigation bar and swipe it closed. Navigate to your display settings again and tap on Daydream. You now have 3 screensavers!!! Tap the three dots at the top right for options on when the screensavers should turn on aka 'daydream'. You can also tap 'start now' to preview them.
So far, these are the only three I have been able to get working. I am still trying to get Photo Table to work, but I am pretty sure Gapps needs to be installed, and I haven't gotten that far to test it. I've tried other screensavers from the Play Store with no luck unfortunately. However if anyone finds anymore working ones, please post your results/finds
Thanks everyone who followed. This makes me quite happy to see this unique feature on these tablets as they are deserving of such a thing. It's disappointing Amazon lets such a great thing go to complete waste. This maybe an old feature, but a very cool and underappreciated one. I hope everyone enjoys this as much as I did unlocking it. I'll be honest; I never thought I would be able to learn basic coding. At least not enough to get this far and accomplish the things I have. Thanks for the support everyone
Watch for part two in the next couple days: Change your lock screen wallpapers...WITHOUT using Amazon photos!!
Part 2: Change your lock screen wallpapers
This guide will teach you how to change all of the stock FireOS wallpapers. This is much easier than activating Daydreams and you don't need Java or Apktool to make the edits.
This guide is mainly for individuals who want to or already disabled/uninstalled Amazon Photos. When you disable or uninstall Amazon Photos, you lose the ability to change your lock screen wallpapers. This guide will work for both the Fire 7 and HD 10.
Requirements:
- ROOTED Fire 7 or HD 10
- 7-Zip
- ADB insecure
- Your choice of any 7 wallpapers
- Windows PC with ADB
Instructions:
IMPORTANT: Make a copy of your SystemUI.apk at /system/priv-app/SystemUI and place it somewhere on your PC in case you have an unfavorable result, you won't have to reset your device.
1. Download and install 7-zip.
2. First we need to get a copy of your SystemUI. Plug your tablet into your PC, making sure ADB debugging is enabled in the developers menu. Open an ADB window on your PC and type the command below (the actions of moving the SystemUi.apk around should only be done via ADB. Never copy and past an APK from one device to another if you intend on editing it.)
Code:
adb pull /system/priv-app/SystemUI/SystemUI.apk
3. Running the above command will have resulted in making a copy of your SystemUI.apk and then placed it on your PC, into the same folder as ADB.
4. Create a folder on your desktop for the 7 wallpapers you desire. You can pick 7 different ones, or use the same wallpaper 7 times, but you can't choose any more or any less of a quantity. Putting anymore or less in the SystemUI will cause the tablet to bootloop. I have a collection of about 200 stock Android wallpapers from the first version, all the way to Nougat. It doesn't matter what size they are because you'll be resizing them anyways.
5. Once you've chosen your wallpapers, you'll have to resize them. For this guide I will be using Microsoft Paint. Navigate to the folder containing your new wallpapers and open the first one in Paint. Click the 'Resize' button at the top left of the screen, select Pixels and make sure the 'maintain aspect ratio' box is UNCHECKED. Your wallpaper MUST be the same size/resolution as Amazon's. Enter the values as listed and pictured below:
Code:
Horizontal: 1920
Vertical: 1200
6. Save the wallpaper as a .jpg. The name doesn't matter right now because we will be renaming them. If you are going to use 7 different wallpapers, you need to make a copy of the wallpaper you just resized. Open it in paint and again click resize, select Pixels and make sure 'maintain aspect ratio' is UNCHECKED. Reverse the dimensions:
Code:
Horizontal: 1200
Vertical: 1920
7. If you want to keep the same wallpaper on your lock screen all the time, repeat the above step with copies of the same wallpaper. Regardless if you use the same ones or different ones, you will have 14 wallpapers in the folder when done.
8. Navigate back to your ADB folder and locate SystemUI.apk. Right click on it and select the '7-Zip' option then 'open archive'. DO NOT UNZIP, EXTRACT OR DECOMPILE THE APK! Resize the window so you have a good amount of space to open the wallpaper folder we just made. Place the windows next to each other.
9. In the 7-zip, SystemUI archive window, double click on the 'res' folder then locate and double click the 'raw-hdpi-v4' folder. This is the location of the Amazon's default lock screen wallpapers. In your custom, wallpaper folder, you need to rename each wallpaper to match the names of Amazon's. It's important you do this step and that the names match. Otherwise when you reinstall the SystemUI, it will crash.
10. When you're done, in your custom wallpaper folder, click on 'Edit' a the top and 'select all'. Click on any of the wallpapers but don't let go! Start to drag them over to the 7-zip SystemUI window. Make sure you have all of them, then let go. When the box pops up asking you if you want to overwrite the other wallpapers just click yes. Close both windows and open an ADB window again.
11. Download and install ADB Insecure from the link at the beginning of this post. Open it and grant it root access if you don't have SuperSU set to automatic. Check the box to put ADB into insecure mode. In the ADB window, type the following commands, pressing enter after each one.
Code:
adb remount
adb push SystemUI.apk /system/priv-app/SystemUI/SystemUI.apk
adb reboot
12. That's all. If successful, your tablet will reboot and your custom lock screen wallpaper(s) should appear. If unsuccessful, your tablet will reboot, but with no SystemUI active. I'll write a small guide on recovering from a SystemUI crash without reflashing firmware if anyone has a problem. Until then enjoy your wallpapers. Just remember you have to repeat this guide each time you want to change them. Until I can figure out how Amazon Photos has such control over the lock screen, this is the only way to change your lock screen wallpapers if you uninstall Amazon Photos. Thank you for following everyone!
Definitely looking forward to trying this!
Still waiting for part 2. Also wondering if it's possible to modify the framework so that we can customize the power options.
oscarcx said:
Still waiting for part 2. Also wondering if it's possible to modify the framework so that we can customize the power options.
Click to expand...
Click to collapse
Got a little busier this weekend than I predicted. I will try to get part 2 up today or tonight.
Is it possible? Yes. However I'm having a difficult time with it. Those settings are a bit scattered and butchered so I'm having trouble figuring out which xml to edit. Amazon created their own xml files to override some of androids. It also doesn't help that a lot of values from the bools are repeated then scattered across various system apps. I know one issue is the power profile. Amazon did a good job of butchering that setting and it's proving difficult reconstruct. In other words the power profile is almost non existent.
DragonFire1024 said:
Got a little busier this weekend than I predicted. I will try to get part 2 up today or tonight.
Is it possible? Yes. However I'm having a difficult time with it. Those settings are a bit scattered and butchered so I'm having trouble figuring out which xml to edit. Amazon created their own xml files to override some of androids. It also doesn't help that a lot of values from the bools are repeated then scattered across various system apps. I know one issue is the power profile. Amazon did a good job of butchering that setting and it's proving difficult reconstruct. In other words the power profile is almost non existent.
Click to expand...
Click to collapse
No need to hurry. These are great discoveries so take your time to write the tutorial
In my opinion, your tutorial is kind of way too detailed. I know it's great for tech newbies, but by simplifying it a little bit could effectively save your time.
For the power option, if it's way too hard to customize it, maybe spending time on other stuff will be a better choice.
Anyways, thanks for your amazing work!
oscarcx said:
No need to hurry. These are great discoveries so take your time to write the tutorial
In my opinion, your tutorial is kind of way too detailed. I know it's great for tech newbies, but by simplifying it a little bit could effectively save your time.
For the power option, if it's way too hard to customize it, maybe spending time on other stuff will be a better choice.
Anyways, thanks for your amazing work!
Click to expand...
Click to collapse
I think it's more of putting pieces back in the right spots, for example, settings fragments. Some things are directed with Amazon's fragments and it's just a matter of finding the right android fragment and replacing it. In other cases, Amazon blocks out some features in an 'assets' file. Some things are also set in smali files/java and I know very little about smali, so have been reading up on that. Sometimes the fix is just a simple word change like the DayDream. I also recently discovered other settings or at least "project defaults " set by mediatek. I'm able to change some of those and supposedly add them to the build prop for more activation, but so far I haven't seen a difference.
Change your lock screen wallpapers everyone Part 2 is out!
DragonFire1024 said:
This guide will teach you how to change all of the stock FireOS wallpapers. This is much easier than activating Daydreams and you don't need Java or Apktool to make the edits.
(........................)
Thank you for following everyone!
Click to expand...
Click to collapse
Brilliant! Never thought of replacing those default wallpapers. At least this is a temporary solution.
I am wondering how the lockscreen wallpaper works and correct me if I am wrong. The app called "Special offer" is included in stock Fire OS and it has the ability to either change the wallpaper or overlay the wallpaper. Maybe it's a good idea to start from there but I am not sure about the legitimacy issue.
The lockscreen itself is weird though. Using Gravity Box, I can change some of the features but not all of them. Someone here told me that the lockscreen is deeply integrated into Fire OS.
oscarcx said:
Brilliant! Never thought of replacing those default wallpapers. At least this is a temporary solution.
I am wondering how the lockscreen wallpaper works and correct me if I am wrong. The app called "Special offer" is included in stock Fire OS and it has the ability to either change the wallpaper or overlay the wallpaper. Maybe it's a good idea to start from there but I am not sure about the legitimacy issue.
The lockscreen itself is weird though. Using Gravity Box, I can change some of the features but not all of them. Someone here told me that the lockscreen is deeply integrated into Fire OS.
Click to expand...
Click to collapse
There's a line in the build.prop file called "curlockscreen" with a value of 1. I have no idea exactly what it's for, but it might be related to disabling and/or modifying the lock screen.
lakitu47 said:
There's a line in the build.prop file called "curlockscreen" with a value of 1. I have no idea exactly what it's for, but it might be related to disabling and/or modifying the lock screen.
Click to expand...
Click to collapse
Just did a quick search on it and looks like it's the default lockscreen style
I decided to give Part 1 a try.
I got up to step 15 successfully, including having the Daydream tile.
I'm presuming that — to install BasicDreams.apk (in step 16) — you need to have another round of "adb remount"
Unfortunately, although "adb remount" worked when I did it the first time, trying to do it now results in an error:
remount of system failed: Invalid argument
remount failed
Trying to copy (with the "adb push BasicDreams.apk" command) results in an error:
adb: error: failed to copy '[PATH]/BasicDreams.apk' to '/system/app/BasicDreams.apk': remote Read-only file system
(Unsurprisingly, this is the same error if I try to do the "adb push BasicDreams.apk" thing without trying "adb remount")
In all cases, I'm re-enabling the "Enable insecure adbd" option from the "adbd insecure" app.
Any ideas how to fix this?
GamerOfRassilon said:
I decided to give Part 1 a try.
I got up to step 15 successfully, including having the Daydream tile.
I'm presuming that — to install BasicDreams.apk (in step 16) — you need to have another round of "adb remount"
Unfortunately, although "adb remount" worked when I did it the first time, trying to do it now results in an error:
remount of system failed: Invalid argument
remount failed
Trying to copy (with the "adb push BasicDreams.apk" command) results in an error:
adb: error: failed to copy '[PATH]/BasicDreams.apk' to '/system/app/BasicDreams.apk': remote Read-only file system
(Unsurprisingly, this is the same error if I try to do the "adb push BasicDreams.apk" thing without trying "adb remount")
In all cases, I'm re-enabling the "Enable insecure adbd" option from the "adbd insecure" app.
Any ideas how to fix this?
Click to expand...
Click to collapse
Make sure box is checked in adb insecure. After a reboot, you need to check the box again.
oscarcx said:
Just did a quick search on it and looks like it's the default lockscreen style
Click to expand...
Click to collapse
Yes but broken up internally. I do have a fix but I have to consult a developer before I announce it as it uses a piece of software from another rom.
GamerOfRassilon said:
I decided to give Part 1 a try.
I got up to step 15 successfully, including having the Daydream tile.
I'm presuming that — to install BasicDreams.apk (in step 16) — you need to have another round of "adb remount"
Unfortunately, although "adb remount" worked when I did it the first time, trying to do it now results in an error:
remount of system failed: Invalid argument
remount failed
Trying to copy (with the "adb push BasicDreams.apk" command) results in an error:
adb: error: failed to copy '[PATH]/BasicDreams.apk' to '/system/app/BasicDreams.apk': remote Read-only file system
(Unsurprisingly, this is the same error if I try to do the "adb push BasicDreams.apk" thing without trying "adb remount")
In all cases, I'm re-enabling the "Enable insecure adbd" option from the "adbd insecure" app.
Any ideas how to fix this?
Click to expand...
Click to collapse
How about,
adb shell
su
mount -o rw,remount /system
Instead of adb remount? It looks like an error in adb remount.
Supersonic27543 said:
How about,
adb shell
su
mount -o rw,remount /system
Instead of adb remount? It looks like an error in adb remount.
Click to expand...
Click to collapse
You can do that I suppose. I haven't tried. I side stepped that method because adb will make sure the APK has the permissions assigned properly amongst other anomalies I've come across. These are old APKs from original sources I work with. Most of the time i keep them safely inside their zipped ROM and sometimes you only get so many uses out of them if you move them around outside the system too much without proper permissions. In a matter of speaking they get lost and stop working. So I try to minimize the amount of time they remain away from home. With that said, it shouldn't be a problem.
Sent from my Samsung Galaxy S4 using XDA Labs
To follow up here:
1) I was certain I re-enabled adb insecure.
2) I tried "mount -o rw,remount /system", and got a similar error: "mount: Invalid argument". I also tried a command that worked in the past (that I'm pretty sure is doing the same thing): "mount -w -o remount /system" (no quotes, obviously), and also got the "mount: Invalid argument" error.
3) The error I had in this circumstance was similar to one I had on an unrelated matter regarding getting FlashFire working.
What I suspect is that somehow /system gets tired of being written to, and it "locks me out" for some reason. (There are two points when I have traditionally made use of "mount -w -o remount /system" — when I copy over the initial /system image via "dd if=/sdcard/system.img of=/dev/block/mmcblk0p13; sync" and when I disable OTA updates with "mv /system/priv-app/DeviceSoftwareOTA/DeviceSoftwareOTA.apk /system/priv-app/DeviceSoftwareOTA/DeviceSoftwareOTA.apk_" )
Another possibility is that I had somehow made a mistake in following this tutorial originally, typing "adb push [SOURCE]\framework-res.apk /system/framework-res.apk" instead of "adb push [SOURCE]\framework-res.apk /system/framework/framework-res.apk"
I deleted the errant framework-res.apk from /system, but I wonder if that somehow tripped up some kind of "don't muck with this" flag that wouldn't let me remount it.
4) Speaking of which, are you sure about this command in Step 16?
adb push BasicDreams.apk /system/app
Click to expand...
Click to collapse
I can't get it to work. In fact, if I use a file browser to go to /system , I just have a non-folder file named "app" that happens to be the same size as BasicDreams.apk . . .
I reflashed my /system and confirmed that I don't seem to have a folder named "app" in /system , so I can't quite figure out what that command is doing . . . Does it need to be:
adb push BasicDreams.apk /system/priv-app
? (I have a 2017 HD10, if it matters.)
5) For my second attempt, I tried to do as "clean" a re-install of my system as I could, avoiding the two instances of when I would remount /system in the past (flashing a straight system.img extracted from an update and freezing the OTA app with Titanium Backup). This time, remounting worked both times, as did the rest of the procedures (with the exception of the "BasicDreams.apk" problem, directly above).
GamerOfRassilon said:
To follow up here:
1) I was certain I re-enabled adb insecure.
2) I tried "mount -o rw,remount /system", and got a similar error: "mount: Invalid argument". I also tried a command that worked in the past (that I'm pretty sure is doing the same thing): "mount -w -o remount /system" (no quotes, obviously), and also got the "mount: Invalid argument" error.
3) The error I had in this circumstance was similar to one I had on an unrelated matter regarding getting FlashFire working.
What I suspect is that somehow /system gets tired of being written to, and it "locks me out" for some reason. (There are two points when I have traditionally made use of "mount -w -o remount /system" — when I copy over the initial /system image via "dd if=/sdcard/system.img of=/dev/block/mmcblk0p13; sync" and when I disable OTA updates with "mv /system/priv-app/DeviceSoftwareOTA/DeviceSoftwareOTA.apk /system/priv-app/DeviceSoftwareOTA/DeviceSoftwareOTA.apk_" )
Another possibility is that I had somehow made a mistake in following this tutorial originally, typing "adb push [SOURCE]\framework-res.apk /system/framework-res.apk" instead of "adb push [SOURCE]\framework-res.apk /system/framework/framework-res.apk"
I deleted the errant framework-res.apk from /system, but I wonder if that somehow tripped up some kind of "don't muck with this" flag that wouldn't let me remount it.
4) Speaking of which, are you sure about this command in Step 16?
I can't get it to work. In fact, if I use a file browser to go to /system , I just have a non-folder file named "app" that happens to be the same size as BasicDreams.apk . . .
I reflashed my /system and confirmed that I don't seem to have a folder named "app" in /system , so I can't quite figure out what that command is doing . . . Does it need to be:
adb push BasicDreams.apk /system/priv-app
? (I have a 2017 HD10, if it matters.)
5) For my second attempt, I tried to do as "clean" a re-install of my system as I could, avoiding the two instances of when I would remount /system in the past (flashing a straight system.img extracted from an update and freezing the OTA app with Titanium Backup). This time, remounting worked both times, as did the rest of the procedures (with the exception of the "BasicDreams.apk" problem, directly above).
Click to expand...
Click to collapse
I am not too sure why this is happening. I presume you edited the framework-res.apk? If so, use a root explorer, I use the actual Root Explorer, and navigate to /system/priv-app and create a folder named BasicDreams. If using root excplorer, Long press the folder, tapp three dots at top right, tap permissions, set to 0755 (rwxr-xr-x). Place the APK in the internal storage of your tablet. Open your root explorer and go to your internal storage. CUT the APK FIRST to /system then CUT it to the BasicDreams folder in /system/priv-app you just made. When done, if using root explorer, long press the APK, tap three dots on upper right and tap permissions. set permissions to 0644 (rw-r--r--). Reboot then go to settings, display, and see the Daydream menu.
DragonFire1024 said:
I am not too sure why this is happening. I presume you edited the framework-res.apk? If so, use a root explorer, I use the actual Root Explorer, and navigate to /system/priv-app and create a folder named BasicDreams. If using root excplorer, Long press the folder, tapp three dots at top right, tap permissions, set to 0755 (rwxr-xr-x). Place the APK in the internal storage of your tablet. Open your root explorer and go to your internal storage. CUT the APK FIRST to /system then CUT it to the BasicDreams folder in /system/priv-app you just made. When done, if using root explorer, long press the APK, tap three dots on upper right and tap permissions. set permissions to 0644 (rw-r--r--). Reboot then go to settings, display, and see the Daydream menu.
Click to expand...
Click to collapse
I did edit the framework-res.apk, yes.
I jumped through all those hoops, it it is — indeed — working! (I interpreted the instructions as "Cut and paste into /system, then cut and paste it from /system into the folder on /system/priv-app" . . . is that because the file needs to "touch" /system to work correctly? And I just COPY/pasted the first time into /system, to keep the original backed up on my SD card.)
GamerOfRassilon said:
I did edit the framework-res.apk, yes.
I jumped through all those hoops, it it is — indeed — working! (I interpreted the instructions as "Cut and paste into /system, then cut and paste it from /system into the folder on /system/priv-app" . . . is that because the file needs to "touch" /system to work correctly? And I just COPY/pasted the first time into /system, to keep the original backed up on my SD card.)
Click to expand...
Click to collapse
It touches the system just as a precaution. I've read in places it a way for the system to better accept APKs as a system app when you force install it like this. I don't know if it's true, but when manually adding a file, i take this step as a just in case route.