[FIX][MOD] Camcorder Audio Quality fix - Verizon LG G2

Hello!
LEGAL NOTICE:
here I will review & show how to modify ANDROID OPEN SOURCE CODE! (link is below in text)
probably you have already found out, that LG G2 Camcorder records audio of plain POOR quality.
But some other programs as LGCamera by rubberbigpepper and few audio-recorders managed to get good audio;
so I did jump into "smali-world", searching for word "audiosource" and found following (more interesting, than others) in VideoRecorder.smali of LGCameraApp.apk:
Code:
sget-object v9, Lcom/lge/camera/app/VideoRecorder;->mMediaRecorder:Lcom/lge/media/MediaRecorderEx;
const/4 v10, 0x5
invoke-virtual {v9, v10}, Lcom/lge/media/MediaRecorderEx;->setAudioSource(I)V
afterwards I searched in above mentioned LGCamera, where same kind lines instead contains 0x1 constant.
well, seems that 0x5 is a real bad boy
I changed it to 0x1, recompiled LgCameraApp.apk and now you also can "congratz" yourself
Audio is of finest quality!!!
afterwards I searched in internet for Android Source Code, to be more sure in this change.
and seems, those smali-lines possibly correspond to this line in source https://android.googlesource.com/pl...ster/src/com/android/camera/VideoModule.java:
1102 mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
where constant values are:
Code:
public static final int CAMCORDER
Constant Value: 5 (0x00000005)
public static final int DEFAULT
Constant Value: 0 (0x00000000)
public static final int MIC
Constant Value: 1 (0x00000001)
this proves to me, that I am not doing some crazy wrong thing.
so, source can be changed so:
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
Same kind of code you can find in almost every videorecording application!
you have to just search for word setAudioSource and a constant 0x5 above it.
for example, in GoogleCamera etc..etc..
info for installation:
firstly, add/change extention of original files /system/priv-app LGCameraApp.apk & LGCameraApp.odex to .bak (like LGCameraApp.apk.bak, LGCameraApp.odex.bak),
restart device & install your MODded APK file.
You can install it as regular app. or if you want, you can put it back into /system/priv-app/ , after do restart.
see also my discussion here:
http://forum.xda-developers.com/showpost.php?p=57676003&postcount=385
Dear @xdabbeb !!
1. I appreciate your work & removed smali-code of XCamLG after your request.
2... other lines removed
EDIT: huge english imrpovement after gogl-transl
DOWNLOADS in my next post

Any possibility you can make a flashable zip for Xcam?
Or share with xdabbeb if you haven't already. Thx

tholmes8291 said:
Or share with xdabbeb if you haven't already. Thx
Click to expand...
Click to collapse
XCam is complicated thing.
http://forum.xda-developers.com/showthread.php?p=57650148#post57650148
but you can learn howto mod APKs

where did the apk go?
MOD EDIT: removed quoted post as it contained original OP

At night, I test.
Thank you

quality-sound MODs
DOWNLOADS
(well, about MODs, 1 PM I wrote to admin but not got any replay...)
********************
info for installation:
1. firstly, add/change extention of original files /system/priv-app LGCameraApp.apk & LGCameraApp.odex to .bak (like LGCameraApp.apk.bak, LGCameraApp.odex.bak),
2. restart device & install your MODded APK file.
2A. You can install it as regular app = Copy to SDCARD and open it.
2B. or if you want, you can put it back into /system/priv-app/ , after do restart.
*******
source: ROM LG-G2-VZW-24A-Stock-Rooted&Deloated-v1.2 from MicroMod777
http://forum.xda-developers.com/showthread.php?t=2711668
>> quality-sound MOD-ded LG-G2-VZW-KITKAT24A_deodex_MOD_LGCameraApp.7z
PLEASE, test it and report back, (I have not currently installed this ROM).
haha, first time deodexed
https://www.mediafire.com/?v5f8zyc3yehvoar
*******
source: ROM G2-VZW-26A-Stock from MicroMod777
http://forum.xda-developers.com/verizon-g2/development/rom-vzw-g2-26a-rom-knock-t2881049
>> quality-sound MOD-ded G2-VZW-26A-Stock_LGCameraApp.7z
PLEASE, test it and report back, (I have not currently installed this ROM)
https://www.mediafire.com/?6s96f65s74aug5k
*******
source: ROM XDABBEB's VS982.5 v1.0.0 from xdabbeb
http://forum.xda-developers.com/verizon-g2/development/xdabbeb-s-vs982-5-v1-0-0-t2975551
>>quality-sound MOD-ded XDABBEB-VS982-5-v1_LgCameraApp.7z
https://www.mediafire.com/?c9aqxh81dfwk9nq
*******

Change 5 to 1, no good for high music

manuelmagix said:
Change 5 to 1, no good for high music
Click to expand...
Click to collapse
yes, true. stand far from it
and good for low level sound.
BTW, try also 0 (zero)

HTCZ715E said:
Hello!
LEGAL NOTICE:
here I will review & show how to modify ANDROID OPEN SOURCE CODE! (link is below in text)
Click to expand...
Click to collapse
This thread is currently under review for possible XDA rules violations.
Once a decision is made I will update this post.
If anyone has any questions or comments please PM me.
#thread_closed

Related

colorChange.jar v3.1 - Modify Cyan template text colors [ALL VERSIONS] 11/29

