[FAQ] Frequently asked question concerning VTS - Virtuous Ten Studio

How to properly install framework apks and use tags
ApkTool (and therefore VTS) needs framework apks to properly de- & recompile Android resources.
Framework tags are used to differentiate between multiple sets of framework apks.
You are usually going to have one set (ie. multiple apks) per device and base/rom version.
When installing frameworks it's very important to install all frameworks from the same device/rom with the same tag.
Have a look at this tutorial to learn more about installing frameworks with VTS.
Click to expand...
Click to collapse
How to completely reset the VTS layout
VTS has a "Reset layout" button, but sometimes this can't repair all problems with a broken window layout.
To fix such persistent problems, open the settings and untick the "Save dock layout" checkbox.
Now restart VTS, the layout should be reset to the default layout.
You can enable layout saving again.
Click to expand...
Click to collapse
How to manually edit VTS settings
Since VTS 2.6.12 you can easily change these settings with the "Advanced settings" window inside VTS.
Open the settings window and click on the "Advanced" button at the bottom.
VTS stores its settings easily accessible in XML files. They are stored in a folder (normally) located here:
C:\Users\<your user>\Documents\Virtuous Ten Studio\Settings\
You can easily open and edit these settings files, just make sure VTS is closed before doing so.
Note: Some settings only exist after VTS used them for the first time.
Click to expand...
Click to collapse
VTS can't find the Java binary
Make sure to add the location of your Java.exe to your PATH variable and reboot after doing so.
VTS should be able to find your java binary now.
If it still doesn't work, you can manually specify the java path in the VTS settings.
Click to expand...
Click to collapse
Something else went wrong and I need help
Editing apks and other Android related files can be a highly complex task.
There are many possible error sources. If something goes wrong nobody can help you unless you provide some important things: (if applicable)
The VTS logs. Without these it's pretty impossible to troubleshoot problems that occured while using VTS.
Have a look at this tutorial, it explains you how to use the Log Viewer.
Make sure all checkboxes on top are checked and copy all the log text from the textbox.
When asking for help, make sure to include all the text in [CODE]<log text>[/CODE] tags.
A logcat of your device, the packagename (if applicable) and filename of the file you are working on.
If something goes wrong or doesn't work on the device you are working with, it's absolutely required to get a logcat before asking for help.
You can use the Logcat viewer of VTS to get a copy of the so called Logcat. It's the internal log of your device and usually helps revealing and solving all kinds of problems occuring on the device.
As with the VTS logs, please include the Logcat in [CODE]<logcat text>[/CODE] tags.
Your Operating System version (eg. Windows 8, Windows Vista etc)
General information:
Can you reproduce the issue?
Did you try to restart your computer/your device first?
Click to expand...
Click to collapse
Feel free to propose me any new entries for this post

Something is badly messed up..
I used VTS v2.6.12 .. Until then everything was alright.. I used to decompile framework-res.apk, framework.jar, systemui.apk..
I never got any boot loop..
I downloaded and installed the latest version and ..
Whatever projects I made in v2.6.12 .. Were not recompiling.. May be because there was an update to apktool..
I had to make all new projects.. .
SystemUI.apk of my stock ROM is ~2.5mb.. After I decompile and recompile its size is like 5mb .. Why so??
I have to do everything manually ..
It never shows any error while decompiling or compiling..
How can i figure out where the problem is??

rkharat98 said:
Something is badly messed up..
I used VTS v2.6.12 .. Until then everything was alright.. I used to decompile framework-res.apk, framework.jar, systemui.apk..
I never got any boot loop..
I downloaded and installed the latest version and ..
Whatever projects I made in v2.6.12 .. Were not recompiling.. May be because there was an update to apktool..
I had to make all new projects.. .
SystemUI.apk of my stock ROM is ~2.5mb.. After I decompile and recompile its size is like 5mb .. Why so??
I have to do everything manually ..
It never shows any error while decompiling or compiling..
How can i figure out where the problem is??
Click to expand...
Click to collapse
You made a pretty big jump in versions there, I suspect the changes in the file formats prevented a proper loading of your old files.
Sorry for that, I never expected such large version jumps.
As for the size, in its default configuration VTS builds all binaries with no compression, whereas most binaries come with some compression. You can set the compression level in the settings of the zip module yourself. In any case, the size difference does no harm, you can leave it either way.

@Diamondback, great work.
Can I compile Apk via VTS? Example: I have sources and want to compile it with my drawables,XML,values. Thanks in Advance

Related

[Updated] - How-to Theme Development

