[Q] Some General Questions Regarding the editing of android.policy.jar - Atrix 4G Q&A, Help & Troubleshooting

hello everyone
I have updated to kennethpenn's 4.5.91 Gingerbread Beta 4 (must say, it is truly a phenomally put together build !)
I have also noticed that many of the mods that i had applied to 1.8.3 have not been updated for 4.5.91, so i decided to make the changes myself.
Now, I have a pretty decent knowledge of Unix-based operating systems ( I have used Red Hat Linux, Ubuntu, SUSe Linux, OpenBSD, FreeBSD, Solaris, and now OS X) however, I would like to expand my knowledge to include Android.
The first one I attempted to do myself was the Wake on Volume Keys mod.
This is a very simple change to the android.policy.jar file, as you all well know.
For this, I used Windows XP, simply for the fact that I have 7zip and PeaZip installed on it. However, I can do all of this on OS X as well. The file archiver applications I have on OS X are:
1. The Unarchiver
2. Keka
I am going to list my method of applying this edit, and i would ask that someone with solid knowledge on this subject give me their feedback and guidance.
---------------------------------------------------------
My Method of editing android.policy.jar
---------------------------------------------------------
1. Using Root Explorer, I made a copy of /system/framework on my External SD Card
2. Mounting the Phone for USB Mass Storage on Windows XP that I have running in VirtualBox on my Macbook Pro, I moved the copy of the /system/framework directory to my Desktop
3. I downloaded smali-1.2.6.jar and baksmali-1.2.6.jar from code.google.com/p/smali/
4. I placed both of these .jar files in the copy of the framework-edited directory that I created on my Desktop
5. I renamed smali-1.2.6.jar to smali.jar and baksmali-1.2.6.jar to baksmali.jar for simplicity's sake
6. I moved the android.policy.jar file to /framework-edited directory on my Desktop
7. Using 7zip (I also have PeaZip, but for this, I used 7zip, if you think I should use PeaZip, please tell me) I extracted the files from android.policy.jar to end up with classes.dex and META-INF. I then moved classes.dex to /framework-edited so it is in the same directory as smali.jar and baksmali.jar
8. In Command Prompt, I entered:
Code:
cd C:\Documents and Settings\Owner\Desktop\framework-edited
in order to be working from the proper location where my files are located
9. Now, having Command Prompt working in the proper location, I entered the following commands:
Code:
java -jar baksmali.jar -o classout/ classes.dex
to create a new directory within /framework-edited called /framework-edited/classout
10. I then opened the /classout directory, and navigated to /classout/com/android/internal/policy/impl/ and opened the file KeyguardViewMediator.smali with Notepad
11. I used [Ctrl] + [F] to locate the line:
private isWakeKeyWhenKeyguardShowing(I)Z​
12. I then looked at the lines DIRECTLY below the above line, and following the Original Post on how to manually apply this modification, I removed lines:
0x18
0x19​
13. Upon removing these lines, I simply did a File -> Save As -> KeyguardViewMediator.smali and saved the file to my desktop
14. I [Cut] + [Pasted] the edited KeyguardViewMediator.smali file back to /classout/com/android/internal/policy/impl/ and replaced the original KeyguardViewMediator.smali file
15. With the edited KeyguardViewMediator.smali file in place, I went back to Command Prompt and entered the following commands:
Code:
java -Xmx512M -jar smali.jar classout/ -o new-classes.dex
To create a new file called new-classes.dex
16. Changing the name of new-classes.dex to classes.dex, I took the original META-INF file, and my newly created classes.dex files, and, using 7zip, created a new android.policy.zip archive
17. I renamed my newly created android.policy.zip to android.policy.jar, and transferred it to my External SD Card
18. Using Root Explorer, I navigated to /system/framework on my phone, and renamed android.policy.jar to 1122android.policy.jar.bac and [Copy] + [Pasted] my edited android.policy.jar to /system/framework
19. I then immediately powered off my phone, and rebooted into CWM Recovery, and cleared my Dalvik Cache, then rebooted the phone normally through CWM Recovery.
At this point, to my knowledge, I had successfully edited my android.policy.jar file and had manually added the Wake on Volume Keys modification, however, once the phone was fully booted and showing my lockscreen, I unlocked the phone as normal by sliding the slider to the right. As soon as the phone unlocked, I saw pop-ups for processes that had failed and were terminated. I'm not sure what the exact message the pop-ups had, but it was the normal pop-up message you get when a process force-closes. My only option was to click "Ok" so I clicked it, only to have another force-close pop-up.
Apparently, every single process on the phone had force-closed, BUT, the phone was waking when I press a volume key while the screen was off. I had no choice but to pull the battery out.
I decided to reboot into CWM Recovery and "install .zip from SD Card", Nottach's 1% Battery Mod / No Carrier Mod Uninstall Script
I installed Nottach's uninstall script because I hoped that it had an unmodified copy of android.policy.zip in it.
After installing the uninstall script, and rebooting the phone once again, I got to the lock screen, unlocked the phone, and found everything to be in perfect working order, just as before I edited anything,
But the Wake on Volume Keys mod was still applied!
So now, my questions / requests to all of you are:
1. Explain to me what I missed or did wrong that resulted in the force-closure of every single process on the phone prior to installing Nottach's Uninstall script
and
2. Educate me on the proper process that you developers use to apply small modifications such as this one to the android.policy.jar file, or any other related file on the phone for that matter.
My plan is now to change the color of the text on my lock screen (Clock, Date, and possibly Carrier) following this [Guide]
Any and all feedback is welcomed and greatly appreciated, as you will be helping me learn the beginnings of modding and developing