Code:
**************************************************************************
** Color Changer v3.1 (ALL YOUR VERSIONS ARE BELONG TO US) by Ohsaka **
**************************************************************************
Usages:
java -Xmx512M -jar colorChangev3.jar <theme.zip> [colorLabels ...] [debug] [zipDebug] [goFull]
< > means required, [ ] means optional
<theme.zip> - Android theme update file (not a full ROM update)
[ticker] - ARGB color for ticker notifications on the status bar
[clock] - ARGB color for the clock text
[date] - ARGB color for the date
[ongoing] - ARGB color for "Ongoing" Label
[latest] - ARGB color for "Notifications" Label
[none] - ARGB color for "No Notifications" Label
[clear] - ARGB color for text on Clear Notifications button
[network] - ARGB color for network name (T-Mobile usually)
[roam] - Not sure where this color shows up, possibly network name when roaming
Progress Bar Color Change (Must specify BOTH at once)
[progressBarBackground] - Progress bars background color
[progressBarForeground] - Progress bars foreground color
[debug] - Turns on debugging output
[zipDebug] - Turns on zip debugging output
[goFull] - Force updater to process a full rom instead of just templates
Example 1) java -Xmx512M -jar colorChangev3.jar themeXYZ.zip ticker=FFFF0000 date=FFFF0000 clock=FFFF0000
This will change ticker, date, and clock to red
Example 2) java -Xmx512M -jar colorChangev3.jar themeXYZ.zip clear=FFFFFFFF network=FF0000FF
This will change the clear notifications button text to white and network name (usually T-Mobile) to blue
Example 3) java -Xmx512M -jar colorChangev3.jar themeXYZ.zip clear=FFFFFFFF network=FF0000FF debug zipDebug
Same as example 2 but with debug and zipDebug turned on
Important: You must add "-Xmx512M" on the command line now, as seen in the examples
3.0 enhancements:
- All inclusive jar now, no external jars needed
- Changed search algorithm, uses text strings less likely to change. Should hopefully make this version work for most future roms.
- Only unzips and edits files when necessary
- Detects OS, will chmod 755 signed file if on Linux. Also has additional error messages reminding user to run as root on Linux
- Cleaned up output logging, hopefully more useful
- Added "debug" and "zipDebug" parameters to turn on debug output
- Other stuff that I can't remember
v3.1
- Added "goFull" flag to allow updating a full ROM
- Removed progress circle arguments, can't do it
- Fixed and tested progress bar color change, experimental no longer
- Tested with Cyan 4.2.6
The attached file is the latest file even though I didn't change the filename.
Please continue to send me any bug reports and questions.
<previous releases info>
Edit(7/19) - Successfully tested with v3.6.8 template of Cyan Rom
Edit(7/26) - Successfully tested with v3.9 template of Cyan Rom
Edit(8/19) - Successfully tested with v4.0.1 template of Cyan Rom. All needed 3rd party jars are now included inside the single jar file. (Thanks mianosm)
Edit(9/9) - Added test version of 2.0. Works for 4.1.5+ templates.
EDIT: v0.5 Changed the way the command line works... Alot more user friendly now IMO
http://forum.xda-developers.com/showthread.php?t=535630&page=13
EDIT: v0.4 is out, fixed a bug and made the usage output explain better the two possible ways to run it
http://forum.xda-developers.com/showthread.php?t=535630&page=12
EDIT: v0.3 is out, sets each element with an independent color, check page 11
http://forum.xda-developers.com/showthread.php?t=535630&page=11
EDIT: There are "white versions for Vodaphone, rogers, and JF151 on page 10"
http://forum.xda-developers.com/showthread.php?t=535630&page=10
EDIT: I added my Status Text Color Changer application to this thread...
Read about it on page 6..
http://forum.xda-developers.com/showthread.php?t=535630&page=6
Notification text is found in the: update.zip/framework/framework-res.apk/res/layout/status_bar.xml
Open the status_bar.xml with your favorite hex editor, find the instances of 00 00 1C, and the next three values will dictate your color choice.
For my services.jar the only two things I changed was the clock in com/android/server/status/StatusBarService.smali:
Code:
Line 4115> const v8, -0x1 invoke-virtual {v7, v8}, Landroid/widget/TextView;->setTextColor(I)V
...and then the date in com/android/server/status/StatusBarIcon.smali:
Code:
Line 86> .line 46 const/high16 v6, -0x100 invoke-virtual {v4, v7}, Landroid/widget/TextView;->setTextColor(I)V
Then the only thing left is the notifications in the:
Code:
update.zip/framework/framework-res.apk/res/layout/status_bar.xml
Most of the reason why all of the trouble was had was due to the calls being moved for the status bar pull down with stericsons mod, but all is well again.
Thanks a ton Ohsaka
What program do you recommend for editing .dex files?
Genesis206 said:
What program do you recommend for editing .dex files?
Click to expand...
Click to collapse
There is only one that I know of:
http://code.google.com/p/smali/
Remember, Baksmali means to disassemble, and Smali means to assemble (in Icelandic of course).
Genesis206 said:
What program do you recommend for editing .dex files?
Click to expand...
Click to collapse
I use PSPad to edit them because it will recognize its a unix formatted file and not mangle it with extra line feed characters which some windows text editors do. Its also free which is nice.
A nice feature of the smali file is that they contain ".line xxx" indicators. Which tell you the line number in the original source file it corresponds to. Very very helpful...
To be clear, the dex file is compiled, you have to decompile it before you can edit it.
Unzip services.jar, decompile classes.dex, edit .smali files, compile the decompiled dex file, reinsert it into your services.jar, resign, done.
I use vim when I do my editing in linux, and notepad++ in windows, I'll have to take a look at PSPad to see what that's all about. : )
Pspad is a fancier editor for programmers. It supports a ton of languages and has a lot of various addons and plugins. I developed an editor in it for a c-based language called AVS. It can load and save from a remote server, compile on remote server, link to the helpfile, etc etc.
can someone post the services.jar without the stericson fix and edited with the smali files for those of us unfamiliar with dex files etc. I am trying to make themes for the Sapphire and hope to use this a few of them.....
Or, will i be able to just add this services.jar to the Sapphire rom?
Post me the services.jar from ur theme and ill update it later
Ohsaka said:
Post me the services.jar from ur theme and ill update it later
Click to expand...
Click to collapse
thanks- wonder if the services.jar is different from Dream to Sapphire?
I have attached the services.jar (as for yours just remove the .zip) from the Sapphire ion rom. I just basically used the services.jar given with the rom (this is my first rom post rooting the Magic so didnt want to play around with too many things just yet- i did put in statusbar.xml for white date though).
thanks again- what is your twitter?
Is there a difference between yours(oshaka) and Mianosm's services file?
ultra spikey said:
Is there a difference between yours(oshaka) and Mianosm's services file?
Click to expand...
Click to collapse
There shouldn't be, however I do believe the md5sums will be different as I put together my own using the old 1.5 theme and only adjusting the 2 lines in the dex files that I posted above.
Notifications = status_bar.xml (if you would like to use colors other than 00 00 00 or FF FF FF, this is where you would set them for the different notifications).
Clock and Date = services.jar (more particularly the 2 smali files listed above, if you know how to convert 0x0 format, you can make the clock/date any color(s) you want. ).
mianosm said:
Notification text is found in the: update.zip/framework/framework-res.apk/res/layout/status_bar.xml
Open the status_bar.xml with your favorite hex editor, find the instances of 00 00 1C, and the next three values will dictate your color choice.
For my services.jar the only two things I changed was the clock in com/android/server/status/StatusBarService.smali:
Code:
Line 4115> const v8, -0x1 invoke-virtual {v7, v8}, Landroid/widget/TextView;->setTextColor(I)V
...and then the date in com/android/server/status/StatusBarIcon.smali:
Code:
Line 86> .line 46 const/high16 v6, -0x100 invoke-virtual {v4, v7}, Landroid/widget/TextView;->setTextColor(I)V
Then the only thing left is the notifications in the:
Code:
update.zip/framework/framework-res.apk/res/layout/status_bar.xml
Most of the reason why all of the trouble was had was due to the calls being moved for the status bar pull down with stericsons mod, but all is well again.
Thanks a ton Ohsaka
Click to expand...
Click to collapse
Can i ask what your fav hex editor is?
SteveTilsed said:
Can i ask what your fav hex editor is?
Click to expand...
Click to collapse
I use HxD. YMMV.
Have fun! : )
mianosm said:
There shouldn't be, however I do believe the md5sums will be different as I put together my own using the old 1.5 theme and only adjusting the 2 lines in the dex files that I posted above.
Notifications = status_bar.xml (if you would like to use colors other than 00 00 00 or FF FF FF, this is where you would set them for the different notifications).
Clock and Date = services.jar (more particularly the 2 smali files listed above, if you know how to convert 0x0 format, you can make the clock/date any color(s) you want. ).
Click to expand...
Click to collapse
great work guys!! you guys are the best!!! i have to step my game up.
mianosm said:
I use HxD. YMMV.
Have fun! : )
Click to expand...
Click to collapse
Please see my attached screen does this mean that my colour would be black?
Thanks again This could be fun.
It doesn't look like you are changing a color code, remember: the colors are after: 08 00 00 1C
Oh ok so i would change the the following 6 F's?
Looks better, can't be 100% with the image size though.
Well I guess that's a start any chance of seeing your screen or if u wish I can change mine to help?
Thanks for the help!

Throttled(possible work around)

