[Q] Compiling 9-patch in framework-res - Droid Incredible Q&A, Help & Troubleshooting

In attempts to do a bit of my own theming, I've begun looking around for info on how to create 9 patch images (.9.png). I've successfully created them and understand the whole stretching and content thing, but I can't figure out how to compile the images so that the 1 pixel border isn't part of the image.
For now, I am working off of Manup's INCredibile rEVOlution theme and just replacing some stuff that I'd like to start out with. I've tried a couple of things which may sound retarded to those that know what they're doing with this stuff, including manually adding the new 9-patch to the framework-res.apk with aapt.exe, along with extracting the apk, replacing the old image with my new 9-patch then building a whole new apk using apkbuilder.bat. Each time the image gets added to the archive successfully, but neither of these compile it and the 1 pixel border is still visible on the image.
I've read about decompiling the framework somehow and rebuilding it but A) I'm not sure if that's really necessary and B) am not quite sure how to do it anyway. I've tried creating a new android project in eclipse using the source of the extracted framework-res.apk, but I can't create the project because it can't parse the AndroidManifest.xml file.
Is there some sort of tool available that can simply be executed on a newly created .9.png to compile it into an image that is can be easily inserted into framework-res.apk? Any insight would be greatly appreciated!

Ok, so I got all excited thinking I figured this out and was good to go with all my future .9.png editing, but I'm still getting a boot loop when I push framework-res.apk back onto my phone. I have already replaced regular .png files and pushed successfully, so I know it's gotta be something with the .9.png file I am trying to edit and not the signing/pushing process.
The steps I used to edit and get the file back on the phone are:
1. Create new png file in Photoshop with the same dimensions as the existing .9.png to be replaced (478x46).
2. Save the file as .png (tried both regular save and Save for Web/Devices as PNG-8 which I read somewhere)
3. Open with draw9patch
4. Add one pixel on the left side and one pixel on the top for stretchable areas (I have tried with and without lines for content on the right and bottom)
5. File -> Save 9-patch (Creates new .9.png, dimensions 480x48)
6. Create new eclipse project from sample project source
7. Insert new .9.png into res/drawable (also tried res/drawable-hdpi)
8. Right click root project folder -> Android Tools -> Export Unsigned Application Package
9. Open sample apk with winRAR, extract my new .9.png (dimensions are once again 478x46)
10. Open framework-res.apk and replace current .9.png with mine
11. Resign framework-res.apk
12. Push framework-res.apk to /system/framework in recovery
Could anyone tell me what I am doing wrong in this process? I figured originally since the image wasn't compiled it was causing a boot loop. But now that I've figured out how to compile them, it still happens!

Yup, those 9-patches can be realllllyyy annoying. You have to be careful.
This is what works for me:
1. Get APKManager. (google it. It's here on xda somewhere)
2. Follow directions to install it.
3. Decompile apk.
4. Go to 'out' and find the image you want to edit.
5. (Assuming it's a 9-patch) Edit with GIMP or PS, but DO NOT TOUCH THE 1px BORDER. You can delete it or whatever, but make sure it's the same after you save it. (Pure black 1px)
6. Recompile apk.
7. Done!
One more warning, do NOT open any 9-patch images. (unless decompiled) It will mess up the metadata.
Hope that helps!

I had downloaded APKManager previously and messed with it a bit, but didn't think it could ultimately help me. That being said, I'm having some issues trying to do what you suggested:
1. Place unmodified framework-res.apk into "place-apk-here-for-modifying"
2. Decompile apk (Success)
*I don't have an 'out' directory, but everything is extraced into 'projects\framework-res.apk' so I'm guessing that's where you mean.
3. Edit status_bar_close_on.9.png in Photoshop, retaining the existing 1px border
4. Recompile apk (Here's the big issue)
APKManager says "Building Apk" and then gives me this message: "An Error Occured, Please Check The Log (option 21)" Press any key to continue
I press a key and it then asks, "Is this a system apk? (y/n)"
If I enter 'y', it is followed by: "Aside from the signatures, would you like to copy over any additional files that you didn't modify from the original apk in order to ensure least # of errors (y/n)"
The best combination of answering these questions I've seen is yes it's a system file and yes to copy files from the original. This creates a folder called 'keep' and instructs to delete anything I've modified. I assumed that was so that it would take any missing files from 'keep' and replace them with the modified file of the same name in 'projects\framework-res.apk', but when I delete from 'keep' the file is just missing from the new apk that is created.
When I answer no it is not a system apk, I don't see a new apk created and the original one is still unchanged containing the original image.
Answering yes it's a system file and no to copy files from original, I just get an apk with 'META-INF'.
I tried replacing the image during the whole "keep" process instead of deleting the old one, and that put it in the new apk but it still has the 1px border.
I also noticed that inside 'projects\framework-res.apk' there is a 'build\apk' folder which is empty. Not sure if I need to put something in there or what.
When I check the log, it starts with:
java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b07)
Java HotSpot(TM) Client VM (build 17.0-b17, mixed mode, sharing)
Could Not Find C:\Users\Zach\Desktop\DroidStuff\APKManager\place-apk-here-for-modding\../place-apk-here-for-modding/signedframework-res.apk
Could Not Find C:\Users\Zach\Desktop\DroidStuff\APKManager\place-apk-here-for-modding\../place-apk-here-for-modding/unsignedframework-res.apk
I: Loading resource table...
I: Decoding resources...
W: Cant find 9patch chunk in file: "drawable-hdpi-v4/status_bar_item_app_background_normal.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "drawable-hdpi-v4/status_bar_item_background_normal.9.png". Renaming it to *.png.
W: Cant find 9patch chunk in file: "drawable-hdpi-v4/status_bar_header_background.9.png". Renaming it to *.png.
I: Copying assets and libs...
W: Could not find sources
I: Checking whether resources has changed...
I: Building resources...
libpng error: Read Error
ERROR: Failure processing PNG image C:\Users\Zach\Desktop\DroidStuff\APKManager\other\..\projects\framework-res.apk\res\drawable-hdpi\status_bar_header_background.9.png
libpng error: Read Error
ERROR: Failure processing PNG image C:\Users\Zach\Desktop\DroidStuff\APKManager\other\..\projects\framework-res.apk\res\drawable-hdpi\status_bar_item_app_background_normal.9.png
libpng error: Read Error
ERROR: Failure processing PNG image C:\Users\Zach\Desktop\DroidStuff\APKManager\other\..\projects\framework-res.apk\res\drawable-hdpi\status_bar_item_background_normal.9.png
Then there's a ton of entries that look like this for every single png:
C:\Users\Zach\Desktop\DroidStuff\APKManager\other\..\projects\framework-res.apk\res\values\public.xml:2690: error: Public symbol drawable/activity_title_bar declared here is not defined.
And ends with:
Exception in thread "main" brut.androlib.AndrolibException: brut.common.BrutException: could not exec command: [aapt, p, -F, C:\Users\Zach\AppData\Local\Temp\APKTOOL1864619025913287067.tmp, -x, -S, C:\Users\Zach\Desktop\DroidStuff\APKManager\other\..\projects\framework-res.apk\res, -M, C:\Users\Zach\Desktop\DroidStuff\APKManager\other\..\projects\framework-res.apk\AndroidManifest.xml]
at brut.androlib.res.AndrolibResources.aaptPackage(Unknown Source)
at brut.androlib.Androlib.buildResourcesFull(Unknown Source)
at brut.androlib.Androlib.buildResources(Unknown Source)
at brut.androlib.Androlib.build(Unknown Source)
at brut.androlib.Androlib.build(Unknown Source)
at brut.apktool.Main.cmdBuild(Unknown Source)
at brut.apktool.Main.main(Unknown Source)
Caused by: brut.common.BrutException: could not exec command: [aapt, p, -F, C:\Users\Zach\AppData\Local\Temp\APKTOOL1864619025913287067.tmp, -x, -S, C:\Users\Zach\Desktop\DroidStuff\APKManager\other\..\projects\framework-res.apk\res, -M, C:\Users\Zach\Desktop\DroidStuff\APKManager\other\..\projects\framework-res.apk\AndroidManifest.xml]
at brut.util.OS.exec(Unknown Source)
... 7 more

Hmm... it sounds like quite a few of the 9-patch files are corrupted. Looking at the error log, it seems as if you have some 9-patch files that "aren't 9-patch"ed. That is, you opened the compiled 9-patch, or somehow corrupted it.
Are you sure it's an unmodified framework-res.apk? Try pulling the one from your phone (assuming it's running), or download your ROM again.
PS Don't worry about all the errors. I know it looks scary, but the rest of the errors are caused by the failed compilation of those 9-patches.

It has been modified from the standpoint that it is Manup's INCredible rEVOlution theme and not stock, but it runs on my phone. However, I think I may have just discovered something really stupid on my part.
Instead of restoring my nandroid when it didn't work, I decided "hey, why don't I repush this unmodified backup framework I have and save 15 minutes!" I pushed that and it still boot looped, so I think somewhere along the line I overwrote my backup/file I was using as a base, with something that doesn't work. Ugh! I must have at some point a while ago opened those png's that are corrupted, because I see they are all related to the status bar, which is what I'm trying to modify, I haven't touched them recently though.
I'm now in the middle of a long txt conversation with someone so it'll have to wait, but I think I should be good to go using my previous method and a freshly pulled framework-res.apk, possibly using the decompiled 9-patch from APKManager in place of mine created from scratch.
I'll let you know how it goes when I get around to it!
Edit: I pulled the current working framework off my phone and got the same errors on those png's with APKManager. I tried making the edit and pushing again anyway, didn't work. Re-pushing the unmodified one (which I'm sure was unmodified, as far as since I pulled it just now) boot looped still. Something obviously got messed up somewhere, but I'm confused why it runs on my phone, but when I re-push it, it stops working. So I guess I'll try a fresh download again later and see how it goes. If that doesn't work, then I'm just completely lost =/

Yeah, so I'm pretty lost on this. I downloaded a fresh copy of the framework-res.apk from the INCredible rEVOlution theme and I still can't get it to work.
I've tried making a status_bar_close_on.9.png from scratch with draw9patch as well as overwriting the decompiled status_bar_close_on.9.png from the apk, thinking maybe there was a conflict with something in xml when I changed the stretchable areas by making my own (I don't know much about the xml so I'm trying to avoid touching it for now).
Since APKManager is still giving me re-compiling errors, I used my previous method of compiling the image (both mine and the original decompiled one) by putting it in a res/drawable folder within an eclipse project and exporting, which appears to work since the dimensions shrink from 480x48 to 478x46 after it's done. This is the original dimensions of the .9.apk I pulled.
The only thing I can think of is maybe the file size? My png is 13k before I compile it, and then becomes 31k. The original status_bar_close_on.9.png is around 4k.

Seems like we need to do some debugging.
Try (in this order):
1. Flashing the umodified framework-res.apk. If it's good, then go on. If not, then it's the theme's fault.
2. Decompile the umodified framework-res.apk. Recompile it. Are there errors? If yes, then it's APKManager's fault and you should try APKtool. If no errors, then it's something about your editing.
Try those two steps, then report back! =]

The unmodified theme works fine, so I tried decompiling and recompiling it and gave the same errors. apktool gives me the same errors as APKManager, so it's not the fault of APKManager but rather the SDK tools it uses to do its job, or rather the theme itself.
However, I decided to try replacing the framework-res.apk inside of the original .zip file for the theme and flashing that instead of pushing it through adb. For whatever reason, that worked! Now that I think of it, the standard .png images I replaced previously were in com.htc.resources.apk and not the framework-res.apk. So I guess the phone doesn't like the framework being pushed through adb.

Thanks for the tip re: APKManager. I'm going to give that a shot. Seems less cumbersome than the 9Patch tool/Eclipse/Unzip approach I'm currently using.

I have been extremly unsuccessful with 9patch images until I found the attached
1) Extract the contents to any folder
2) Look in the \Originals\res\drawable-hdpi folder and you will see a sample I left in there.
3) After edits (I use Gimp) just run the xUltimate-d9pc.exe
4) Look in the done\Originals\res\drawable-hdpi and you will see the new output patched image.
5) Copy your outputs images to the appropriate folder in the apk. either by:
a. dragging the images to the folder within the archive (I use 7Zip) or
b. first extract the res folder to the PC and make your edits there then
drag the whole folder back into the archive.
EDITING NOTES:
1) The image that you use as input has to be 2x2 pixels bigger than the final 9patch image you want for the "stretch marks" along the sides and top.
2) Look at the sample I provided and basically the solid black marks on the right, bottom, left and top will work for most images but you can experiment.
3) The marks (patches) MUST be solid black
Enjoy