bump . . . . .

Perhaps this may help
http://forum.xda-developers.com/showthread.php?p=18226553

Related

Change unknown caller picture

When a call comes in which is from an unknown nuumber or a contat that doesn't have a picture assigned to it you get a blue outline of a person, with a question mark in the middle by default. Is there way of changing this default image to something more interesting? Any ideas?
Thanks
Not too hard to do
I know its been awhile since you asked, but since I haven't found an answer anywhere else...
You need to open the (ROM).zip that you are using and edit an .apk and then use ADB to push it back to the phone.
I'm using Virtuous Unity 1.3.1. I've done it successfully on a few other ROMs too.
You'll need a graphics editor (I used MS Paint), Android SDK with adb, 7-Zip.
Here's how I did it...
As always, MAKE A BACKUP! Its not my fault if something goes wrong.
1 - Open the .zip copy of the ROM that you're using
2 - Extract a copy of /system/app/Phone.apk
3 - Open Phone.apk using 7-zip and copy the following files to your desktop (don't close the 7-Zip window):
-phone_default_270.png
-phone_default_300.png
-phone_default_incall_270.png
-phone_default_incall_300.png
4 - Find a picture that you want to use and resize it to 300x300 and 270x270. Save it as the above file names.
5 - Copy the 4 files back into the Phone.apk archive and exit 7-Zip
6 - Copy the new Phone.apk file into your adb directory (Android SDK, usually in the platform-tools folder)
7 - Connect your phone to your computer and ensure its in charge-only mode with USB debugging enabled
8 - Open a command prompt window, change to your adb directory, and run the following commands:
adb devices {to make sure the device is connected}
adb remount {sets it to read/write}
adb push Phone.apk /system/app/Phone.apk {replaces the Phone.apk file}
9 - Disconnect your device and reboot
10 - Enjoy!
-Kyle

[SOLVED] How to deodex?

Hi, is it possible to just deodex one apk or do you have to do an entire ROM?
Basically I have a 'Rosie.apk' and 'Rosie.odex', but want to deodex it so I can get to the 'classes.dex' file. Can someone let me know how I might go about this?
Try apktool? Might be Linux only, can't remember sorry.
Sent from my HTC Hero using XDA App
Have successfully done what I wanted now
For info, this is what I did.
Created a new folder called 'system' in c:\android-sdk\tools. Obtained the odexed framework folder and placed that in the system folder. Then created a folder called app in the system folder and placed the Rosie.apk and Rosie.odex inside.
Then via cmd, entered the 'system/app' folder, so for me it was...
c:\android-sdk\tools\system\app
From there I ran the following command to end of that path: baksmali.jar -d ../framework -x Rosie.odex
This produced an out folder will all the decompiled .smali files etc. From there I was able to get to the Launcher.smali that i wanted, but to recompile to a classes.dex file you simply run the following command: smali.jar out
This produces an 'out.dex' that you can rename to 'classes.dex'
I am sure there are other commands that you can use to name files accordingly etc but this is what worked for me for what I wanted, so hopefully it will be of some help to people... if they can understand anything I've written.
jpool81 said:
Have successfully done what I wanted now
For info, this is what I did.
Created a new folder called 'system' in c:\android-sdk\tools. Obtained the odexed framework folder and placed that in the system folder. Then created a folder called app in the system folder and placed the Rosie.apk and Rosie.odex inside.
Then via cmd, entered the 'system/app' folder, so for me it was...
c:\android-sdk\tools\system\app
From there I ran the following command to end of that path: baksmali.jar -d ../framework -x Rosie.odex
This produced an out folder will all the decompiled .smali files etc. From there I was able to get to the Launcher.smali that i wanted, but to recompile to a classes.dex file you simply run the following command: smali.jar out
This produces an 'out.dex' that you can rename to 'classes.dex'
I am sure there are other commands that you can use to name files accordingly etc but this is what worked for me for what I wanted, so hopefully it will be of some help to people... if they can understand anything I've written.
Click to expand...
Click to collapse
If I needed to, how can I recompile back to Rosie.odex (for example). Do I just rename the out.dex file to Rosie.odex or is there another step to get it back to the original version. Here is why I am asking...I wanted to change a few lines in a file in the services.odex file. I deodexed it with the method explained above and now I want to put that file back on my device. Am I going about this the wrong way? Do I need to follow a different process to get it back to the services.odex file?
Thanks.
Could somebody possibly deodex this apk file for me, Ive been at it all day...
I'll be forever in your debit
Code:
http://speedy.sh/4dJ6f/deodex3.rar

[Q] Android Stock 2.3.3 with CRT animation enabled

Can anyone guide me how to enable CRT animation for stock android 2.3.3 on galaxy ace?
codestudent said:
Can anyone guide me how to enable CRT animation for stock android 2.3.3 on galaxy ace?
Click to expand...
Click to collapse
I think you should have posted this in themes and apps section but nevertheless this is your answer-
You will need-
a)APK Manager from here http://forum.xda-developers.com/showthread.php?t=695701
b) .zip manager (I suggest 7-zip or winrar for windows and archive manager for linux)
c) text editor ( Notepad++ in windows or gedit/write in linux )
d) framework-res.apk from /system/framework that you want to modify and build.prop from /system.
e)Root explorer/Fileexpert or adb to pull framework-res.apk and build.prop
First thing using root explorer or adb pull the above files to your computer.Then do the following..
1) Once you extract APKManager you should have a folder called "APKManager," somewhere.
2) Within that folder there's another folder called "place-apk-here-for-modding". Place you desired framework-res.apk into that folder.
3) Navigate back to the root of "APKManager", and double-click "Script.bat"in windows or "Script.sh" in linux
4) Press option 9 to decompile the apk. (It may take some time)
5) Once finished, navigate to "APKManager\projects\framework-res.apk\res\values".
6) Inside look for a file called "bool.xml". Open it using your notepad++ or gedit
and find and change the
"<bool name="config_animateScreenLights">true</bool>" to "<bool name="config_animateScreenLights">false</bool>"
7) Remember to save! Not "save as," but save.
8) Doubl-click "Script.bat" or "Script.sh"again, and choose option 11 to sign the apk
9) Say "y" to first option.
10) When that is done, a new folder called "keep" will be created. Open that folder, and delete resource.arsc.
11) Say "y" to the last option.
12) It will ask you to press any key, do that, and it will finish.
13) Navigate to the "place-apk-here-for-modding" folder, and you'll see a new file called, "unsignedframework-res.apk" open it with a .zip manager, and take the resource.arsc file from it, and transfer it to your original framework-res.apk (Which should be in the same folder)
14) Now push the modified original framework-res.apk(with new resource.arsc) onto your phone /system/framework using adb or copy by root explorer/fileexpert, and set permissions using root explorer to -rw -r -r or use chmod 644 framework-res.apk using adb. There wil be force-closes using root explorer when copying..just ignore that and set permissions and reboot.
15) Now pull build.prop from /system to your computer
16) Open build.prop and modify the line.
'debug.sf.hw=1' is the line in the file. Replace it by '#debug.sf.hw=1'. Indirectly you are just changing the line into a comment by adding a #
17) Now take this file and replace your original build.prop. You can do this by using adb or root explorer and set permssions similarly as in above.
18)Reboot and go to settings>>display>>animations and choose all animations. Enjoy your crt screenoff animation.
Added the guide in themes section http://forum.xda-developers.com/showthread.php?p=15976400
did as told but no luck. I'm using S5830XEKPH 2.3.4 firmware (Booted)
I have just noted that root explorer is not replacing framework file with the new one.