To create themes, or to edit themes to your liking, you will need a working knowledge of android, adb, how to resign apk's, knowledge of your own O/S.
Before you start be aware that you will may end up wiping your phone once, if not more. So lets go over the things that you will need.
You will need JF's RC30, RC8, or ADP1 V1.3, depending on what version you intend to create for.
Here is the link to these: http://forum.xda-developers.com/showthread.php?t=466174
You will also want to get the dev bootloader installed on your phone and to HIGHLY suggest everyone trying your theme to install it as well.
Link to dev bootloader: http://forum.xda-developers.com/showthread.php?t=455860
You will also need to resign all the apks located in /system/app and framework-res.apk located in /system/framework. When you push all of these to your phone.
JesusFreke was kind enough to build a custom signing tool for me that would allow me to right click on an apk and resign it from there. I am posting it here for others to use as well. Note that this is a courtesy of JF, so thank him for it. I cannot stress how much time this has saved me and will save you.
Here is the link: Http://www.FightForthePits.com/testsign(2).zip
Before using this you need to know how to set this up:
I will assume that you have the sdk downloaded and extracted somewhere(if not, do that now), extract both files to the tools directory of your sdk.
Now you will need to add the tools dir of your sdk to the environment variable CLASSPATH.(This is for XP, Vista coming soon)
To do this, right click on My Computer click properties, then choose the tab that says advanced. Click the button that says environmental variables. Go to system variables find the one that says CLASSPATH, double click it, go to the end of variable value. There should be a semicolon ; at the end. type in the path to the testsign.jar located in the tools directory of your SDK, for example the path to my testsign.jar was c:\sdk\android-sdk-windows-1.0_r1\tools\testsign.jar If CLASSPATH is not in your system variables then create it. Secondly, Find the system variable called PATH and add to the end of it, the full path to your sdk directory. For example, mine was c:\sdk\android-sdk-windows-1.0_r2\tools
Now right click the reg file that you extracted and choose to install it, or merge.
Now, right click an apk, do you see an option that says ResignApk? That's how you will resign your .apks and .zips.
If you find the right click menu not working for some reason you can type the following in cmd to sign your files: java testsign whateverfiletosign
Now through doing this you have done two things, first off you have made the resigning process extremely easy, secondly you will not have to cd to the tools dir of the sdk to use adb or any other tool in the sdk.
You will also need a version of linux installed or running vmware with linux, if you want to create, or edit, an update script, which will install the theme onto the users phone.
You will need to be specific in addressing what version your theme is for, RC8, RC30, or ADP1. Make sure every file gets signed. Make sure you test the update.zip before you release it.
Every .apk contains the images relating to itself. However, every apk has the ability to use the images in framework-res.apk. The images for every apk is located inside of itself. To find these images open up the apk, you can rename it to .zip or open it with an archiver of your choice, winrar, winace, etc. Then after opening the apk open the folder called res and inside of that there are folders that are named Drawable, drawable-land, drawable-port, etc. This is where the images are stored.
Ther are some things you cannot edit unless you rebuild the entire apk from source, which we will not go into here.(another tutorial, another time) Just know that at this time you SHOULD NOT edit, or even open images with the extension .9.png. If you do you will have problems...Trust me. These are special images called ninepatch images and android resizes these images to fit wherever android, or any other apk, needs it to. if you do open them or edit them they will no longer render correctly when resized. I believe that in order to edit these you must do so and then put them into the source and rebuild the entire apk.
Before getting started you must also realize that you cannot simply resign one or two apk's and stick them in your phone and expect them to work. You must resign every apk inside of /system/app and framework-res.apk and put them on your phone at the same time.
To simplify this process for you though, I have provided an empty update.zip which you can place all of your resigned apps into and use to update your phone to your custom theme. You can also download someonelses theme and use there files, since they are resigned already. It may also be easier to see what files do what and go where since they have already been edited and are easy to point out.
Now, your ready to start changing things up.
You will now need to open the apk, which you can do by adding .zip after .apk, effectively changing it to a zip. Note that if you are using windows you will need to unhide known file extension types. you can also use your favorite archiver such as winrar, winzip, etc.
See here to unhide known file extension types for Xp: http://www.mediacollege.com/microsoft/windows/extension-change.html
See here to unhide file extension types for Vista: http://maximumpcguides.com/windows-vista/how-to-change-a-file-extension/
After opening the apk go to res and copy the folders that have drawable in their name. Go to your desktop, or wherever, create a new folder called Images, or whatever. Open the folder, paste the drawable folders in there. Now you can see what the files look like without opening them. Btw, you may also want to add -frame, or -launcher, to the end of the folders you cope over to keep them separated from others.
Finally, you've edited the images put them all in the apk renamed it back to an apk and resigned it. Now it's time to push it to your phone and see the changes you've made.
Important! : Whenever pushing files to the phone NEVER do it while the phone is running. Do this in recovery mode! If you do this while the phone is running normally you will begin to lose space in /system.
So, boot into recovery plug your phone in and open a cmd prompt. From the cmd prompt type adb shell mount /system then type the following: adb push c:\whereveryourfileis\whateveryourpushing.apk /system/app (system/framework if your pushing framework-res.apk)
Now reboot your phone. If it doesn't boot, try doing a wipe, if that doesn't work reinstall an update and try again. There are alot of things people can do wrong, I can't explain them all here. If you get real stuck, you can ask for help here or contact me on Gtalk [email protected].
So now your theme is done and your ready to make an update.zip for others to install your theme.
I have created a template for you to make your own update.zip. Just download, add the system apps to app, and framework to framework. Zip it up, SIGN IT, TEST IT YOURSELF, and then distribute it!
Empty update.zip template: Http://www.FightForthePits.com/Androidstuff/update_empty.zip
If anyone has any questions please try asking for help in this thread before emailing me for help Usually I will respond to questions in this forum.
I hope this Tutorial has been helpful. I will add on to it as needed.
Stericson
Links of interest:
Downloading SDK: http://code.google.com/android/intro/installing.html
Using ADB: http://code.google.com/android/reference/adb.html
Working with ninepatch should be straightforward if you use the draw9patch tool included in the SDK. Documentation on usage here:
http://code.google.com/android/reference/draw9patch.html
JF could also save theme users a wipe by resigning /system/app/* and /system/framework/framework-res.apk in his builds with the test keys. Nice tutorial, btw.
However it doesn't. I have used that to no avail. I believe you need to edit the images, put them in the source then rebuild the apks from the source.
As for JF's update, it does not currently wipe your phone after install. So, for him to do this he would have to have his update do a wipe. So technically, they would still have to do this initial wipe.
Stericson
Stericson said:
However it doesn't. I have used that to no avail. I believe you need to edit the images, put them in the source then rebuild the apks from the source.
Click to expand...
Click to collapse
Good point. I thought you could simply drop a similarly dimensioned PNG in but apparently there is some metadata that only the android tool can create.
As for JF's update, it does not currently wipe your phone after install. So, for him to do this he would have to have his update do a wipe. So technically, they would still have to do this initial wipe.
Click to expand...
Click to collapse
True, but a user who is upgrading to a JF update after having put in customized (and test-key signed) system apps will have to wipe again anyway =) Anyone using custom themes will have to wipe every time a JF update (or any update) comes out. However if JF resigns, custom theme users would not have to wipe and stock theme users only have to wipe once. (Nevermind the fact I think everyone should wipe when updating...)
thx stericson this will help big time how long before I can get resigned rc30 last night when you said all the apk. need to be resigned I was like this is going to be a long night but I see jf hooked you up save some big time with his resigning tool
jashsu said:
Good point. I thought you could simply drop a similarly dimensioned PNG in but apparently there is some metadata that only the android tool can create.
True, but a user who is upgrading to a JF update after having put in customized (and test-key signed) system apps will have to wipe again anyway =) Anyone using custom themes will have to wipe every time a JF update (or any update) comes out. However if JF resigns, custom theme users would not have to wipe and stock theme users only have to wipe once. (Nevermind the fact I think everyone should wipe when updating...)
Click to expand...
Click to collapse
Ah, good point
The resigned apps will be released maybye sometime tonight...I had them done but ran into a script problem on adp1 and I have yet to try the rc30 and rc8 ones yet. so I won't release those until I've tested them. If you want to be a Guinea pig however, just let me know
Stericson
Stericson said:
Ah, good point
The resigned apps will be released maybye sometime tonight...I had them done but ran into a script problem on adp1 and I have yet to try the rc30 and rc8 ones yet. so I won't release those until I've tested them. If you want to be a Guinea pig however, just let me know
Stericson
Click to expand...
Click to collapse
The resigned apps have been released, each update file will resign all of apps in /system/app and framework-res.apk. However, these updates make no changes to them whatsoever...Meaning your phone will look just like a brand new phone without any modifications.
rc30 works thx Stericson made it easy for use
Issues with using the update.zip above
Hi all,
I just wanted to point out that after I applied the update.zip above and rebooted applications kept force closing randomly and constantly even through the initial setup (where you have to click the green android to start).
Prior to this, I had JF's RC30 1.3, and the engineering bootloader V2 no sigcheck.
First I did just a alt+s then a alt-w and alt+s. And still nothing.
I'm new to all this so I'm not even sure where to begin troubleshooting. Should I be using the HardSPL?
Thanks in advance and I appologize if this isn't the right place for this post.
Update:
After reflashing with JF's 1.3 RC30 and the problem persisted I noticed that there was a new release 1.31 and this has fixed the problem. I hope this helps anyone else who runs into the same problem.
I still don't know what went wrong though, can anyone shed some light on this? thanks.
Truly there's no telling, sounds like J'f's update fixed it. Can I ask what version you tested?
I would also like to announce that now, thanks to JF, again, you do not have to wipe your phone completely to apply the resigned app updates. However, you will have to re-enter your google info and your call history and other minor things will be gone, but all of your apps will be retained.
Stericson
Alright, I am a little confused........
So I downloaded testsign.zip and extracted it to the tools folder. Then I went into environmental variables and added CLASSPATH with the value D:\Android\tools\testsign.jar and now I am not sure what to do next. Can someone give me some clarification. And btw I am on XP but I can get on linux at home if I need it, but I am a total noob to all this stuff so be gentle.
I'm using http://www.fightforthepits.com/Androidstuff/update_Rc30.zip and have been encountering issues when the phone boots up. As soon as the initial phone setup comes up I get process force close errors, I extracted launcher.apk, edited the files I wanted, repacked it, signed it and then resigned the update.zip. Any ideas what I'm doing wrong? I'm already running JF's RC30 1.31
Did you repack it in linux? Did you resign Launcher.apk? Also, that update file was never meant to be used as a template for an update since it kind of wipes your phone. You should be using update_empy, to push your own theme.
If you want to do only one file at a time, flash that update(update_rc30) then adb push your file into system/app. There are lots of things that you can mess up, most of them are hard to catch too. At any rate, everyone who has made a theme can tell you it's not just a straight forward process, expect errors. I've had more than I count I know....
Trial and error is your best teacher
Stericson
Stericson said:
Did you repack it in linux? Did you resign Launcher.apk? Also, that update file was never meant to be used as a template for an update since it kind of wipes your phone. You should be using update_empy, to push your own theme.
If you want to do only one file at a time, flash that update(update_rc30) then adb push your file into system/app. There are lots of things that you can mess up, most of them are hard to catch too. At any rate, everyone who has made a theme can tell you it's not just a straight forward process, expect errors. I've had more than I count I know....
Trial and error is your best teacher
Stericson
Click to expand...
Click to collapse
Must .apk's be signed if they're pushed over ADB? I'm not running Linux, I'm repacking/signing in windows.
I also had the issue with force close when installing the resigned update from the first post, apps that shouldn't even run on start up were force closing.
Also the IM application was gone, had to do a wipe and go back to jf 1.31 to correct it
I will take another look at the update I provided...
Stericson
did you ever figure out how to change the text on the status bar from black to white?
to do that you have to rebuiuld the entire apk from source and edit an xml document
Stericson
has anyone tried making the icons bigger? I noticed they are 48x48 if we go bigger will that affect anything? Also has anyone been able to remove the text below the icons on the home screen? Oh and where is the tab located that has been made invisible?
*edit
well I tried making the icons bigger and it doesn't really do anything, they don't show up bigger on the screen. Might have something to do with the text underneath, not sure.
Kyeld said:
Must .apk's be signed if they're pushed over ADB? I'm not running Linux, I'm repacking/signing in windows.
Click to expand...
Click to collapse
yes they must be signed.

[TUT] Custom frameworks for Gen 8

So, it seems that more people are taking an interest in making custom frameworks. This isn't really a full tutorial, but I thought it would be helpful to just post some tips on how to go about making your own framework-res.apk, save others a bit of time retreading old ground, since the methods are scattered around the site a bit!
Thanks to wdl1908 for prompting me to do this - should really have done this sooner!
Okay, so basic requirements:
Rooted Gen 8 (Uruk or chulri method)
Original Archos framework-res.apk
zip editor
image editing software
.png's to replace the stock ones with
That's about it! I've been using GIMP on Ubuntu for the image editing, and Phatch for batch resizing, but Photoshop will work just as well on Windows.
Edit: Thanks to wdl1908, have found that Gwenview gives much better results when resizing, compared to Phatch or GIMP. Works on both Ubuntu and KDE.
Use your preferred zip editor to unzip the contents of framework-res.apk to your chosen folder. The main folder of interest is "drawable-mdpi".
The Gen 8's use MDPI resolution images (well, A70 and A101 to at any rate. I think someone mentioned the A32 or A43 used HDPI images). Depending on your .png source, you may need to resize the images. I took my images from themes made for the Desire, which is an HDPI device, so I used GIMP/Phatch to resize them.
In terms of resizing, I compared the size of each new png with the original one, and resized. I know p0rkburn just resizes the images to 66%, but I've had problems with some images not coming out the right size that way. The other thing to watch out for is that not all the images need resizing. Also, some of the textfield and tab_select images are different proportions to their phone equivalents, so again watch out for that.
Once you've replaced the images you want to, they need to be put back into the .apk. I used to copy and paste into the framework-res.apk, but that doesn't work for 9patch files. Also, wdl1908's FrameWorkBuilder makes the compile process so ridiculously easy, there is no reason not to use that instead.
To put the new framework-res.apk on the device, I use this method via ADB wireless, which works fine.
Happy theming!
EDIT: 9patch files
These can be a PITA, until you understand how they work. I used the following two sources to finally crack it :
http://developer.android.com/guide/developing/tools/draw9patch.html
http://forum.xda-developers.com/showthread.php?t=580351
If you are changing 9patch files, you have to decompile and recompile using the FrameWorkBuilder.
I prefer using the draw9patch tool, as it lets you check that the 9patch works as expected.
Spent enough time bashing my head against a brick wall trying to sort out 9patch files, so if I can spare anyone else that, feel free to post/PM..
I'll leave this post here for my recommendations that will be more complex when you need to modify xml files.
In short the procedure is a follows (this needs to be expanded)
unpack the apk to framework-res-UNPACKED dir
decompile the apk to framework-res-DECOMPILED (with apktools)
copy framework-res-MOD to framework-res-DECOMPILED
compile framework-res-COMPILED (with apktools)
unpack the compiled apk to framework-res-COMPILED (with 7za)
remove all the files that are present in framework-res-MOD from the framework-res-UNPACKED dir
remove the file resources.arsc from framework-res-UNPACKED
copy all files from framework-res-UNPACKED to framework-res-COMPILED
zip all files in framework-res-COMPILED to the new framework-res.apk
remove the resources.arsc from that apk file
readd the resources.arsc file without compression to the new apk file
Done
The reason this is so complex is that their are bugs in apktools and the signature needs to be preserved.
FrameWorkBuilder v0.3
README.txt
-------------------------------------------------------------------------------------------------------
Place the script FrameWorkBuilder.sh in a directory and execute.
The script will download all the needed tools.
Place framework-res.apk in the dir framework-res-STOCK
Place mods in framework-res-MOD follow the usual directory structure.
Example:
framework-res-MOD
framework-res-MOD/res
framework-res-MOD/res/drawable-hdpi
framework-res-MOD/res/drawable-mdpi
framework-res-MOD/res/drawable
Execute FrameWorkBuilder.sh to apply the mod.
Modded framework-res.apk will be stored in the directory framework-res-MODDED.
-------------------------------------------------------------------------------------------------------
Changelog
-------------------------------------------------------------------------------------------------------
v0.3 Added xml png duplication check to avoid that animations don't work. .9.png support
v0.2 Added mod checks Added compile failure test
v0.1a BUGFIX cp dirs
v0.1 Initial version
-------------------------------------------------------------------------------------------------------
Have fun modding.
wdl1908 said:
I'll leave this post here for my recommendations that will be more complex when you need to modify xml files.
If you don't mind we'll make it a joined tutorial. I have no time now it's time I got some sleep.
Click to expand...
Click to collapse
I have no idea about editing XML files, but that was the next thing on my "To learn" list. I would be very happy for you to add your knowledge to this thread.
Also, if anyone has info to add/corrections to make, please feel free.
Good stuff, guys. At the very least we can make this a three man party.
The more the merrier!
Guys, can I ask what device you're both using?
fisha21 said:
Guys, can I ask what device you're both using?
Click to expand...
Click to collapse
A101IT with archangel root
A70IT with chulri's root
fisha21 said:
The more the merrier!
Click to expand...
Click to collapse
well, if i can do something, i'm here ;-)
wdl1908 said:
A101IT with archangel root
A70IT with chulri's root
Click to expand...
Click to collapse
Cool, thanks. Also, can I ask how you're viewing the XML files? Every program I've tried won't open them - keep getting error messages about invalid character content.
woti23 said:
well, if i can do something, i'm here ;-)
Click to expand...
Click to collapse
Welcome...
fisha21 said:
Cool, thanks. Also, can I ask how you're viewing the XML files? Every program I've tried won't open them - keep getting error messages about invalid character content.
Click to expand...
Click to collapse
You have to decompile the framework-res.apk with the apktools then all is revealed.
I have an A43it, and I find it to use a mixture of the hdpi and mdpi drawables, it is quite odd how they have it. I am drawing this conclusion because I only changed the hdpi drawables, and some things (status bar pull down for one) stayed original. I am going to work some more on it later today and will update here. My method for pushing to the device uses adb like such:
Code:
adb push framework-res.apk /sdcard/framework-res.apk
adb shell
su
stop
cp /sdcard/framework-res.apk /system/framework/framework-res.apk
chmod 644 /system/framework/framework-res.apk (only needs to be done the first time, as the permissions will adopt those when replacing in the future)
start
This causes the device to do a little soft-reboot (does not perform a proper full shutdown/reboot) that is pretty quick, and avoids any f/c situations you may encounter replacing the file while the system is live.
Edit 2 - ok, I just plain old missed the drawables earlier, they are all in hdpi for the A43. Posting screenshots of what I have put together shortly.
daveid said:
My method for pushing to the device uses adb like such:
Code:
adb push framework-res.apk /sdcard/framework-res.apk
adb shell
su
stop
cp /sdcard/framework-res.apk /system/framework/framework-res.apk
chmod 644 /system/framework/framework-res.apk (only needs to be done the first time, as the permissions will adopt those when replacing in the future)
start
This causes the device to do a little soft-reboot (does not perform a proper full shutdown/reboot) that is pretty quick, and avoids any f/c situations you may encounter replacing the file while the system is live.
Click to expand...
Click to collapse
Great I was looking for that.
wdl1908 said:
[*]compile framework-res-COMPILED (with apktools)
Click to expand...
Click to collapse
Getting stuck on the above step. Have got a folder called framework-res-DECOMPILED. When I try to compile it, the first message I get is:
Code:
w:Could not find sources.
It then runs through the process throwing up multiple error messages, and at the end I am left with an empty Build folder. Any ideas? I read on the Apktool thread that you need to add a classes.dex file to apk that don't already have one?
Thought I'd try your method as my primitive version keeps resulting in faulty apk's the last day or two!
fisha21 said:
Getting stuck on the above step. Have got a folder called framework-res-DECOMPILED. When I try to compile it, the first message I get is:
Code:
w:Could not find sources.
Click to expand...
Click to collapse
No problem there thats only a warning.
fisha21 said:
It then runs through the process throwing up multiple error messages, and at the end I am left with an empty Build folder.
Click to expand...
Click to collapse
What error messages?
fisha21 said:
Any ideas? I read on the Apktool thread that you need to add a classes.dex file to apk that don't already have one?
Click to expand...
Click to collapse
What version of apktools do you have?
never needed any classes.dex in framework-res.apk
fisha21 said:
Thought I'd try your method as my primitive version keeps resulting in faulty apk's the last day or two!
Click to expand...
Click to collapse
I'll try to cleanup my script and post it soon.
I just found out we can have custom boot animations on our gen 8 devices.
search for some bootanimation.zip on the web or go to UOT Kitchen and download one from the kitchen. place it in the directory /data/customization/ and reboot. This works even for the stock firmwares with archangel root.
Enjoy
I've added the first version of my FramWorkBuilder script in the second post.
wdl1908 said:
I've added the first version of my FramWorkBuilder script in the second post.
Click to expand...
Click to collapse
Thanks for the hard work!
Gave it a run through but get the following error messages:
Code:
Applying MOD...cp: cannot stat `/home/sarju/FWB/framework-res-MOD/*': No such file or directory
and
Code:
Copy files from UNPACKED to COMPILED that are not modified...cp: cannot stat `/home/sarju/FWB/WorkSpace/framework-res-UNPACKED/*': No such file or directory
The script is located in the "FWB" folder.
fisha21 said:
Code:
Copy files from UNPACKED to COMPILED that are not modified...cp: cannot stat `/home/sarju/FWB/WorkSpace/framework-res-UNPACKED/*': No such file or directory
The script is located in the "FWB" folder.
Click to expand...
Click to collapse
yeah download the 0.1a version and try again.
wdl1908 said:
yeah download the 0.1a version and try again.
Click to expand...
Click to collapse
Ok, think I'm just being stoopid here. Ran the v0.1a, no error messages BUT
If I use the folder structure "framework-res-MOD>drawable-mdpi", the resulting apk just has the original contents of drawable-mdpi. If I use "framework-res-MOD>res>drawable-mdpi", the resulting pak has an empty drawable-mdpi folder.
fisha21 said:
Ok, think I'm just being stoopid here. Ran the v0.1a, no error messages BUT
If I use the folder structure "framework-res-MOD>drawable-mdpi", the resulting apk just has the original contents of drawable-mdpi. If I use "framework-res-MOD>res>drawable-mdpi", the resulting pak has an empty drawable-mdpi folder.
Click to expand...
Click to collapse
the structure should look like this.
Code:
framework-res-MOD
framework-res-MOD/res
framework-res-MOD/res/drawable-hdpi
framework-res-MOD/res/drawable-ldpi
framework-res-MOD/res/drawable-mdpi
framework-res-MOD/res/drawable
but make sure you remove empty dirs.
I suspect it has to do with empty dirs I'll check that....
Nope tthats not it.
can you zip up the files files-to-remove.txt and log.txt in the WorkSpace dir and post them or via pm if thats possible.

[Source] RENOVATE Gaming Boost + Modifying Tutorial

Hello guys,
Just thought i'd share the source code with you and a tutorial on how to modify it to work with a rom with a modified ondemand governor by default. Or if you wanna change the values altogether you will be able to do so.
Also if any other devs wanna modify it to look better or anything feel free, we are a community
Right first off your gonna need
Eclipse properly set up to work with android and OpenSense SDK (i will not go through how to do this, google is your friend for that)
The Source Code provided in this post
An APK signer
Patience because if your not experienced this could take a while
Tutorial:
First off extract the .zip somewhere on your pc
Then your gonna want to open Eclipse, go to File/New/Project.
From there expand the android folder and select "Android Project From Existing Code"
Click Here For ScreenShot
On the next screen where it says "Root Directory", point it to where you extracted the source folder to.
If you have done it correctly your screen should look like this:
Click Here For ScreenShot
Click finish and the project will be open.
From there, at the top left you will see a section saying "Package Explorer".
Underneath you will see "com.ondemand.gaming.boost.OnDemandGamingBoostActivity".
Click the arrow to open it up.
Once opened you will see a lot more options, the one we need to worry about is"src", so go ahead and open that one up.
You will see another 2 options, go ahead and open up "com.ondemand.gaming.boost".
From there you will see "OnDemandGamingBoostActivity.java", double click that and it will open in the main window.
Click Here For ScreenShot
Right the bit we are after is about halfway down, so just scroll down till you find this section of code.
Click Here For ScreenShot
From here you will see that this is where all the commands get executed.
"ShellInterface.runCommand" basically tells the app to run a command.
The top half is the values to revert back to when you disable gaming boost, this is shown by the "preference.setSummary("Gaming Boost Disabled");" at the end of the commands. (Most likely this is just the section you will be editing, but the same would apply if you was changing the optimized values)
From here its pretty much self explanatory, you edit the values to whatever you want them to revert back to after you disable gaming boost.
Make sure you edit all the values, some commands appear twice so make your you edit every instance of the value you see, a good way to check is to search for the old value when you think you have finished to see if you have missed it anywhere.
Please Note: They have to match whatever your ROM Dev uses in his ramdisk, contact him if you dont know what they are or check/modify his ramdisk yourself.
The last thing you need to edit is the file the app checks for before allowing the changes.
Above all the commands you will see "String ODGBState = SubActivities.readFile(ODGB_File + "/up_threshold", true);"
This basically means the app will check the value of "up_threshold" and if the value in the app doesn't match the value in the ramdisk the app won't work.
This is where things may get a little confusing.
The value for the checkfile for when the app is disabled is actually found in the second block of commands, where the optimized values are.
Just above the commands you will see "int iDisabled = 85;"
The "85" is the value of the up_threshold you have just modified in the previous steps, so change that to match what you tweaked it to.
Exporting the APK.
Once you have done all the editing you want to export the apk for use.
On the left hand side pane, the 3rd from the bottom in list you will see "AndroidMnifest.xml". Double Click it.
In the main windows about three quarters of the way down you will see the "exporting" tab. Click on "export an unsigned apk"
Choose a name and where you want to save the app and click save.
A pop up will come up when its saved.
From there all you need to do is sign the APK and push it to system/app, or include it in your ROM ZIP.
This may not be a 100% perfect tutorial but its worked for me, i'm still learning.
If anyone see's any errors please point them out.
Thank you.
SOURCE CODE

[Solved] BrowserGoogle.apk force stops when selecting "advanced" from settings

[Solved] BrowserGoogle.apk force stops when selecting "advanced" from settings
Hey!
Ok so I don't know where is the problem but when I decompile and recompile + sign BrowserGoogle.apk then it force stops in the settings advanced section. Any way to fix that issue?
I have edited nothing still same issue, but stock one works.
I used FJ apktools on Linux Ubuntu..
I have changed system language but stll the same problem,
I also tried it on Widows with Multi-apktool but for some reason that apk tool didn't put values-et folder to BrowserGoogle.apk/res/
EDIT: SOLVED!
At the risk of sounding amateurish, i thought you did not sign system.apks, since it would break them..
How current are the fj apktools? I know he's gone..
bodh said:
At the risk of sounding amateurish, i thought you did not sign system.apks, since it would break them..
How current are the fj apktools? I know he's gone..
Click to expand...
Click to collapse
Well I have resigned the app with FJ APKTOOL and I have also signed with android kitchen..
The FJ apktool that I use is v2.5

[ROOT HD 10] Enable advanced power menu (global actions) + my other framework mods!

*****ONLY WORKS FOR FIREOS 5.6.2.0 OR LOWER*****
The title says it all. I've activated the stock global actions power menu. The options need tweaking a bit still, but this was too good to wait.
For the moment, without an Xposed module, the stock options are: Airplane Mode, Settings, Lock Now, and volume. With Gravitybox, you can add power (might be stock. I noticed this after gravitybox was installed), restart (which leads to soft reboot, reboot, recovery reboot and boot loader reboot).
How?
One minor edit to the framework was all it took. The menu was disabled, the value set to 0. Change the value to 1, and you get the menu. Simply long press the power button for a couple of seconds and it will pop up.
I have been trying for so long to get this to work. I looked at the configuration dozens of times and didn't figure out what it meant until today. This needs a bit more work and can probably be added to my settings.apk, but that's for another day.
Requirements:
Rooted HD 10 on FireOS ***5.6.1.0 or 5.6.2.0****
Windows PC with ADB
Installation:
1. Download and install adbd insecure.
2. Download and place the attached framework-res.apk in your ADB folder and plug your tablet into your PC.
3. Open adbd insecure and check the top box to make adb insecure. Open an adb window and type the following, hitting enter at the end of each line:
Code:
adb remount
adb push framework-res.apk /system/framework/framework-res.apk
adb reboot
4. Long press power button. Score. :highfive:
P.S. This framework also contains all previous modifications. References:
How to guide: Enable 'ok Google' to work from ANY screen
[ROOT] [HD 10 2017] FireTabletSettings.apk Rewritten [August 22, 2018]
[FIRMWARE] [STOCK] Pre-rooted, optimized, stock firmware for HD 10 Suez [APRIL 2019]
[Root] [HD 10 Suez] Remove parental control applications/restrictions [May 2019]
[TEST] [Flash Zip] [HD 10] [ROOT] All-in-1: The ultimate hacks, tricks & mods zip
[Root] [App] [All tablets] Disable & replace lock screen - set custom wallpaper
NO ROOT REQUIRED: Working Screen Mirroring
UPDATE (for 5.6.1.0):
June 1, 2019
- Increased default system volumes from -6 db to 8
- Set preference for 5ghz wifi to false. Setting this to true only allows 5ghz connections. 2ghz are ignored if set to true.
- Fixed typo in time server I found in the system logs.
- Extend network attributes (I don't know if these actually work but doesn't hurt either way)
- Wpa_supplicant_scan_interval by default is set to 15000.... milliseconds. Raised value to 150000000. This may have been the cause of disconnects on a constant level.
- preferences prefer dual pane set to true
- Bar separating notifications from system messages was narrow (set to true). Set it to false.
- Low battery warning is now 10% instead of 25%. Extreme low battery warning (almost dead battery) set at 5%
DragonFire1024 said:
The title says it all. I've activated the stock global actions power menu. The options need tweaking a bit still, but this was too good to wait.
For the moment, without an Xposed module, the stock options are: Airplane Mode, Settings, Lock Now, and volume. With Gravitybox, you can add power (might be stock. I noticed this after gravitybox was installed), restart (which leads to soft reboot, reboot, recovery reboot and boot loader reboot).
How?
One minor edit to the framework was all it took. The menu was disabled, the value set to 0. Change the value to 1, and you get the menu. Simply long press the power button for a couple of seconds and it will pop up.
I have been trying for so long to get this to work. I looked at the configuration dozens of times and didn't figure out what it meant until today. This needs a bit more work and can probably be added to my settings.apk, but that's for another day.a
Requirements:
Rooted HD 10 on FireOS ***5.6.1.0*** (5.6.2.0 comes soon. Possibly 5.3.x.x)
Windows PC with ADB
Installation:
1. Download and install adbd insecure.
2. Download and place the attached framework-res.apk in your ADB folder and plug your tablet into your PC.
3. Open adbd insecure and check the top box to make adb insecure. Open an adb window and type the following, hitting enter at the end of each line:
Code:
adb remount
adb push framework-res.apk /system/framework/framework-res.apk
adb reboot
4. Long press power button. Score. :highfive:
Click to expand...
Click to collapse
I have updated to the latest, 5.6.3.0 (erroneously called 5.3.6.4). I guess it is risky to do this until someone tries it and says it works? I've been using retyre's prerooted installs for the last couple of releases. So if this screws things up, I would have to adb sideload and root again, which I'd like to avoid.
Ignoring that issue, can the file just be copied into the correct folder with a file manager since I'm already rooted?
sga999 said:
The title says it all. I've activated the stock global actions power menu. The options need tweaking a bit still, but this was too good to wait.
For the moment, without an Xposed module, the stock options are: Airplane Mode, Settings, Lock Now, and volume. With Gravitybox, you can add power (might be stock. I noticed this after gravitybox was installed), restart (which leads to soft reboot, reboot, recovery reboot and boot loader reboot).
How?
One minor edit to the framework was all it took. The menu was disabled, the value set to 0. Change the value to 1, and you get the menu. Simply long press the power button for a couple of seconds and it will pop up.
I have been trying for so long to get this to work. I looked at the configuration dozens of times and didn't figure out what it meant until today. This needs a bit more work and can probably be added to my settings.apk, but that's for another day.a
Requirements:
Rooted HD 10 on FireOS ***5.6.1.0*** (5.6.2.0 comes soon. Possibly 5.3.x.x)
Windows PC with ADB
Installation:
1. Download and install adbd insecure.
2. Download and place the attached framework-res.apk in your ADB folder and plug your tablet into your PC.
3. Open adbd insecure and check the top box to make adb insecure. Open an adb window and type the following, hitting enter at the end of each line:
I have updated to the latest, 5.6.3.0 (erroneously called 5.3.6.4). I guess it is risky to do this until someone tries it and says it works? I've been using retyre's prerooted installs for the last couple of releases. So if this screws things up, I would have to adb sideload and root again, which I'd like to avoid.
Ignoring that issue, can the file just be copied into the correct folder with a file manager since I'm already rooted?
Click to expand...
Click to collapse
There was one report of it working a week or two ago. No one has said anything since. If it doesn't work, worst case is you need to flash back to 5.6.x.x
DragonFire1024 said:
There was one report of it working a week or two ago. No one has said anything since. If it doesn't work, worst case is you need to flash back to 5.6.x.x
Click to expand...
Click to collapse
1. If it fails, and I'm unable to boot, I will have to redo the sideload of the bin file. Then I have to reroot. As I said, I've just been using the prerooted version for the last couple of releases which means I don't have to go through extra steps to root. Since I am rooted, I just use Flashfire to flash the new prerooted version by retyre.
2. I was asking about copying the framework file that you put out there. If I ignore the problems of it possibly messing up my system, and I just want to try it anyway, why is it necessary to use Adb insecure and the PC? Since I'm rooted, can't your framework file just be copied to the correct folder?
3. Finally, can you tell me exactly what you changed in the framework? In your other thread about modifying the framework, you give some good instructions on how to decompile and recompile. I might want to try that instead of using the version that you have created here (since I'm on 5.6.3.0). Is it really just one boolean that needs to be changed?
sga999 said:
1. If it fails, and I'm unable to boot, I will have to redo the sideload of the bin file. Then I have to reroot. As I said, I've just been using the prerooted version for the last couple of releases which means I don't have to go through extra steps to root. Since I am rooted, I just use Flashfire to flash the new prerooted version by retyre.
2. I was asking about copying the framework file that you put out there. If I ignore the problems of it possibly messing up my system, and I just want to try it anyway, why is it necessary to use Adb insecure and the PC? Since I'm rooted, can't your framework file just be copied to the correct folder?
3. Finally, can you tell me exactly what you changed in the framework? In your other thread about modifying the framework, you give some good instructions on how to decompile and recompile. I might want to try that instead of using the version that you have created here (since I'm on 5.6.3.0). Is it really just one boolean that needs to be changed?
Click to expand...
Click to collapse
1. Yes
2. With a root explorer yes.
3. For this? An integer was all. Everything else? That's too much to type. Honestly I spend hours and days reading them testing and mostly failing. I can't tell you the amount of bookmarks i have, maybe close to 500 or more. A lot of times I have to mix together old tricks. you spend most time reading than anything.
DragonFire1024 said:
1. Yes
2. With a root explorer yes.
3. For this? An integer was all. Everything else? That's too much to type. Honestly I spend hours and days reading them testing and mostly failing. I can't tell you the amount of bookmarks i have, maybe close to 500 or more. A lot of times I have to mix together old tricks. you spend most time reading than anything.
Click to expand...
Click to collapse
I don't understand your answer to 3. I'm just interested in what you changed in the framework-res to get the advanced power menu. You said it's just an integer. If I decompile framework-res.apk, where is the integer that must be changed? When you said "everything else", maybe you mean all your changes in the thread about hacks, tricks, and mods? I'm not asking about those. I'm only asking about the advanced power menu that you are talking about in this thread.
sga999 said:
I don't understand your answer to 3. I'm just interested in what you changed in the framework-res to get the advanced power menu. You said it's just an integer. If I decompile framework-res.apk, where is the integer that must be changed? When you said "everything else", maybe you mean all your changes in the thread about hacks, tricks, and mods? I'm not asking about those. I'm only asking about the advanced power menu that you are talking about in this thread.
Click to expand...
Click to collapse
If you decompile it, it would be in res/values/integers. The config would be (paraphrasing) 'long_press_on_power'. Since in this AOSP framework the global actions are active, you have a choice of values of 0 or 1. 0 being no action, 1 being the action. It's a few lines away from 'long_press_on_home' which is supposed to be between 0 and 3. 2 would activate the voice assist. But for some reason I haven't figured out, setting that value does nothing one way or the other but gravitybox fixes it.
You can change around the global action menu too I saw, but didn't have time to experiment with that yesterday.
@DragonFire1024
Nice hack! Like your new power menu - always wanted something like that!
Now, given that it'd be such a burden to update this for every FireOS version, any chance you'd take a stab at putting this together as an Xposed module? Other rooted Fire tablets could use it too.
I recall sometime in the past there were modules designed for FireOS - if you find that on XDA, you could start from that one.
DragonFire1024 said:
If you decompile it, it would be in res/values/integers. The config would be (paraphrasing) 'long_press_on_power'. Since in this AOSP framework the global actions are active, you have a choice of values of 0 or 1. 0 being no action, 1 being the action. It's a few lines away from 'long_press_on_home' which is supposed to be between 0 and 3. 2 would activate the voice assist. But for some reason I haven't figured out, setting that value does nothing one way or the other but gravitybox fixes it.
You can change around the global action menu too I saw, but didn't have time to experiment with that yesterday.
Click to expand...
Click to collapse
Here's what is in my integers.xml file for 5.6.3.0. Are you saying I need to change 2 to 1 in the first one? And no changes to the others?
<integer name="config_longPressOnPowerBehavior">2</integer>
<integer name="config_shortPressOnPowerBehavior">1</integer>
<integer name="config_doublePressOnPowerBehavior">0</integer>
<integer name="config_triplePressOnPowerBehavior">0</integer>
@DragonFire1024, Have you edited smalis? It is for do it in the framework-res.apk of another tablet.
sga999 said:
Here's what is in my integers.xml file for 5.6.3.0. Are you saying I need to change 2 to 1 in the first one? And no changes to the others?
<integer name="config_longPressOnPowerBehavior">2</integer>
<integer name="config_shortPressOnPowerBehavior">1</integer>
<integer name="config_doublePressOnPowerBehavior">0</integer>
<integer name="config_triplePressOnPowerBehavior">0</integer>
Click to expand...
Click to collapse
Correct. First config set to 1 and leave the others as is, unless you want to test them out.
Rortiz2 said:
@DragonFire1024, Have you edited smalis? It is for do it in the framework-res.apk of another tablet.
Click to expand...
Click to collapse
I have not. I rarely touch that at least not Amazon smali. It doesn't translate well at all. And haven't really had to so far. And the framework is odexed...well the .jar in system/framework is, so they don't have smalis.
bibikalka said:
@DragonFire1024
Nice hack! Like your new power menu - always wanted something like that!
Now, given that it'd be such a burden to update this for every FireOS version, any chance you'd take a stab at putting this together as an Xposed module? Other rooted Fire tablets could use it too.
I recall sometime in the past there were modules designed for FireOS - if you find that on XDA, you could start from that one.
Click to expand...
Click to collapse
I was thinking about that however if gravity box works to bring out the rest (reboot etc) I imagine other power menu modules will also work now.
DragonFire1024 said:
I was thinking about that however if gravity box works to bring out the rest (reboot etc) I imagine other power menu modules will also work now.
Click to expand...
Click to collapse
Gravity box might work - AFTER your framework-res.apk replacement (which needs updating after each OS version). As is, for me Gravity does not bring anything out beyond the stock "Power off" option. It seems a module could simply patch framework with the correct flag, and then Gravity will do its thing. Same logic would apply to other features that Amazon might have chosen to disable.
bibikalka said:
Gravity box might work - AFTER your framework-res.apk replacement (which needs updating after each OS version). As is, for me Gravity does not bring anything out beyond the stock "Power off" option. It seems a module could simply patch framework with the correct flag, and then Gravity will do its thing. Same logic would apply to other features that Amazon might have chosen to disable.
Click to expand...
Click to collapse
Install framework in OP then you need to enable the advanced power menu in gravitybox, power tweaks. Then long press power button, tap restart, then you get your options for reboot.
Rortiz2 said:
@DragonFire1024, Have you edited smalis? It is for do it in the framework-res.apk of another tablet.
Click to expand...
Click to collapse
Also for the most part Amazon just moved configurations around maybe changed a few characters or couple of words. But for the most part a significant portion if not almost all of the Android source for this version was left inside these files. There are very few things I actually had to rebuild. The battery stats is one of those things. Other things are more difficult and require other pieces of software, for example specific apks. That took quite a lot of time to hunt down working versions of certain apks. Remember we are working with what is considered a stone age OS version. So we have to literally search for needles and haystacks just to find the one tiny thing that makes it all work... Well at least some of it
Gosh, I tried for a long time to decompile/recompile framework-res.apk (5.6.3.0)...no luck! I'm using your instructions in post 2 in the 7 wallpaper thread as a guideline. I can decompile successfully. Then, even without making any changes at all, recompile does not work. I won't bother to put the error display here unless you're interested. (systemui.apk fails on the recompile also, but in a different way). A "regular application" will decompile and recompile just fine.
So I have no idea what's wrong. I do have xposed/gravitybox installed, and I wonder if that causes the problem (but it sounds like have those also?). Or some change to 5.6.3.0 that you did not encounter with prior releases. I'm wondering if you can upload your framework-res.apk somewhere so that I can try that. At least that would narrow it down to the new release or my error.
There are lots of posts about this kind of problem, but they mostly talk about wrong paths, etc. That is definitely not my issue.
I had downloaded the most recent apktool, 2.3.4. Just for fun, I just tried 2.2.0. There are 4 warnings, but otherwise, it worked. I haven't tried to install the new framework, so I can't be sure all is okay, but it's certainly a good sign. I will also try more recent versions of apktool, i.e. ones between 2.2.0 and 2.3.4, and see where it went wrong.
EDIT: 2.3.2 and earlier are good, 2.3.3 and 2.3.4 are bad.
---------- Post added at 04:58 PM ---------- Previous post was at 04:55 PM ----------
If it ain't one thing, it's another! After changing the integer, I'm trying to drag and drop with 7zip from the new apk to the old, as you described in your other thread. For resources.arsc, it works as you said, i.e. it asks if I'm sure I want to copy. But for the res folder, it doesn't ask me anything and just starts extracting into the old. I cancel it before it can complete.
Do you recall doing something different for the res folder? I could be on a different 7zip version than you, of course. I've used 7zip, but I'm not that familiar with it.
EDIT2: I don't think a notification is done if my edit gets combined with my prior post. I tried both reply and quick reply, and both ended up combining. Can someone tell me how to make it do a new post? Or maybe I'm wrong and another notification occurs, in which case, ignore this!
sga999 said:
I had downloaded the most recent apktool, 2.3.4. Just for fun, I just tried 2.2.0. There are 4 warnings, but otherwise, it worked. I haven't tired to install the new framework, so I can't be sure all is okay, but it's certainly a good sign. I will also try more recent versions of apktool, i.e. ones between 2.2.0 and 2.3.4, and see where it went wrong.
EDIT: 2.3.2 and earlier are good, 2.3.3 and 2.3.4 are bad.
---------- Post added at 04:58 PM ---------- Previous post was at 04:55 PM ----------
If it ain't one thing, it's another! After changing the integer, I'm trying to drag and drop with 7zip from the new apk to the old, as you described in your other thread. For resources.arsc, it works as you said, i.e. it asks if I'm sure I want to copy. But for the res folder, it doesn't ask me anything and just starts extracting into the old. I cancel it before it can complete.
Do you recall doing something different for the res folder? I could be on a different 7zip version than you, of course. I've used 7zip, but I'm not that familiar with it.
EDIT2: I don't think a notification is done if my edit gets combined with my prior post. I tried both reply and quick reply, and both ended up combining. Can someone tell me how to make it do a new post? Or maybe I'm wrong and another notification occurs, in which case, ignore this!
Click to expand...
Click to collapse
Lol it's going to take a bit to get used to everything. I actually had messed around with apktool when I first started all this and got so frustrated I just stopped trying. 6 months after that I tried again and it took me a week or so before I successfully compiled and installed a system apk. My initial goal was to use this method to try and trick a non rooted tablet into thinking it was installing an update to a system app. Though it worked on rooted devices, I could never get it to work for non rooted ones. Don't give up,keep trying and re check everything, especially make sure your PATH to the proper tools is correct. I'll look at the latest fireOS framework tomorrow.
P.S. without any further modifications, I tested APM+ Xposed module and it works too. You can add and remove all the optioions plus add different ones depending on the module. No further tweaking needed on my end.
Okay, when dragging and dropping res, it does finally ask if I really want to copy AFTER it takes quite a while "extracting". I was confusing extracting with unzipping or unpacking...or some other term that would imply it was changing the format. I'm still not sure if it's doing it properly, but I'll keep trying. And I'd still like to know how to make these combined posts cause a notification, and if not, how can I force it to.

Categories

Resources