Can someone take a look and see if this works
jovy23 said:
Hello to all Developers and XDA members! I have come here to give you a guide on how you can use native tethering without restrictions and here is how you can do it!
What Is Required...
★ First you need to have experience and know how to decompile/recompile apks with Apktools, apkmanager, smali, and baksmali
★ Have 7-zip installed onto your computer/laptop
★ Make sure you have Notepad++ also installed!
★HOW TO EVADE/REMOVE DATA CAP THROTTLING★
This guide will show you how you can evade/remove data cap throttling and this is good for the people who don't have a unlimited data plan for their phone's carrier so here is how you can do it!
STEP 1
★ Go into your system/framework folder and take out your "services.jar"
★ Then use one of the applications such as apktool and then use baksmali commands to decompile and extract the classes.dex from the services.jar
★ Once you have decompiled the services.jar, go to:
Now open up "ThrottleService.smali" with your notepad++ for editing.
Once your in here go and find:
Code:
.method static synthetic access$1002(Lcom/android/server/ThrottleService;J)J
And then you will see something like this:
Code:
.method static synthetic access$1002(Lcom/android/server/ThrottleService;J)J
.registers 3
.parameter "x0"
.parameter "x1"
.prologue
.line 71
iput-wide p1, p0, Lcom/android/server/ThrottleService;->mMaxNtpCacheAge:J
return-wide p1
.end method
Now what your going to need to do is add an empty space below ".line 71" and then above "iput-wide" your going to add "const-wide/16 p1, 0x0", once you do it will look something like this:
Code:
.method static synthetic access$1002(Lcom/android/server/ThrottleService;J)J
.registers 3
.parameter "x0"
.parameter "x1"
.prologue
.line 71
[B]const-wide/16 p1, 0x0[/B]
iput-wide p1, p0, Lcom/android/server/ThrottleService;->mMaxNtpCacheAge:J
return-wide p1
.end method
By adding that, this will invoke the ".method private checkThrottleAndPostNotification(J)V" and also the clearThrottleAndNotification()V which are both in the "ThrottleService$MyHandler.smali" which looks like this:
Code:
.method private checkThrottleAndPostNotification(J)V
.registers 28
.parameter "currentTotal"
.prologue
.line 588
move-object/from16 v0, p0
iget-object v0, v0, Lcom/android/server/ThrottleService$MyHandler;->this$0:Lcom/android/server/ThrottleService;
move-object/from16 v21, v0
#getter for: Lcom/android/server/ThrottleService;->mPolicyThreshold:Ljava/util/concurrent/atomic/AtomicLong;
invoke-static/range {v21 .. v21}, Lcom/android/server/ThrottleService;->access$500(Lcom/android/server/ThrottleService;)Ljava/util/concurrent/atomic/AtomicLong;
move-result-object v21
invoke-virtual/range {v21 .. v21}, Ljava/util/concurrent/atomic/AtomicLong;->get()J
move-result-wide v15
.line 589
.local v15, threshold:J
const-wide/16 v21, 0x0
cmp-long v21, v15, v21
if-nez v21, :cond_18
.line 590
invoke-direct/range {p0 .. p0}, Lcom/android/server/ThrottleService$MyHandler;->clearThrottleAndNotification()V
.line 663
:cond_17
:goto_17
return-void
.line 596
:cond_18
move-object/from16 v0, p0
Now once your done with modifying the "ThrottleService.smali", Recompile your services.jar using apktool and smali commands and your DONE!
IMPORTANT REMINDER - This mod works best for the people who DON'T have a unlimited data plan so it will be good for devs to make a flashable.zip in their OP with this mod with their roms services.jar which could be different "since some devs maybe did other mods/tweaks into their roms services.jar" so the users that be having any throttling issues can flash it. Also use at your own risk!
Click to expand...
Click to collapse
Sent from my SGH-T679 using Tapatalk 2
Tethering
This is for people getting the up sell page
jovy23 said:
Hello to all Developers and XDA members! I have come here to give you a guide on how you can use native tethering without restrictions and here is how you can do it!
What Is Required...
★ First you need to have experience and know how to decompile/recompile apks with Apktools, apkmanager, smali, and baksmali
★ Have 7-zip installed onto your computer/laptop
★ Make sure you have Notepad++ also installed!
★HOW TO ENABLE NATIVE TETHERING WITHOUT RESTRICTIONS★
STEP 1
★ Go into your system/framework folder and take out your "framework-res.apk"
★ Then use one of the applications such as apktools or apkmanager and then use the commands to decompile the framework-res.apk
★ Once you have decompiled the framework-res.apk, go to:
Now with Notepad++ go and find:
Code:
And then it will look something like this:
Code:
com.sec.tetheringprovision
com.sec.tetheringprovision.TetheringProvisionActivity
Now what your going to need to do is remove both of the lines that has "tetheringprovision" in them, the "string-" in the first line, and then remove the whole from the last line, once you do it will look something like this:
Code:
Once your done now Recompile your framework-res.apk using apktools or apkmanager and your DONE!!!
NOTE: Remember by removing those "com.sec.tetheringprovision" lines in the arrays.xml, it bypasses all the checks, There will be no more popup message that's telling you to upgrade to a T-Mobile Hotspot Plan, and you will get no errors!. There is no need for any third party apps or creating a APN just to have Tether to work properly!
STEP 2
The next step that your going to have to do is go into your roms:
folder and then remove:
This TetheringProvision.apk is no longer needed. If you were to remove it without doing the framework-res.apk mod, you will get constant force closes and a "Tetheringprovision Is Not Responding Message" after you have enabled Mobile Hotspot on your Samsung Galaxy S3 device. But since you have modded it, you can just delete it.
STEP 3
Now for this step, this is going to give you the opportunity to edit/remove the locked APNS And also it will show you how you can see any of the hidden APN's from the "Access Point Names" Menu which is in Settings-More Settings-Mobile Networks-Access Point Names. Also this step your going to have to change the APN site name which makes you tether without bringing you into the T-Mobile Hotspot Browser Page.
First your going to have to go into your roms folder which is:
And then open up "customer.xml" with your notepad++ for editing.
Now go all the way to the bottom of this file and you will see the last APN Tethering setting which should looks like this:
Code:
T-Mobile
no
enable
T-Mobile Tethering
none
ps
http
off
pcweb.tmobile.com
Now what your going to have to do is change where it says no into yes. By changing this, this will give you the permission to edit/remove this APN setting. REMEMBER: This APN Tethering setting only shows after you first use Tethering! And once your done with that go to where it says pcweb.tmobile.com and change it into epc.tmobile.com. By changing this APN site name it should give you total access for you to tether without bringing you into the T-Mobile Hotspot Browser Page from your PC's internet browser.
Once done it will look like this:
Code:
T-Mobile
[B]yes[/B]
enable
T-Mobile Tethering
none
ps
http
off
[B]epc.tmobile.com[/B]
Now save this file with the new edits with Notepad++ and your DONE!
But your not done yet with this step, your going to have to do one last thing. The Tethering APN that you have modified from "above" is still hidden. Now what your going to have to do is go into your roms folder again to:
And then open up "feature.xml" with your notepad++ for editing.
Now with Notepad++ go and find:
Now DELETE THIS WHOLE LINE! [This hides the Tethering APN that you have modified from "above" from view]. Once your done save this file with Notepad++ and THATS IT! Now Go Enjoy Your Native Tethering!!!
STILL HAVING PROBLEMS WITH TETHERING EVEN AFTER THE MOD? - Go into "Settings-More Settings-Mobile Networks-Access Point Names" and then press your phone's "Menu Settings Key" on the bottom left of your phone and then select "Reset To Default" and see if that helps.
★HOW TO ENABLE BLUETOOTH TETHERING★
This guide will show you how you can enable bluetooth tethering so here is how you can do it!
STEP 1
★ Go into your system/framework folder and take out your "framework-res.apk"
★ Then use one of the applications such as apktools or apkmanager and then use the commands to decompile the framework-res.apk
★ Once you have decompiled the framework-res.apk, go to:
Now with Notepad++ go and find:
Code:
And then it will look something like this:
Code:
Now what your going to need to do is add "string-" right before the "array" in the beginning of the config_tether_bluetooth_regexs, then under it add bnep\\d and make sure that the from the beginning is aligned the same like the other from the arrays.xml. Once you do, add right under the "bnep\\d" line, then it will look something like this:
Code:
[B]
bnep\\d
[/B]
Once your done now Recompile your framework-res.apk using apktools or apkmanager and your DONE!!!
Click to expand...
Click to collapse
tazmaniondvl said:
This is for people getting the up sell page
Click to expand...
Click to collapse
You can avoid the upsell page for tethering simply by changing your browser user-agent to a mobile device, works 100% of the time.
Bump
Did any of or wonderful developers ever look into this?
Sent from my SGH-T679 using xda app-developers app
tazmaniondvl said:
Bump
Did any of or wonderful developers ever look into this?
Sent from my SGH-T679 using xda app-developers app
Click to expand...
Click to collapse
Did you write this code? This is the first method I've seen that leaves everything intact and modifies the code to disable it. This is how things are done properly. I saw a lot of people just deleting the throttle code and making there mobile settings crash.. Not very elegant. Did you write this? Who wrote this?
I think that this is awesome that You were willing to share your knowledge in a situation that has had many many people stumped for a long time and always trying to find a method that was satisfactory but nothing solid like this. Do understand that Your Humility has not gone unnoticed. I thank you for taking the time to share what you have done. It is certainly a very nice and humble act on your part and the thing is this.......You didn't have to at all. And that's why I'm grateful and I appreciate it. Thank You very much!

[REQ] Remove Unnecessary Notification Clutter

