How do I edit the SDK number of an APK file? - Android Q&A, Help & Troubleshooting

A game I really liked only worked on old phones, not on "new" ones (from 2014). I made a thread asking how to make them work and they said to edit the apk's SDK number.

Hyoretsu said:
A game I really liked only worked on old phones, not on "new" ones (from 2014). I made a thread asking how to make them work and they said to edit the apk's SDK number.
Click to expand...
Click to collapse
Hi...
In order to do this, u need to decompile the app with apktool, then edit the line "min sdk version" in Android Manifest file with notepad++ and just recompile the apk.
Note: If the line is not found in Android Manifest file, it would be in apktool.yml file of same directory.
Check this tool to easily decompile and recompile APK file.
Sent from my ONE A2005 using Tapatalk

Brandon Indar said:
Hi...
In order to do this, u need to decompile the app with apktool, then edit the line "min sdk version" in Android Manifest file with notepad++ and just recompile the apk.
Note: If the line is not found in Android Manifest file, it would be in apktool.yml file of same directory.
Check this tool to easily decompile and recompile APK file.
Sent from my ONE A2005 using Tapatalk
Click to expand...
Click to collapse
Somehow it's missing a classes.dex, so apktool gives
Code:
Exception in thread "main" brut.androlib.AndrolibException: brut.directory.DirectoryException: java.util.zip.ZipException: error in opening zip file
when trying to decompile it and http://www.javadecompilers.com gives
"Job Outputcode: -1
Job Output:
File not found: com.vpet_source_from_JADX/classes.dexcom.vpet_source_from_JADX/classes.dex"

Hyoretsu said:
Somehow it's missing a classes.dex, so apktool gives
Code:
Exception in thread "main" brut.androlib.AndrolibException: brut.directory.DirectoryException: java.util.zip.ZipException: error in opening zip file
when trying to decompile it and http://www.javadecompilers.com gives
"Job Outputcode: -1
Job Output:
File not found: com.vpet_source_from_JADX/classes.dexcom.vpet_source_from_JADX/classes.dex"
Click to expand...
Click to collapse
Can u send me the APK file.
I will check it out.
There must be a classes.dex file in the APK.
Sent from my ONE A2005 using Tapatalk

Brandon Indar said:
Can u send me the APK file.
I will check it out.
There must be a classes.dex file in the APK.
Sent from my ONE A2005 using Tapatalk
Click to expand...
Click to collapse
This is the one I'm using: https://www.apk20.com/apk/4553/

Hey, did you solve your problem?

Related

I can not edit string.xml, why? (apkmanager 5.0)

Hello guys, I state that I am no expert.
When decompiling a apk with apkmagager I find the folder with values ​​in the file string.xml, when I go to compile it can not find the folder inside the folder keep values/ string.xml, why?
How do I edit the file string.xml?
Thanks to all
Sorry for the inconvenience
make sure when you decompile the SystemUI.apk you also put framework-res .apk in your apktool folder. Then in cmd type
apktool if framework-res .apk
apktool d SystemUI.apk
Accidentally sent from my Google Nexus S using XDA Premium

apktool won't decompile

I'm trying to decompile a few apks for modifying the dialer on an ICS rom. When I go to decompile I get an empty folder and this error:
I: Baksmaling...
Exception in thread "main" java.lang.RuntimeException: bad magic value: 64 65 78 0a 30 33 36 00
at org.jf.dexlib.DexFile.<init>(DexFile.java:377)
at org.jf.dexlib.DexFile.<init>(DexFile.java:274)
at brut.androlib.src.SmaliDecoder.decode(SmaliDecoder.java:44)
at brut.androlib.src.SmaliDecoder.decode(SmaliDecoder.java:33)
at brut.androlib.Androlib.decodeSourcesSmali(Androlib.java:68)
at brut.androlib.ApkDecoder.decode(ApkDecoder.java:85)
at brut.apktool.Main.cmdDecode(Main.java:128)
at brut.apktool.Main.main(Main.java:65)
I'm using this ver: http://forum.xda-developers.com/showthread.php?p=22845681
All I would like to do is edit a few xml files to change the color on text. Anyone have any idea on what the issue is? Could I just rename the apk to .zip and extract the files to be edited?
There's another you can edit APK's.
- Extract the apk
- Modify the files in the folder you get after extracting
- Right click on the original APK and open it with 7zip ( click on "open archive " )
- Drag the edited file from the folder to the original APK and overwrite it.
With this method you don't need to decompile and then recompile !
Sent from my GT-I9003 using xda premium
Use the proper one, not an auto tool. download the latest apktool and make sure you add the framework files needed
thanks! it turned out I needed to use a different jar file from here http://forum.xda-developers.com/showthread.php?p=23483528 for the new ICS roms. So far so good but I'll definitely try the ways you mentioned. seems abit easier. appreciate the feedback.
New issue: when I try and compile it, all I get is a classes.dex file so I tried copying the files to the original apk with 7zip and whenever I flash the zip and try and access the dialer/phone app, i get an acore.process error and it force closes. All I did was edit some pngs and change some color values in a few xml's.
killerb777 said:
New issue: when I try and compile it, all I get is a classes.dex file so I tried copying the files to the original apk with 7zip and whenever I flash the zip and try and access the dialer/phone app, i get an acore.process error and it force closes. All I did was edit some pngs and change some color values in a few xml's.
Click to expand...
Click to collapse
I never had a problem doing this method!
What I did was :
After changing the files and putting them on the original APK
I just replaced it with the original one by going in System/App
And rebooted!
It worked everytime!
Don't flash, just replace it!
But take a backup of the original one before you replace!

