Related
I'm baaaack
Andrizoid's Linux Deodex Kitchen V4
This has been an ongoing project for a while now.
Since all the other deodexers are windows .bat scripts, i decided to make one for those of us on Ubuntu/Mac/etc
Extract to your desktop and check the README file for full instructions and more information.
Changelog
V4
Fixed some of the code, added the optional make-rom.sh which adds the freshly de-odexed files to the original rom and signs it making it ready to flash.
V3
Everything is fully automated, and will deodex the whole rom rather than one file at a time. Smali and Baksmali version updated to 1.2.3
V2
Added setup.sh to make things easier.
V1
Original script.
Love me or hate me, its a great little setup. It can be used with any rom on any device.
Interesting
Sounds interesting. I'll have to play with it this weekend.
I hope the drama is settled down now... I get enough when my wife watches "real housewives"
theres a few issues, it only de-odexes apk WELL for now. for the framework files it gets kind tricky. ill work on it a bit when i get some time.
I've been looking over your source code, I notice few lines could use simple shortcuts, for example
Code:
/home/ken/deodex-kitchen
you can change that to
Code:
~/deodex-kitchen
~ will tell shell to use current user's home directory, just make it more universal for anyone to use. Just my 2 cents.
it even work with cd, cp, mv, mkdir commands, ~ is very handy, and save you from having to type in full path.
firestrife23 said:
I've been looking over your source code, I notice few lines could use simple shortcuts, for example
Code:
/home/ken/deodex-kitchen
you can change that to
Code:
~/deodex-kitchen
~ will tell shell to use current user's home directory, just make it more universal for anyone to use. Just my 2 cents.
it even work with cd, cp, mv, mkdir commands, ~ is very handy, and save you from having to type in full path.
Click to expand...
Click to collapse
ya, a lot of the code could be cleaned up but thats the very basic version. i put it together to help build my rom, i got it working enough to do that and kinda forgot about it. i need to clean it up and put out another verison
too many projects at once haha.
found few bugs with your make-rom.sh script, on last couples of lines starting with rm will fail, because you forgot to add cd to rom-output and your script also left framework-res.apk at root of rom-output folder which should be moved to /system/framework
in your readme file, you forgot to add a step to run setup.sh script before de-odexing apk/jar files.
firestrife23 said:
found few bugs with your make-rom.sh script, on last couples of lines starting with rm will fail, because you forgot to add cd to rom-output and your script also left framework-res.apk at root of rom-output folder which should be moved to /system/framework
in your readme file, you forgot to add a step to run setup.sh script before de-odexing apk/jar files.
Click to expand...
Click to collapse
ya when i used it i made some heavy modifications to it before i got a rom to boot. i need to update this thing but ive got a few other projects im the making.
not enough people seemed interested in this to make it my priority
Andrizoid said:
ya when i used it i made some heavy modifications to it before i got a rom to boot. i need to update this thing but ive got a few other projects im the making.
not enough people seemed interested in this to make it my priority
Click to expand...
Click to collapse
I use Ubuntu, and your script fit the bill and spare me from having to reboot into windoze to use their crappy batch files. Of course your hands is all tied up with other projects, however I'll be watching this tread once you get around to updating this. Just keep bring out the great stuff!
I like people like you that make contribute back to community such as this valuable tools, unlike other developers which pretty much rather keep it to themselves (I won't list their names here, and not trying to start a flame-war) as the rest of first time ROM cooker have to figure it out the hard way.
I've just been pointed to this thread while looking for a way to deodex
the link works still, but the file has been deleted by Rapidshare, "due to inactivity"
Any chance of it being uploaded again please?
lew247 said:
I've just been pointed to this thread while looking for a way to deodex
the link works still, but the file has been deleted by Rapidshare, "due to inactivity"
Any chance of it being uploaded again please?
Click to expand...
Click to collapse
why not just use dsixda's kitchen?
http://forum.xda-developers.com/showthread.php?t=633246
then you'll also have just about everything you need (not just a deodex-er)
plus, don't think you'll get any "support" on this anymore... whereas, with dsixda's kitchen, you'll have LOTS of support for quite a while
firestrife23 said:
I've been looking over your source code, I notice few lines could use simple shortcuts, for example
Code:
/home/ken/deodex-kitchen
you can change that to
Code:
~/deodex-kitchen
~ will tell shell to use current user's home directory, just make it more universal for anyone to use. Just my 2 cents.
it even work with cd, cp, mv, mkdir commands, ~ is very handy, and save you from having to type in full path.
Click to expand...
Click to collapse
Use $HOME instead of ~. ~ doesn't always refer to the home directory.
I can help you with the need to rename $path in the script before it will work are you interested?
Upload to mediafire please.
Trent said:
Upload to mediafire please.
Click to expand...
Click to collapse
Double that. Please do this, since Multiupload has been closed.
I have seen a modified Phone.apk floating around for a while but sadly it stated that it was NOT compatible with the HTC Hero.
Well my phone had a 'feature' that makes it vibrate when the outgoing call connects, and i wanted to remove it.
Note that i'm running DamageControl 2.09 and there is NO option to disable this 'feature'.
Being quite determined and having an OK background in reversing applications i decided to give it a go.
My phone now contains an option in Phone Settings that will enable/disable this vibrate on outgoing connect.
Below i have detailed what I did and why. (I'll spare you all the things i did that didn't work, and only show HOW to modify the APK and get the system to accept it!)
Requistes:
able to run adb from command prompt (SDK in PATH EnVar)
able to run apktool from command prompt (in SDK folder?)
able to run the testsigner from the command prompt as 'java testsign' (ClassPath EnVar)
First things first, anything we do the the Phone.apk is going to require us to resign it. this presents a few problems...
Phone.apk has the following in it's AndroidManifest.xml
android:sharedUserId="android.uid.phone"
Click to expand...
Click to collapse
This means that there is most likely more .apks that have this same UserId (7 to be exact on DC 2.09)
All APKs sharing the same UserID MUST be signed with the same certificate or the OS wont let 'em load.
The second problem is that it is a system application, and if we change it's Certificate it will no longer be granted certain SYSTEM permissions like DEVICE_POWER
The easiest solution was for me to resign every apk in /system/app and /system/framework
Here is a little batch script for windows that i used (you may have to execute the commands individually, sometimes it's tempermental)
Code:
echo off
adb shell stop
mkdir SystemApp
adb pull /system/app SystemApp
mkdir SystemFramework
adb pull /system/framework SystemFramework
for /R %%x in (*.apk) do java testsign "%%x"
adb remount
adb push SystemApp /system/app
adb push SystemFramework /system/framework
rmdir /S /Q SystemApp
rmdir /S /Q SystemFramework
adb reboot recovery
echo Wipe Dalvik-Cache and Perform Factory Reset
echo execute 'adb shell chmod -R 777 /system' from adb
echo reboot and enjoy!
echo on
This code will take care of resigning all system apps, effectively changing the system certificate. Now we are free to modify the Phone.apk all we want!
Please remember that anytime we push a system app like Phone.apk which is 'always' running we should either be in recovery or use the following script:
Code:
adb shell stop
adb remount
adb push Phone.apk /system/app/Phone.apk
adb shell start
del Phone.apk
pause
after a short while the phone will seem to do a soft reset and will be running the new Phone.apk
Now that we have certificate issues out of the way lets look into the actual application itself.
once decompiled with apktool you can run this script to rename all the files to .txt (this is for being able to search the file contents via Windows Search)
note: the command prompt must be CD'd into the output directory of apktool
Code:
for /R %%x in (*.smali) do REN "%%x" *.txt
having searched through all the code for various keyphrases, i'll only show the correct ones here. We need to find where shouldVibrateOut() is located.
after searching for that we should see that it's located in Ringer.smali and looks like this:
Code:
.method shouldVibrateOut()Z
.locals 1
.prologue
.line 430
const/4 v0, 0x1
return v0
.end method
the code above effectively says return true; clearly someone was taking an easy way out here ... but this does confirm that there is no option to disable the 'feature'.
To disable it we could simply change the 0x1 to a 0x0 and recompile/push/reboot and be done with it. But the goal here is to extend the features of the phone, and doing what the dev should have done (giving users the option).
So, next we need to find the Preferences Activity that lists the options, and modify it's XML file to add our own there
looking again in the AndroidManifest.xml we find this:
<activity android:theme="@android:style/Theme.NoTitleBar" android:name="PhonePreference" android:configChanges="keyboardHidden|orientation">
Click to expand...
Click to collapse
So we know the activity is named PhonePreference
now we navigate to the /res/xml folder of apktool's output and find phone_preference.xml
it seems the last Checkbox is:
<com.htc.preference.HtcCheckBoxPreference androidersistent="true" android:title="@string/preference_save_contact" android:key="pref_key_save_contact" android:summary="@string/preference_save_contact_statement" android:defaultValue="true" />
Click to expand...
Click to collapse
so we're going to take this line and copy paste it underneath and make it look like this (changes are bolded)
<com.htc.preference.HtcCheckBoxPreference androidersistent="true" android:title="@string/preference_vibrate_out" android:key="pref_key_vibrate_out" android:summary="@string/preference_vibrate_out_statement" android:defaultValue="false" />
Click to expand...
Click to collapse
now we need to edit the strings.xml file to add values for the above checkbox
add these 2 lines to the strings.xml file:
<string name="preference_vibrate_out">Outgoing Calls Vibrate</string>
<string name="preference_vibrate_out_statement">Phone will vibrate on connect for Outgoing calls</string>
Click to expand...
Click to collapse
If we were to compile it and push it to the phone now we would see a new menu option!
Sadly the Phone application is unaware of how to use this new setting to determine whether or not to vibrate. so we must teach it by editing the code.
I'm not going to go into great detail of what each line does they're pretty self explanatory. however i will go over the important pieces...
we need to change the shouldVibrateOut() routine to this:
.method shouldVibrateOut()Z
.locals 4
.prologue
const/4 v0, 0x0
#v0=(Null);
const-string v1, "pref_key_vibrate_out"
#v1=(Reference);
iget-object v2, p0, Lcom/android/phone/Ringer;->mContext:Landroid/content/Context;
.local v2, v2:Landroid/content/Context;
#v2=(Reference);
invoke-static {v2}, Lcom/htc/preference/HtcPreferenceManager;->getDefaultSharedPreferences(Landroid/content/ContextLandroid/content/SharedPreferences;
move-result-object v3
#v3=(Reference);
invoke-interface {v3, v1, v0}, Landroid/content/SharedPreferences;->getBoolean(Ljava/lang/String;Z)Z
move-result v0
#v0=(Boolean);
return v0
.end method
Click to expand...
Click to collapse
the string in v1 is the same string as the android:key="pref_key_vibrate_out" we used when making the new checkbox.
the rest of the code basically grabs a hold of the instance's Context variable and uses some built in APIs to read the setting of that checkbox and return it's value:
Checked == True
Unchecked == False
This will enable the shouldVibrateOut routine to detect whether or not it SHOULD rather than just saying yes.
Come to think of it, why make a routine whose name suggests there's an option and then not give one!! anywayz let's finish up...
next if you did rename all the files you'll need to put them back to .smali
for /R %%x in (*.txt) do REN "%%x" *.smali
Click to expand...
Click to collapse
and then recompile it using apktool, resign it, push it to the /system/app folder AFTER issuing the STOP command as shown above.
once it's pushed you should be able to simply use
adb shell start
Click to expand...
Click to collapse
to do a 'soft' reboot of the phone.
If the app crashes try going into recovery mode and wiping out the dalvik cache!
I hope those who have read this got something out of it, and that i wasn't too confusing or too vague. any questions or comments you may have are welcome.
Enjoy!
Thanks for the instructions, you rock. This will help immensely for adding an option for roam only. I got it working for Fresh, but there were problems with other ROMs. I'm thinking your info will help resolve the issues.
noob Q. is there a flashable file...
That's pretty pro
i can make one, but you still have to resign your entire /system/app and /system/framework...
i could include those in the update.zip for you if you are running DamageControl 2.09
Hmmm... I'm running Zen... so I believe it should work....
Sent from my HERO200 using XDA App
i dont think an update.zip full of DamageControl system apps would work on a different ROM... if u can resign the system itself as described above... i can make an update.zip for you with the Phone.apk in it
Ok....
Sent from my HERO200 using XDA App
Zip Format
please please please make a backup of your original phone FIRST!
adb pull /system/app/Phone.apk Phone.bak
if you flash this update.zip for the new phone and it keeps FCing on you you'll need to either A) flash the Original i've provided in a zip format or reboot into recovery and push your old one back.
you MUST resign all system files like i've described above for my mod to work...
place the below files on your sdcard and flash away...
I do not promise anything unless you are running on DamageControl ROM 2.09
ummmm.... ok so after 2 or so hours... looks like it only works with damage rom.... somewhere some how there is something that is not letting this work... i wounder what it could be,,,,,,, ..... any way great work thank you for your help....
maybe i'll see if i can't get a working one on the Zen rom... any version info i need to be aware of?
EDIT: I'm assuming you're running this ROM....http://forum.xda-developers.com/showthread.php?t=662113
EDIT2: Here you go, as long as you're running the above rom... it'll work, tested it myself
http://www.mediafire.com/?kiaqt264culyt96
vibrate is off by default
to re-enable the vibrate go into Settings->Call->Phone Settings and there's a checkbox for Vibrate on Outgoing
Nieylana said:
maybe i'll see if i can't get a working one on the Zen rom... any version info i need to be aware of?
EDIT: I'm assuming you're running this ROM....http://forum.xda-developers.com/showthread.php?t=662113
EDIT2: Here you go, as long as you're running the above rom... it'll work, tested it myself
http://www.mediafire.com/?kiaqt264culyt96
vibrate is off by default
to re-enable the vibrate go into Settings->Call->Phone Settings and there's a checkbox for Vibrate on Outgoing
Click to expand...
Click to collapse
Actually I'm running Zen Hero fx....
Sent from my HERO200 using XDA App
here: http://www.mediafire.com/?s1zkx93bcnmjfxc
for Zen Hero FX 2.1 Lite
flash this zip and wipe the cache...
Nieylana said:
here: http://www.mediafire.com/?s1zkx93bcnmjfxc
for Zen Hero FX 2.1 Lite
flash this zip and wipe the cache...
Click to expand...
Click to collapse
this is sweet...... again thank you for all your hard work.... it works like a charm....
Hey Q. Do you know anything about vibrating when you press the dial pad... I'm looking thru settings but can't fine it... do you know if its something like this.?.?.
Sent from my HERO200 using XDA App
I can mods that too for you if you would like. Let me know.and the best part is now that u've flashed that zip file, all u'll need is a diff phone app (smaller download )... will work on it tomorrow
Sent from my HERO200 using XDA App
Big-O-Devil said:
Hey Q. Do you know anything about vibrating when you press the dial pad... I'm looking thru settings but can't fine it... do you know if its something like this.?.?.
Sent from my HERO200 using XDA App
Click to expand...
Click to collapse
http://forum.xda-developers.com/showthread.php?t=660506
check out this thread bout haptic dialer
Never mind believe he was talking bout adding the option of turning it on and off
I can mods that too for you if you would like. Let me know.and the best part is now that u've flashed that zip file, all u'll need is a diff phone app (smaller download )... will work on it tomorrow
If you can.... ... that would be sweeeeet..
Sent from my HERO200 using XDA App
Click to expand...
Click to collapse
Sent from my HERO200 using XDA App
a few problems... it doesn't seem to haveit's own settings page (cant use the Phone Settings page... different package), nor can i seem to add a button to the thing .. will try later
Nieylana said:
a few problems... it doesn't seem to haveit's own settings page (cant use the Phone Settings page... different package), nor can i seem to add a button to the thing .. will try later
Click to expand...
Click to collapse
sounds like a real head-buster.....
First off, this is my very FIRST publically posted Android mod, and my second one ever - I made the first one earlier today. In other words, I'm new and may make mistakes.
These steps work for me, though!
Exactly what this guide does:
When you enable "Blocking mode" in the Samsung JB ROMs, an "ongoing" (and thus unremovable) notification is shown AT ALL TIMES, even if Blocking mode is only active for a certain time period (at night in my case).
This mod will entirely remove that notification. It will not show up even when blocking mode IS in fact blocking calls etc.
IMO the ideal behavior would be to show it during the time it's active, but that would be a much harder mod to make, as you'd need to add new (byte)code.
Now, with that out of the way...
Requirements:
* DEODEXED AND ROOTED Samsung Jelly Bean ROM (I use WanamLite XXDLIH v3.9, google it - I can't post the link)
* 7-zip (google it)
* Galaxy S III - not sure if other models than the i9300 will work, my guess is that they will. I can't test on other phones than my own, though, so you're on your own in that case! Also no idea if Note models will work, I've never used one.
* A Windows computer - unless the tools are available for other platforms.
* Java -- if you can do Start -> Run -> "java" -> OK without an error, you should be fine.
* A bit of patience
As always, this is on your own risk!
Steps to hack:
0) BACK UP YOUR PHONE! My suggestion would be to take a nandroid backup before getting started.
1) Get an apktool that works with JB APKs.
Here's the one I use (assemble the link): mediafire . com / ?ufzdylekbkloffy
(Sorry for doing that, but surely posting guides constitutes making helpful contributions? )
The ZIP contains two apktool versions, one for decoding and one for building.
Thing is, I'm not 100% sure on where I got the apktool JARs. I think one of them is the unmodified 1.4.2 JAR, and one is modified to work with ICS (and newer) APKs.
I couldn't get EITHER of them to both decode AND build, so I made two separate batch scripts.
I do promise that the thing's safe, but if you don't trust me, you can find them elsewhere - I'm just not sure exactly where. I found them by trial and error.
2) Unpack the tools to a directory, e.g. "apktool" on your desktop. (If you want to follow this guide to the letter, you need to use that folder too.)
3) Start a command prompt - Start -> Run -> enter "cmd" -> click OK
4) Connect your phone via USB, and make sure USB debugging is enabled on it (under Settings -> Developer Options)
5) Enter the following commands, exactly as specified, in order of course:
Code:
cd Desktop\apktool
adb pull /system/framework/framework-res.apk
java -jar apktool-BUILD.jar if framework-res.apk
adb pull /system/app/SecSettings.apk
apktool-d SecSettings.apk SecSettings-mod
You should now have a "SecSettings-mod" directory (under Desktop\apktool) with the contents of the APK.
6) Browse to SecSettings-mod\smali\com\android\settings\dormantmode, right-click "DormantModeNotiReceiver.smali" and Open With... -> Notepad (or right-click and "Edit", if that choice exists)
7) Click the Edit menu -> Find..., and search for "notificationCreate" (no quotes). The first hit should be ".method public notificationCreate [... etc]"; click Find Next.
The next hit should be something like
Code:
invoke-virtual {p0, p1}, Lcom/android/settings/dormantmode/DormantModeNotiReceiver;->notificationCreate(Landroid/content/Context;)V
8) Comment that line out by adding a # as the very first character, so you end up with
Code:
# invoke-virtual {p0, p1}, Lcom/android/settings/dormantmode/DormantModeNotiReceiver;->notificationCreate(Landroid/content/Context;)V
9) A few lines down (10 or so), there's another invoke-virtual, for notificationClear. Comment this out as well, aagin by adding a # as the first character on the line.
When you're done, save and exit.
10) OK, we're getting there. Time to rebuild the modded APK.
Go back to the command prompt (or start a new one, see above).
Run this command:
Code:
apktool-b SecSettings-mod SecSettings-new.apk
This may take a LONG while, it takes a bit over 11 minutes for me (nearly all of it to build resources). Be patient!
When it's completed, open up both the ORIGINAL .apk and the modded one in separate 7-zip windows. Delete "AndroidManifest.xml" from the modified apk, then select and copy "META-INF" and "AndroidManifest.xml" from the original to the modified APK. Exit 7-zip.
11) Time to get the modded file over to your phone! Run these commands:
Code:
adb remount
adb push SecSettings-new.apk /system/app
adb shell
12) You should now have the file on your phone, and have an adb shell open. Almost there!
If you're not root (i.e. if the command line ends with $ rather than #), run "su".
Then:
Code:
cd /system/app
mv SecSettings.apk SecSettings.apk.OLD
mv SecSettings-new.apk SecSettings.apk
... and you're finally DONE, if all went well.
"exit" the adb shell, and reboot your phone. When it boots up, the notification should be gone, but blocking mode still works.
Let me know if you have problems, and we'll see if I'm qualified to help solve them.
Before
After
(I would show that blocking mode is active, but the toggle was offscreen in the "before" shot, and I don't want to revert to snap a new one!)
I've also modded away the brightness bar + rearranged the quick-setting icons via this guide - the steps are essentially the same as this guide, except you edit SystemUI.apk and change different files (two XML files instead of the .smali).
To get rid of the brightness bar, follow that guide but also look in values/bools.xml where you can change a brightness value and auto-brightness-button to false. (Change both!)
Great work, Does anyvbody have this as a flashable zip??
carrd said:
Great work, Does anyvbody have this as a flashable zip??
Click to expand...
Click to collapse
Hmm, I'm not sure whether simply using the finished SecSettings.apk is a good idea or not. If a ROM has changed it, those changes would be lost.
The alternative might be to have all this done by a script on the phone (in CWM), but I'm not sure whether that's possible or not. Anyone?
exscape said:
Hmm, I'm not sure whether simply using the finished SecSettings.apk is a good idea or not. If a ROM has changed it, those changes would be lost.
The alternative might be to have all this done by a script on the phone (in CWM), but I'm not sure whether that's possible or not. Anyone?
Click to expand...
Click to collapse
Here's a CW Zip. I've built this based on the XXDLIH build one.
The script will backup the original file to /system/app/SecSettings.apk.orig so worse case scenario you just need to rename it using a root explorer (any will do).
Let me know, however like anything you flash with CWM, make a backup FIRST and I'm not to be held responsible for your phone becoming Self Aware or owt.
Also, The guide at the top is basically right, however there's a lot of steps missing, I'll knock something up if anyone wants it to fill in the gaps (setting up the environment for a start etc).
However this 'should' work on all XXDLIH builds (but AFAICT should work on XXDLIB as well)
Here's the link to the file https://www.dropbox.com/s/kov1bdluu0pt8x8/Blocking_Mode_Icon_Remover.zip
i've intalled you mod by cwm in wannamlite 3.9 and every thing went like a charme. i have a few mods intalled and nothing was deleted. thanks a lote really nice job.
Sent from my GT-I9300 using Tapatalk 2
mocas said:
i've intalled you mod by cwm in wannamlite 3.9 and every thing went like a charme. i have a few mods intalled and nothing was deleted. thanks a lote really nice job.
Sent from my GT-I9300 using Tapatalk 2
Click to expand...
Click to collapse
No probs, anything to help.
Thanks to exscape for the source.
the_ape said:
Also, The guide at the top is basically right, however there's a lot of steps missing, I'll knock something up if anyone wants it to fill in the gaps (setting up the environment for a start etc).
Click to expand...
Click to collapse
Hmm, which environment? All the files (adb, apktool + their dependencies) should be included.
Anyway, thanks for the zip
exscape said:
Hmm, which environment? All the files (adb, apktool + their dependencies) should be included.
Anyway, thanks for the zip
Click to expand...
Click to collapse
You need to pull the various frameworks from the device, and put them in the right place. This is all documented elsewhere on the site, but for quickness sake, here's a down and dirty.
Download the 7Z Below (latest versions of aapt etc from http://forum.xda-developers.com/showthread.php?t=1792937), unpack them somewhere. Make sure Jave JRE is installed.
To pull from device, plug the Phone in then
Goto unpack folder
Let's get the frameworks from the device, so plugin the device, and ADB Devices and make sure you get a deviceID back.
pull_framework.bat
pull_twframework.bat
Now get the frameworks installed
set_framework-res.bat
set_twframework.res.bat
Let's get the APK we want to work with, so....
adb pull /system/app/SecSettings.apk .\apk\SecSettings.apk
OK, file in the right place, so let's get it unpacked to work with.
apktool d apk\SecSettings.apk working\SecSettings
That will take a few minutes, as it's got to sort out the framework dependencies etc, so give it a second or two. It should then look a little like the following
I: Baksmaling...
testI: Loading resource table...
I: Loaded.
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: C:\Users\YourUserName\apktool\framework\1.apk
I: Loaded.
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Done.
I: Copying assets and libs...
Now lets edit the smali for the fix (thanks to exscape for this, so click his thanks button)
notepad .\working\SecSettings\smali\com\android\settings\dormantmode\DormantModeNotiReceiver.smali
<CTRL>-F notificationCreate
Find Next one
change invoke-virtual {p0, p1}, Lcom/android/settings/dormantmode/DormantModeNotiReceiver;->notificationCreate(Landroid/content/ContextV
to
#invoke-virtual {p0, p1}, Lcom/android/settings/dormantmode/DormantModeNotiReceiver;->notificationCreate(Landroid/content/ContextV
and a bit further down
change invoke-virtual {p0, p1}, Lcom/android/settings/dormantmode/DormantModeNotiReceiver;->notificationClear(Landroid/content/ContextV
to
#invoke-virtual {p0, p1}, Lcom/android/settings/dormantmode/DormantModeNotiReceiver;->notificationClear(Landroid/content/ContextV
OK, edit done, save and back to the command prompt
start .\apk
Open the APK in 7-Zip/WinRar/Whatnot
Select the AndroidManifest.xml and the META-INF folder, and extract them to the working folder
We have all our bits, so let's put it back together in a usable APK
First we need to create an unsigned build (without the real manifest and META-INF)
apktool b working\SecSettings built\SecSettings-Unsigned.apk
This will take a while to run, as it's compiling everything it needs, should look a bit like this
: Checking whether sources has changed...
I: Smaling...
I: Checking whether resources has changed...
I: Building resources...
I: Building apk file...
Right, now we need a signed version, so copy the manifest XML and META-INF folders to \build\apk in the SecSettings folder.
move .\working\AndroidManifest.xml .\working\SecSettings\build\apk
move .\working\META-INF .\working\SecSettings\build\apk
Let's now compile the nice signed version, this will take moments, as it's just integrating the Manifest with the already compiled stuff.
apktool b working\SecSettings built\SecSettings.apk
And there we are, job done.
Copy to device in any way that you want, easiest is probably
adb push .\built\SecSettings.apk /system/app/SecSettings.apk
Remember that will overwrite the original (but you have a backup in the APK folder remember), just launch settings now on the device and you should be good to go.
Having said that, easier just to flash the zip
Ohh, I forgot the framework step. Sorry about that. I changed step #5 to include it now.
That's all I've done as far as frameworks go, and I've both used the guide myself (before I wrote it ) and tried it once after... So it should work now.
exscape said:
Ohh, I forgot the framework step. Sorry about that. I changed step #5 to include it now.
That's all I've done as far as frameworks go, and I've both used the guide myself (before I wrote it ) and tried it once after... So it should work now.
Click to expand...
Click to collapse
You will deffo need the TW Framework as well, else it wont be able to decompile. If you want to make sure, try
rd /s %userprofile%\apktool
Then try the process you have out, and you should get issues as the twframework is not available
the_ape said:
You will deffo need the TW Framework as well, else it wont be able to decompile.
Click to expand...
Click to collapse
I just deleted the entire \Users\x\apktool folder, re-added framework-res and decompiled the SecSettings APK with no errors. I'm sure I've never used the 'apktool if' command with anything else prior, too. Hmm.
mocas said:
i've intalled you mod by cwm in wannamlite 3.9 and every thing went like a charme. i have a few mods intalled and nothing was deleted. thanks a lote really nice job.
Sent from my GT-I9300 using Tapatalk 2
Click to expand...
Click to collapse
exscape said:
I just deleted the entire \Users\x\apktool folder, re-added framework-res and decompiled the SecSettings APK with no errors. I'm sure I've never used the 'apktool if' command with anything else prior, too. Hmm.
Click to expand...
Click to collapse
Cool, just making sure, if it works then cracking.
However setting up the fw's that way is the 'correct way' to do them.
hi again, is it possible for u to make a flashable zip with remove blocking mode and smart rotation?
when i install smart rotation i lose blocking mode and vice versa. thanks a lote.
Sent from my GT-I9300 using Tapatalk 2
mocas said:
hi again, is it possible for u to make a flashable zip with remove blocking mode and smart rotation?
when i install smart rotation i lose blocking mode and vice versa. thanks a lote.
Sent from my GT-I9300 using Tapatalk 2
Click to expand...
Click to collapse
I can certainly have a look, can you post a link to the rotation hack your using please?
Sorted, I'll compile and upload shortly, not a problem.
here is the link, thanks a lot again.
http://forum.xda-developers.com/showthread.php?t=1933519
Sent from my GT-I9300 using Tapatalk 2
mocas said:
here is the link, thanks a lot again.
http://forum.xda-developers.com/showthread.php?t=1933519
Sent from my GT-I9300 using Tapatalk 2
Click to expand...
Click to collapse
Here we go, https://www.dropbox.com/s/mtycq38lfw3sl4z/Blocking_Mode_Icon_Remover_With_Smart_Rotate-DLIH.zip
Should work just fine, works Fine on mine anyhow.
Let me know if there's issue, and click thanks if you appreciate
thanks a lot, no issues what so ever... every thing went just fine.
Sent from my GT-I9300 using Tapatalk 2
mocas said:
thanks a lot, no issues what so ever... every thing went just fine.
Sent from my GT-I9300 using Tapatalk 2
Click to expand...
Click to collapse
Most welcome
Would this excellent mod work on a Note II, by any chance?
EDIT: Version 6.9 onwards, the methods are moved to somewhere else. I haven't found them yet due to exams.
So, last week a news struck android users viciously- the new much awaited Google assistant will be pixel specific only. But developers have already managed to get assistant on any nougat phone by editing the build.prop. But users have reported that camera and some other apps aren't working properly.
Today, I tried to decompile and remove from Google app the check for pixel device. I have got it working on my android one running Resurrection Remix 6.0.1.
I'll give here the steps.
DISCLAIMER- I won't be responsible for your bricked device. I tried it and it worked. Doesn't mean it will work for you too. Keep the original apk ready so that you can revert back in case anything happens.
What is working
Voice recognition
chats
Navigation etc.
What isn't working
The "OK Google" hotword detection is not working. It tells you to train your voice model everytime.
Requirements
apktool (make sure you have set it up properly)
A smali editor ( Notepad++ for Windows, I used kate on Linux)
patience
Android build tools (adb and zipalign)
Let's start
1. First we need the Google apk. Make sure you have upgraded to the latest ( mine was 6.8.21.21). Copy the file to your PC. Name it Google.apk
2. Open up a terminal in Linux (in Windows, navigate to the folder where apktool is located, and shift+right click on a blank space and click "open command prompt here"). If you're on Linux, make sure apktool is in your PATH.
Type
Code:
apktool d Google.apk
This should create a folder called "Google"
3. Open Google/smali/com/google/android/apps/gsa/assistant/a/e.smali file with your preferred editor.
4. Look for a method called pU() like this-
Code:
.method public static pU()Z
.locals 3
.prologue
const/4 v0, 0x1
.line 97
invoke-static {}, Lcom/google/android/libraries/e/a/a;->aY()Z
move-result v1
.line 2188
............
change the
Code:
const/4 v0, 0x0
to
Code:
const/4 v0, 0x1
Repeat the same process with another method called pT()
If you can't find them in the path I provided, then look for something like this "ro.opa.eligible_device" inside an "if-neq" or "if-eqz". If you find this, then that is probably the required method.
5. Return to the root directory (where the Google directory is located) and type
Code:
apktool b Google
6. The app should be ready in Google/dist directory. Move to there and copy the Original apk.
7. Open the original apk with a zip viewer (winrar or 7zip, I used ark). Extract the META-INF folder to the directory.
8. Open the modified apk with the zip viewer . Don't extract it. Just drag and drop the META-INF folder on the apk. Make sure you have the compression option as "store"
9. Now install this app. Some people reported that it does not install from the device. I never tried to install it from my phone. I actually installed it via adb and it worked. type-
Code:
adb install -r Google.apk
10. Wipe the data of the Google app from settings. No need to reboot.
Attachment: Assistant running on my phone with screen search
Guys, try this and let me know if it works or not.
this is awesome
Amazing, gonna try it out tomorrow!
Sent from my MotoG3 using XDA-Developers mobile app
Noice
Working Thank You !
Works on note 5!
Working on RR rom for moto g2 xt1068.
Surprisingly even OK Google is working.
No lag. I have one question tho: Is it he or she? What is his/her name? I rather called her Alia (bollywood guys would understand)
deleted
Hey this looks awesome! So I just need to install your mod apk or do I still have to replace the META_INF from original apk? Also, can you guide me with the installation from phone terminal? Beacuse my PC has adb problems. Thanks!
rpravenclaw said:
Hey this looks awesome! So I just need to install your mod apk or do I still have to replace the META_INF from original apk? Also, can you guide me with the installation from phone terminal? Beacuse my PC has adb problems. Thanks!
Click to expand...
Click to collapse
People are reporting that my app is not installing. You could try replacing the META-INF.
App install but it still the old google
spaghetio said:
I wasn't able to get it working on my HTC One M8. When I tried to install your pre-compiled APK, I was met with an error: [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION]. I also tried to follow your directions to edit the APK myself, but apktool apparently ran into a lot of errors and wasn't able to compile it.
I wish I could tell you more, but I don't know much about the working of APKs, and I've never even used apktool before.
Click to expand...
Click to collapse
Have you installed the framework and set up apktool properly? There's guides on how to do it on XDA
ANIKETultimate said:
Have you installed the framework and set up apktool properly? There's guides on how to do it on XDA
Click to expand...
Click to collapse
file not found on this link https://www.dropbox.com/s/bq0wpi5t38laklo/Google.apk?dl=0
shubham tech said:
file not found on this link https://www.dropbox.com/s/bq0wpi5t38laklo/Google.apk?dl=0
Click to expand...
Click to collapse
Updated the link :laugh:
ANIKETultimate said:
Updated the link :laugh:
Click to expand...
Click to collapse
peoples are reporting that using n-ify xposed module they are able to use google assitant http://forum.xda-developers.com/xposed/modules/xposed-android-n-ify-features-t3345091/page1093 have a look
will test in sometime.
shubham tech said:
peoples are reporting that using n-ify xposed module they are able to use google assitant http://forum.xda-developers.com/xposed/modules/xposed-android-n-ify-features-t3345091/page1093 have a look
will test in sometime.
Click to expand...
Click to collapse
Yes, N-ify also has the same issues as me. Their method is also similar as mine. But mine should work for non rooted users also.
I'm using N-ify too! Assistant works but swiping it up doesn't bring up screen search.
Edit : Screen search works after reboot.
Jainyankee1993 said:
Works on note 5!
Click to expand...
Click to collapse
U built ur own or used op apk ?
---------- Post added at 02:34 PM ---------- Previous post was at 02:16 PM ----------
ANIKETultimate said:
Updated the link :laugh:
Click to expand...
Click to collapse
Download is stopping at mid way
People, who can patch the last x64 one?
http://rgho.st/6THMPzFVV
Cant install apk from first post anyway ((
Thanx ))
doesnt work with 32bit devices like note 4?
I am trying to change the directory in which AlReader saves a cover image for use by the "screensaver" routine. As is, the app silently places a cover image as /media/screensavers/currentbook/nook_cover.jpg when an epub is opened. There is no setting available for this choice. Clearly this version of the app knows that it is installed on an NST.
I've decompiled the app and done what I feel is an exhaustive search through all the xml and smali files, looking for things like "currentbook","nook_cover", "screensavers" and other unlikely strings. In my minimal understanding it seems like things of this sort should appear somewhere, but so far I have found nothing.
Suggestions?
nmyshkin said:
Suggestions?
Click to expand...
Click to collapse
Yes. Tell me where the apk is.
Renate NST said:
Yes. Tell me where the apk is.
Click to expand...
Click to collapse
You are too kind. I hope to be educated. Apk attached below.
Yes, it's right there.
Because it's a static final, you have to change the value everywhere it appears.
The compiler has already inserted the value where the member name was.
Code:
File com\neverland\formats\AlBook.smali:
.field private static final NOOK_COVER_NAME:Ljava/lang/String; = "/media/screensavers/currentbook/nook_cover"
const-string v4, "/media/screensavers/currentbook/"
const-string v33, "/media/screensavers/currentbook/nook_cover"
const-string v7, "/media/screensavers/currentbook/nook_cover"
const-string v4, "/media/screensavers/currentbook/nook_cover"
const-string v4, "/media/screensavers/currentbook/nook_cover"
const-string v4, "/media/screensavers/currentbook/nook_cover"
const-string v4, "/media/screensavers/currentbook/nook_cover"
I always thought that this was the AI, as in artificial intelligence.
Renate NST said:
Yes, it's right there.
Because it's a static final, you have to change the value everywhere it appears.
The compiler has already inserted the value where the member name was.
Code:
File com\neverland\formats\AlBook.smali:
.field private static final NOOK_COVER_NAME:Ljava/lang/String; = "/media/screensavers/currentbook/nook_cover"
const-string v4, "/media/screensavers/currentbook/"
const-string v33, "/media/screensavers/currentbook/nook_cover"
const-string v7, "/media/screensavers/currentbook/nook_cover"
const-string v4, "/media/screensavers/currentbook/nook_cover"
const-string v4, "/media/screensavers/currentbook/nook_cover"
const-string v4, "/media/screensavers/currentbook/nook_cover"
const-string v4, "/media/screensavers/currentbook/nook_cover"
I always thought that this was the AI, as in artificial intelligence.
Click to expand...
Click to collapse
Wow! So I actually had the right idea but very poor searching techniques. Thank you so much!
Yes, the name of the app has often been garbled. I guess we can thank sans serif fonts for that. I wasn't really sure until I took it apart! Perhaps the Russian developer had "ALLReader" in mind.
Renate NST said:
Yes, it's right there.
Because it's a static final, you have to change the value everywhere it appears.
The compiler has already inserted the value where the member name was.
Click to expand...
Click to collapse
Erm...I replaced all 9 "/media/screensavers/" with "/storage/emulated/0/Screensavers/" and, alas, it does not work
I took that path from the stock file manager, although when something like Tasker looks at the directory it just sees /Screensavers/, while ES File Explorer sees it as /sdcard/Screensavers/
Added to that is it's KitKat with the issues surrounding writing to the sdcard and the entire ROM is on the sdcard, so....
I guess I need to try the alternate paths just to see if either works. I thought the most explicit would be the best, but apparently not.
Edit: it occurs to me now that this feature is apparently implemented for both Nook and Onyx readers. That means the app needs to determine whether the device is either of those. From where? The build.prop file or similar? Whatever the source, the expected path might now be different or the expected string might be different with this sdcard ROM. I guess I need to start looking for "NOOK" and try to find out where it tries to get that information. I see no error messages in logcat when a new book is opened so that makes me suspect the procedure is being ignored and the device not recognized as a "NOOK".
nmyshkin said:
I replaced all 9 "/media/screensavers/" with "/storage/emulated/0/Screensavers/"
Click to expand...
Click to collapse
Huh? Is this for the NST? There is no "/storage/emulated"
There is "/sdcard".
Code:
# set
...
EXTERNAL_STORAGE=/sdcard
...
Renate NST said:
Huh? Is this for the NST? There is no "/storage/emulated"
There is "/sdcard".
Code:
# set
...
EXTERNAL_STORAGE=/sdcard
...
Click to expand...
Click to collapse
I've been working for a few months on salvaging the abandoned CM 11 sd-based ROM (https://forum.xda-developers.com/nook-touch/development/rd-nst-future-cm11-twrp-t3075458). There is emulated storage there (or so it seems). I've made some progress working around things that are too granular for me to fix (or understand). A screensaver routine is one of my projects and it works OK, but I'd like it to be able to pick up the few readers that offer the book cover feature.
I found a few entries in build.prop identifying the device as a "nook" that were present in the stock ROM but absent in the CM 11 version. Adding these back, rebooting and reinstalling the modded AlReader had no effect. I should add that AlReader correctly identifies and uses the path /storage/emulated/0 for data and library storage.
nmyshkin said:
There is emulated storage there (or so it seems).
Click to expand...
Click to collapse
Well, what does EXTERNAL_STORAGE say?
Renate NST said:
Well, what does EXTERNAL_STORAGE say?
Click to expand...
Click to collapse
Interesting...
EXTERNAL_STORAGE=/storage/emulated/legacy
PHONE_STORAGE=/storage/sdcard0
SECONDARY_STORAGE=/storage/sdcard1
No manipulations of the storage path seem to have any effect. I am thinking that the app is not detecting the device as a "nook". The file com/neverland/alr/AlApp.smali includes a flurry of "nook" references (including a glaring typo) along with other hardware references, but I haven't found any others yet. It's not clear to me from scanning the file contents whether the device detection routine lives there.
nmyshkin said:
No manipulations of the storage path seem to have any effect.
Click to expand...
Click to collapse
Did you create the screensaver directory by hand?
The original code (in longhand):
Code:
mkdir /media/screensavers
mkdir /media/screensavers/currentbook
write /media/screensavers/currentbook/nook_cover.???
Renate NST said:
Did you create the screensaver directory by hand?
The original code (in longhand):
Code:
mkdir /media/screensavers
mkdir /media/screensavers/currentbook
write /media/screensavers/currentbook/nook_cover.???
Click to expand...
Click to collapse
If this is working right the app itself should create the directories. I have it working now but there are new issues. The modded and original app are both installing as if this was still Eclair. The menus are all funky looking. I'm guessing one of the build.prop entries I added/changed finally got across the info that this is a "nook". So the screensaver routine finally worked with the modified directories. I didn't think the app would say "oh, it's a Nook, must be Eclair." I'll have to undo my changes to build.prop and see if I can produce a change. Should have saved a backup...
nmyshkin said:
The modded and original app are both installing as if this was still Eclair.
Click to expand...
Click to collapse
The graphics of the menu is only determine by the Android version, see res/menu & res/menu-v11
I'm not sure what you want.
All 16 files are in both dirs, if you don't like one style under any circumstances, just delete that whole dir and leave the other as "menu".
Renate NST said:
The graphics of the menu is only determine by the Android version, see res/menu & res/menu-v11
Click to expand...
Click to collapse
This was my thought, but I didn't alter the SDK entry in build.prop. Before modding the app, and in previous unsuccessful attempts to change the screensaver image directory, the installation always gave a more modern menu system, not looking like a typical interface on a stock NST. Once I hit on the correct modification to build.prop, the screensaver image directory started to work and the GUI reverted to a sort of crippled version of what is used on the stock NST.
I think I may have located the smali file where device detection (and SDK version) is involved: com/neverland/alr/AlApp.smali
There are the various identifiers found in build.prop, with some redundency, so that model numbers and "barnesandnoble" seem to both be used. Not sure how all that sorts out. I am reluctant to further savage the app to get this one feature working again, but that may be the only way. I have extracted a copy of the original build.prop from the ROM zip so I can compare it with the changes I made. Some entry there triggered the screensaver to work and GUI to go phlooey. Whether there is a magic combination that will fix one without angering the other remains to be seen.
Edit: yes, replacing build.prop with the original version for this ROM breaks the screensaver image routine and restores the more modern menu system to the app (after clearing dalvik and reinstalling). It seems like the most elegant approach might be to let the app see the device as "other" (as soon as I find that...) since that gives the Kit
Kat GUI, and make the screensaver image routine work for "other". But there are probably better approaches. I just don't want to bend build.prop all out of whack to fix this one issue. Who knows what issues might crop up with other apps if I do that?
nmyshkin said:
where device detection (and SDK version) is involved: com/neverland/alr/AlApp.smali
Click to expand...
Click to collapse
Yes, that's it.
If (ro.product.manufacture == "BarnesAndNoble" || ro.product.device == "zoom2") then it's a Nook
It only knows about (BRNV300, BRNV350) & BRNV500.
So, what is your mod to build.prop?
Renate NST said:
Yes, that's it.
If (ro.product.manufacture == "BarnesAndNoble" || ro.product.device == "zoom2") then it's a Nook
It only knows about (BRNV300, BRNV350) & BRNV500.
So, what is your mod to build.prop?
Click to expand...
Click to collapse
I need to look at that file again and try to see what you saw. I did see "BarnesAndNoble" and "zoom2" and recognized them. In the CM11 ROM the manufacturer was reduced to "bn". This was one of the last things I changed before the screensaver routine started to work. Other entries I changed mentioned "nook" but there were case variations which probably didn't matter. There were a few entries in the stock ROM file that were perhaps redundant or obsolete. I added those originally as well.
I'm guessing the app does not check build.prop every time it runs. That would be inefficient. I just made the change to build.prop for the manufacturer and rebooted. The GUI on the existing install remains nice and modern, but no images are saved when a new book is open. I expect that if I uninstall and then reinstall the GUI will revert to Eclair standards but the screensaver will work. I need to try that before turning in. If that's what happens, your earlier suggestion about the menus is probably the next thing to look at.
Edit: Yes, that's what happens, and a little worse. The app seems to know that /media is the internal storage for the NST so the storage default and library default are set to this during installation. This makes it impossible for it to find the opening "Welcome" document since there is no "/media" so there is an error, but you can still access settings and clear that up. If it can't tell it's a Nook then it correctly identifies storage as /storage/emulated/0 but of course the screensaver routine does not work since that's only for the Nook and Onxy readers. So...need to look at the menu trick at the least today.
There's apparently some Nook specific EPD stuff in the app, so it is probably not a good idea to go for "other" as a device ID.
SOLVED
Ugh. This app just knows too much about the NST
I tried removing one of the menu folders from res at a time, always naming the remaining folder as "menu". The behavior and results are identical. When the app is first run it displays the more modern menus one might expect from KitKat (or CM 11). But once you have changed a few settings and exited the app, when you return you are in Eclair menu land, regardless of which menu folder you leave in res. Perhaps there is no way. At least the screensaver image routine is working. That's almost more than I had hoped for.
Edit: Omigosh...I am so blind. Buried in a section of the Settings that I never bothered with (Tuning) because when I had looked in the past it was all weird stuff I would never care about was an option to use "slide menu" instead of the traditional menu. And that was it. I was deceived by the weird menu behavior at start up vs. the behavior afterwards. Once this selection was made I had both the more modern menu system AND the screensaver mod working together.
Thanks again, @Renate NST for all your help.