Is there a mod or a patch that removes the Beats icon, the headset icon, and the godawful NFC icon?
Particularly, the NFC and Beats icon. I don't want to turn off Beats because it makes the phone's speakers sound so much deeper. If there's an alternative that sounds better, I'm open to that. But the headset icon is completely uncecessary. I think I know when I have headphones plugged in. And the NFC icon is the most useless icon I've ever seen.
The mod is avaible in ViperOne
Never seen it out of the Viper
Xblast xposed module can remove all the left side icons
Sent from my HTCONE using Tapatalk 4
Guich said:
The mod is avaible in ViperOne
Never seen it out of the Viper
Click to expand...
Click to collapse
To remove the NFC icon when NFC is enabled, in /system/customize/ACC/default.xml... change:
Code:
<item type="integer" name="nfc_show_icon">1</item>
to
Code:
<item type="integer" name="nfc_show_icon">0</item>
__________________________________________________________________________________________________
To remove the Beats notification icon, decompile Framework.jar and open \smali\android\media\AudioService$HtcBeatsEffect.smali
and find this ".method public onMessageBeatsNotify()V" method. Towards the end of the method, you can change this:
Code:
invoke-virtual {p0, v1}, Landroid/media/AudioService$HtcBeatsEffect;->showBeatsIcon(I)V
to this
Code:
invoke-virtual {p0}, Landroid/media/AudioService$HtcBeatsEffect;->hideBeatsIcon()V
and Beats can still be enabled without the notification.
____________________________________________________________________________________________
it looks like the headset icon is called from SystemUI.apk \smali\com\android\systemui\statusbar\phone\HtcPhoneStatusBarPolicy.smali in method ".method private updateHeadsetStatus(Landroid/content/IntentV". In this method, find :cond_7 and copy everything between :cond_7 and :cond_8 - it should look like this:
Code:
iget-object v6, p0, Lcom/android/systemui/statusbar/phone/HtcPhoneStatusBarPolicy;->mService:Landroid/app/StatusBarManager;
const-string v7, "headset_plug"
invoke-virtual {v6, v7}, Landroid/app/StatusBarManager;->removeIcon(Ljava/lang/String;)V
goto :goto_4
Right above this, you will see :cond_6 - this is for the headset (with mic) notification icon. Replace everything between :cond_6 and :cond_7 with what you copied previously (make sure you don't copy over the lines for :cond_6 or :cond_7, just replace what's between)
Now scroll up until you find :goto_2 - this is for the headphones (no mic) notification icon. Replace everything between :goto_2 and :goto_3 with what you copied previously (make sure you don't copy over the lines for :goto_2 or :goto_3, just replace what's between)
Recompile, flash, no headset/headphone notifications.
^^^ someone with some xposed knowledge may be able to make a module for beats, headphones, and headset notifications.
homeslice976 said:
To remove the NFC icon when NFC is enabled, in /system/customize/ACC/default.xml... change:
Code:
<item type="integer" name="nfc_show_icon">1</item>
to
Code:
<item type="integer" name="nfc_show_icon">0</item>
__________________________________________________________________________________________________
To remove the Beats notification icon, decompile Framework.jar and open \smali\android\media\AudioService$HtcBeatsEffect.smali
and find this ".method public onMessageBeatsNotify()V" method. Towards the end of the method, you can change this:
Code:
invoke-virtual {p0, v1}, Landroid/media/AudioService$HtcBeatsEffect;->showBeatsIcon(I)V
to this
Code:
invoke-virtual {p0}, Landroid/media/AudioService$HtcBeatsEffect;->hideBeatsIcon()V
and Beats can still be enabled without the notification.
____________________________________________________________________________________________
it looks like the headset icon is called from SystemUI.apk \smali\com\android\systemui\statusbar\phone\HtcPhoneStatusBarPolicy.smali in method ".method private updateHeadsetStatus(Landroid/content/IntentV". In this method, find :cond_7 and copy everything between :cond_7 and :cond_8 - it should look like this:
Code:
iget-object v6, p0, Lcom/android/systemui/statusbar/phone/HtcPhoneStatusBarPolicy;->mService:Landroid/app/StatusBarManager;
const-string v7, "headset_plug"
invoke-virtual {v6, v7}, Landroid/app/StatusBarManager;->removeIcon(Ljava/lang/String;)V
goto :goto_4
Right above this, you will see :cond_6 - this is for the headset (with mic) notification icon. Replace everything between :cond_6 and :cond_7 with what you copied previously (make sure you don't copy over the lines for :cond_6 or :cond_7, just replace what's between)
Now scroll up until you find :goto_2 - this is for the headphones (no mic) notification icon. Replace everything between :goto_2 and :goto_3 with what you copied previously (make sure you don't copy over the lines for :goto_2 or :goto_3, just replace what's between)
Recompile, flash, no headset/headphone notifications.
Click to expand...
Click to collapse
I appreciate your knowledge, very much, sadly I know nothing of Smali.
Could I replace the icons with a 1pixel wide transparent PNG or will that cause some weird things to happen?
homeslice976 said:
To remove the NFC icon when NFC is enabled, in /system/customize/ACC/default.xml... change:
Code:
<item type="integer" name="nfc_show_icon">1</item>
to
Code:
<item type="integer" name="nfc_show_icon">0</item>
__________________________________________________________________________________________________
To remove the Beats notification icon, decompile Framework.jar and open \smali\android\media\AudioService$HtcBeatsEffect.smali
and find this ".method public onMessageBeatsNotify()V" method. Towards the end of the method, you can change this:
Code:
invoke-virtual {p0, v1}, Landroid/media/AudioService$HtcBeatsEffect;->showBeatsIcon(I)V
to this
Code:
invoke-virtual {p0}, Landroid/media/AudioService$HtcBeatsEffect;->hideBeatsIcon()V
and Beats can still be enabled without the notification.
____________________________________________________________________________________________
it looks like the headset icon is called from SystemUI.apk \smali\com\android\systemui\statusbar\phone\HtcPhoneStatusBarPolicy.smali in method ".method private updateHeadsetStatus(Landroid/content/IntentV". In this method, find :cond_7 and copy everything between :cond_7 and :cond_8 - it should look like this:
Code:
iget-object v6, p0, Lcom/android/systemui/statusbar/phone/HtcPhoneStatusBarPolicy;->mService:Landroid/app/StatusBarManager;
const-string v7, "headset_plug"
invoke-virtual {v6, v7}, Landroid/app/StatusBarManager;->removeIcon(Ljava/lang/String;)V
goto :goto_4
Right above this, you will see :cond_6 - this is for the headset (with mic) notification icon. Replace everything between :cond_6 and :cond_7 with what you copied previously (make sure you don't copy over the lines for :cond_6 or :cond_7, just replace what's between)
Now scroll up until you find :goto_2 - this is for the headphones (no mic) notification icon. Replace everything between :goto_2 and :goto_3 with what you copied previously (make sure you don't copy over the lines for :goto_2 or :goto_3, just replace what's between)
Recompile, flash, no headset/headphone notifications.
Click to expand...
Click to collapse
Hey mate, i know, but not all people are knowing how to.
So a rom or a mod for this will be better
In fact i advised a rom, and not this solution
Dr. Hax said:
I appreciate your knowledge, very much, sadly I know nothing of Smali.
Could I replace the icons with a 1pixel wide transparent PNG or will that cause some weird things to happen?
Click to expand...
Click to collapse
You could do that, it will just take up a space in the notification bar, so if another one is called it will skip that space and you'll have a hole where the icon would be.
@homeslice976 Thanks for that info! The NFC icon has disappeared. I was waiting for ARHD 22.1 to do this, nice to know that all it needed was vi.
And you've made me curious about modifying apks.
Yay, headset icon gone now too! Thanks for demystifying Android.
deeevan said:
@homeslice976 Thanks for that info! The NFC icon has disappeared. I was waiting for ARHD 22.1 to do this, nice to know that all it needed was vi.
And you've made me curious about modifying apks.
Yay, headset icon gone now too! Thanks for demystifying Android.
Click to expand...
Click to collapse
Can you please make a flashable of the removed headset and Beats icons?
Dr. Hax said:
Can you please make a flashable of the removed headset and Beats icons?
Click to expand...
Click to collapse
I've modified the apks from ARHD 30.0, which is Sense 5.5. Your results may vary on other ROMs.
deeevan said:
I've modified the apks from ARHD 30.0, which is Sense 5.5. Your results may vary on other ROMs.
Click to expand...
Click to collapse
I'm on ARHD 31 and have been dying to have these removed. Can you please upload the apk and let me know how to use it? Does it need to be pushed somewhere specific/ with certain permissions? Can I just install it? etc.
Thanks so much.
Remove headset icon
ARHD 30.0 (Android 4.3)
SystemUI.ARHD30.0.modified.apk (5.8 MB)
https://mega.co.nz/#!Ig4i1R6B!D_CKSzT816iqi_Pvuf_UCnwZJZ88qVEiqs9hyP_0RY0
ARHD 22.0 (Android 4.2)
SystemUI.ARHD22.0.modified.apk (5.3 MB)
https://mega.co.nz/#!4p4B0IIK!b6g7VwZD8OF5X001wUQt2C3RXHZVk3qpZF9uWsvQVzY
1. Backup your current /system/app/SystemUI.apk
2. Rename modified apk to SystemUI.apk and copy over to /system/app
Permissions should be: -rw-r--r-- root root
Remove Beats icon
ARHD 30.0 (Android 4.3)
framework.ARHD30.0.modified.jar (3.4 MB)
https://mega.co.nz/#!o5ISxTQK!H3MR-To44T_e594O6cIA5AI1J6pl5GHcnZSMit9LdE8
1. Backup your current /system/framework/framework.jar
2. Rename modified jar to framework.jar and copy over to /system/framework
Permissions should be: -rw-r--r-- root root
Sorry, no ARHD 22.0 version. I didn't really care about the Beats icon, so didn't bother with it until after I'd upgraded.
Seems to be working flawlessly on ARHD 31. No bugs or issues yet.
Amazing. I've been looking for a way to do this since I first got my HTC One. Thank you so much!!
I was going to have a look at Xposed, but it looks like someone's got it covered. Removal of Beats and headphones icons coming soon.
http://forum.xda-developers.com/showthread.php?t=2335241
[MOD][Oct 22] Xposed Statusbar Mods -- Tweaks, Icons, and more! [SENSE/GPE][4.1+]
Hi, as mentioned above, worked great on 31, and I used it on 31.6 as well.
I upgraded to 40.3, and the beats one seemed to work, but then i couldnt get past the htc one screen (though through adb i renamed framework.old to framework again and then i could boot back), and the headphone one doesnt at all- there doesnt seem to be a systemui anymore.
any idea how to port these mods to kitkat?
I know there is going to be an xposed tweak, but hes been saying that for a while, and meantime i love my clutter free status bar.
amirfk12 said:
Hi, as mentioned above, worked great on 31, and I used it on 31.6 as well.
I upgraded to 40.3, and the beats one seemed to work, but then i couldnt get past the htc one screen (though through adb i renamed framework.old to framework again and then i could boot back), and the headphone one doesnt at all- there doesnt seem to be a systemui anymore.
any idea how to port these mods to kitkat?
I know there is going to be an xposed tweak, but hes been saying that for a while, and meantime i love my clutter free status bar.
Click to expand...
Click to collapse
That was unlikely to work as ARHD 3x.x is Android 4.3 based and ARHD 4x.x is Android 4.4 based. Despite the lack of huge cosmetic differences, the underlying base would have changed enough to make boot fail. FYI SystemUI.apk is now in /system/priv-app but I strongly recommend not trying.
Xposed is the best way to create a mod that is ROM independent, but the method provided by homeslice976 requires modifications to the system files after each new release. If I have the free time, I'll look into the ARHD 40.x files.
If you want to port this yourself, I just found this which seems pretty user friendly for a Windows user:
http://forum.xda-developers.com/showthread.php?t=2326604
deeevan said:
That was unlikely to work as ARHD 3x.x is Android 4.3 based and ARHD 4x.x is Android 4.4 based. Despite the lack of huge cosmetic differences, the underlying base would have changed enough to make boot fail. FYI SystemUI.apk is now in /system/priv-app but I strongly recommend not trying.
Xposed is the best way to create a mod that is ROM independent, but the method provided by homeslice976 requires modifications to the system files after each new release. If I have the free time, I'll look into the ARHD 40.x files.
If you want to port this yourself, I just found this which seems pretty user friendly for a Windows user:
http://forum.xda-developers.com/showthread.php?t=2326604
Click to expand...
Click to collapse
Thank you for your reply, and hopefully you will have the free time. I'm new to android and even though I looked at your link, I still have no idea how to do what is required to make the mod work and would be scared to try.
deeevan said:
That was unlikely to work as ARHD 3x.x is Android 4.3 based and ARHD 4x.x is Android 4.4 based. Despite the lack of huge cosmetic differences, the underlying base would have changed enough to make boot fail. FYI SystemUI.apk is now in /system/priv-app but I strongly recommend not trying.
Xposed is the best way to create a mod that is ROM independent, but the method provided by homeslice976 requires modifications to the system files after each new release. If I have the free time, I'll look into the ARHD 40.x files.
If you want to port this yourself, I just found this which seems pretty user friendly for a Windows user:
http://forum.xda-developers.com/showthread.php?t=2326604
Click to expand...
Click to collapse
agentdr8 got his xposed thing working, so no need for this anymore!

