I am facing issues in compiling systemui.apk and systemUI.odex files. I was porting Pixel Navigation bar for AOSP ROM of @Santhosh M. There is any to combine both the files?
If i remember right i made the Pixel navbar for Santhosh M ROM. Doesn't it work anymore? If you don't like the home button just decompile the apk and go to drawable-xxhdpi-v4 and change the ic_sysbar_home icon.
Anyway in order to combine them
1. Download baksmali. Make new folder and put the baksmali.jar and SystemUI.odex there.
2. Open command prompt in the folder where baksmali is located. Type in command prompt "adb pull /system/framework/arm" to extract the required files from the phone.
3. Type "java -jar baksmali.jar deodex SystemUI.odex -l" in the command prompt and if it successful there should be an output folder called "out". Copy it and paste it to the decompiled SystemUI.apk then rename it "smali"
4. Get the required odex files from Pixel's SystemUI(tho' i would recommend you to get them from the already modified systemUI as it usually generates the same number IDs so you wont have to deal with odex file changes).
5. Paste them to smali/com/google/android/systemui(if i remember right you had to create google/android/systemui folders so no worries if they are missing)
6.Recompile
I'd advise you to use this tutorial as it is way more detailed.
Sashko98 said:
If i remember right i made the Pixel navbar for Santhosh M ROM. Doesn't it work anymore? If you don't like the home button just decompile the apk and go to drawable-xxhdpi-v4 and change the ic_sysbar_home icon.
Anyway in order to combine them
1. Download baksmali. Make new folder and put the baksmali.jar and SystemUI.odex there.
2. Open command prompt in the folder where baksmali is located. Type in command prompt "adb pull /system/framework/arm" to extract the required files from the phone.
3. Type "java -jar baksmali.jar deodex SystemUI.odex -l" in the command prompt and if it successful there should be an output folder called "out". Copy it and paste it to the decompiled SystemUI.apk then rename it "smali"
4. Get the required odex files from Pixel's SystemUI(tho' i would recommend you to get them from the already modified systemUI as it usually generates the same number IDs so you wont have to deal with odex file changes).
5. Paste them to smali/com/google/android/systemui(if i remember right you had to create google/android/systemui folders so no worries if they are missing)
6.Recompile
I'd advise you to use this tutorial as it is way more detailed.
Click to expand...
Click to collapse
Thanks! I will be trying this out today. You developed Pixel Nav bars and the thing is you made it for January build. This is April so I have seen that it doesn't works. We need to decompile the systemui.apk again and again Change the ID and other things.
I have ported pixel Navbars for LineageOS. It was easy and today, I stuck in this steps.
I just followed your tutorial and I got this error
C:\Users\Xaif\Desktop\Baksmali\framework>java -jar baksmali.jar deodex SystemUI.
odex -x
usage: java -jar baksmali.jar [options] <dex-file>
disassembles and/or dumps a dex file
-?,--help prints the help message then exits.
Specify twice for debug options
-a,--api-level <API_LEVEL> The numeric api-level of the file
being disassembled. If not
specified, it defaults to 15 (ICS).
-b,--no-debug-info don't write out debug info (.local,
.param, .line, etc.)
-c,--bootclasspath <BOOTCLASSPATH> A colon-separated list of
bootclasspath jar/oat files to use
for analysis. Add an initial colon
to specify that the jars/oats should
be appended to the default
bootclasspath instead of replacing
it
-d,--bootclasspath-dir <DIR> the base folder to look for the
bootclasspath files in. Defaults to
the current directory
-e,--dex-file <DEX_FILE> looks for dex file named DEX_FILE,
defaults to classes.dex
-f,--code-offsets add comments to the disassembly
containing the code offset for each
address
-i,--resource-id-files <FILES> the resource ID files to use, for
analysis. A colon-separated list of
prefix=file pairs. For example
R=res/values/public.xml:android.R=$A
NDROID_HOME/platforms/android-19/dat
a/res/values/public.xml
-j,--jobs <NUM_THREADS> The number of threads to use.
Defaults to the number of cores
available, up to a maximum of 6
-k,--check-package-private-access When deodexing, use the
package-private access check when
calculating vtable indexes. It
should only be needed for 4.2.0
odexes. The functionality was
reverted for 4.2.1.
-l,--use-locals output the .locals directive with
the number of non-parameter
registers, rather than the .register
directive with the total number of
register
-m,--no-accessor-comments don't output helper comments for
synthetic accessors
-n,--normalize-virtual-methods Normalize virtual method references
to the reference the base method.
-o,--output <DIR> the directory where the disassembled
files will be placed. The default is
out
-p,--no-parameter-registers use the v<n> syntax instead of the
p<n> syntax for registers mapped to
method parameters
-r,--register-info <REGISTER_INFO_TYPES> print the specificed type(s) of
register information for each
instruction. "ARGS,DEST" is the
default if no types are specified.
Valid values are:
ALL: all pre- and post-instruction
registers.
ALLPRE: all pre-instruction
registers
ALLPOST: all post-instruction
registers
ARGS: any pre-instruction registers
used as arguments to the instruction
DEST: the post-instruction
destination register, if any
MERGE: Any pre-instruction register
has been merged from more than 1
different post-instruction register
from its predecessors
FULLMERGE: For each register that
would be printed by MERGE, also show
the incoming register types that
were merged
-s,--sequential-labels create label names using a
sequential numbering scheme per
label type, rather than using the
bytecode addressQA
-t,--implicit-references Use implicit (type-less) method and
field references
-v,--version prints the version then exits
-X,--experimental enable experimental opcodes to be
disassembled, even if they aren't
necessarily supported in the Android
runtime yet
-x,--deodex deodex the given odex file. This
option is ignored if the input file
is not an odex file
Click to expand...
Click to collapse
I also tried doing like the above given command so I followed this steps:
C:\Users\Xaif\Desktop\Baksmali\framework>java -jar baksmali.jar --deodex SystemU
I.odex -l
Error occurred while loading boot class path files. Aborting.
org.jf.util.ExceptionWithContext: Cannot locate boot class path file /system/fra
mework/core.jar
at org.jf.dexlib2.analysis.ClassPath.loadClassPathEntry(ClassPath.java:2
96)
at org.jf.dexlib2.analysis.ClassPath.fromClassPath(ClassPath.java:207)
at org.jf.baksmali.baksmali.disassembleDexFile(baksmali.java:67)
at org.jf.baksmali.main.main(main.java:305)
C:\Users\Xaif\Desktop\Baksmali\framework>
Click to expand...
Click to collapse
I have used ApkTool for Android to deodex that file and it did it successfully. Now, I am porting again
Related
alright...ive got the classes.dex file open and able to make edits but when i try to close it and recompress it it gives me errors. can someone help please.
Gtalk is [email protected]
You need to use smali from avabox by avalaunch
Sent from my HERO200 using the XDA mobile application powered by Tapatalk
danaff37 said:
You need to use smali from avabox by avalaunch
Sent from my HERO200 using the XDA mobile application powered by Tapatalk
Click to expand...
Click to collapse
ok thats how i got the classes.dex file by breaking down the apk.
then ran a command to open up the classes.dex file.
it created a file called classout which had all the folders and files inside of the classes.dex file
i made it to the change i needed to make and edited and saved.
then ran a command that should close up the classes out folder back into the classes.dex file and it gives me errors. im changing colors of text in the keyboard and used hex codes to change the color
So whats the error and what command are you using?
Are you using the batch file or typing it in in command prompt.
Not sure which one you are doing so I will post what works for me
I double clicked backsmali.bat and when done editing smali.bat.
java -jar baksmali-1.2.1.jar -x blah.apk will deodex the .apk and make an out folder for the the classes.dex.
java -jar smali-1.2.1.jar out -o classes.dex will recompile the .smali files including the ones you edited. This will make a "New" classes.dex that you can drag and drop into your .apk. This is the best way rather than using a script that may or may not work...
&RoidRage said:
Are you using the batch file or typing it in in command prompt.
Not sure which one you are doing so I will post what works for me
I double clicked backsmali.bat and when done editing smali.bat.
Click to expand...
Click to collapse
i go to command prompt and type in this in the sdk/tools folder
java -jar baksmali.jar -o classout/ classes.dex
that pulls the files out into a classout file
do my editing
then
type in
java -Xmx512M -jar smali.jar classout/ -o new-classes.dex
then comes up with these errors afterward
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\Chad Barlan>cd C:\android-sdk-windows\tools
C:\android-sdk-windows\tools>java -jar baksmali.jar -o classout/ classes.dex
Unable to access jarfile baksmali.jar
C:\android-sdk-windows\tools>java -jar baksmali.jar -o classout/ classes.dex
C:\android-sdk-windows\tools\classout\com\htc\android\htcime\ezsip\KeyboardView.
smali[0,0] -0xFF1874CD cannot fit into an int
C:\android-sdk-windows\tools\classout\com\htc\android\htcime\ezsip\KeyboardView.
smali[3889,4] mismatched tree node: I_STATEMENT_FORMAT35c_METHOD expecting I_CAT
CHES
C:\android-sdk-windows\tools\classout\com\htc\android\htcime\ezsip\KeyboardView.
smali[3892,4] mismatched tree node: I_STATEMENT_FORMAT11n expecting <UP>
these r the errors i get
im changing text color
using FF1874CD
whitch is just a shade of blue in a hex code form
Lol, that's not how it works .
Color codes, typically in decompiled code are in the form of ARGB bitwise shifted hex values, not standard hex.
R bitwise shifted 16 bits to the left
G bitwise shifted 8 bits to the left
B No shift
Here is a good explanation of how to handle color values in the code:
http://board.flashkit.com/board/archive/index.php/t-657269.html
cbarlan said:
i go to command prompt and type in this in the sdk/tools folder
java -jar baksmali.jar -o classout/ classes.dex
that pulls the files out into a classout file
do my editing
then
type in
java -Xmx512M -jar smali.jar classout/ -o new-classes.dex
then comes up with these errors afterward
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\Chad Barlan>cd C:\android-sdk-windows\tools
C:\android-sdk-windows\tools>java -jar baksmali.jar -o classout/ classes.dex
Unable to access jarfile baksmali.jar
C:\android-sdk-windows\tools>java -jar baksmali.jar -o classout/ classes.dex
C:\android-sdk-windows\tools\classout\com\htc\android\htcime\ezsip\KeyboardView.
smali[0,0] -0xFF1874CD cannot fit into an int
C:\android-sdk-windows\tools\classout\com\htc\android\htcime\ezsip\KeyboardView.
smali[3889,4] mismatched tree node: I_STATEMENT_FORMAT35c_METHOD expecting I_CAT
CHES
C:\android-sdk-windows\tools\classout\com\htc\android\htcime\ezsip\KeyboardView.
smali[3892,4] mismatched tree node: I_STATEMENT_FORMAT11n expecting <UP>
these r the errors i get
im changing text color
using FF1874CD
whitch is just a shade of blue in a hex code form
Click to expand...
Click to collapse
By any chance do you have the .smali files still open? By the way, you dont have to use -o classout/ when you baksmali. Baksmali creates an out folder by default. It was designed that way. When you smali, you also dont need -Xmx512M. My suggestion is go here... http://code.google.com/p/smali/ Download the latest baksmali-1.2.2.jar and smali-1.2.2.jar. This will alleviate any errors. Also, do me a favor, pastebin both your edited and non edited .smali files. I'll take a look at them.
By the way, what Js said is correct. You need to use this value for .smali Smali color = -0x100. This is the shifted hex values converted from your standard hex.
JsChiSurf said:
Lol, that's not how it works .
Color codes, typically in decompiled code are in the form of ARGB bitwise shifted hex values, not standard hex.
R bitwise shifted 16 bits to the left
G bitwise shifted 8 bits to the left
B No shift
Click to expand...
Click to collapse
yeah i just figured that out when i looked at another file that has a different color already
so i dropped the transperency
And please FOR THE LOVE OF GOD, upgrade your baksmali and smali .jars
VinceOB said:
By any chance do you have the .smali files still open? By the way, you dont have to use -o classout/ when you baksmali. Baksmali creates an out folder by default. It was designed that way. When you smali, you also dont need -Xmx512M. My suggestion is go here... http://code.google.com/p/smali/ Download the latest baksmali-1.2.2.jar and smali-1.2.2.jar. This will alleviate any errors. Also, do me a favor, pastebin both your edited and non edited .smali files. I'll take a look at them.
By the way, what Js said is correct. You need to use this value for .smali Smali color = -0xe78b33. This is the shifted hex values converted from your standard hex.
Click to expand...
Click to collapse
yeah so im an idiot and got it to work.
thanks for ur help
i had already downloaded the newer smali and baksmali files and put them in the sdk tools folder. was typing to much in the commands and also used the transperency when i was putting in the hex color i.e. FF1874CD instead of just using 1874CD which is what worked and didnt give me any errors.
cbarlan said:
yeah so im an idiot and got it to work.
thanks for ur help
i had already downloaded the newer smali and baksmali files and put them in the sdk tools folder. was typing to much in the commands and also used the transperency when i was putting in the hex color i.e. FF1874CD instead of just using 1874CD which is what worked and didnt give me any errors.
Click to expand...
Click to collapse
So did it change the color for you?
VinceOB said:
And please FOR THE LOVE OF GOD, upgrade your baksmali and smali .jars
Click to expand...
Click to collapse
i upgraded them just changed the name of them to take of the numbers lol much less typing, im lazy lol
cbarlan said:
yeah so im an idiot and got it to work.
thanks for ur help
i had already downloaded the newer smali and baksmali files and put them in the sdk tools folder. was typing to much in the commands and also used the transperency when i was putting in the hex color i.e. FF1874CD instead of just using 1874CD which is what worked and didnt give me any errors.
Click to expand...
Click to collapse
That might have "fit" into the size of the variable defined in the code, but that is not how you calculate the color code. Odds are, if it works, you are going to end up with black, regardless of the color you are trying to achieve. See my previous post.
JsChiSurf said:
That might have "fit" into the size of the variable defined in the code, but that is not how you calculate the color code. Odds are, if it works, you are going to end up with black, regardless of the color you are trying to achieve...
Click to expand...
Click to collapse
what do u mean
im using codes from this site
http://www.december.com/html/spec/colorhex.html
cbarlan said:
what do u mean
im using codes from this site
http://www.december.com/html/spec/colorhex.html
Click to expand...
Click to collapse
What happened when you booted? Did you get the color you expected?
you should use the bat files for that. i only use cmd line codes for auto sign. i find the batch files for baksmali to be perfect for me.
good luck.
Avalaunchmods said:
you should use the bat files for that. i only use cmd line codes for auto sign. i find the batch files for baksmali to be perfect for me.
good luck.
Click to expand...
Click to collapse
Here's what I was getting at with Avabox. He has batch files in there and if you put the apk's in the folder called apk run backsmali.bat. It will create a folder inside the apk folder with the decompressed apk. You can go in there and edit all the .smali files and when you are done run smali.bat. It will recompress and put it back into the apk you originally put into the folder.
Am I correct Avalaunch?
This just makes it easier as you are not having to type anything in.
&RoidRage said:
Here's what I was getting at with Avabox. He has batch files in there and if you put the apk's in the folder called apk run backsmali.bat. It will create a folder inside the apk folder with the decompressed apk. You can go in there and edit all the .smali files and when you are done run smali.bat. It will recompress and put it back into the apk you originally put into the folder.
Am I correct Avalaunch?
This just makes it easier as you are not having to type anything in.
Click to expand...
Click to collapse
tadaa. but it depends on what your doing. i use it to extract the whole apk easily into afolder. then do edits to png's so forth. but it only re creates the classes.dex so png edits wont save. i just recreate the apk. archive to zip, sign, change to apk.
and im not gonna give to much away for free butttt you can also open and edit alot of different android files by changing their extensions and placing them into a folder.
I always found it annoying when I accidentally hit the Swype button while trying to type a message and the Swype Help Dialog (Tutorial) would pop-up. I thought it was just me but others have complained about this also so I decided to mod the Swype keyboard so this wouldn't happen. However, the Swype button does have other useful functions that I didn't want to remove. This mod only disables the Tutorial pop-up. All other Swype button functions still work. I am doing this on a Linux pc. I don't use Windows but this should work similar in Windows.
Credits:
00.ante - Used his Keyboard for Example - http://forum.xda-developers.com/showthread.php?t=942392
MikeyMike01 - Inspired by his Home Haptic fix
What you will need:
1. A Swype Keyboard
2. Smali/Baksmali - http://code.google.com/p/smali/
3. APK Manager - Optional
How To Instructions (Using Smail/Baksmali, you can also use APK Manager for this):
1. Extract classes.dex from Swype.apk and place in same folder as smali.jar and baksmali.jar
2. Open Terminal, navigate to folder where you put classes.dex and run this command: java -jar baksmali.jar -o classout/ classes.dex
3. This will create a folder called "classout"
4. In the classout folder, navigate to com/swype/android/inputmethod
5. Open SwypeInputMethod.smali in text editor
6. Delete all lines of code that contain "HelpDialog" and "HELP_DIALOG", There is one line that is embedded within a method. Delete starting at .method to .endmethod.
7. There are two lines of code that have just "Help" in them. Do not delete these.
8. Save and Close SwypeInputMethod.smali
9. Delete classes.dex that you extracted
10. Run this command in terminal: java -Xmx512M -jar smali.jar classout/ -o classes.dex
11. Copy the classes.dex that is created and drop it into your swype.apk
12. Place swype.apk into your CWM install zip
13. Flash and enjoy.
Attached is an example of this mod using one of 00.ante's Swype KB's. If you don't want to go through the trouble of baksmali/smali, you can just extract the classes.dex from this and drop it into your swype kb. Should work.
Hey guys, I had made a tutorial video on how to edit xml files and using nhnt11's xml generator found here: http://www.youtube.com/watch?v=xObYfIynRlw
In this tutorial I covered a lot of how to edit xml files. I also covered some issues wrong with this xml generator. One viewer of my tutorial, who goes by the name of fcknghst here on xda, was kind enough to listen to problems I explained and is in the process of fixing these issues to have a more complete xml generator. He told me I could post the fixed file here. Originally, nhnt11's xml generator was great except for a few small issues. For 1, it would skip images/lines in the generated xml of # 9s. 2nd the xml line would be set to drawable which would make it a pain to go through and edit all the mipmap images from drawable to mipmap. The way this works, as I understand it, everything is pretty much the same except with a few added Operators. The commands are as follows for the operators:
Code:
[B]Operator Codes:[/B]
Drawable: -d
Mipmap: -m
Complete xml drawable: -df
Complete xml mipmap: -mf
So now new commands should look like this:
Code:
java -jar XMLGenerator2.jar <package names separated by spaces> [operator] <input directory> <output file>
Thank you so much for listening to me and helping us out with this, I do not take credit for this, credit goes to the original xml generator dev nhnt11 and bug fixes by fcknghst.
Download LinkThere was a minor update and the download link was updated so you want to get the XMLGenerator2(1).zip, it is more common package name friendly now!!!
Here is the README:
Code:
I claim no ownership for this script.
This script was created by Nihanth (nhnt11 @xda)
Only bug fixed and "extended" by Foster Buster (fcknghst @xda)
---------------------------------------------------------------------
Some basic documentation:
Usage: java -jar XMLGenerator2.jar <package names separated by spaces> [operator] <input directory> <output file>
An example could be that I wanted a ready-made xml of files from the package "com_mycats_areawesome":
And if I wrote java -jar XMLGenerator2.jar -df something something.xml
it would output <item name="drawable/com_mycats_areawesome_something">@drawable/com_mycats_areawesome_something</item>
Which is not correct.
It should be <item name="drawable/something">@drawable/com_mycats_areawesome_something</item>
This is because the package "com_mycats_areawesome" is not included in this script (see included packages at the bottom of this document).
Now if I wrote java -jar XMLGenerator2.jar com_mycats_areawesome -df something something.xml
It would give the correct output.
You can always add more package names in the source (Main.java), or perhaps write yourself a nifty little batch script.
The operators are as follows:
-d = Writes it as "drawable"
-m = Writes it as "mipmap"
-df = Writes it as "drawable", and makes it a complete xml-file.
-mf = Writes it as "drawable", and makes it a complete xml-file.
Not using a operator will result in an empty file.
If you at some point forget this, just type "java -jar XMLGenerator2.jar" into the command prompt and it will list how to use the script.
If you dont feel like typing "XMLGenerator2.jar" every time, you can always rename it to whatever.
Package names already included: (There will properly never be any need for some of them, but it was an automated process :))
app_fastfacebook_com
cn_wps_moffice_eng
com_accuweather_android
com_adobe_flashplayer
com_adobe_psmobile
com_adobe_reader
com_alphonso_pulse
com_amazon_venezia
com_anddoes_launcher
com_andrew_apollo
com_android_bluetooth
com_android_browser
com_android_calculator2
com_android_calendar
com_android_camera
com_android_chrome
com_android_contacts
com_android_deskclock
com_android_development
com_android_dreams
com_android_email
com_android_fm
com_android_gallery3d
com_android_inputmethod_latin
com_android_launcher
com_android_mifileexplorer
com_android_mms
com_android_music
com_android_phone
com_android_providers_calendar
com_android_providers_downloads_ui
com_android_quicksearchbox
com_android_settings
com_android_stk_
com_android_systemui
com_android_vending
com_android_videoeditor
com_android_voicedialer
com_android_wallpaper
com_android_wallpaper_livepicker
com_antivirus
com_anydo
com_apdroid_tabtalk
com_appspot_swisscodemonkeys_apps
com_baked_romcontrol
com_baked_walls
com_bel_android_dspmanager
com_bellmo_selfserve
com_bigeyes0x0_trickstermod
com_bigtincan_android_adfree
com_booking
com_box_android
com_bsplayer_bspandroid_free
com_citc_wallbase
com_citc_weather
com_clov4r_android_nil
com_cooliris_media
com_cyandelta
com_cyanogenmod_filemanager
com_cyanogenmod_settings_device
com_cyanogenmod_trebuchet
com_cyanogenmod_updater
com_dataviz_docstogo
com_derkernel_tkt
com_dropbox_android
com_drx2_bootmanager
com_duduapps_craigslistfree
com_dwdesign_tweetings
com_dynamixsoftware_printershare
com_ebay_mobile
com_endomondo_android
com_espn_score_center
com_estrongs_android_pop
com_evernote
com_facebook_katana
com_facebook_orca
com_farproc_wifi_analyzer
com_fitnesskeeper_runkeeper_pro
com_floriandraschbacher_fastfiletransfer
com_flyersoft_moonreader
com_funtrigger_mp3tag
com_geogrant_bordertimes
com_glympse_android_glympse
com_google_android_apps_books
com_google_android_apps_currents
com_google_android_apps_docs
com_google_android_apps_genie_geniewidget
com_google_android_apps_googlevoice
com_google_android_apps_maps_ic
com_google_android_apps_plus
com_google_android_apps_reader
com_google_android_apps_translate
com_google_android_carhome
com_google_android_ears
com_google_android_gm
com_google_android_gm_com
com_google_android_googlequicksearchbox
com_google_android_marvin_talkback
com_google_android_talk
com_google_android_youtube
com_google_earth
com_google_zxing_client_android
com_gotv_nflgamecenter_us_lite
com_handcent_nextsms
com_handlerexploit_tweedle
com_handmark_friendcaster_chat
com_handmark_tweetcaster
com_happydroid_tweetline
com_hootsuite_droid_full_icon
com_hotfree_iheart
com_imdb_mobile
com_indeed_android_jobsearch
com_instagram_android
com_intonow
com_intsig_camscanner
com_joelapenna_foursquared
com_jrummy_liberty_toolbox
com_jv_cleanwidgets
com_jv_falcon
com_koushikdutta_rommanager
com_levelup_beautifulwidgets
com_levelup_touiteur
com_linkedin_android
com_lookout
com_manor_currentwidget
com_mapquest_android_ace
com_mathpad_mobile_android_wt_unit_
com_metago_astro
com_microsoft_skydrive
com_microsoft_smartglass
com_mobisystems_office
com_mseven_msecure
com_mxtech_videoplayer_ad
com_netflix_mediaclient
com_nimbuzz
com_nixpa_kik_video
com_noinnion_android_greader_reader
com_noshufou_android_su
com_nuance_swype_beta
com_nullsoft_winamp
com_olive_office
com_olivephone_edit
com_onelouder_baconreader
com_onelouder_tweetvision
com_onexuan_battery
com_opera_browser
com_otaupdater
com_pandora_android
com_paranoid_preferences
com_path
com_paypal_android_p2pmobile
com_picsart_studio
com_pinterest
com_platinumapps_facedroid
com_plexapp_android
com_quoord_tapatalkpro_activity
com_quoord_tapatalkrwk_activity
com_quoord_tapatalkxda_activity
com_rdio_android_ui
com_rebelvox_voxer
com_ringdroid
com_roidapp_photogrid
com_s0up_goomanager
com_sand_airdroid
com_seesmic
com_sgiggle_production
com_shazam_android
com_shinycore_picsayfree
com_skype_raider
com_smartandroidapps_audiowidget
com_socialnmobile_dictapps_notepad_color_note
com_songkick
com_spartancoders_gtok
com_speedsoftware_rootexplorer
com_spotify_mobile_android_ui
com_teamviewer_teamviewer_market_mobile
com_tenthbit_juliet
com_texty_sms_app
com_thedeck_android_app
com_threebanana_notes
com_tmobile_themechooser
com_tumblr_app
com_tweetlanes_android
com_twidroid
com_twidroydlegacy
com_twitter_android
com_uberullu_rescansd
com_utorrent_client
com_vevo
com_viber_voip
com_whatsapp
com_yahoo_mobile_client_android_im
com_yahoo_mobile_client_android_mail
de_devmil_minimaltext
de_softxperience_android_noteeverything
eu_chainfire_supersu
ext_recovery_update
flipboard_app
frameworks_res
google_android_youtube
hu_tagsoft_ttorrent_lite_
im_mercury_android
in_vineetsirohi_customwidget
intelgeen_rocketdial_trail
jackpal_androidterm
kik_android
me_sonar_androi
mobi_cyann_nstools
mobi_ifunny
mobi_mgeek_TunnyBrowser
net_cactii_flash2
net_flixster_android
net_rgruet_android_g3watchdog
net_sourceforge_subsonic_androidapp
net_zedge_android_launcher
org_adaway
org_adw_launcher
org_adwfreak_launcher
org_mozilla_firefox
org_openintents_filemanager
org_projectvoodoo_controlapp
org_zwanoo_android_speedtest
pl_solidexplorer
radiotime_player
ru_zdevs_zarchiver
usa_jersey_tvlistings
This seems like it might come in handy for some of those little issues that can arise. Thanks for the heads up!
OP Updated
great info!
Nice. Very useful tool. One has to batch rename the PNGs though first.
On Windows, if you want to batch rename, open command prompt (type cmd in search/run) and then go into the folder where all the PNGs that have to batch renamed are. Then just type this,
for %a in (*.*) do ren "%a" "prefix%a"
Click to expand...
Click to collapse
Replace the word prefix with the word you want to prefix all the PNGs with.
You can also add a postfix. Just place the postfix after %a.
dhirend_6d said:
On Windows, if you want to batch rename, open command prompt (type cmd in search/run) and then go into the folder where all the PNGs that have to batch renamed are. Then just type this
Click to expand...
Click to collapse
I just use Faststone Photo Resizer for bulk renaming.
XperienceD said:
I just use Faststone Photo Resizer for bulk renaming.
Click to expand...
Click to collapse
I use it for batch converting from Indexed and Greyscale to RGB mode.
I never tried batch renaming using Faststone.
Can it add a prefix/postfix??
Hey people, I've just found it at O3D forums and I think I should share the information, as I don't have time for creating a good tutorial myself.
This way you can change colors for your own likes and make a lot kind of themes.
Before starting you should have your Apktool environment set up.
1. (only if you never saw APKTOOL in your life, otherwise, just jump it)
1· Download and install latest version of Java JDK
2· Download latest version of APK Multi-Tool as we'll be using it for un/packing APKs and push/pull them from/to our device.
3· Extract it anywhere you may like. If posible, in C:/ to avoid any kind of problems. Be sure to read README file before asking something about it.
4· Run Setup.bat, type 3 and press Enter. Close it.
5· Run Script.bat, type 0 and press Enter. Now let's type our framework's path.
6· /system/framework/framework-res.apk for basic framework file. This will be pulling it out from our phones.
7· Repeating Number 5, type /system/framework/lge-res.apk for LG's framework file.
8· Now move to X:\...\APK-Multi-Tool\place-apk-here-for-modding\ and copy both apks (framework-res + lge-res) and paste it at X:\...\APK-Multi-Tool\other\
9· Run Setup.bat again, type 2 and press Enter. Now both frameworks should be installed and we are ready to un/pack APKs from the version we're actually using (v30A/B/C/D...). Close it.
10· Back in Script.bat, type 0 again followed by Enter, then type the path of your desired APK. (/system/framework/xxxxxx.apk for frameworks & /system/app/xxxxxx.apk for apps). After pushing it, select it as your actual project.
11· Now type 9 followed by Enter. This will unpack our APK.
12· Now is the time for tunning anything you want to. Go to X:\...|APK-Multi-Tool\projects\xxxxxx.apk\ and you'll find there everything.
13· When it's done, let's re-pack it typing the option 11 followed by Enter. When repacking gets done, it will ask if you want to use any files from your original APK. Tell it Yes, otherwise your apk won't get signed.
14· When the extracting is done, move to X:\...|APK-Multi-Tool\keep\ and erase everything there BUT META-INF folder + AndroidManifest.xml. Now press anything at APK Multi-tool window and you'll get your APK ready to go.
15· Now type 8 to push it back to your phone and type the desired path. If it cames from /system/app/xxxxx.apk or /system/framework/xxxxx.apk.
If you get any error recompiling it, you should take a look at the log, typing 23 and fix it at the projects folder.
Click to expand...
Click to collapse
2.
potaturrias said:
When i maked this theme (my first theme) y used trial and error procedure.
The first step is replace or edit 9.png. pictures in drawable-hdpi folder located in framework-res.apk and lge-res.apk, you can do this quickly using this tools:
http://jgilfelt.github.com/android-actionbarstylegenerator (Check that the names of new pictures match with the old pictures)
http://android-holo-colors.com/
Many images have to edit them by hand
If you put more files than originally,for example switches in lge-res drawable-hdpi, you will get an error when try to compile.
The second step is replace xml files in drawable folder using xml files from zip file that you downloaded in the previous step.
If you don't get the desire result you have to edit styles.xml or drawable folder files or layout files to change backgrounds colors, text color,etc.
Remember there applications with lines in XML files that reference to framework or lge-res, for example:
android:textColor="@*android:color/transparent makes reference to transparent color defined in framework-res and
android:textColor="@com.lge.internal:color/transparent makes reference to transparent color defined in lge-res.
I hope that this mini guide help you, remember that you can make your theme based on this theme, will be easier i think.
Click to expand...
Click to collapse
Thanks to @potaturrias!
Quick Intro :
Let me answer that question, an apk, first of all, is the format of Android apps, as .exe would be for Windows, apk means Android Package by the way.
But what’s the big deal?
Well an apk contain a lot of things into it.
When you open it as an archive, you might get those files:
AndroidManifest.xml
assets
res
META-INF
resources.arsc
classes.dex
AndroidManifest.xml is the file that contains the information about the app itself: the list of all activities, all permissions, the name of the app’s package, and the software/hardware requirements. To be able to read it, you’ll need to decompile the apk file.
Assets and res folders are meant for resources. Most often, you won’t see the assets folder because its usage is limited, (explanations here). We’ll focus on res since asset isn’t used so often.
META-INF contains CERT.RSA and CERT.SF (certificate) as well as MANIFEST.MF (a manifest)
Those files are the app signature, and META-INF is the folder that contains signature.
The resources.arsc file is the file holding most of the resources that were originally in the res folder. After compiling the code, Android Studio (or others software) compile resources into this file. You won’t be able to open it with an archive explorer. We’ll need to decompile the apk to get the resources back into the res folder.
And, finally, the classes.dex file contains the every smali files of the app. A smali file contains the java code for a specific part of the app. To be able to have the smali files (into the smali folder), you’ll have to baksmali your app.
Hopefully, apktool (a reverse engineering tool) does it for you.
Let’s decompile the apk using apktool (a popular tool used to decompile apps):
Once apktool is installed (see the apktool web page to know how to install), you’ll need to use the command prompt to decompile the apk:
Code:
java -jar apktool.jar d [name of the apk].apk
(I advise to create a folder and to put every file needed in it: the apk, the apktool.jar file, and the apktool script).
You’ll have an out folder, and when you browse it, you’ll have most of the time:
AndroidManifest.xml
original (a folder)
res (a folder)
smali (a folder)
The AndroidManifest.xml that you see here is the translated one.
In the “original” folder rest the META-INF folder and the original AndroidManifest.xml file (untranslated). As you can guess by its name, this folder contains unchanged original files.
The res folder is now full, because every resource from the resources.arsc file are now back into the res folder
Same for the smali folder, this folder contains every piece of code contained into the classes.dex file.
We will now focus on the res folder. Now that it’s complete, we can see those folders (it depends on your apk, but here is the list of the most common ones):
anim (other animation stuff, see the links at the end of the thread)
animator (animation properties)
color (color state list: in which condition this color is used for a particular element)
drawable (can be pictures or xml files, it contains a lot of things)
layout (contains the files that define the layouts of the app)
mipmap (icons for different screen densities)
values (xml files that contains values, that will be referenced in other xml files in other folders)
xml (every other unclassified xml files)
Those folders contain files that will be named following their resource ID.
So how does all of this work together?
Well, the java code written in the smali files will call resources with their IDs. This way, the app will show you the write thing at the right moment, following the code. The layouts are already described in the layout folder. What the code really do is analyzing the action of the end user and calling other resources in consequence.
For example, I’m using the XDA Labs app on my phone. I’m in my phone’s section, and I’m about to click on a thread to open it.
I clicked on the thread, so the code loaded the thread layout with every post in it, and other resources such as the little arrows at the top to jump to the end/beginning of the thread, the reply button, its color, … That’s how to work if I want to keep it simple.
I tried, in this guide, to simplify android app basic for beginners. Feel free to ask any question, I’ll be glad to answer.
If you want to go further into it, you can read a very complete guide about app basics by google (it’s a bit complicated to read, assuming you’re just starting to understand).
Here are the links:
https://developer.android.com/guide
If you have any question about that guide, you can also ask me (with the quote you didn’t understood).
Keep at mind that mastering app basics is really important if you ever want to theme/create an app. So, this guide and the google one is a good place to start.
Have fun reading
Hello Raiz,
I decompiled the apk of an androind app from playstore using dex jar and apktool however I can't find the scripts anywhere in the resulting files. Where should I look? Or is there something more that I have to do? I'm trying to edit something for personal use to make the game more enjoyable. I saw a .unity3D file in there so I presume it was made in unity if this helps.
Good tutorial about concepts of APK file. The details you share are so educational. Thanks for sharing