[Q] APK modding Deskclock - Please Help

So i have this Deskclock.apk and i want to add this.
No Problem with the ".xml" Files. I can edit them easily after i decompile the apk with the "apkTool". But where will i find the ".java" Files? After decompiling the apk i only see ".smali".
So i found out that the ".java" files are in "classes.dex" from the apk.
I use "dex2jar" to get a ".jar" File.
Then i use "jd-gui" to get ".java" Files.
So i can edit it and put the needed Strings in the .java files.
But how to put them back to a "classes.dex" File which i can put back to the apk??
I hope i get a bit help here.
You can use APKTool. It will automaticly extract all the classes (.dex), resources (.asrc), then it will convert binary XML to human-readable XML, and it will also dissassemble the classes for you.
Just tell APKTool to decode the APK into a directory, then modify what you want, and finally encode it back to an APK. That's all.
Important: APKTool dissassembles. It doesn't decompile. The generated code won't be Java source. But you should be able to read it, and even edit it if you're familiar with jasmin. If you want Java source, please go over the Manual way.
Sent from my VS910 4G using XDA
Thx...I know how to use APKTool but i need to put the ".java" Files back into the "classes.dex". Thats my Problem.
There's info on the process here: http://stackoverflow.com/questions/10261147/converting-java-back-to-classes-dex
Essentially it looks like you need to compile the .java to .class files with javac and then create classes.dex with dx. Hope this link is helpful.

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

How to decode and Encode file AndroidManifest.xml in folder Original ?

Hi guys,
Can you tell me how to decode and Encode file AndroidManifest.xml in folder Original after decompiled a apk by apk easy tool ?
Tks!
Link file : drive.google.com/file/d/1IhfDhrEBTTlQA7NzvRBLiDrR3MR8usVT/view?usp=sharing
MinhFtuer said:
Hi guys,
Can you tell me how to decode and Encode file AndroidManifest.xml in folder Original after decompiled a apk by apk easy tool ?
Tks!
Link file : drive.google.com/file/d/1IhfDhrEBTTlQA7NzvRBLiDrR3MR8usVT/view?usp=sharing
Click to expand...
Click to collapse
Weird, AndroidManifest.xml is supposed to be decoded. The fact that it remains in the original folder is weird, did you try doing it with apktool only ? (With apk easy tool)
Super simple, just install apktool (if not already installed and working without apk easy tool)
To test if it's working without APK easy tool open a command prompt and enter "apktool --version", if it returns something, then it's good, if not, you're good to set it up yourself in a separate folder, here is the guide from the apktool website: https://ibotpeaches.github.io/Apktool/
Enter the command "apktool d [name of the apk].apk" to decompile your apk, you should have everything.
And if you don't want to bother your with all of that, I can decompile the APK for you and send you the AndroidManifest.xml file decompiled.
Have a good day
Raiz said:
Weird, AndroidManifest.xml is supposed to be decoded. The fact that it remains in the original folder is weird, did you try doing it with apktool only ? (With apk easy tool)
Super simple, just install apktool (if not already installed and working without apk easy tool)
To test if it's working without APK easy tool open a command prompt and enter "apktool --version", if it returns something, then it's good, if not, you're good to set it up yourself in a separate folder, here is the guide from the apktool website: //ibotpeaches.github.io/Apktool
Enter the command "apktool d [name of the apk].apk" to decompile your apk, you should have everything.
And if you don't want to bother your with all of that, I can decompile the APK for you and send you the AndroidManifest.xml file decompiled.
Have a good day
Click to expand...
Click to collapse
Thanks for your reply, I have tried to decompile that apk by your way but file AndroidManifest.xml in folder ...original\AndroidManifest still be encoded. Can you help me decode it as you said that ?
Link down this apk :drive.google.com/file/d/18HjRivgkNjixCdO823CJD2mxLxr6QuEQ/view?usp=sharing .Remember that I need to decode file AndroidManifest.xml in folder original which contains both of folder META-INF
MinhFtuer said:
Thanks for your reply, I have tried to decompile that apk by your way but file AndroidManifest.xml in folder ...original\AndroidManifest still be encoded. Can you help me decode it as you said that ?
Link down this apk :drive.google.com/file/d/18HjRivgkNjixCdO823CJD2mxLxr6QuEQ/view?usp=sharing .Remember that I need to decode file AndroidManifest.xml in folder original which contains both of folder META-INF
Click to expand...
Click to collapse
That's a huge apk, what is it? 1,2 Gb I've never seen that before. I'll just send you here the AndroidManifest.xml text. You'll then have to copy/past it into a text editor, and rename the file "AndroidManifest.xml".
Edit #1: I can't even decode the APK, can you tell me what is this file and where you got it from ? The apk file size limit is 100MB , what is this file ?
Edit #2 : Usually the AndroidManifest.xml isn't encoded at all, you just have to browse the APK with a zip explorer to find this file and read it. I personally won't do that as this file is very suspicious... 1,3 Gb for an APK... Apktool doesn't recognize it... This is really weird, I recommend you just to trash it.
@MinhFtuer
To decode a binary AndroidManifest.xml file you use axmldec: Android Binary XML Decoder.
jwoegerbauer said:
@MinhFtuer
To decode a binary AndroidManifest.xml file you use [github.com/ytsutano/axmldec"] axmldec: Android Binary XML Decoder[/url].
Click to expand...
Click to collapse
Great, I can do it by your way, can you teach me how to encode back it tks ?

Categories

Resources