[MOD] Xperia Clock limit

Edit :
Props to @Jackos, here's the flashable patched SemcClock.apk with max of 96 clock alarm.
Cheers
==========================================
Hi guys,
Need a little help here.
I'm trying to remove the 20 Max limit of adding clock alarm in SemcClock.apk.
I thought i found the limit here MAX_ALARM_COUNT:I = 0x14
in this file SemcClock\smali\com\sonyericsson\alarm\AlarmListFragment.smali
But changing it doesn't seem to work.
Any ideas ?
takagen said:
Hi guys,
Need a little help here.
I'm trying to remove the 20 Max limit of adding clock alarm in SemcClock.apk.
I thought i found the limit here MAX_ALARM_COUNT:I = 0x14
in this file SemcClock\smali\com\sonyericsson\alarm\AlarmListFragment.smali
But changing it doesn't seem to work.
Any ideas ?
Click to expand...
Click to collapse
Never had a need for something like that.
Why don't you just use calendar or scheduler for something like that?
BTW - this section is for apps and themes, not help thread.
Naming of thread is also wrong - it's not MOD, it's REQ or HELP thread.
Try to rename it and tag @Serarj and @niaboc79 - if anyone knows, they know...
Sent from my D6503 using Tapatalk
Thanks for the advise.
If @niaboc79 or @serajr can helped, that would be awesome
Please find attached the patched SemcClock .402. It allows to create up to 50 alarm clocks.
I also included two images of my Virtuous Ten Studio, showing what values need to be patched for the fix to work if you want to do it yourself.
Keep pwning!
BTW I usually recompile the smali code to java, so I get a better view what's going on. As you may see the toast alarm limit is hardcoded.
Thanks alot.
It works, to sum up it's basically editing 2 places in file
SemcClock\smali\com\sonyericsson\alarm\AlarmListFragment.smali
Code:
.field static final MAX_ALARM_COUNT:I = 0x14
Code:
.method public onOptionsItemSelected(Landroid/view/MenuItem;)Z
.locals 10
.param p1, "item" # Landroid/view/MenuItem;
.prologue
const/16 v9, 0x14
Update "x14" to the number of clock you need.
Cheers :good:

[GUIDE][INDEX]How to modify an apk