NilsP's xUltimate headache cure
@NilsP
Thank you very much for the xUltimate-9Patch.zip, it worked perfectly.
I have tried a couple of other xUltimate downloads but ended up with either bad .9.png's after compiling with APKmanager or simply just errors when running the .exe inside the xUltimate folder.
I am going to be flashing a new Desire HD rom onto my Desire very soon and can not wait to edit some fresh, uncorrupted .9.png's knowing I will not get errors from APKmanager.

Hi, I wonder if you´re still there! I would like to make my phone dialer transparent, understand that therefor I have to work on .9.pngs in drawable-sw320dp-hdpi of secphone.apk. But I run into various problems. First there are lots of .9.pngs, then I thought I´d begin with *bg.9.pngs and there came my first surprise. xUltimate-9Patch says even when compiling the original ones that there are errors ... So how could I proceed? If you could answer I´d really appreciate it!!! Thanks!

NilsP said:
I have been extremly unsuccessful with 9patch images until I found the attached... xUltimate-d9pc.exe ...
Click to expand...
Click to collapse
FYI, many AVs have started tagging xUltimate-d9pc.exe as a trojan. I'm not smart enough to know if it's a false positive though:
https://www.virustotal.com/en/file/...2db2aef519e3a80cd991fab1a513438a638/analysis/

Related