[GUIDE] How to make a custom android rom with DragonFace.

Whats sup guys?I been using dragonface to make custom roms for my android device.So i decided to make a guide showing you how to make your own.Enjoy.Make sure to thank me! alright lets get started
Basic Requirements: - Dragonface V2.2.0 V2.2.3 (download here in this Forum)
- Dragonface Tutorial, and knowledge of the basic functions (download here in this tut)
- Windows Explorer
- Notepad++ (http://notepad-plus-plus.org/download/v6.6.9.html)
- ROM you want to modify
- Phoiexcard
If additional tools are requiered, they are mentioned in the regarding Instruction.
Common Steps for all modifications: STEP 1: extract your ROM (*.img) with Dragonface
STEP 2: change to Windows Explorer
ATTENTION: don't shut down DragonFace or copy the needed directories and
files some where else if you want to work "offline" (Directories: CPFOP, fsop -
Files: sysconfig.lhs), because DragonFace erases everything while shuting
down
STEP 3: Save the modified ROM with Dragonface
ATTENTION: If you worked "offline", do first Step 1, and then replace the
created Directories/Files with your modified
STEP 4: Flash your ROM (.img) with the Onda Suite
So let`s start.
PS.: If you try your own modification, it would be good to make only one after the other, and test between two modification. This makes it easier to solve problems when it´s not working like you except it, because you know what causes the problem.
HowTo - Increase the available space for your Apps (Firmware V1.0.0 - V2.1.3 all Versions)
1. You have done Step 1&2 in the first post
2. Now navigate to the following directory with the Windows Explorer ( must be set to show hidden Files/Directories!)
c:/User/..your Username../AppData/Local/Temp
3. Find the file sysconfig.lhs
4. Open it with Notepad++
5. Navigate to the following:
;------------------------------>mmcblk0p8/nande
[partition]
name = data
size = 4194304
user_type = 0x8000
6. Now change the value of size to the space you want
The current value of 4194304 stands for 2GB, that means you have to multiply 2097152 by the amount of GB you want to have for your Apps
for example: 6GB = 12582912
7. Save sysconfig.lhs
8. Save .img in Dragonface
9. Flash your ROM - Done!
Her is a link to a video tutorial (in chinese): http://v.youku.com/v_show/id_XODEzODEwNzQ4.html&usg=ALkJrhhE_ACHQznY8ibrYYK7wMCYzcWCJg
Since the test version of Android 5, there is no seperat app partition in the firmware anymore.
HowTo - PreRoot your ROM (Firmware V1.0.0 - V2.0.2 all Versions)
1. You have done Step 1&2 in the first post
2. Now navigate to the following directory with the Windows Explorer
.../Dragonface_2.2.0/CPFOP/bootfs/skel
3. Find the file init.rc
4. Open it with Notepad++
5. Insert after Line 293:
su root
chown root root /system/app/superuser.apk
chown root root /system/xbin/su
chown root root /system/xbin/daemonsu
chown root root /system/bin/.ext/.su
chown root root /system/etc/.installed_su_daemon
chown root root /system/etc/install-recovery.sh
chown root root /system/etc/init.d/99SuperSUDaemon
chmod 6755 /system/xbin/su
chmod 6755 /system/xbin/daemonsu
chmod 0777 /system/bin/.ext
chmod 6755 /system/bin/.ext/.su
chmod 0644 /system/etc/.installed_su_daemon
chmod 0755 /system/etc/install-recovery.sh
chmod 0755 /system/etc/init.d
chmod 0755 /system/etc/init.d/99SuperSUDaemon
chmod 0644 /system/app/superuser.apk
chmod 0755 /system/xbin/busybox
6. Save init.rc
7. Now navigate to the following directory with the Windows Explorer
.../Dragonface_2.2.0/fsop/system
8. create the directories and place or replace the needed files if not already present (check filesize, paths and files see
Step 5)
Download needed files here: https://mega.co.nz/#!XU5EFaBK!9ZFnDrzJnlGWoMOISkzQ-dczBKUB6cM8O3aswEjI2IY
Attention: Windows Explorer is not able to create the directory /system/bin/.ext, because it doesn't like the
leading dot.
So open "Command Prompt" and type mkdir .ext to create the directory (navigate before to ..system/bin)
9. Save .img in Dragonface
10. Flash your ROM - Done!
HowTo - PreRoot your ROM (Firmware V2.1.0 - V2.1.3 all Versions)
Step 1 - 10 are the same, only change:
Step 5:
chmod 0755 /sbin/busybox (Instead of: chmod 0755 /xbin/busybox)
Important: If you reopen a prerooted ROM with Dragonface, you have to recreate the .ext folder again and place .su again in it. During the extracting the .ext folder disappears due the restrictions of Windows. Saving without recreating breaks the prerooting!
HowTo - Theming your system:
The following instructions are made for the new V2.1 Firmware and should work with all Versions.
Indroduction: now we start modifying existing APPs. In the first step there are HowTo´s which can be easy done without using any app tools. The simple reason for that is, as long as we don´t take away or add graphics inside an app, and only modify them, for Android everything is fine. When we start to add or remove files inside the app or we want to change the behaviour of an app or add Features, for example in the Settings menu, we will need to de- and recompile and sign the app, ortherwise it won´t work. But this will come later.
Change the default Wallpaper:
additional needed programs: WinRAR
1. First find a Wallpaper you like with a Resolution of 2048*2048 and .jpg format, and save it to your computer
2. Rename the Wallpaper to default_wallpaper.jpg
3. Do the steps 1&2 in the first Post
4. Navigate to fsop/system/framework and find: framework-res.apk
5. Open it with WinRar and navigate to the folder drawable-nodpi
6. Now insert your Wallpaper with drag´n drop
Attention: There is now a Window popping up and asks you what to do. Choose under "COMPRESSION
METHOD" on the left side the option "SAVE".
When you look on WinRar you see that the pictures aren´t compressed, so just leave them
uncompressed.
7. Close WinRAR and you are done!
8. Save .img in Dragonface
9. Flash your ROM - Done!
Change the Wallpaper on the LockScreen (Firmware V2.1.0 - V2.1.3 all Versions)
additional needed programs: WinRAR
1. First find a Wallpaper you like with a Resolution of 2048*2048 and .jpg format, and save it to your computer
2. Rename the Wallpaper to wallpaper_03.jpg
3. Do the steps 1&2 in the first Post
4. Navigate to fsop/system/priv-app and find: JuiKeyguard.apk
Alternativ, on a running system, copy JuiKeyguard.apk to your PC, make the changes descriped in the next
steps and copy the modified apk back to the tablet. Don't forget to set the right permissions for the apk.
5. Open it with WinRar and navigate to the folder drawable-nodpi
6. Now insert your Wallpaper with drag´n drop
Attention: There is now a Window popping up and asks you what to do. Choose under "COMPRESSION
METHOD" on the left side the option "SAVE".
When you look on WinRar you see that the pictures aren´t compressed, so just leave them
uncompressed.
7. Close WinRAR and you are done!
8. Save .img in Dragonface
9. Flash your ROM - Done!
When you chance the Lockscreen Wallpaper direct on the tablet (already running system), wipe the Dalvik Cache, otherwise the Wallpaper won't change.
Change the icons in the Statusbar
additional needed programs: WinRAR
Paint.net (optional)
1. Do the steps 1&2 in the first Post
2. Navigate to fsop/system/priv-app and find: JuiSystemUI.apk
3. Open it with WinRar and navigate to the folder drawable-xhdpi
4. Look for the icons you want to change and notice the resolution
Optional: you can edit the icons by using Paint.net
5. Replace the icons you want with drag´n drop or replace the icon with an already existing in the folder (make a duplicate and rename the duplicate to the correct filename)
THEY SHOULD HAVE THE SAME RESOLUTION AND MUST BE IN .PNG FORMAT!
DON`T ADD OR REMOVE ICONS, ONLY REPLACE THEM USING THE CORRCT FILENAME - OTHERWISE YOU
CORRUPT THE APP
IF YOU WANT TO ADD OR DELETE ICONS OR ADD NEW FEATURES YOU HAVE TO DE- AND RECOMPILE IT
Attention: There is now a Window popping up and asks you what to do. Choose under "COMPRESSION
METHOD" on the left side the option "SAVE".
When you look on WinRar you see that the pictures aren´t compressed, so just leave them
uncompressed.
6. Close WinRAR and you are done!
7. Save .img in Dragonface
8. Flash your ROM - Done!
Enjoys and press Thanks!!!!!!!!!!!!!!!!!
Dragonface software
Hello,
Are there any guides/tutorials for the Dragonface software in english anywhere please? I have googled but they are in Chinese or some other other language. Something for Dragonface v2.2.5 would be appreciated.
Thank you.
trustytrev.
Sir this is tutorial for dragonface in english
more space for apps in V989 v1
Hello,
firmware
989 Air Core8 v1.0.6_v2.img
onda v989 v1
I use dragonface to add space for apps. then i use phoenixsuite to apply img file modified... but it no works!
i need to back 989 Air Core8 v1.0.6_v2.img
this table have 2Gb for apps 2gb RAM and 32Gb more...
heeelp please
Devmountsu77 said:
Sir this is tutorial for dragonface in english
Click to expand...
Click to collapse
Hello,
Sorry I was meaning how to video tutorials of using the dragonface software in english.
I have now found something that was suitable for me as a complete novice.
Thank you.
trustytrev.
A83T
I have tried using Dragon Face for A83T image file. But looks like I am stuck.
The Software does unpacking properly. But during packing image, I am not sure what goes wrong, the initial Green Progress bar of Flashing Firmware also does not show up in the device.
I have in fact tried - unpacking stock firmware and packing the firmware without making any changes to the Image.
It fails!
Any help will be greatly appreciated.
bumping this old thread trying to root this POS irulu tablet I got the firmware image rooted and resaved
flash it but it hangs at the pre-boot splash
edit: I am pretty sure its either a int.rc or su binary problem, if I flash just the stock boot/env it boots
so there is something in the init.rc it doesn't like
here is my init rc
https://pastebin.com/NwZ9ntEB
after hours of monkeying about with it I am pretty sure its a issue with dragonface
any attempt to modify int scripts results in it hanging on splash, possibly some form of boot image checking
I can modify system all day long but I can't touch the boot partition
I don't have the capability to build a generic twrp image for the A33 so I can't even get to a decent recovery
Bringing this thread back to life, is there a way to set the default launcher through file manipulation (as with the above tutorial) rather than with ADB or in the Android Settings app? I've been searching, but haven't found any good information.
Edit: Nevermind, it was an issue with the default launcher and possibly pheonixcard. Got it resolved

[GUIDE] Modifying apk/jar files on the Axon 7

So I decided to write up a little guide on how to modify apk and jar files on the Axon 7 for those of you who do not know how and would like to make some modifications such as the ones in my guides.
Prerequisites
A Windows/Linux/Mac computer
A rooted device with TWRP Recovery
USB cable
ADB installed and USB debugging enabled
Java JDK: http://www.oracle.com/technetwork/java/javase/downloads/index.html
APKTool: https://ibotpeaches.github.io/Apktool/install/ (Follow all the instructions)
Baksmali: https://bitbucket.org/JesusFreke/smali/downloads/baksmali-2.2.0.jar
7-Zip or another archive manager
1. Install the frameworks to your computer
Open a command window in your working directory and connect your device to your computer with the USB-C cable.
Pull the framework files with
Code:
adb pull /system/framework/framework-res.apk
adb pull /system/framework/framework-zte-res.apk
Install them
Code:
apktool if framework-res.apk
apktool if framework-zte-res.apk
Depending on which ROM you are on you may need to install other frameworks. The above is for the stock ROM.
2. Decompile the apk/jar file.
Pull the apk/jar you want to decompile with
Code:
adb pull path_to_apk_or_jar
Here are paths for some commonly modified apk/jars:
SystemUI: /system/priv-app/SystemUI_ZTE/SystemUI_ZTE.apk
Settings: /system/priv-app/Settings_ZTE/Settings_ZTE.apk
services.jar: /system/framework/services.jar
Decompile the apk with
Code:
apktool d <apk/jar>
If you did everything correctly, a folder should now exist with the name of your apk/jar.
3. Decompile the .odex file
You can skip this step if your apk/jar does not have an .odex associated with it or you only need to modify res and not smali.
Pull the odex file
Code:
adb pull path_to_odex
For example if you want to pull the odex file for SystemUI you would do
Code:
adb pull /system/priv-app/SystemUI_ZTE/oat/arm64/SystemUI_ZTE.odex
Create a folder called "smali" in the directory of your decompiled apk/jar. Then go back to your working directory.
Pull all boot oat files from your device with
Code:
adb pull /system/framework/arm64
Move all the oat files inside the arm64 folder on your PC to your working directory.
Using baksmali, decompile the odex file to smali
Code:
java -jar baksmali.jar deodex -a <api> filename.odex
where api is 23 for Android 6.0, 24 for Android 7.0, and 25 for Android 7.1
A new folder should now be created called "out". Cut and paste the files and folders inside this folder into the "smali" folder you created earlier.
4. Make your modifications.
5. Recompile the apk/jar
From the working directory (not the directory of the decompiled apk/jar) Recompile the apk/jar with
Code:
apktool b name_of_folder
where name_of_folder is the name of the directory of the decompiled apk/jar.
The complied apk/jar should now exist in the "dist" folder in the directory of the decompiled apk/jar.
6. Sign the apk.
Using 7-zip or another archive manager, copy the res folder, resources.arsc file, and the classes.dex file (if you modified smali in steps 3 and 4) from the NEW apk to the ORIGINAL apk.
7. Replace the apk/jar on your device.
Reboot your device into TWRP recovery with
Code:
adb reboot recovery
For user apps: Make sure data is mounted in TWRP's mount menu. If you have encryption turned on you must enter your password otherwise data will not be mounted!
For system apps and framework files: Make sure system is mounted in TWRP's mount menu. Uncheck "Mount system read-only" if it is checked.
Push the ORIGINAL apk/jar to the correct directory on your device
Code:
adb push <apk/jar> path_to_apk_or_jar
Set correct permissions on the apk/jar
Code:
adb shell chmod 0644 path_to_apk_or_jar
If you did step 3, use TWRP's file manager in Advanced<File Manager to navigate to the apk/jar file's directory and delete the existing .oat or .odex file associated with it.
You did it
No go
Hi,
Tried it with the SystemUI_ZTE.apk (and odex) from the 2017G B08 ROM. I ended up with a folder named SystemUI_ZTE. I created a smali folder in that folder and moved the android, com and cn folders (that I got using the "java -jar oat2dex.jar smali SystemUI_ZTE.odex" command) to that smali folder. But when I try the apktool b command I get the following error:
Code:
C:\Users\Blub\ZTE>apktool b SystemUI_ZTE
I: Using Apktool 2.3.0
I: Checking whether sources has changed...
I: Smaling smali folder into classes.dex...
SystemUI_ZTE\smali\android\support\v17\leanback\app\BackgroundManager.smali[102,4] iput-wide-volatile is an odexed instruction. You cannot reassemble a disassembled odex file unless it has been deodexed.
Exception in thread "main" brut.androlib.AndrolibException: Could not smali file: android/support/v17/leanback/app/BackgroundManager.smali
at brut.androlib.src.SmaliBuilder.buildFile(SmaliBuilder.java:75)
at brut.androlib.src.SmaliBuilder.build(SmaliBuilder.java:59)
at brut.androlib.src.SmaliBuilder.build(SmaliBuilder.java:36)
at brut.androlib.Androlib.buildSourcesSmali(Androlib.java:412)
at brut.androlib.Androlib.buildSources(Androlib.java:343)
at brut.androlib.Androlib.build(Androlib.java:299)
at brut.androlib.Androlib.build(Androlib.java:270)
at brut.apktool.Main.cmdBuild(Main.java:224)
at brut.apktool.Main.main(Main.java:75)
Any idea what I am doing wrong?
TIA,
Cheers,
/Cacti
le_cactus said:
Hi,
Tried it with the SystemUI_ZTE.apk (and odex) from the 2017G B08 ROM. I ended up with a folder named SystemUI_ZTE. I created a smali folder in that folder and moved the android, com and cn folders (that I got using the "java -jar oat2dex.jar smali SystemUI_ZTE.odex" command) to that smali folder. But when I try the apktool b command I get the following error:
Any idea what I am doing wrong?
TIA,
Cheers,
/Cacti
Click to expand...
Click to collapse
I updated the OP with a different tool for the odex file. Try it now.
Hi,
Thanks,but "java -jar baksmali-2.2.0.jar -a 25 -x SystemUI_ZTE.odex -d %CD%" gives me this error
Code:
Exception in thread "main" com.beust.jcommander.MissingCommandException: Expected a command, got -a
at com.beust.jcommander.JCommander.parseValues(JCommander.java:725)
at com.beust.jcommander.JCommander.parse(JCommander.java:304)
at com.beust.jcommander.JCommander.parse(JCommander.java:287)
at org.jf.baksmali.Main.main(Main.java:90)
Cheers,
/Cacti
le_cactus said:
Hi,
Thanks,but "java -jar baksmali-2.2.0.jar -a 25 -x SystemUI_ZTE.odex -d %CD%" gives me this error
Cheers,
/Cacti
Click to expand...
Click to collapse
Try it without any arguments: "java -jar baksmali-2.2.0.jar SystemUI_ZTE.odex"
Hi,
The command "java -jar baksmali.jar deodex -a 25 SystemUI_ZTE.odex"gives me
Code:
Error occurred while loading class path files. Aborting.
org.jf.dexlib2.analysis.ClassPathResolver$ResolveException: Error while loading oat file boot.oat
at org.jf.dexlib2.analysis.ClassPathResolver.loadEntry(ClassPathResolver.java:250)
at org.jf.dexlib2.analysis.ClassPathResolver.loadLocalClassPathEntry(ClassPathResolver.java:179)
at org.jf.dexlib2.analysis.ClassPathResolver.loadLocalOrDeviceBootClassPathEntry(ClassPathResolver.java:191)
at org.jf.dexlib2.analysis.ClassPathResolver.<init>(ClassPathResolver.java:120)
at org.jf.dexlib2.analysis.ClassPathResolver.<init>(ClassPathResolver.java:105)
at org.jf.baksmali.AnalysisArguments.loadClassPathForDexFile(AnalysisArguments.java:129)
at org.jf.baksmali.AnalysisArguments.loadClassPathForDexFile(AnalysisArguments.java:86)
at org.jf.baksmali.DisassembleCommand.getOptions(DisassembleCommand.java:203)
at org.jf.baksmali.DeodexCommand.getOptions(DeodexCommand.java:71)
at org.jf.baksmali.DisassembleCommand.run(DisassembleCommand.java:177)
at org.jf.baksmali.Main.main(Main.java:102)
Caused by: org.jf.dexlib2.analysis.ClassPathResolver$NotFoundException: Cannot find dependency boot-core-libart.oat in null
at org.jf.dexlib2.analysis.ClassPathResolver.loadOatDependencies(ClassPathResolver.java:270)
at org.jf.dexlib2.analysis.ClassPathResolver.loadEntry(ClassPathResolver.java:248)
... 10 more
Cheers,
/Cacti
le_cactus said:
Hi,
The command "java -jar baksmali.jar deodex -a 25 SystemUI_ZTE.odex"gives me
Cheers,
/Cacti
Click to expand...
Click to collapse
pull boot-core-libart.oat from /system/framework/arm64/boot-core-libart.oat and try again
Muchas gracias
Hi,
Had to pull all the .oat files from the /system/framework/arm64/ folder, only then I didn't get an error any more using the command "java -jar baksmali.jar deodex -a 25 SystemUI_ZTE.odex". The "command "java -jar baksmali.jar -a 25 -x SystemUI_ZTE.odex -d %CD%" still gave an error, you might wanna change that in the OP.
Now apktool b SystemUI_ZTE didn't give me any errors anymore. Executed the other steps, and bingo! Everthing seems to work. And byy replacing the charging.ogg, my device charges silently.
Thanks from my wife as she now doesn't wake up when I go to bed (and connect the charger). Many thanks for your patience and your excelent guide! I guess I'll bemodding some more APK's now
Cheers,
/Cacti
le_cactus said:
Hi,
Had to pull all the .oat files from the /system/framework/arm64/ folder, only then I didn't get an error any more using the command "java -jar baksmali.jar deodex -a 25 SystemUI_ZTE.odex". The "command "java -jar baksmali.jar -a 25 -x SystemUI_ZTE.odex -d %CD%" still gave an error, you might wanna change that in the OP.
Now apktool b SystemUI_ZTE didn't give me any errors anymore. Executed the other steps, and bingo! Everthing seems to work. And byy replacing the charging.ogg, my device charges silently.
Thanks from my wife as she now doesn't wake up when I go to bed (and connect the charger). Many thanks for your patience and your excelent guide! I guess I'll bemodding some more APK's now
Cheers,
/Cacti
Click to expand...
Click to collapse
Great! I'll add that to the OP! Thanks for helping me out!
Updated the OP with a new signing method that should fix boot hang issues with some apks (aka Settings_ZTE)
bkores said:
Updated the OP with a new signing method that should fix boot hang issues with some apks (aka Settings_ZTE)
Click to expand...
Click to collapse
IMO it was just the same as your previous method (under 5.)was saying : move META-INF ( and manifest but not necessary imo) from original apk into the new apk (in dist folder).
Now you're saying : put res, resources and classes from new apk into new apk...that's just the same, no ? Only more files to move imo.
Since res, resources and classes are indeed changing by compile, wouldn't it be better by just saying : put META-INF from original apk into new apk, like you first wrote in OP ? Easier no ?
ALSO : under 6. you say : Open a command window in the "dist" folder and push the ORIGINAL apk/jar to the correct directory on your device
Shouldn't that be : push ORIGINAL (since you copied files under 5 from NEW(in "dist") to ORIGINAL(in working folder) ) FROM WORKING FOLDER ? Since there is no original apk in DIST folder, only our new apk. Imo you make things a bit confusing here, no ? :cyclops:
raystef66 said:
IMO it was just the same as your previous method (under 5.)was saying : move META-INF ( and manifest but not necessary imo) from original apk into the new apk (in dist folder).
Now you're saying : put res, resources and classes from new apk into new apk...that's just the same, no ? Only more files to move imo.
Since res, resources and classes are indeed changing by compile, wouldn't it be better by just saying : put META-INF from original apk into new apk, like you first wrote in OP ? Easier no ?
ALSO : under 6. you say : Open a command window in the "dist" folder and push the ORIGINAL apk/jar to the correct directory on your device
Shouldn't that be : push ORIGINAL (since you copied files under 5 from NEW(in "dist") to ORIGINAL(in working folder) ) FROM WORKING FOLDER ? Since there is no original apk in DIST folder, only our new apk. Imo you make things a bit confusing here, no ? :cyclops:
Click to expand...
Click to collapse
Fixed!
bkores said:
Fixed!
Click to expand...
Click to collapse
Thnx Mate ! Appreciate all your work :good:
i have some problem with framework.jar, it doesn't have classes.dex in jar but it also doesn't have odex file in /system/framework/oat/arm64 (also arm). Because of it i can't decompile it using smali/baksmali tool. I want to make more volume steps mode like VolumeSteps+ but without Xposed. Hope someone can help.

Categories

Resources