How to modify an apk​
Intro:
I’ve done several threads about how to theme and other similar topics but the info is sparse, so this ultimate guide/index will seat proudly in the theme section of XDA and will be updated when new things come, and as I learn more. This isn’t a beginners guide, I’m here trying to be as complete as possible, with links, references, ...
This initial version of the thread isn't here to stay, if you could contribute to this thread, it would mean the world to me, and would clearly help the community (of course I'll mention you for your contribution )
And keep at mind that I’m just an enthusiast, nothing more, and that this thread has been made only by me, so it's far from perfect. If I made any mistakes or if you want to add something please let me know.
Legal aspect:
Using this knowledge to infringe copyright is not only illegal, it’s detrimental to the community. The only legal case, and the only usage of this info condoned, is using it to theme OPEN SOURCE apps (because most of the time, commercial apps forbid reverse engineering in their policies). So don’t worry, theming AOSP is legal. You can always ask the permission of the devs for an authorization to customize their apps, make sure to ask before modding, and distributing the result.
Now I’m not a lawyer, but you can learn more on the legal aspect of reverse engineering on this Stackexchange post.
Summary of this thread:
I-Requirements
II-Download APKs
III-Decompile
IV-What and how to modify
V-Recompile
VI-Sign and Zipalign
VII-Installing the apk
VIII-Other ways to theme your device
IX-Theming related topics
X-Not covered topics
XI-Mods Center
XII-Reserved​
I-Requirements​
A)Java:
It's essential, almost mandatory, the Java Development Kit (JDK) and Java Runtime Environment (JRE) must be installed to use java based tools.
How to install the JDK and JRE
(download and follow the instructions, it’s pretty simple)​
Then, set the path to "java home", you need to do that in order to use java properly within your terminal:
Here’s a tutorial I found​
To check if everything is okay, open a terminal anywhere and enter java --version. If it returns the version of the JDK and JRE you’re good.
B)Android SDK:
Unfortunately we aren’t able to download the Android SDK alone anymore, I used to consider it as a requirement, but now I don’t because some people don’t have the space to install the whole Android Studio IDE just to use the Android SDK.
C)Others:
I suppose that list is going to expand, those two above are the main ones, but if there's something else you need, I'll make sure to put it here
II-Download APKs​
This sounds stupid to take one whole post for that, but sometimes it’s a drag, so here are some ways you can grab the apk you want to modify.
A)APKs form your phone:​Every app you installed from the playstore is under /data/app. With a root explorer like the excellent MiXplorer, you can browse to it and see the icons representing the apps on your phone.
There is an apk called base.apk, that’s the one you want.
Sometime there might be parts called split_....apk along with base.apk, for the excraction of those you’ll need tools like the amazing app called SAI (Split APK Installer), it’s a graphical interface so I’ll assume you’ll figure out how to use it yourself
SAI on the Play Store​
B)From internet:​My two trusted sources I use: APK Mirror, XDA Labs (gone for now)
I also use this chrome module, it has simplified my life sooooo much, it’s provided by the APKmirror team: Toolbox for Google Play Store™
C)Your Sources:​If I missed any good and trusted website, let me know
III-Decompile​This is getting serious now.
If you want to modify the apk, you need to have what’s inside: the code.
A)Resources: Decompile Binary XMLs to Human-Readable XMLs:​We use APKtool for that, it decompiles the resources.arsc file to the res folder, and decodes binary XMLs to human-readable XMLs.
1-How to install APKtool:​How to install APKtool​
2-How to use APKtool:​There are 3 main commands you need to know about:
apktool d [nameoftheapk].apk​Used to decompile the apk. There are several options you can use with that command, they're specified in APKtool's documentation (in the credits).
apktool if [nameoftheframework].apk​Used to set the framework files to decompile properly APKs. Usually some OEMs add framework APKs into Android for their apps to work, so we need to find and copy them, then “install” them with the apktool if command to APKtool. You can learn more about that on APKtool's website (in the credits).
apktoool b [nameoftheapk].apk​Used to recompile the apk. The final apk can be found inside the decompiled apk’s folder, in a subfolder named dist. You can also use various options with that command (listed in the documentation, link in the credits).
B) Decompile Classes.dex to smali:​APKtool also convert classes.dex files to .smali files, but keep at mind that you won’t be able to see the java source code in those files.
The .dex extention is for Dalvik Executable, which is very self-explanatory, and is also a binary format. APKtool turn them into .smali files, which are Human-readable files, not in java, but still! And if you want to modify the code, you’ll have to learn smali. (covered in the next part, good luck with that lol)
C)Read java source code :​There’s actually a way to see the java source code of an Android app, using some tools:
JD-GUI (or any other java decompiler)
Dex2jar
First turn the classes.dex files into .jar files with this command using Dex2jar:
./d2j-dex2jar.sh -f -o output_jar.jar apk_to_decompile.apk​
(Execute the .bat if you’re on windows)
Quick explanation:
./d2j-dex2jar.sh: execute the dex2jar script
-f: replace the previous jar file named the same as output_jar.jar
-o output_jar.jar : set a name to the output jar file
apk_to_decompile.apk: name of the apk file you’re taking care of
Then read the jar file using JD-GUI (or any other java decompiler). It’s a quite simple software, lite weight, and you can download and run the java version without installing anything else.
Dex2jar isn’t updated anymore (since 2015), so there are errors when decompiling. You’ll be able to get a .jar file but it’ll be incomplete or not identical to the original one, that’s why this tool doesn’t allow one to modify java source directly. But you can get a great understanding of how this app works.
C) Nice tools from the XDA community:​• Tickle My Android (TMA) by @Ticklefish
A tool that ease the work with APKtool, amazing one!
• APK Easy Tool by @evildog1
Also works with APKtool, I don’t use it often, but it is great!
• Other tools:
Let me know
Credits, links for this part:
Stack Overflow Post
Documentation for APKtool
Another SO Post
@Rizal Lovins ’
" [Share Latest Apktool 4.2.2/Guide/Tutorial/] How to Decompile/Compile/Sign Apk/Jar "
@A_U ’s
" [GUIDE][HOW-TO] Decompile and Compile apps using Apktool in 5 Simple Steps "
IV-What and how to modify​This part is gigantic, I'll try to include as much link as I can, this part isn't supposed to stay like that very long, as it contains very few of the hundreds of guide about theming in XDA. Help me out by suggesting some links.
​A)Resources (XML):​​1-Tools​To edit XMLs you can use whatever text editor you want, but I’d recommend Visual Studio Code. It has solid plug-ins that may come handy to avoid mistakes when editing.
You can also sort of visualize XMLs with Android Studio's Layout Inspector.
You have to open the apk’s folder in Android Studio and browse to the desired xml. Opening the resource manager will aslo allow you to visualize the XML files to a certain extent, but it's not cristal clear (see the screenshot) so I don’t use that very often, but it’s good to know.
Spoiler: Screenshot
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
2-What’s xml​This subject is very long, you can learn a lot of things. Here are some links (increasingly detailed) to learn about XML:
A Post in [GUIDE] Want to learn how to theme? by @theimpaler747
Google’s "Guide" (very complete): that google link is about resources in general, so it explains XMLs but not only XMLs
A Reference for Codenames in XMLs
3-Modifications:​You can modify deeply the UI by editing XMLs, here are some guides to make you familiar with some techniques. Again this is a very vast field, it deserve a thread itself, and this list clearly isn"t finished. Here are my favourites ones:
XML 101 by @Ticklefish
[GUIDE][RES] Android Animation XML resources for Activity Transition by @niranjan94
Find the code you want to modify by @Raiz (Me lol)
[TUTORIAL] Where to find the colors for making a theme by @KBanause
[TUT][JB] HOW TO THEME SystemUI.apk for TOTALLY newbie! by @joehanh88
[Reference] Interactive Phone Modification [GUIDE] by @pstevep , this is AN ABSOLUTE UNIT OF INDEX!
[Tutorial][APP] PinP Shortcuts | How to Implement Picture in Picture Mode [API 26+] by @Geeks Empire
[Overlay] Enable Night Light, Auto-Brightness, Ambient Display & more on Treble ROM by @MishaalRahman
Let me know
4-Precaution:​When modifying apks, some errors can be very frustrating, yet very easy to fix. Here are some usual cause of struggle:
Not properly set JAVA_HOME
The tools used (like apktool.jar) aren’t chmod +x (aren’t allowed to be executed)
You have to add java -jar [command] before every .jar tools commands for it to run
Tell me, don't be shy
For every tool related bug, please refer to their GitHubs, sometimes you’ll find a solution by searching. And XDA threads are also plenty of answers! (and if you’re really not lucky maybe stack overflow can help).
B)Smali:​That’s a tough one. First, if you want my advice, editing them with Visual Studio Code and the smali plugin is way easier to find mistakes. There’s also a smali plugin for Android studio (and IntelliJ based IDE) made by Jesus-Freke, it is called smalidea.
Now I found one reaaallllyy awesome thread here on XDA about smali:
[GUIDE][SMALI]Understanding and Creating Smali Mods & General Smali Questions by @Goldie
Something else maybe? Tell me
This is my reference, I’m still learning smali tho, this list may be updated, but this thread is pure gold, go check it out!
Credit for this part:
Resources:
@Ticklefish , for XML 101 (but also for TMA), this is really one of my favourite thread on XDA
All the other members mentioned in the above list
Smali:
@Jesus-Freke , for his work on smali, baksmali (integrated in APKtool) and smalidea
@Goldie , for the amazing thread explaining smali
V-Recompile​You've done the hardest part, now what's left is repacking that thing together.
A)How to recompile:​It’s pretty simple, do it with apktool with this command:
apktool b [nameoftheapk].apk​You can add several options, here’s the full list.
The -c option to me is the most useful, because it allows to leave the signature unchanged for system apks. It’ll be deprecated soon (APKtool v2.6.0), so you’ll have to do the trick manually.
What -c (--copy-orginal) does: “Copies original AndroidManifest.xml and META-INF folder into built apk. Scheduled for deprecation.”
A bit of details, good to know:
“META-INF contains apk signatures. After modifying the apk it is no longer signed. You can use -c / --copy-original to retain these signatures. However, using -c uses the original AndroidManifest.xml file, so changes to it will be lost.”
And
“After [d]ecode, there will be new folders (original / unknown) in the decoded apk folder
original = META-INF folder / AndroidManifest.xml, which are needed to retain the signature of apks to prevent needing to resign. Used with -c / --copy-original on build
unknown = Files / folders that are not part of the standard AOSP build procedure. These files will be injected back into the rebuilt APK.”
Apktool uses aapt2, the tool used in Android Studio to compile your app. You can learn more on what it is here.
B)Troubleshooting:​First, remember that you can use aapt1 (used by default) and aapt2 when recompiling, try both if you run into some issues with the first.
If you have an issue with APKtool's dummy values, go on the Github Issue I opened, the problem is now solved.
Most common error, and simple to solve are the following:
-Name of the file not written correctly:​
Code:
brut.directory.DirectoryException: java.nio.file.NoSuchFileException: Firefoxr
Solution: The correct name is Firefox not Firefoxr, how dumb can I be?
​-Aapt errors: (here a folder isn’t recognized):​
Code:
W:invalid resource directory name: /Users/Raiz/Desktop/apktool/Firefox/res navigation
Solution: Use aapt2, the folders not recognized are because aapt1 (used by default) is older than aapt2, so if you see an error like this, use the option “—use-aapt2”
​-Xml Errors:​
Code:
W: /Users/Raiz/Desktop/apktool/framework-res/res/values/styles.xml:1185: error: Resource entry Theme.Holo already has bag item textEditSuggestionItemLayout.
Solution: These errors are quite easy to fix, just go to the file at the line mentioned then fix the error. Usually it a doubled line, a synthax error, …
Unfortunately APKtool isn’t able to correct string typos, it’s up to you to write in correct English (definitely struggling with that on my side lol).
For other more specific errors, copy/pasting the error message in the google search bar will most certainly redirect you to a Github error, or a post in The Official APKtool XDA Thread. You can find answers by searching, so search thoroughly before asking, it’ll save you some time.
And what is troubleshooting without
[UNIVERSAL][LOGCAT]How to get & read a logcat/ Troubleshoot your own issues!
by @Stryke_the_Orc​
Credit for this part:
APKtool issues on Github
The APKtool documentation
@iBotPeaches for this amazing tool
VI-Sign and Zipalign​
We must sign an app after having modified it, so it can be installed properly on our devices. System Apps MUST keep the same signature they had before modifying, or else the app will continuously force close, and it may even result in bootloops and other bad things.
To keep the signature take the META-INF folder from the not decompiled apk (browse it as a zip file) and put it in the newly recompiled apk (browse it as a zip file too, if there is already a META-INF folder, just replace it)
Links to build and platform tool:
Platform-tools: https://developer.android.com/studio/releases/platform-tools​Build-tools: Have to be downloaded from sdk manager in android studio​
A)Official way:​Tool used in the correct order:
1)keytool (included inside java)
2)zipalign from build tools (29.0.2 here, but use the latest )
3)apksigner from build tools (29.0.2 here, but use the latest) (+the lib folder containing apksigner.jar)
Where are build tools?
Mac: ~/Library/Android/sdk/build-tools/[your buld-tool version]/
Linux: ~/Android/sdk/build-tools/[your buld-tool version]/
Windows: C:/User/yourusername/AppData/Local/Android/sdk/build-tools/[your buld-tool version]/
Disclaimer: Using jarsigner is also possible (tool natively included in java jdk), if you use it, make sure you zipalign AFTER signing.
Make sure that apksigner (and lib) as well as zipalign are in the folder you’re apk is in.
Make sure they’re all executable (check that using chmod) and on mac os, make sure your terminal has full disk access (I had a hard time figuring this out lol).
​1-Generate keystore:​This is pretty simple, we’ll use keytool, at tool antively included in java jdk. We’ll need only one thing before using apksigner : the keystore.jks file (or a separate certificate and private key, but that’s more complicated)
keytool -genkey -v -keystore ~/Desktop/apktool/keystore.jks -alias Raiz -keyalg RSA -keysize 2048 -validity 10000​
Just replace the alias (here Raiz) by a familiar name, you have to remember it! (here’s why)
Also replace the name of the jks file (but not it’s extension, even though it can be .keystore, I had less issues with .jks)
Quick explanation of what does what in the command:
keytool : the command to use keytool obviously
-genkey : generate the keystore
-v : display verbose
-keystore : set the path to the future file
~/Desktop/apktool/keystore.jks : Path and name of the future file, you can call the keystore whatever you want to.
-alias Raiz : specify the alias used, it can be whatever you want, but remember it, it’s like a publisher name
-keyalg RSA : specify the algorithm used for the key, here it’s RSA (here’s a bit of history)
-keysize 2048: the size of the key in bits
-validity 10000: validity in days, here 10000 days
1*- Generate key.pk8 and cert.pem:​This is a quote from another thread (by @wilskywalker), this isn't necessary, but can come handy when signing zip, so I'll leave that here anyway.
You will need the following download:
OpenSSL [LINK]
[...]
Code:
openssl genrsa -out key.pem 1024
openssl req -new -key key.pem -out request.pem
openssl x509 -req -days 9999 -in request.pem -signkey key.pem -out certificate.pem
openssl pkcs8 -topk8 -outform DER -in key.pem -inform PEM -out key.pk8
Click to expand...
Click to collapse
2- Zipalign:​​./zipalign -v 4 firfox-mod.apk firefox-aligned.apk​Quick explanation:
-v : verbose
4 : align on 4 bits, putting another value will align the wrong way, just keep 4
firefox-mod.apk: name of the input apk, can be anything
firefox-mod-aligned.apk: name of the output apk, can be anything too
3-Sign the apk with apksigner:​
./apksigner sign --ks keystore.jks firefox-mod-aligned.apk​
Quick explanation:
sign: the command use to sign
--ks keystore.jks : specify the keystore file (the same one we generated seconds ago)
firefox-mod-aligned: the input apk (the one we just aligned), note that the apk will be signed and there won’t be any output apk this time
And you’re done, you can check that it has been properly signed with this command:
./apksigner verify firefox-mod-aligned​
Where firefox-mod-aligned is the apk signed we want to check
​3*-Sign the apk with apksigner using .pk8 and .pem files:​
./apksigner sign ---key key.pk8 --cert certificate.pem firefox-mod-aligned.apk​
Credits, links for this part:
How to sign an app (by Google)
apksigner documentation
keytool documentation
zipalign documentation
Stack Overflow post
@Rizal Lovins ’ Guide
B) Unofficial ways:​Some amazing devs and contributors at xda provided us with tools to sign with ease APKs (without having to think about all of that),I didn’t fully tested every one fo them, but you can try them as an alternative if the “official way” didn’t worked out well.
Here they are:
APK easy tool by @evildog1
APK Sign/Zipalign/Install by @aureljared
Uber APK signer (Github)
VII-Installing the apk​Your theme should be ready by now, but how do you want to install it?
There are several ways to get an apk inside your phone, I’ll go over the ones I think are the most common.
A)Regular apk install:​Just install it duh… (here you go if you need a little help).
B)Flashable zip:​I do recommend making flashable zips, because they’re pretty useful when installing modded system apps. So what is it?
1-Folders:​A flashable zip contains 2 folders: META-INF and a folder which will mimic the path to the apk we want to install. Inside that succession of folders, we’ll put our modified apk, and when flashing, the modded apk (inside the zip) will replace the original one inside your phone.
E.g: create system/priv-app/systemUI/systemUI.apk to install a modified systemUI.apk file by replacing the original one
Click to expand...
Click to collapse
E.g: create data/data/com.mixplorer/databases/data.db to replace the original data.db file inside this folder
Click to expand...
Click to collapse
Once you get those folders done (and the apk inside of it), it’s time to write the edify script that’ll flash the zip file.
2-Edify Script:​Edify is the language the script will be written in.
The file containing the script is located in /META-INF/com/google/android/updater-script (the name of the file is updater-script, naming it something else would make it ignored by your custom recovery)
Open this document with a text editor, and start coding!
We want to copy/paste the content of our zips onto the system (and replace files), so here’s the precise things we’ll do:
a-(OPTIONAL)Your “intro”:
Using the ui_print(" "); command, we can make some really cool looking ASCII art. You can write comments at whatever steps you want with this command, it’s pretty handy!
ui_print("Your Message here");​b-Mount the system partition:
​run_program("/sbin/busybox", "mount", "/system");​
c-Extract the content of the zip to /system:
package_extract_dir("system", "/system");​d-Unmount the system partition:
unmount("/system");​This is very basic, you can do so much more with edify script! Set the progress bar progress, set permissions to certain files, delete folders and/or files,...
3-Sign your zip:​You need to sign your zip after compressing it! The process looks like the one with key.pk8 and certificate.pem files, so I'll refere again to the same thread for that. (In the Credits)
I've covered the basics, now it's index time, you can go further with the links in the credits, and you can suggest me more!
Credits:
[WIP] How to Write an Updater-Script with Edify Code by @Karadorde
That one covers how to sign your zip:
[TUTORIAL] Making Flashable ZIPs, EDIFY Script, ZIP Signing & Key Creation [19.01.13] by @wilskywalker
My Very Own Script by Me
More Links:
[GUIDE] Create your own Flashable ZIP with custom updater-script and addon.d script by @Primokorn
[TUTORIAL] The updater-script completely explained by @KINGbabasula
Spoiler: Bonus
4-How to make a working progress bar​First “create” the progress bar that can go up to 100%
show_progress(1.000000, 0);​Then set the progress after each steps: (here I set it at 10%)
Code: set_progress(0.100000)​
C)ADB sideload:​Adb allows one to flash zips through command line using a custom recovery.
How to install adb​Now how to sideload an apk using adb:
Make sure your phone is plugged, and your PC allowed to use adb on your device. (the last steps of the guide I linked on how to install adb on your pc)
Reboot to recovery
For TWRP : Advanced → ADB Sideload For CWM : Install → Install Zip from Sideload
Code: adb sideload path/to/flashable.zip
And that’s it, congrats
D)Aroma Installer:​They’re very cool, yet I’m not really familiar with those.
This concept origins from XDA Inactive Recognized Developer @amarullz , and is used by the OpenGApps team for their Aroma package. Needless to say its work eased the task for many others, feel free to leave a thank on the threads:
Q’n’A about Aroma Installers: [Q&A] AROMA Installer - [Dev Move To DevDB]
Q’n’A about Edify and Aroma: (by @Dblfstr) Aroma, Edify, updater script Question and Answer thread
A tool to create them: [TOOL][3-10-13] Aroma App Package Creator v1.3.2 (by @commandersafi)
VIII-Other ways to theme your device​Making the whole apk is often long, and doesn’t leave much control over the theme to the user, alternative ways of theming let users control how they want the theme to be applied. Those 2 ways won’t be covered by me (as I don’t know enough about them yet), that's why, for this part, every input in welcomed
A)Magisk Modules:​This is now a pretty common and convenient way to distribute APKs and mods, so I had to cover it. Here’s a link to an official developer guide, it covers a good part of it, if you have an input, it is welcome!
https://topjohnwu.github.io/Magisk/guides.html​
B)Substratum Themes:​I don’t even need to tell you what is substratum, as it is pretty famous (along with Magisk), but let’s say you’re totally new.
Substratum is a theme engine that allows you to control what element of your system you want to be themed, and apply themes with the possibility of disabling theme at some point in time. So how to make a substratum theme ?
Links:
Video from the XDA chanel on YT
Another one from XDA on YT
Theme template form the official Substratum Github
IX-Theming related topics​All of the things I couldn't fit in the previous sections are here, make an input, I'll make sure to add it if it's relevant
A)Design Basics:​Now I don’t have especially fine taste in terms of designing, but I’m trying to learn!
Here are some links:
The Android Design Resources Forum in XDA
XDA Article about icon design
Material.io
Matrial.io YT channel
B)Boot Animations:​Here are some helpful threads and links:
[TUTORIAL]How to make your own boot animations (with sound if you want) by @despotovski01
[GUIDE] How To Make Bootanimation by @jackeagle
[GUIDE][TUT]make/Port any bootanimation|||USING VIDEO/FRAMES by @deathviper
C)Icon Packs:​[GUIDE]How to create icon packs for Go/Nova/Apex/Holo/ADW/LauncherPro/XperiaHome by @iamareebjamal
D)Port OEM Apps:​[GUIDE/TIPS] How to Port OEM Apps / Vendor Apps to Your Current ROM by @Rizal Lovins , this one is a wealth of information! really good and unique
D)Build.prop:​[Tweaks][Guide]Build.prop Tweaks by @bravonova
X-Not covered topics​Why don’t you talk about … ? That’s theming tho! And what about … and …? What is this thread!
I understand, these are legit claims, but I can’t cover everything. That’s where YOU come in play, you certainly know things that I don’t, so please, if you have any knowledge about something I didn’t mentioned above, please let me know!
I’m trying to make this thread as complete as possible, so I’d be very grateful if you could share a little about your knowledge .
Thank a bunch!
I know I already said that 10000000 times, but really, it would be awesome to have inputs!
XI-Mods and Wallpapers:​Let me take a tangent from the original purpose of this thread. This was supposed to be all about guides, but I thought about that twice and I think that's a good idea.
Basically, this here will list some of the amazing mods and themes around xda.
The goal here is to crack open those and see how they work, this would represent an immense work that I'm not able to take on right now, so I may leave links here, and you'll do the jobs of understanding how they work. Maybe at some point I'll write some here (with the credits of the OP of course!), but certainly not now.
Links:
Offline Google LLC App Wallpapers by @[email protected]
XII-Changelog:
For each update I'll bump this thread, so that you can enjoy latest links​04-01-2021 Update:
Happy new year! I went through my long list of watched threads, and found the gems I kept selfishly, they're yours now !
Added:
[GUIDE] Create your own Flashable ZIP with custom updater-script and addon.d script
[UNIVERSAL][LOGCAT]How to get & read a logcat/ Troubleshoot your own issues!
[GUIDE/TIPS] How to Port OEM Apps / Vendor Apps to Your Current ROM
[Tweaks][Guide]Build.prop Tweaks
[GUIDE]How to create icon packs for Go/Nova/Apex/Holo/ADW/LauncherPro/XperiaHome
[TUTORIAL] The updater-script completely explained
[TUT][JB] HOW TO THEME SystemUI.apk for TOTALLY newbie
[Reference] Interactive Phone Modification [GUIDE]
[Tutorial][APP] PinP Shortcuts | How to Implement Picture in Picture Mode [API 26+]
Offline Google LLC App Wallpapers
[Overlay] Enable Night Light, Auto-Brightness, Ambient Display & more on Treble ROM
Thanks for this, useful for sure. This is mostly on Windows. There's a way to do this directly on the phone ( most of it anyway).
I use an app called: Apkeditorpro.
I use version 1.9.10 cause i don't like the ui in the newer version.
In it you can :
-edit xmls directly.
-decode the smali and edit them, and view the java code and edit it with no extra tools.
-extract or replace files
-and rebuild the apk when finished. It'll show you a list of compile errors if any when building to review. If the build works it signs it and offers to remove old app and reinstall the new apk.
I found it very useful in editing theme overlays or add fonts in fonts tab in settings.
I am like you an enthusiast in all things modding. Still learning smali/ java editing. Hope we can learn together and from each other
Merry Christmas
Hi is it also valid for Xiaomi apk?
Braain said:
Hi is it also valid for Xiaomi apk?
Click to expand...
Click to collapse
Yep, it's valid for almost anything (any apk at least), feel free to ask here if you encounter problem, I'll do my best to help
Hi I started working with Riru-Enhanced mode for Storage Isolation and some mistakes I made now it's oky now I want to try to modify the handset apk because Xiaomi Redmi 7 is andro system android carefully
Raiz said:
04-01-2021 Update​
Click to expand...
Click to collapse
The First Update of this thread is out!, check out the post I quoted to see the list of threads I added, I also integrated them to the main guide (with proper credits), but I think making a list for each update more convenient for you readers.
I recommend to bookmark those thread or to watch them, because some are really amazing!
[QUOTE = "Raiz, post: 84227321, membro: 8020437"]
Il primo aggiornamento di questo thread è uscito !, controlla il post che ho citato per vedere l'elenco dei thread che ho aggiunto, li ho anche integrati nella guida principale (con i crediti appropriati), ma penso che fare un elenco per ogni aggiornamento più conveniente per voi lettori.
Consiglio di aggiungere quei thread ai preferiti o di guardarli, perché alcuni sono davvero fantastici!
[/CITAZIONE]
Great gems, indeed. Let me add this to the collection:
[Samsung only]How to modify stock font app (SamsungOne.apk, SamsungSans.apk, or Fondation.apk)
This post describes it using ApkEditorPro directly on the phone. It could work on other devices if you know what your stock font app is. It's a simple drag and drop your custom files in the right place.

Categories

Resources