[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.

Decompile/Recompile Jellybean APK's

Ok everyone, this is my first tutorial that I am ever putting out and I will try to be as thorough as possible. This tut is not so much for the people that dont know much about android, it is more for the people that understand most of it already. But as always feel free to read through it and start learning as most of us around here have! So without further a do lets get started!!
FIrst you need 7-zip!!! So go install it!!
So first, the first thing you need to do is go to this link and download the apktools and aapt that are in the zip:http://www.mediafire.com/?acrgcd0w850q0gj
After you extract this zip you will have a folder with all the tools we will need to do this!!!! Now, if you are doing this then you probably already have done it on Ice Cream Sandwich or Gingerbread. So the next thing we need to do is remove your "Environmental Variables". Environmental Variables are basically the commands that you can run in command prompt from any folder on the computer. If you have the android sdk or previously have tried to decompile and compile Apk's chances are you have the setups in the Environmental Variables.
Remove Unneeded Environmental :
1)Hit the start menu on the bottom left hand corner of Windows
2)Right-Click on Computer and select Properties
3)On the top left-hand corner select Advanced System Settings
4)A window comes up and select the button that says "Environmental Variables"
5)In the window that comes up there is two boxes. We are going to edit the bottom one labed "System Variables". Now grab the scroll bar and look for the variable Path. It should be under OS and above PATHEXT. Double-Click "Path" Variable
NOTE: Each path ends in a ";"
6) So now you will need remove every instance that would point to anything android related. For example one is "C:\SDK\platform-tools\;" If it has this then apktools will run the aapt.exe from that platform-tools folder instead of the one that is provided in the zip.
ALTERNATIVE: An alternative would be to delete the aapt that you have in your folder that you have in your Path System Variable.
I know this was not very clear but I again this is for the users a bit more advanced.
-------------------------------
DECOMPILE/COMPILE SystemUI.apk and other Apk's. EXCEPT framework-res.apk
Ok, you can do this however you want but for this tut I am going to extract apktools.zip and place the folder on my desktop. So we're going to open the folder and then place the APK we want to edit along with a JELLYBEAN framework-res.apk into the folder. For example if you want to edit a CM10 "SystemUI.apk" then you will pull the framework-res.apk from /system/framework/ folder nd place it in your desktop JBapktools folder.
Once you have both SystemUI.apk and framework-res.apk inside the JBapktools folder we are ready to start. First rename either one of these files "apktool149.jar" "apktool142.jar" "apktool144.jar" to just apktool.jar. REMEMBER only rename ONE cus we need to keep track of the versions of the apktools.
Next, bring up the folder window and anywhere on the white space hold SHIFT and Right-Click. Then youre going to choose open command window here.
The first command is going to be: java -jar apktool.jar if framework-res.apk
This is going to install the framework.
Now close out the window.
Next go back to the folder and make sure you rename the jar file you renamed earlier back to its original name. For example if you have apktool144.jar and apktool149.jar in the folder then you must rename apktool.jar to apktool142.jar because that is its original and actual version number.
To decompile and recompile SystemUI.apk you need apktool149.jar so once all three are named to their real names then rename apktool149.jar to apktool.jar.
Now,YOU ARE READY!!! Finally.
Again, In the folder SHIFT +Right-Click and select open command window here.
the command to decompile is: java -jar apktool.jar d SystemUI.apk
---------------------------------------------------------------------------------------
Then hit enter you should see something like this:I: Baksmaling...
testI: Loading resource table...
I: Loaded.
I: Loading resource table from file: C:\Users\Jose\apktool\framework\1.apk
I: Loaded.
I: Decoding file-resources...
I: Decoding values*/* XMLs...
I: Done.
I: Copying assets and libs...
---------------------------------------------------------------------------------------
Of course it wont say Jose but it will say your User Accounts name.
Now in the folder you should see another folder in there called SystemUI. Now its DECOMPILED!!!!! WHOOOOO!!!!!!
You can make your edits and edit the pngs and xmls or the smali or whatever your guru-self wants to do.
Now to RECOMPILE!!!!!
To recompile we will still be using apktool149.jar so no need to rename anything back or whatever.
The first thing you should do is open the SystemUI.apk in 7-zip. You can right-click SystemUI.apk and in there, there should be a META-INF folder and a AndroidManifest.xml file. Select both of these be selecting one first(should be highlighted blue) the holding down Cntrl button and selecting the other file. Now that they are both selected click and drag out to apktools folder. We will need these files in a little bit.
Next in the command prompt window, or if you closed it, the reopen by SHIFT+Right-Click and selecting open command window here. The command to decompile is:
java -jar apktool.jar b SystemUI
NOTE:Make sure you use the letter "b" and dont add .apk to the end of it as we are recompiling the FOLDER and not an actual apk file like we do when decompiling.
It should say something like this:
I: Checking whether sources has changed...
I: Smaling
I: Checking whether resources has changed...
I: Building resources...
I: Building apk file...
Sounds very sexy when reading it I know but we aren't done yet. Remember the META-INF Folder and the AndroidManifest.xml file we pulled out earlier. Ok from the apktools folder select both files again by using Ctrl button. Now type Ctrl C. This will COPY these files to the clipboard. Now that we have the files copied go into SystemUI FOLDER and then go into build folder and then into apk folder. To make it look more neat navigate to /Desktop/apktools/SystemUI/build/apk/ . Now that you are in the apk folder hit Ctrl V. This will PASTE the META-INF and AndroidManifest.xml file into the folder. If a window comes up just choose COPY AND REPLACE.
Last thing to do before we can compile is to go into /SystemUI/dist/ and delete the apk file that is there. The recompiling process is almost complete!!! Go back to command prompt window and just push the ARROW UP on the keyboard. This should bring up the last command you typed in. If its not there then just type it in again:
java -jar apktool.jar b SystemUI
The final apk file should be in SystemUI/dist/ folder!!!!
If you are having any aapt problems then you probably still have a path in Environment Variables that has an aapt.exe in it. Other than that askk and I'm sure myself or someone else can help!!
I will be putting up the how to decompile/recompile framework-res.apk in 2nd post tomorrow or soon because I dont have time right now. The process is different. Have fun themeing and doing whatever it is you do!!!
Added a donate link guys. I'm only 16 so I can't say buy me a beer! So how bout half a gallon of gas? That would be great. Let me know if you donated to I can thank you and put you in my posts!! I have a passion for doing these things so I do not expect any donations from anyone. I do it because I love it and can't get enough of it!! Thanks everyone for being supportive
Donations: Marcismo55
https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=GL7RKF2EGCH68
FUERRER!!!
1 more just in case
nice
Sent from my Axiom Infekted Razr Maxx using Xparent ICS Blue Tapatalk
Hey man, nice write up. Always good to see people share information.
However, you made it WAY more complicated than it needs to be.
+1 either way. Get you some gas.
_Burst_ said:
Hey man, nice write up. Always good to see people share information.
However, you made it WAY more complicated than it needs to be.
+1 either way. Get you some gas.
Click to expand...
Click to collapse
Sorry man I tried my best :b. And thanks!
Sent from my SPH-L710 using XDA App
Hi,
I was just wondering if the is anyway to decompile the framework-res.apk
I have been trying for ages, but it always gives me errors.
Thanks in advance
Cheers
Corey
fishingfon said:
Hi,
I was just wondering if the is anyway to decompile the framework-res.apk
I have been trying for ages, but it always gives me errors.
Thanks in advance
Cheers
Corey
Click to expand...
Click to collapse
Grab an ICS framework-res apk. Replace manifest resources.arsc and res from the ICS apk with the one from jb apk. Then dexompile with apktool142.jar and then edit. Then recompile with apktoll144.jar. then open the apk that recompiled and take out manifest resources.arsc and res and place back in jb framework sorry if its to confusing. But just a quick write up
Sent from my SPH-L710 using XDA App
monstaX said:
Ok everyone, this is my first tutorial that I am ever putting out and I will try to be as thorough as possible. This tut is not so much for the people that dont know much about android, it is more for the people that understand most of it already. But as always feel free to read through it and start learning as most of us around here have! So without further a do lets get started!!
FIrst you need 7-zip!!! So go install it!!
So first, the first thing you need to do is go to this link and download the apktools and aapt that are in the zip:http://www.mediafire.com/?acrgcd0w850q0gj
After you extract this zip you will have a folder with all the tools we will need to do this!!!! Now, if you are doing this then you probably already have done it on Ice Cream Sandwich or Gingerbread. So the next thing we need to do is remove your "Environmental Variables". Environmental Variables are basically the commands that you can run in command prompt from any folder on the computer. If you have the android sdk or previously have tried to decompile and compile Apk's chances are you have the setups in the Environmental Variables.
Remove Unneeded Environmental :
1)Hit the start menu on the bottom left hand corner of Windows
2)Right-Click on Computer and select Properties
3)On the top left-hand corner select Advanced System Settings
4)A window comes up and select the button that says "Environmental Variables"
5)In the window that comes up there is two boxes. We are going to edit the bottom one labed "System Variables". Now grab the scroll bar and look for the variable Path. It should be under OS and above PATHEXT. Double-Click "Path" Variable
NOTE: Each path ends in a ";"
6) So now you will need remove every instance that would point to anything android related. For example one is "C:\SDK\platform-tools\;" If it has this then apktools will run the aapt.exe from that platform-tools folder instead of the one that is provided in the zip.
ALTERNATIVE: An alternative would be to delete the aapt that you have in your folder that you have in your Path System Variable.
I know this was not very clear but I again this is for the users a bit more advanced.
-------------------------------
DECOMPILE/COMPILE SystemUI.apk and other Apk's. EXCEPT framework-res.apk
Ok, you can do this however you want but for this tut I am going to extract apktools.zip and place the folder on my desktop. So we're going to open the folder and then place the APK we want to edit along with a JELLYBEAN framework-res.apk into the folder. For example if you want to edit a CM10 "SystemUI.apk" then you will pull the framework-res.apk from /system/framework/ folder nd place it in your desktop JBapktools folder.
Once you have both SystemUI.apk and framework-res.apk inside the JBapktools folder we are ready to start. First rename either one of these files "apktool149.jar" "apktool142.jar" "apktool144.jar" to just apktool.jar. REMEMBER only rename ONE cus we need to keep track of the versions of the apktools.
Next, bring up the folder window and anywhere on the white space hold SHIFT and Right-Click. Then youre going to choose open command window here.
The first command is going to be: java -jar apktool.jar if framework-res.apk
This is going to install the framework.
Now close out the window.
Next go back to the folder and make sure you rename the jar file you renamed earlier back to its original name. For example if you have apktool144.jar and apktool149.jar in the folder then you must rename apktool.jar to apktool142.jar because that is its original and actual version number.
To decompile and recompile SystemUI.apk you need apktool149.jar so once all three are named to their real names then rename apktool149.jar to apktool.jar.
Now,YOU ARE READY!!! Finally.
Again, In the folder SHIFT +Right-Click and select open command window here.
the command to decompile is: java -jar apktool.jar d SystemUI.apk
---------------------------------------------------------------------------------------
Then hit enter you should see something like this:I: Baksmaling...
testI: Loading resource table...
I: Loaded.
I: Loading resource table from file: C:\Users\Jose\apktool\framework\1.apk
I: Loaded.
I: Decoding file-resources...
I: Decoding values*/* XMLs...
I: Done.
I: Copying assets and libs...
---------------------------------------------------------------------------------------
Of course it wont say Jose but it will say your User Accounts name.
Now in the folder you should see another folder in there called SystemUI. Now its DECOMPILED!!!!! WHOOOOO!!!!!!
You can make your edits and edit the pngs and xmls or the smali or whatever your guru-self wants to do.
Now to RECOMPILE!!!!!
To recompile we will still be using apktool149.jar so no need to rename anything back or whatever.
The first thing you should do is open the SystemUI.apk in 7-zip. You can right-click SystemUI.apk and in there, there should be a META-INF folder and a AndroidManifest.xml file. Select both of these be selecting one first(should be highlighted blue) the holding down Cntrl button and selecting the other file. Now that they are both selected click and drag out to apktools folder. We will need these files in a little bit.
Next in the command prompt window, or if you closed it, the reopen by SHIFT+Right-Click and selecting open command window here. The command to decompile is:
java -jar apktool.jar b SystemUI
NOTE:Make sure you use the letter "b" and dont add .apk to the end of it as we are recompiling the FOLDER and not an actual apk file like we do when decompiling.
It should say something like this:
I: Checking whether sources has changed...
I: Smaling
I: Checking whether resources has changed...
I: Building resources...
I: Building apk file...
Sounds very sexy when reading it I know but we aren't done yet. Remember the META-INF Folder and the AndroidManifest.xml file we pulled out earlier. Ok from the apktools folder select both files again by using Ctrl button. Now type Ctrl C. This will COPY these files to the clipboard. Now that we have the files copied go into SystemUI FOLDER and then go into build folder and then into apk folder. To make it look more neat navigate to /Desktop/apktools/SystemUI/build/apk/ . Now that you are in the apk folder hit Ctrl V. This will PASTE the META-INF and AndroidManifest.xml file into the folder. If a window comes up just choose COPY AND REPLACE.
Last thing to do before we can compile is to go into /SystemUI/dist/ and delete the apk file that is there. The recompiling process is almost complete!!! Go back to command prompt window and just push the ARROW UP on the keyboard. This should bring up the last command you typed in. If its not there then just type it in again:
java -jar apktool.jar b SystemUI
The final apk file should be in SystemUI/dist/ folder!!!!
If you are having any aapt problems then you probably still have a path in Environment Variables that has an aapt.exe in it. Other than that askk and I'm sure myself or someone else can help!!
I will be putting up the how to decompile/recompile framework-res.apk in 2nd post tomorrow or soon because I dont have time right now. The process is different. Have fun themeing and doing whatever it is you do!!!
Added a donate link guys. I'm only 16 so I can't say buy me a beer! So how bout half a gallon of gas? That would be great. Let me know if you donated to I can thank you and put you in my posts!! I have a passion for doing these things so I do not expect any donations from anyone. I do it because I love it and can't get enough of it!! Thanks everyone for being supportive
Donations: Marcismo55
https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=GL7RKF2EGCH68
Click to expand...
Click to collapse
Can you edit Contacts.apk?
I am trying to modifying Jelly Bean Contacts.apk. The original Contacts.apk is from Helly Bean. Using apktool that has been used for ICS and other Jelly Bean apks, I can decompile and then recomplie it without any error. However, the recompiled Contacts.apk would not work in cell phone, showing a message "Unfortunately, Contacts has stopped!".
To simplify the problem, I simply do decompiling and then recompiling without any modifications. I found that the size of resources.arsc has been changed from 1480 KB to 1525 KB. The new Contacts.apk causes FC!
Note: Files in smali folder can still be modified. After editing, use apktool to recompile and create a new apk. Then use WinRAR or 7zp to drag the newly created classes.dex into the original Contacts.apk. Such a "modified" Contacts.apk works properly. Note here that we did not modify resources.arsc.
This problem is only related to resources.arsc!!!!!!!
SunnyOKOK said:
Can you edit Contacts.apk?
I am trying to modifying Jelly Bean Contacts.apk. The original Contacts.apk is from Helly Bean. Using apktool that has been used for ICS and other Jelly Bean apks, I can decompile and then recomplie it without any error. However, the recompiled Contacts.apk would not work in cell phone, showing a message "Unfortunately, Contacts has stopped!".
To simplify the problem, I simply do decompiling and then recompiling without any modifications. I found that the size of resources.arsc has been changed from 1480 KB to 1525 KB. The new Contacts.apk causes FC!
Note: Files in smali folder can still be modified. After editing, use apktool to recompile and create a new apk. Then use WinRAR or 7zp to drag the newly created classes.dex into the original Contacts.apk. Such a "modified" Contacts.apk works properly. Note here that we did not modify resources.arsc.
This problem is only related to resources.arsc!!!!!!!
Click to expand...
Click to collapse
Not to sure bud. But try the Tut I put up before your post. If not it might need to be compiled from source so nothing will be broken
Sent from my SPH-L710 using XDA App
Thank you. Can I use Eclipse to edit the source code? Any ideas?
SunnyOK said:
Thank you. Can I use Eclipse to edit the source code? Any ideas?
Click to expand...
Click to collapse
Not to sure on that either man. Sorry
Sent from my SPH-L710 using XDA App
I get errors on installing framework!
Any ideas?
i am getting error is there any way to solve.... check attachment image
I'm gonna try this guide. It seems like the last step is something I haven't done in my current journey with recompiling apks.
tapatalked² from cowsquadGnex®
---------- Post added at 08:49 AM ---------- Previous post was at 08:48 AM ----------
sahil001 said:
i am getting error is there any way to solve.... check attachment image
Click to expand...
Click to collapse
Do you have java installed on your system?
tapatalked² from cowsquadGnex®
cowsquad said:
I'm gonna try this guide. It seems like the last step is something I haven't done in my current journey with recompiling apks.
tapatalked² from cowsquadGnex®
---------- Post added at 08:49 AM ---------- Previous post was at 08:48 AM ----------
Do you have java installed on your system?
tapatalked² from cowsquadGnex®
Click to expand...
Click to collapse
i haved installed but which particular version do you recommend me and if possible please share downloading link
sahil001 said:
i haved installed but which particular version do you recommend me and if possible please share downloading link
Click to expand...
Click to collapse
Just Google how to install java jdk in windows. There are plenty tutorials. You need java JDK
Edited:
Make sure your java is in your windows system variables. Step 6 on this guide
tapatalked² from cowsquadGnex®
cowsquad said:
Just Google how to install java jdk in windows. There are plenty tutorials. You need java JDK
Edited:
Make sure your java is in your windows system variables. Step 6 on this guide
tapatalked² from cowsquadGnex®
Click to expand...
Click to collapse
Ok ill try and let u know if it works or not
Ѕєит fяσм ๓ұ gαℓαχу S2®
sahil001 said:
Ok ill try and let u know if it works or not
Ѕєит fяσм ๓ұ gαℓαχу S2®
Click to expand...
Click to collapse
Did it work man?
tapatalked² from cowsquadGnex®
cowsquad said:
Did it work man?
tapatalked² from cowsquadGnex®
Click to expand...
Click to collapse
No
Ѕєит fяσм ๓ұ gαℓαχу S2®

Low Battery warning

Is there any way to either disable the warning at 15%, or at least limit how often it pops up?
not without some framework changes
tdusen said:
Is there any way to either disable the warning at 15%, or at least limit how often it pops up?
Click to expand...
Click to collapse
What ROM are u running?
billard412 said:
What ROM are u running?
Click to expand...
Click to collapse
currently running Blazer 1.7
well as said you gotta edit some stuff
And I do not have that version of blazer downloaded. Can you upload your framework-res.apk file?
billard412 said:
And I do not have that version of blazer downloaded. Can you upload your framework-res.apk file?
Click to expand...
Click to collapse
Thanks for the offer. it's 20mb file. What has to be changed?
It has to be decompiled using apktool. Wasn't sure if you were familiar with it using it. But once decompiled navigate to res/values/integers/ and scroll until you find the lines that read
Config_lowbatteryclosewarninglevel
Config_lowbatterywarninglevel
Config_criticalbatterywarninglevel
Change the numbers as you see fit. I use all 0`s myself so I never see it. Then recompile it and push it back into the system.
billard412 said:
It has to be decompiled using apktool. Wasn't sure if you were familiar with it using it. But once decompiled navigate to res/values/integers/ and scroll until you find the lines that read
Config_lowbatteryclosewarninglevel
Config_lowbatterywarninglevel
Config_criticalbatterywarninglevel
Change the numbers as you see fit. I use all 0`s myself so I never see it. Then recompile it and push it back into the system.
Click to expand...
Click to collapse
Excellent. thanks.
did the decompile, found and made the change. recompile failed. I'll have to figure that out later.
I always hated that .. can you please tell me how to do that .. cause I'm a noob don't really know what you talking about
Sent from my SPH-L710 using xda premium
endwhysee.bk said:
I always hated that .. can you please tell me how to do that .. cause I'm a noob don't really know what you talking about
Sent from my SPH-L710 using xda premium
Click to expand...
Click to collapse
Might need googles assistance. But this looked pretty noob-friendly http://forum.xda-developers.com/showthread.php?t=1756953
Will give it a try...Thanks a lot ..
You could use root explorer (or similar app) and rename the sound file by adding a ".bak" (no quotations) , system/media/audio/ui, then which ever sound you wanna silence. This has worked for me on all camera sounds and the low battery warning. Hope I helped
[Phone] Samsung Galaxy S3
[Recovery] TWRP
[ROM] Team Sonic - FreeGS3 v0.0.9.1
[Theme] Jellybomb Domination 1.1
[Launcher] Apex Pro
[Kanged Apps] Added Inverted Google Now, Gmail
---------- Post added at 11:23 PM ---------- Previous post was at 11:16 PM ----------
The actual name of that particular sound file is lowbattery.ogg!
[Phone] Samsung Galaxy S3
[Recovery] TWRP
[ROM] Team Sonic - FreeGS3 v0.0.9.1
[Theme] Jellybomb Domination 1.1
[Launcher] Apex Pro
[Kanged Apps] Added Inverted Google Now, Gmail,
billard412 said:
It has to be decompiled using apktool. Wasn't sure if you were familiar with it using it. But once decompiled navigate to res/values/integers/ and scroll until you find the lines that read
Config_lowbatteryclosewarninglevel
Config_lowbatterywarninglevel
Config_criticalbatterywarninglevel
Change the numbers as you see fit. I use all 0`s myself so I never see it. Then recompile it and push it back into the system.
Click to expand...
Click to collapse
What version of apktool are you using. 1.4.2 is the only one I can get to rebuild the apk, but when I push that to the phone it hangs on boot.
i'm surprised there is no option to toggle off the low battery notification popup.. it is a bit annoying. seem to popup early and at 5% intervals below 20%.
tdusen said:
What version of apktool are you using. 1.4.2 is the only one I can get to rebuild the apk, but when I push that to the phone it hangs on boot.
Click to expand...
Click to collapse
Mines a higher number like 1.47 or something it was just updated like 2 weeks ago.(attached below) And as far as pushing it, the permissions and **** gta be right and it should be pushed when ur in recovery. I made my own flashable zip to make the process a lil smoother.(also attached) It usually hangs for me if I push it especially if I try outside of recovery. to use the zip put your framework-res.apk into the system/framework folders inside the zip and flash.
billard412 said:
Mines a higher number like 1.47 or something it was just updated like 2 weeks ago.(attached below) And as far as pushing it, the permissions and **** gta be right and it should be pushed when ur in recovery. I made my own flashable zip to make the process a lil smoother.(also attached) It usually hangs for me if I push it especially if I try outside of recovery. to use the zip put your framework-res.apk into the system/framework folders inside the zip and flash.
Click to expand...
Click to collapse
This version fails for me the same as others. The failure make no sense to me. If I modify those integers with fewer digits, i.e changing 15 to 0, the build fails at the building resources step with a file not found error.
Code:
C:\apktool>apktool b framework-res
W: Could not find sources
I: Checking whether resources has changed...
I: Building resources...
Exception in thread "main" brut.androlib.AndrolibException: brut.directory.DirectoryException: java.io.FileNotFoundException: C:\DOCUME~1\john\Local Settings\Temp\APKTOOL1424462413380654960.tmp (The system cannot find the file specified)
at brut.androlib.Androlib.buildResourcesFull(Androlib.java:342)
at brut.androlib.Androlib.buildResources(Androlib.java:270)
at brut.androlib.Androlib.build(Androlib.java:193)
at brut.androlib.Androlib.build(Androlib.java:175)
at brut.apktool.Main.cmdBuild(Main.java:182)
at brut.apktool.Main.main(Main.java:67)
Caused by: brut.directory.DirectoryException: java.io.FileNotFoundException: C:\DOCUME~1\john\Local Settings\Temp\APKTOOL1424462413380654960.tmp (The system cannot find the file specified)
at brut.directory.ZipRODirectory.<init>(ZipRODirectory.java:55)
at brut.directory.ZipRODirectory.<init>(ZipRODirectory.java:38)
at brut.androlib.res.util.ExtFile.getDirectory(ExtFile.java:55)
at brut.androlib.Androlib.buildResourcesFull(Androlib.java:333)
... 5 more
Caused by: java.io.FileNotFoundException: C:\DOCUME~1\john\Local Settings\Temp\APKTOOL1424462413380654960.tmp (The system cannot find the file specified)
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(Unknown Source)
at java.util.zip.ZipFile.<init>(Unknown Source)
at brut.directory.ZipRODirectory.<init>(ZipRODirectory.java:53)
However, if I replace it with the same number of digits i.e changing 15 to 00, the build completes. The result still hung on boot, at the pulsing samsung logo, even with using your flasher.zip.
I'll keep digging. I just wanted to document my progress.
tdusen said:
This version fails for me the same as others. The failure make no sense to me. If I modify those integers with fewer digits, i.e changing 15 to 0, the build fails at the building resources step with a file not found error.
Code:
C:\apktool>apktool b framework-res
W: Could not find sources
I: Checking whether resources has changed...
I: Building resources...
Exception in thread "main" brut.androlib.AndrolibException: brut.directory.DirectoryException: java.io.FileNotFoundException: C:\DOCUME~1\john\Local Settings\Temp\APKTOOL1424462413380654960.tmp (The system cannot find the file specified)
at brut.androlib.Androlib.buildResourcesFull(Androlib.java:342)
at brut.androlib.Androlib.buildResources(Androlib.java:270)
at brut.androlib.Androlib.build(Androlib.java:193)
at brut.androlib.Androlib.build(Androlib.java:175)
at brut.apktool.Main.cmdBuild(Main.java:182)
at brut.apktool.Main.main(Main.java:67)
Caused by: brut.directory.DirectoryException: java.io.FileNotFoundException: C:\DOCUME~1\john\Local Settings\Temp\APKTOOL1424462413380654960.tmp (The system cannot find the file specified)
at brut.directory.ZipRODirectory.<init>(ZipRODirectory.java:55)
at brut.directory.ZipRODirectory.<init>(ZipRODirectory.java:38)
at brut.androlib.res.util.ExtFile.getDirectory(ExtFile.java:55)
at brut.androlib.Androlib.buildResourcesFull(Androlib.java:333)
... 5 more
Caused by: java.io.FileNotFoundException: C:\DOCUME~1\john\Local Settings\Temp\APKTOOL1424462413380654960.tmp (The system cannot find the file specified)
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(Unknown Source)
at java.util.zip.ZipFile.<init>(Unknown Source)
at brut.directory.ZipRODirectory.<init>(ZipRODirectory.java:53)
However, if I replace it with the same number of digits i.e changing 15 to 00, the build completes. The result still hung on boot, at the pulsing samsung logo, even with using your flasher.zip.
I'll keep digging. I just wanted to document my progress.
Click to expand...
Click to collapse
Its been awhile since I've seen this error. Correct me if I'm wrong but, ur crashing almost immediatly when you start the build, right? I see directory exception several times along w/system cannot find file specified. In other words you're missing somethin or tryin to build a folder that's not there
My only question is how the hell is it building anything at all with those errors? And why does a small change in those numbers you mentioned let it complete? While i wake up a lil and read more through I need two things from u. Delete all folders related to that file so inside your apktool folder should just be the tools itself. Delete the entire framework-res folder and do it again. Fresh. And post ur whole cmd window start to finish. If not me, someone will get it b/c I recognize the error just can't put my finger on wat is the cause yet.
billard412 said:
Its been awhile since I've seen this error. Correct me if I'm wrong but, ur crashing almost immediatly when you start the build, right? I see directory exception several times along w/system cannot find file specified. In other words you're missing somethin or tryin to build a folder that's not there
My only question is how the hell is it building anything at all with those errors? And why does a small change in those numbers you mentioned let it complete? While i wake up a lil and read more through I need two things from u. Delete all folders related to that file so inside your apktool folder should just be the tools itself. Delete the entire framework-res folder and do it again. Fresh. And post ur whole cmd window start to finish. If not me, someone will get it b/c I recognize the error just can't put my finger on wat is the cause yet.
Click to expand...
Click to collapse
I agree, the change in numbers should not make a difference, but it does.
The failure is not immediate. It feels like it's just before the building apk step
I have deleted everything and started from scratch multiple time. Especially when trying a different version of apktool.
tdusen said:
I agree, the change in numbers should not make a difference, but it does.
The failure is not immediate. It feels like it's just before the building apk step
I have deleted everything and started from scratch multiple time. Especially when trying a different version of apktool.
Click to expand...
Click to collapse
Damn it gta be something in ur setup then. This is gna bug the hell outta me. I know this error too, just can't grasp wat its cause is right now. And in trying to repeat the error using the blazer 1.6 framework I have, the only way I get an error is if I totally **** a line in the integers file. Even a small typo like an extra space or something I was still able to build.then I even downloaded the apktools I uploaded and put those plus the framework file in a folder by themselves and still it was a perfect build. To take a shot in the dark tho, are u doing the "apktool if framework-res.apk" beforehand?
billard412 said:
To take a shot in the dark tho, are u doing the "apktool if framework-res.apk" beforehand?
Click to expand...
Click to collapse
No. I haven't done that. I assumed it shouldn't be needed since that was the apk I was working on. I'll try that when I get home.
tdusen said:
No. I haven't done that. I assumed it shouldn't be needed since that was the apk I was working on. I'll try that when I get home.
Click to expand...
Click to collapse
doing the apktool install framework didn't help. I was able to get the frame work to build, with the changes in single digit, using apktool 1.4.10. However, the system won't boot with that file installed.
I think I'm going to give up on this for a while. Thanks for all the suggestions.

[GUIDE] Change Nav Bar D.P.I. on Android Jelly Bean 4.1.1 (Galaxy Nexus)

Guide – Change Navbar D.P.I. in Android Jelly Bean (4.1.1)
•Thanks to Vomer for helping me learn this and answering my questions when I had them… Also for persuading me to write this guide for others users to hopefully use to learn a small bit of Android modding, which will hopefully create more publically used mods for the benefit and growth of the community. Let’s get it…
First thing is first… This guide is created with the Galaxy Nexus in mind. Even though other phone brands (Samsung, H.T.C., LG, Sony, etc.) are now upgrading their handsets to Android Jelly Bean, this guide is created with my experience with the pure Google experience in mind and pure Google O.S. *If you are using a rom with Samsung Touch Wiz, H.T.C. Sense or anything else produced/provided by another company, this isn’t for you, although it may answer some questions and get you started in the right direction…
THE TOOLS:
I’m using an ApkTool package, which were obtained from a thread created by monstaX < Credit to him!
First off, go to this webpage http://www.mediafire.com/?acrgcd0w850q0gj and download the file. File name should be “apktoolsJB.zip”. Once you have the tools downloaded, unzip them to your desktop.
Inside the unzipped file, you will locate the following files; aapt.exe; apktool.bat; apktool149.jar; apktool142.jar; apktool144.jar and baksmali.jar.
After confirming that the above listed files are present, rename “apktool149.jar” to “apktool.jar”.
That’s it for the tools, leave the file on your desktop, as this will ultimately be your workspace along with a command prompt.
I would also download 7-Zip and Notepad++ from the internet. You can Google those two programs and download them if you don’t already have them….
GETTING WINDOWS READY:
The next thing we need to do is remove the “Environmental Values”. If you have attempted to edit/mod any apks in the past, you probably set up “Environmental Values” in “Path” under “System Variables”. If you have done this, simply navigate back to “System Variables>Path” and delete the added non-sense that you added before. An example would be something like “Android\SDK\platform-tools\;” Make sure that after you’re done deleting, you leave a “;” at the end of the “Path Variable” line of text.
Now for the fun part:
DECOMPILE/COMPILE
Once you have done the above steps, you’re now ready to have some fun.
First off, you need to download a copy of the .zip file of the ROM you’re using onto your computer OR transfer a copy of the framework-res.apk and SystemUI.apk to your computer from your G-Nex. Once you have located these files, you need to place both files into the JBapktool folder that we unzipped onto the desktop earlier.
Once you have placed both files into the JBapktool folder, open the folder and shift+right-click somewhere inside the folder (NOT ON A FILE). Once you have done that and a menu has popped up, select “Open Command Window Here”.
Once the command window has opened; you need to install the framework-res.apk… Now there is a bunch of technical jargon for this but simply and easily type the following command;
java –jar apktool.jar if framework-res.apk
You will see a line that reads “ Framework installed to: C:\Users\yournamehere\apktool\framework\1.apk”
After the above line appears, you will now decompile the framework-res.apk file. To do this, type the following command;
java –jar apktool.jar d framework-res.apk
You will now see something like:
I: Loading resource table…
I: Loaded
I: Decoding file-resources…
I: Decoding values*/* XMLs…
I: Done
I: Copying assets and libs…
*DON’T CLOSE THE COMMAND PROMPT*
After you see that, you should notice that a new file has been added to the JBapktool folder, which should be named “framework-res”. Inside that folder, you will observe the following folders/files; assets; build; dist; res; AndroidManifest.xml; apktool.yml. The file that we are worried about is the “res” file. Open the “res” folder and then navigate to the “values” folder and look for a file named “dimens.xml”. The “dimens.xml” is where the magic happens. Right click on this file and open as “Edit with Notepad++”.
Once Notepad++ is open with the “dimens.xml” file open, you want to focus on three strings in the file. The strings are: 36.0dip
36.0dip
32.0dip
*For a 32 DPI nav bar, I personally use 32 for the height and 28 for the width.*
Now here, the parts of the string that we want to change are highlighted in yellow and represent the “DPI” of the nav bar. The above lines are from a “dimens.xml” file that I changed to make a “36 DPI” nav bar. Once you have made the changes to the above dimensions, just click file and save in Notepad++ and close the program.
Now to compile the “framework-res” folder back into an .apk.
Simply go back to the command prompt that we opened earlier (you shouldn’t have closed it, but if you did follow steps above to open a new one, reinstall the framework-res.apk (STEPS ABOVE) and then continue).
Type the following command;
Java –jar apktool.jar b framework-res
You will see the following (hopefully);
W:Could not find sources
I:Checking wheter resources has changed…
I:Building resources…
I:Building apk file…
After this, you should revert back to the “JBapktool” folder and navigate to “framework-res” folder>”build”>”apk”… Look for the “resources.arsc” file. THAT’S THE MONEY SHOT…
Using 7-zip, you want to open the “framework-res.apk” file that we originally began with (I would make a copy of it and put it on my desktop). Right-click on the “framework-res.apk” file, click 7-Zip and then open archive. A new window will open, showing the visible files inside the framework-res.apk. Look for the file “resources.arsc”. Delete it, locate the “resources.arsc” from the framework-res folder (framework-res>build>apk) in the JBapktool folder. Click and drag it to the unzipped original framework-res.apk file and drop it. WE’RE DONE WITH THE FRAMEWORK-RES.APK FILE.
Now simply place that file in a CWM flashable .zip file and hold tight.
Now we need to decompile the SystemUI.apk that we placed in the JBapktool folder earlier. Follow the above listed instructions to complete this, same as we did with the framework-res.apk.
Once you have the SystemUI.apk file decompiled, look for a folder in JBapktools named “SystemUI”. Inside the “SystemUI” folder, navigate to res>layout>navigation_bar.xml. We now want to open the navigation_bar.xml file with Notepadd++, so that we can delete two lines in it that would cause a larger back button on the nav bar if left intact.
Inside the navigation_bar.xml file look for the following two lines:
"@drawable/ic_sysbar_back" android:scaleType="center"
"@drawable/ic_sysbar_back_land" android:scaleType="center"
Now, we want to delete the following from both lines:
android:scaleType="center"
After deleting that line from both lines, save the file by clicking file>save and close Notepad++. Now back go back to JBapktools and to the already opened command prompt window (it should still be open).
We are now going to compile the SystemUI. To do this type the following command;
java –jar apktool.jar b SystemUI
You will see some text in the command prompt and will ultimately see I:Building APK file…
Once this is complete, navigate back to the JBapktool folder and to the SystemUI file. Once you have the SystemUI folder open, we need to navigate to build>apk and look for the following file; AndroidManifest.xml. Now this is important, we need to replace this file with the AndroidManifest.xml file from the original unzipped SystemUI.apk. So open the original SystemUI.apk with 7-zip, and copy “META-INF” and “AndroidManifest.xml”. Once you have those copied from the original unzipped SystemUI.apk, relocate back to the JBapktool folder>SystemUI>build>apk and paste both of them. If asked to replace, CLICK YES OR REPLACE ON ALL WARNINGS THAT POP UP!!!!
Now we need to back out to the SystemUI folder in JBapktool and click on the folder that is named “dist” (the “dist” folder is where the freshly compiled SystemUI.apk is located once we type in the compile command in the command prompt). Once inside the “dist” folder, you will see a SystemUI.apk file. DELETE IT… We never use the first SystemUI.apk that we compile, because we needed to added the META-INF and AndroidManifest.xml files for signing purposes. Once you have the 1st compiled SystemUI.apk deleted, return to the command prompt and enter the compile command again and compile a 2nd SystemUI.apk.
The 2nd SystemUI.apk will appear in the “dist” folder and is the usable SystemUI.apk.
Now that you have your new SystemUI.apk compiled, place it in the same CWM flashable .zip file, boot into recovery, wipe cache and dalvik cache and VOILA, you have just pimped your nav bar’s DPI.
•Remember when placing the SystemUI.apk file into your CWM .zip file to place it under /system/App. And when placing your framework-res.apk into your CWM .zip file it goes under /system/framework…
The mods and this guide take time for us to put together for your enjoyment/the improvement of the community. If I or anyone else has helped you, please hit the “Thank You” button. Thanks.
Great tutorial
Sent from my Galaxy Nexus using Tapatalk 2
Thank's man.....................
APatte111: could you upload your 32 height 28 landscape framework-res for v4 rom ?
Great guide.
If you dont want to waste time uploading....its all good anyway mate :good:
bs android said:
APatte111: could you upload your 32 height 28 landscape framework-res for v4 rom ?
Great guide.
If you dont want to waste time uploading....its all good anyway mate :good:
Click to expand...
Click to collapse
This is not the mods thread
Great job bud!
Also, remember guys - if you make a MiNCO Mod - share with other's in the MiNCO Plus+ Thread. Chances are someone else would want it too
bs android said:
APatte111: could you upload your 32 height 28 landscape framework-res for v4 rom ?
Great guide.
If you dont want to waste time uploading....its all good anyway mate :good:
Click to expand...
Click to collapse
This framework-res.apk is in place in several of the mods in the MiNCO Plus+ mods and enhancements thread that vomer began... Just download one of the mods and extract the framework-res.apk from one of the .zip files... Probably the easiest way to get it...
Sent from my Galaxy Nexus using xda premium
vomer said:
This is not the mods thread
Great job bud!
Click to expand...
Click to collapse
OK sorry for asking OP if that annoys you
APatte111 said:
This framework-res.apk is in place in several of the mods in the MiNCO Plus+ mods and enhancements thread that vomer began... Just download one of the mods and extract the framework-res.apk from on of the .zip files... Probably the easiest way to get it...
Sent from my Galaxy Nexus using xda premium
Click to expand...
Click to collapse
Nice APatte, I saw it now, downloaded and tried your framework with vomers standard white for minco rom. Got the failure in back button so guess I have to wait till I get home to a computer to fix it. Thanks for the guide anyway, love different and smaller navbars.
bs android said:
Got the failure in back button so guess I have to wait till I get home to a computer to fix it. Thanks for the guide anyway, love different and smaller navbars.
Click to expand...
Click to collapse
Yeah, if by "failure" you mean the larger back key then that is being caused by the un-edited navigation_bar.xml file which is located in SystemUI.apk>res>layout... You need to delete the two lines mentioned above, re-compile the SystemUI.apk and everything should be golden. Let me know if it doesn't work and I will help ya... Good Luck
Good guide!
Great job man!! Great tutorial!
:good::good::good::good::good:
MAN CHANGE THIS IS WRONG!! Java –jar apktool.jar b frame-work
IT IS java -jar apktool.jar b framework-res
masterchif92 said:
MAN CHANGE THIS IS WRONG!! Java –jar apktool.jar b frame-work
IT IS java -jar apktool.jar b framework-res
Click to expand...
Click to collapse
Thanks, you found a typo and the one mistake in the whole guide... Appreciate that...
Sent from my Galaxy Nexus using xda premium
After looking at 5 or 6 other guides. This one is BY FAR the easiest to understand & includes everything you need to get the job done.
Thanks a ton OP!
i cant seem to find the "@drawable/ic_sysbar_back" & "@drawable/ic_sysbar_back_land" in the navigation_bar.xml file. Any help please? I must mention that i am on AndroidME CM10 1.7.0 and took both files from the cwm zip.
Only repeating line i can find is "@drawable/ic_sysbar_lights_out_dot_large" . Dont know if it is the same.
I ve done some android developing in the past. every linear_layout represents a button, right?
angelossssss said:
i cant seem to find the "@drawable/ic_sysbar_back" & "@drawable/ic_sysbar_back_land" in the navigation_bar.xml file. Any help please? I must mention that i am on AndroidME CM10 1.7.0 and took both files from the cwm zip.
Only repeating line i can find is "@drawable/ic_sysbar_lights_out_dot_large" . Dont know if it is the same.
I ve done some android developing in the past. every linear_layout represents a button, right?
Click to expand...
Click to collapse
Can you upload the navigation_bar.xml file for me so I could have a look...
*** Nice signature by the way *** LOL
Sent from my Galaxy Nexus using xda premium
APatte111 said:
Can you upload the navigation_bar.xml file for me so I could have a look...
*** Nice signature by the way *** LOL
Sent from my Galaxy Nexus using xda premium
Click to expand...
Click to collapse
here. i uploaded in my dropbox.
https://www.dropbox.com/s/7331l8fqs7a99yg/navigation_bar.xml
Thanks for the signature
---------- Post added at 08:25 PM ---------- Previous post was at 08:17 PM ----------
angelossssss said:
here. i uploaded in my dropbox.
https://www.dropbox.com/s/7331l8fqs7a99yg/navigation_bar.xml
Thanks for the signature
Click to expand...
Click to collapse
actually nevermind that... i just flashed the cwm without the systemui.apk and it seems to be working fine. lol
angelossssss said:
here. i uploaded in my dropbox.
https://www.dropbox.com/s/7331l8fqs7a99yg/navigation_bar.xml
Thanks for the signature
---------- Post added at 08:25 PM ---------- Previous post was at 08:17 PM ----------
actually nevermind that... i just flashed the cwm without the systemui.apk and it seems to be working fine. lol
Click to expand...
Click to collapse
I was going to say, it looks like they have already removed that from the navigation_bar.xml file... The description of the ROM shows that Nav Bar Options are included... You could change the DPI size, compile and see if the back button is larger (which is what deleting those two lines fix)... If it's not (which you stated it's working) then skip that step....
APatte111 said:
I was going to say, it looks like they have already removed that from the navigation_bar.xml file... The description of the ROM shows that Nav Bar Options are included... You could change the DPI size, compile and see if the back button is larger (which is what deleting those two lines fix)... If it's not (which you stated it's working) then skip that step....
Click to expand...
Click to collapse
y i only compiled the framework-res.apk but i thing now my phone became a little laggy. especially when swipping between screens and opening apps.
i'll check it out if i did anything wrong.
angelossssss said:
y i only compiled the framework-res.apk but i thing now my phone became a little laggy. especially when swipping between screens and opening apps.
i'll check it out if i did anything wrong.
Click to expand...
Click to collapse
Check in the ROM and see if there is already a built in option to change the nav bar DPI size... if not, make the changes to the dimens.XML file and then recompile/replace the .apk and re-flash... that should work and everything should be normal...
Sent from my Galaxy Nexus using xda premium
APatte111 said:
Check in the ROM and see if there is already a built in option to change the nav bar DPI size... if not, make the changes to the dimens.XML file and then recompile/replace the .apk and re-flash... that should work and everything should be normal...
Sent from my Galaxy Nexus using xda premium
Click to expand...
Click to collapse
unfortunately there is not. it only has options to change the buttons order.

ROM Building: The Basics Part III

Welcome back everyone
For those who are not familiar with the series, I recommend checking out part I and then part II to get caught up on our continued efforts to modify a ROM to your every whim and need.
We will be utilizing some really cool tools today. They come at a price of patience and perseverance, you know, kind of like what Valve expects from all of their loyal customers, and the worst part is....they could release the HL3 in 10 years, and I would still throw money at my screen.
I digress again.
Today we learn how to decompile those sneaky APK's and the necessary Framework files. They are located in the 2 most important folders:
MD4_Version_1/system/app
MD4_Version_1/system/framework
We need to start at the beginning of this topic.
To begin, let us test your ability to use JAVA....Wait STOP! Java? Programming? We do not need to be experts at programming at all, in fact, implementing mods is really a copy and paste procedure for us noobs, but if you know how to JAVA, maybe you can create your own mods that you can share with the community. Also, I am not a programmer, but I do know how to use logic to trial and error the crap out of the mods until they work.
To test if you have JAVA installed, open up a command prompt in Windows (because if you have Linux, you are not going to even be on this beginner's tutorial now are you?)
type in:
Code:
java
You should see
Code:
C:\>java
Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)
where options include:
-server to select the "server" VM
-hotspot is a synonym for the "server" VM [deprecated]
The default VM is server.
-cp <class search path of directories and zip/jar files>
-classpath <class search path of directories and zip/jar files>
A ; separated list of directories, JAR archives,
and ZIP archives to search for class files.
-D<name>=<value>
set a system property
-verbose[:class|gc|jni]
enable verbose output
-version print product version and exit
-version:<value>
require the specified version to run
-showversion print product version and continue
-jre-restrict-search | -jre-no-restrict-search
include/exclude user private JREs in the version search
-? -help print this help message
-X print help on non-standard options
-ea[:<packagename>...|:<classname>]
-enableassertions[:<packagename>...|:<classname>]
enable assertions
-da[:<packagename>...|:<classname>]
-disableassertions[:<packagename>...|:<classname>]
disable assertions
-esa | -enablesystemassertions
enable system assertions
-dsa | -disablesystemassertions
disable system assertions
-agentlib:<libname>[=<options>]
load native agent library <libname>, e.g. -agentlib:hprof
see also, -agentlib:jdwp=help and -agentlib:hprof=help
-agentpath:<pathname>[=<options>]
load native agent library by full pathname
-javaagent:<jarpath>[=<options>]
load Java programming language agent, see java.lang.instrument
-splash:<imagepath>
show splash screen with specified image
Wait, you did not see this did you? Well it happens, you probably got an Unknown Command or some shenanigans that doesn't look similar to the above?
Do not worry, we will need to add JAVA to the environment variables. First head over to JAVA and download the Java Runtime Environment (JRE). Install as you would by clicking next next next next and next and next.
When it installs, it goes to a specific location. The problem is, sometimes Windows does not recognize that path, which is why when you execute the JAVA command in a command prompt it tells you unknown command. We have to tell Windows to search in the java installation folder that you just installed for the JAVA.exe program so Windows can add it to the list of areas to search when you execute a command.
To do this, we will need to add the path in the environmental variables, java explains that sometimes this should not be necessary. But use this for more information and an understand of how to do this to different operating systems.
My path was the default "PATH" for java
Code:
C:\Program Files (x86)\Java\jre7\bin
Once that has been added to the environmental variables, test out the java code and see if it looks like what I have from above.
After this is done, we will need to install the Android SDK, this can be found here
The SDK, is a software development kit. It will allow for a user to create software for your android phone. This tutorial will not be doing that because that is a very heavy order. It will require the release of the Kraken. I do not recommend releasing the Kraken. Unless it is harmless Cthulhu. He's so adorable.
Anyway, this will install platform tools for us to push files to our phone and allow us to to execute these commands.
Remember, we can add the tools of the SDK to our PATH variable so we can execute these tools in any command prompt and at any location.
If you are having trouble at this point, let me know in the comments below and we can try and address this issue.
Now that we have the basic tools down, we need to understand what the heck that APKTOOL, SMALI and BAKSMALI do.
These tools are used to decompile the our APK and JAR files.
Keep this in mind at all times
APKTOOL will decompile and combile APK FILES
SMALI compiles DEX FILES
BAKSMALI decompiles DEX FILES
Do you know what any of these 3 are? Maybe you do, maybe you don't.
The APK stands for Android application package. It is basically the app. In windows, it would be equivalent to the program. The APK is unique in the sense that all the files in the app are actually zipped inside an APK file.
That logic only deduces, we can open almost any APK file with 7-zip. This is good news until we realize, the APK files are actually encoded in a way. We cannot make serious mods until we de-scramble the code hidden in the APK.
This is where APKTOOL comes into play. The APKTOOL can de-compile the encoded files and put it into a folder for us to work with. We can then make our mods, recompile and then put it into our ROM.
After explaining Smali and Baksmali, we will begin a basic mod.
Smali and Baksmali are actually java archive files. They contain instructions to take a DEX file and de-compile them into very interesting SMALI code. DEX is an EXE file for our Android system. We can only de-compile a classes.dex file for now, for it contains the majority of the rest of the tweaks. As a result, doing this is important and very difficult unless you understand what is going on. We will definitely have examples so do not fret, did I mention a half life reference yet...I don't think so.
So back to APKTOOL, we are going to need to understand what it does before we begin. I am assuming you got your APKTOOL downloaded from here, go to your C: drive and create a folder in there called APKTOOL in there, unzip the downloaded file, there will be a file Setup.bat, execute that file and a command prompt window with Green text will appear, I recommend selection 1 first to ensure you have the latest version, but we do not need to do this.
We will need to press option 2, but it says we must place some files in the other folder first. The files needed are actually the framework files, basically, the way our rom interprets the files are needed for this APKTOOL to operate.We will need to go to our ROM's
MD4_Version_1/system/framework/ folder and copy 2 files
Code:
framework-res.apk
tw-frameworkres.apk
These files will be copied into
Code:
C:\APKTOOL\other
This needs to be done before you select option 2.
Once the files are copied, press 2, then we need to install the first two options, so go one by one and install both.
Then when you are back to the main menu, press 3 and setup the directories for your need.
Personally, I took the
Code:
C:\APKTOOL\other
folder and moved into my own working directory. Assume that the locations will be selected by you for organization. I will use the following folder for reference:
Code:
C:\other
This will have all of the tools I need, while you are at it, create a new folder in their called Smali and copy the Smali.jar and BakSmali.jar files in there, they will of course be named something else like smali-1.4.2.jar and baksmali-1.4.2.jar
Rename the files to make life easier
Code:
from
smali-1.4.2.jar
to
smali.jar
and
baksmali-1.4.2.jar
to
baksmali.jar
Back to APKTOOL, now back to me, Now back to APKTOOL, now back to me.
We will be victimizing a specific APK to get modding started.
Before we get started, this is where we start version controlling more seriously. As each mod you add could cause a freeze, hang, bootloop or whatever, so go to the folder of your ROM, select the four files
META-INF
system
boot.img
installbusybox
right click them and "Add to Archive". Zip file only remember, compression level( Normal to no compression is fine)
Now
Lets grab a copy of SecPhone.APK located in the system/app folder
And put it into
Code:
C:\other
Open a command prompt and navigate to that location of the APKTOOL
Execute the following command
Code:
apktool d SecPhone.apk SecPhone
If done successfully, you will something like
Code:
C:\other>apktool d SecPhone.apk Secphone
I: Baksmaling...
I: Loading resource table...
I: Loaded.
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: C:\Users\<Your User Name>\apktool\framework\1.apk
I: Loaded.
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Done.
I: Copying assets and libs...
C:\other>
This means it successfully decoded the file. We will have a folder called SecPhone that has a bunch of folders.
Navigate to the following folder:
Code:
C:\other\Secphone\res\raw
There are 2 .ogg files. Well well well, I thought we took care of these, hmm, guess we need to change these to whatever you need to. Let's assume you did this already and have replaced them. We will need to stop the "mods" for now, for we are learning a process not a mod per se.
So we are done "modding" the file, I know it is not a BIG mod but we are trying to learn how to do this now so we can do the heavy stuff later. Now we can continue to recompile the file.
Go back to command prompt and direct yourself to
C:\other>
Click to expand...
Click to collapse
The put in the following command:
Code:
C:\other>apktool b SecPhone new-SecPhone.apk
Notice we changed 3 things, the d became a b, the second option is the folder we are recompiling, the third is the name of the new file
You should then see something that might be worrisome:
Code:
I: Checking whether sources has changed...
I: Smaling...
I: Checking whether resources has changed...
I: Building resources...
aapt: warning: string 'reject_cause_location_reg_fail' has no default translatio
n in C:\other\SecPhone\res; found: es pt
aapt: warning: string 'reject_cause_location_registering' has no default transla
tion in C:\other\SecPhone\res; found: es pt
aapt: warning: string 'stms_version' has no default translation in C:\other\SecP
hone\res; found: ja
I: Building apk file...
C:\other>
The warnings will be acceptable for the time being as they are related to a different language setting. If you are in English, you will be fine. If you are not, then that is a different tutorial altogether. Also, there is a very particular code bug that occurred the very first time I ran these commands and caused a catastrophic failure, more than any Movie-to-Game adaptation could ever be,
But you think you are done here, well that is not true. You see,
We have compiled the new APK file but unfortunately, it is a system file, we cannot sign this file to tell Android it is legit, we will have to cheat at this point, just like Valve did by creating any other project except Half Life 3 after number 2, you know they have enough funding for it, they are making it, and if I get kidnapped, I will probably be in a basement at Valve which I won't mind if they give me a grav gun. On a side note, while Brian Cranston would make a great Gordon Freeman, I still think Hugh Laurie would do a good job, just saying.
So back to our dilemma. We have created a new file called new-SecPhone.apk, open it with 7-zip, do not do anything yet, open the SecPhone.apk file you should have, it is the original file in the C:\other folder, we will need to drag two files for signature's sake
Copy the
Code:
Meta-INF Folder
AndroidManifest.xml
directly into the new-SecPhone.apk file. This can be done by dragging the files.
This will allow Android to think the file is signed and legit.
Take the new-SecPhone.apk file and copy it to your desktop and rename it to SecPhone.apk
Then place it into your ROM's system/app folder.
Your "first Mod" is ready to go, pretty easy actually but I really think the method is what many of us lack and this centralizes the effort. When you want to mod any System file, this process has to be done.
Its not a crazy mod, that will be after we explain how to modify files with Smali and BakSmali.
That will be in the next part of this set of series. These keep getting longer, I know, but we have a boat ton to cover. I think a central place to go-to for this information is important instead of jumping around to so many places for information. Eventually, the plan is to stick them as one big post I hope so we can integrate the vast amount of knowledge flowing.
Let me know what you think in the comments below, feedback is important, I felt this is so far the most complicated of the series and it will only get crazier. Luckily we can ask questions and keep this series going with an understanding for ROM building and see how much effort goes into someone else's effort modifying one of these ROM's out there, this is just a stock ROM mod tutorial, imagine something like CyanogenMod or any crazy ROM with a boat ton of features. It is time consuming and they deserve mad props for their amazing work.
Again great stuff. Can't wait for the next tutorial!
Sent from my SPH-L710 using xda app-developers app
bigpappags3 said:
Again great stuff. Can't wait for the next tutorial!
Sent from my SPH-L710 using xda app-developers app
Click to expand...
Click to collapse
He is very informative, and puts it in ways I can understand!
------------------------
Sprint Galaxy S3
Need Help? PM
Hit the "Thanks" button if I helped!
I'm stuck
I've downloaded the APKTOOL zip, and there is no setup.bat file in the unzipped package. There are only two files in the package and nothing else. One is an application called aapt, the other is a batch file called apktool. Both of which when executed briefly open a command prompt window that closes before I can read what they say. I've followed every direction to a "T" thus far, and can't figure out what to do. I thought that perhaps I had a bad download, but I've re-downloaded the file several times without success. Any suggestions would be incredibly helpful.
Might have a solution
balcoresbane said:
I've downloaded the APKTOOL zip, and there is no setup.bat file in the unzipped package. There are only two files in the package and nothing else. One is an application called aapt, the other is a batch file called apktool. Both of which when executed briefly open a command prompt window that closes before I can read what they say. I've followed every direction to a "T" thus far, and can't figure out what to do. I thought that perhaps I had a bad download, but I've re-downloaded the file several times without success. Any suggestions would be incredibly helpful.
Click to expand...
Click to collapse
Well it seems they have changed up quite a few things on the Wiki page, the version I was using was 1.5.2, the package has moved around and it seems these instructions are as obsolete as they are dependent on a website to not change things around.
They still offer the 1.5.2 of course but in the archives, suppose it was my fault linking to a constantly changing website than to link to the files directly that I used which I was considering.
This is the link
https://code.google.com/p/android-apktool/
zalooa said:
Well it seems they have changed up quite a few things on the Wiki page, the version I was using was 1.5.2, the package has moved around and it seems these instructions are as obsolete as they are dependent on a website to not change things around.
They still offer the 1.5.2 of course but in the archives, suppose it was my fault linking to a constantly changing website than to link to the files directly that I used which I was considering.
This is the link
https://code.google.com/p/android-apktool/
Click to expand...
Click to collapse
Thanks @zalooa. I'll give it a go tonight for sure. I appreciate you getting back to me!

Categories

Resources