[ROM] [OFFICIAL/UNOFFICIAL] Cyanogenmod 13.0 for Shield Portable - Shield Android Development

{
"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"
}
CyanogenMod is a free, community built, aftermarket firmware distribution of Android 6.0.x (Marshmallow), which is designed to increase performance and reliability over stock Android for your device.
Code:
/*
* Your warranty is now void.
*
* We are not responsible for bricked devices, dead SD cards,
* thermonuclear war, or you getting fired because the alarm app failed. Please
* do some research if you have any concerns about features included in this ROM
* before flashing it! YOU are choosing to make these modifications, and if
* you point the finger at us for messing up your device, we will laugh at you.
*
*/
CyanogenMod is based on the Android Open Source Project with extra contributions from many people within the Android community. It can be used without any need to have any Google application installed. You will need to provide your own Google Applications package (gapps). CyanogenMod does still include various hardware-specific code, which is also slowly being open-sourced anyway.
All the source code for CyanogenMod is available in the CyanogenMod Github Repo. And if you would like to contribute to CyanogenMod, please visit our Gerrit Code Review. Your changelog is whatever was merged into gerrit.
Instructions:
1. First time flashing CyanogenMod 13.0 your device, or coming from another ROM?
2. Download the zip(s).
3. Install a compatible Recovery
4. Perform a NANDroid backup of your current ROM (Optional)
5. Wipe data & cache partitions of your device
6. Flash CyanogenMod.
7. Optional: Install the Google Apps addon package.
Firmware Update:
If you have not installed the latest stock ota, then some firmware files need updated. The following flashable zips will update the bootloader and the dtb corresponding with the listed stock version. Only the latest one listed here will be supported by recent CM builds.
106
Official Nightly Downloads:
get.cm
GAPPS
Unofficial Downloads with Nvidia App Support (CM 12.1):
20151003
Bugreport:
Report in this thread. CM's JIRA is only for stable builds, which I have not released.
Known Problems:
Only the power button seems to wake the device.
Wireless controller doesn't work.
Source Code:
https://github.com/CM-Shield/android_device_nvidia_roth
https://github.com/CM-Shield/android_kernel_nvidia_roth
XDA:DevDB Information
CM13.0 Unofficial Roth, ROM for the Nvidia Shield
Contributors
Steel01, Unjustified Dev
ROM OS Version: 6.0.x Marshmallow
ROM Kernel: Linux 3.4.x
Based On: CyanogenMod
Version Information
Status: Nightly
Created 2015-02-28
Last Updated 2016-03-15

sweet - since I'm not using most of the quicksettings on the stock shield I can finally get rid of most of them without installing xposed and gravity box...
but right now its missing the buttons-menu in the settings - so you cant configure the power menu or any of that stuff.
still, the bootup time is amazing on this thing compared to stock...

Sweet! Does this have the stuff I sent to @Unjustified Dev? (Setting volume button as volume down)

r3pwn said:
Sweet! Does this have the stuff I sent to @Unjustified Dev? (Setting volume button as volume down)
Click to expand...
Click to collapse
No, this build does nothing with the volume button. What I'd like to see it do is bring up the volume widget without changing the volume which would be as similar to stock as I can figure, but I don't see a way to do that. You can change that pretty easily locally, if you want that on your install.
@Spleeno: I expect that has to do with upstream cm. I didn't turn off any settins and I don't think Unjustified Dev did either. I know upstream was still working on forward porting all of 11's features last I looked. I don't know where they're at on that now.

Also, if it helps at all, it's possible to disable the LED by running (as root) "echo 0 > /sys/class/leds/roth-led/brightness". (This was a setting on stock, not sure if you guys want to re-add it in.)
Steel01 said:
No, this build does nothing with the volume button. What I'd like to see it do is bring up the volume widget without changing the volume which would be as similar to stock as I can figure, but I don't see a way to do that. You can change that pretty easily locally, if you want that on your install
Click to expand...
Click to collapse
I had mine set to Volume down for a couple reasons:
1. When tapped once, it would pull up the volume menu (and lower volume by one step, but not a huge issue)
2. When held with the power button, it takes a screenshot (that's what happened on stock, too)
3. Holding it down mutes it, if for some reason you needed to quickly mute the device.

r3pwn said:
Also, if it helps at all, it's possible to disable the LED by running (as root) "echo 0 > /sys/class/leds/roth-led/brightness". (This was a setting on stock, not sure if you guys want to re-add it in.)
I had mine set to Volume down for a couple reasons:
1. When tapped once, it would pull up the volume menu (and lower volume by one step, but not a huge issue)
2. When held with the power button, it takes a screenshot (that's what happened on stock, too)
3. Holding it down mutes it, if for some reason you needed to quickly mute the device.
Click to expand...
Click to collapse
For the first, I'd want to leave that to user choice. Wonder how hard it would be to add that to the settings section. Can you even add setting pages from the device tree without modifying upstream?
On the second, you might have me convinced there. I'll change it on mine next time I'm poking at it. And will probably change it in the tree unless something weird pops out.
There's several more things I want to look at porting over. Console mode looks to be really easy. At least in basic form. There's a couple props to force hdmi only and resolution. Only problem is if the cable is unplugged, it wont automatically switch back over. The wireless controller is another, but more difficult. I got the apps to run, but they errored out. I have a couple more ideas to try, but haven't got there yet. Took a break over the weekend, but should be back at it tomorrow night.

Steel01 said:
For the first, I'd want to leave that to user choice. Wonder how hard it would be to add that to the settings section. Can you even add setting pages from the device tree without modifying upstream?
Click to expand...
Click to collapse
I'm not sure. I'll have to take a look. Anything is possible with overlays, though, right?
Absolute worst case scenario, I'll make an app with a few misc. things like this to gain some functionality back from stock.
And while we're in the spirit of discussing rom-related components, I have a bug report: Attempting to use Nvidia's GRID Streaming service results in only the audio going through. (Not sure if that affects PC streaming, as my PC is nowhere near powerful enough to test)
And also,
There seems to be some weird issue with storage. Either apps aren't getting moved to the sdcard when told or the system is factoring them into the internal storage space calculation anyways. (I'll get back to you on this one, it isn't too hard to test to figure it out.)
Steel01 said:
Took a break over the weekend, but should be back at it tomorrow night.
Click to expand...
Click to collapse
Alright. No rush, take as long of a break as you need!

Steel01 said:
I expect that has to do with upstream cm. I didn't turn off any settins and I don't think Unjustified Dev did either. I know upstream was still working on forward porting all of 11's features last I looked. I don't know where they're at on that now.
Click to expand...
Click to collapse
Hm, I'm running the 20150223 cm12 nightly on my z3 compact and it already has the button menu - I wouldnt have expected/noticed with some of the early january builds ofc

So I started a proper post with quotes and all, but the android keyboard or textbox edit thing in Firefox did something weird and ate my post. And there's no undo... So this is my shorter and more miffed second attempt.
@Spleeno: My bad, I see that on my Nexus 5 now. I'll compare my dev tree with the N5's and see what the difference in that area is.
@r3pwn: On the Grid issue: I confirmed that this morning, but didn't have much time to look at the logs. I saw something about missing codecs, but that was at the top and maybe not related. I'll look more into it tonight. It could well be a worse underlying problem.

@Steel01 man thanks so much for your initiative, i'm happy to see a custom rom o my shield and its working great, i have tested with retroarch nightly and ppsspp nightly and its working awesome.
if its possible until you define the function to volume button i think you can change from program_red to button_select to at least we can use on the emulators
another thing i have noticed the volume button on original shield rom is 109 on you rom is 183
thanks for your time and thanks so much for the custom rom!
update:
other things i have noticed
when we make a fresh installation the shield don't have the mtp option checked
we have a vibration option on sound menu (i dont know if this make some erros on system if enable/disable)
if the kernel have the option Prism from nvidia its possible to put on display using the adaptive brightness ( /sys/class/graphics/fb0/device/smartdimmer/enable)
thanks again

I looked at the sdcard issue. It appears that only the app is getting transferred over,not any obbs that belong to the app. You can move those manually, but that's not very user-friendly.

Okay, I've been chasing this grid problem around most of the night... Finally got a lead when I gave up and started trying to mess with the controller stuff again. Apparently the Grid service want to use stuff from the main Nvidia control service. Which is embedded in the stock build and not open source. I was able to pull the apks (NvCPLSvc and the controller related NvBlakeManager and BlakePairing) from my Shield Tablet (already on lollipop), resign them with CM's keys and get them to run. Once NvCPLSvc was happy, the logs related to Grid stuff look a lot more similar to what I get on my stock tablet, but still no dice. It's getting stuck in the queue. Dunno if I'll make any more progress on that tonight or not, but I'm a lot closer.
On the controller front, at least it's more obvious what the problem is. Nvidia modified the wireless p2p stuff in the android framework. Some functions that blake calls don't exist in CM and causes the service to bomb. I'm playing with a diff between the aosp tree and CM. Should be able to get get a sane one tonight and run off a build to see how much further I can get. Then the question will be if I can magically add the changes to the device tree or if they would have to be submitted to upstream CM or Google which isn't likely to get merged.
@YamazakiRobert:
The mtp part could be due to some testing we were doing and trying to get adb up when cm wasn't booting. I'll check when I'm working on the device tree again.
I doubt turning on vibrate would damage anything since there isn't any hardware for it. But I agree the option shouldn't be there. More things to add to the device tree list.
That smartdimmer path is there on this build and is enabled by default. Though, I haven't seen any effects like adaptive brightness. That feature drives me nuts and is one of the first things I turn off on a phone reinstall... But, I'll look into enabling auto brightness in CM. Should be able to find that in the N5 tree as well.
@r3pwn:
Creating a open source control app would probably be the easiest way to go. Control things like the leds, console mode, etc. If someone could figure out what blake is actually doing under the hood, it would be nice to get away from those stock programs as well. But I didn't have a whole lot of luck with deciphering that a few weeks ago. But it's looking like NvCPLSvc will have to stick around if people want Grid access, which is unfortunate.
The transfer problem sounds like an upstream issue or even on-purpose decision. Does this work on other CM ports?
Edit: Ugh. The wifi framework stuff appears to have been refactored between 4.4 and 5.0. Got the patch cleaned up and applied and stuff overlaps and isn't found and all kinds of fun. I probably should have pulled all this from the tablet aosp. Guess I'll try that angle tomorrow.

Thank you for this majestic piece of work.
I'm going to build a shrine with your username when you'll make a working CM12 with GRID.

Steel01 said:
@r3pwn:
Creating a open source control app would probably be the easiest way to go. Control things like the leds, console mode, etc. If someone could figure out what blake is actually doing under the hood, it would be nice to get away from those stock programs as well. But I didn't have a whole lot of luck with deciphering that a few weeks ago. But it's looking like NvCPLSvc will have to stick around if people want Grid access, which is unfortunate.
The transfer problem sounds like an upstream issue or even on-purpose decision. Does this work on other CM ports?
Edit: Ugh. The wifi framework stuff appears to have been refactored between 4.4 and 5.0. Got the patch cleaned up and applied and stuff overlaps and isn't found and all kinds of fun. I probably should have pulled all this from the tablet aosp. Guess I'll try that angle tomorrow.
Click to expand...
Click to collapse
I can get right on making the app to control the LED, just as soon as I get back to my shield. Ah, who cares, I can start on it now! Also, glad to see you're making progress with GRID and the controller. I'll check out the storage thing on my G3 to see if it's a CM thing or something else.

So, the wifi framework stuff for the controller is taking more work than I bargained for. The changes needed are not in the tablet aosp tree at all, so I can't base from there. Makes me think they got put in the portables tree by accident. Somewhat of a break, it seems. But stuff is all in the wrong directories when trying to pull it into lollipop. It doesn't help that I'm mostly shooting blind and reacting to compiler errors. I think I'm starting to get a picture of what's going on, though. I'm probably going to have to start over at least one more time, but it's starting to look like it might be a small patch after all. I just need to find where all the files are really supposed to go...
Edit:
Got it to compile with only a few file changes (and I think only three lines in one file matter), but blake still errors out. Saying it can't find a different virtual function that should be right where it says it's looking for it. Somewhat confused atm. Doing a full clean and recompile just to make sure something didn't get way confused as I was tweaking and compiling. I'll see what that looks like tomorrow.

Does anyone around here have the first clue about smali? Given the following snippets from a decompiled BlakeManager:
Code:
.line 498
invoke-virtual {v1}, Landroid/net/wifi/p2p/WifiP2pGroup;->getNetworkId()I
move-result v0
*snip*
iget-object v5, p0, Lcom/nvidia/blakemanager/connectivity/BlakePairManagerMainWifi$6;->this$0:Lcom/nvidia/blakemanager/connectivity/BlakePairManagerMainWifi;
# getter for: Lcom/nvidia/blakemanager/connectivity/BlakePairManagerMainWifi;->mWifiP2pMgr:Landroid/net/wifi/p2p/WifiP2pManager;
invoke-static {v5}, Lcom/nvidia/blakemanager/connectivity/BlakePairManagerMainWifi;->access$500(Lcom/nvidia/blakemanager/connectivity/BlakePairManagerMainWifi;)Landroid/net/wifi/p2p/WifiP2pManager;
move-result-object v5
iget-object v6, p0, Lcom/nvidia/blakemanager/connectivity/BlakePairManagerMainWifi$6;->this$0:Lcom/nvidia/blakemanager/connectivity/BlakePairManagerMainWifi;
# getter for: Lcom/nvidia/blakemanager/connectivity/BlakePairManagerMainWifi;->mChannel:Landroid/net/wifi/p2p/WifiP2pManager$Channel;
invoke-static {v6}, Lcom/nvidia/blakemanager/connectivity/BlakePairManagerMainWifi;->access$400(Lcom/nvidia/blakemanager/connectivity/BlakePairManagerMainWifi;)Landroid/net/wifi/p2p/WifiP2pManager$Channel;
move-result-object v6
new-instance v7, Lcom/nvidia/blakemanager/connectivity/BlakePairManagerMainWifi$6$1;
invoke-direct {v7, p0}, Lcom/nvidia/blakemanager/connectivity/BlakePairManagerMainWifi$6$1;-><init>(Lcom/nvidia/blakemanager/connectivity/BlakePairManagerMainWifi$6;)V
invoke-virtual {v5, v6, v0, v7}, Landroid/net/wifi/p2p/WifiP2pManager;->createGroup(Landroid/net/wifi/p2p/WifiP2pManager$Channel;ILandroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V
I am totally confused about the last line. The function createGroup is declared as "public void createGroup(Channel c, ActionListener listener)" in mainline Android and the Shield Portable tree. Which matches the longhand call there. However, the function is being passed 4 parameters. Afaik, that should only be three. One for the 'this' pointer and two for the parameters. What is it doing with that fourth parameter (as I read, v0 is the extra)?
Other info. The logcat error I'm getting is:
Code:
--------- beginning of crash
E/AndroidRuntime( 1236): FATAL EXCEPTION: main
E/AndroidRuntime( 1236): Process: com.nvidia.blakemanager, PID: 1236
E/AndroidRuntime( 1236): java.lang.NoSuchMethodError: No virtual method createGroup(Landroid/net/wifi/p2p/WifiP2pManager$Channel;ILandroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V in class Landroid/net/wifi/p2p/WifiP2pManager; or its super classes (declaration of 'android.net.wifi.p2p.WifiP2pManager' appears in /system/framework/framework.jar)
E/AndroidRuntime( 1236): at com.nvidia.blakemanager.connectivity.BlakePairManagerMainWifi$6.onPersistentGroupInfoAvailable(BlakePairManagerMainWifi.java:505)
E/AndroidRuntime( 1236): at android.net.wifi.p2p.WifiP2pManager$Channel$P2pHandler.handleMessage(WifiP2pManager.java:776)
E/AndroidRuntime( 1236): at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime( 1236): at android.os.Looper.loop(Looper.java:135)
E/AndroidRuntime( 1236): at android.app.ActivityThread.main(ActivityThread.java:5256)
E/AndroidRuntime( 1236): at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime( 1236): at java.lang.reflect.Method.invoke(Method.java:372)
E/AndroidRuntime( 1236): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898)
E/AndroidRuntime( 1236): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)
That virtual method is there in my build and the line in framework.jar/classes.dex matches byte for byte the line from the Shield Tablet's framework. Also, decompiling the Portables BlakeManager shows a way different application, though the call to createGroup only passes 3 parameters. I tried tweaking the smali file to remove v0 and reassembling, but that failed some art verification when I tried copy it over. Even after clearing the cache and a full factory reset. Like so:
Code:
I/art ( 1364): Verification error in void com.nvidia.blakemanager.connectivity.BlakePairManagerMainWifi$6.onPersistentGroupInfoAvailable(android.net.wifi.p2p.WifiP2pGroupList)
I/art ( 1364): couldn't find method android.net.wifi.p2p.WifiP2pManager.createGroup (Landroid/net/wifi/p2p/WifiP2pManager$Channel;ILandroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V
I/art ( 1364): void com.nvidia.blakemanager.connectivity.BlakePairManagerMainWifi$6.onPersistentGroupInfoAvailable(android.net.wifi.p2p.WifiP2pGroupList) failed to verify: register v7 has type Precise Reference: com.nvidia.blakemanager.connectivity.BlakePairManagerMainWifi$6$1 but expected Integer2pGroupList): [0x56]
E/art ( 1364): Verification failed on class com.nvidia.blakemanager.connectivity.BlakePairManagerMainWifi$6 in /system/app/NvBlakeManager.apk because: Verifier rejected class com.nvidia.blakemanager.connectivity.BlakePairManagerMainWifi$6 due to bad method void com.nvidia.blakemanager.connectivity.BlakePairManagerMainWifi$6.onPersistentGroupInfoAvailable(android.net.wifi.p2p.WifiP2pGroupList)
E/JavaBinder( 1364): *** Uncaught remote exception! (Exceptions are not yet supported across processes.)
What is it verifying against? The function declaration doesn't have that parameter... I'm beginning to think I'm out of my league unless someone can give me a crash course in low level Android programming. I mean, I can hazard an educated guess as to what that parameter (result of getNetworkId()) does (instead of WifiP2pGroup.PERSISTENT_NET_ID in createGroup, use that), but that would change the declaration. I even tried overloading the function. So confused...
Edit:
Scratch all of that. I botched the overload first time through. Got the overload in correctly and now it's happier. WifiP2P stuff isn't activating correctly, though. Don't know if that's due to their changes to hostapd and wpa_supplicant or if I'm missing more framework stuff.
I'm thinking of throwing together another build to release tomorrow along with a flashable zip of of the Nvidia stuff. That way if anyone else wants to tinker with it, they can. More eyes do make this stuff easier.

I don't like triple posting, but I still want to trigger new post alerts...
Okay, new build is up here: cm-12-20150305-UNOFFICIAL-roth.zip. That includes everything I've done to date. Attached are the two patches I don't have on github. They apply in cm12 to frameworks/base and frameworks/opt/net/wifi respectively. Also attached is a flashable zip of the Nvidia system apps pulled from my tablet (which can be obtained by anyone from Nvidia's ota zips). These are unmodified outside of resigning them with CM's key to allow them to run as system. The command I used is below for reproducibility. Neither Grid or the controller pairing works correctly yet, but nothing outright crashes either. If someone has any ideas from the logs or wherever about what's missing now, I'd appreciate suggestions.
Code:
java -jar /path/to/cm12/out/host/linux-x86/framework/signapk.jar /path/to/cm12/build/target/product/security/platform.x509.pem /path/to/cm12/build/target/product/security/platform.pk8 old.apk new.apk
Changes and known problems:
The volume button is now mapped to volume_down.
If 'Google Play Movies and TV' is updated, it starts FCing on the next reboot. I haven't tried to track down the problem yet. I just removed it.
Edit:
Well, blast... This is going to be much more of a pain than I thought. Good news: I got the wireless controller to connect. Bad news: I had to copy wpa_supplicant and hostapd over from my tablet. This code, I don't see anywhere... I've reuploaded the flashable zip with these files. I do not like this as a long term solution. Not at all.
Edit 2:
So, it connects, but won't reconnect and old pairings aren't saving correctly. Think I have a fix for it, but I'm having to recompile. This works, but after the 2 minute timeout, you have to reboot and re-pair.
Edit 3: Or worse... It just disconnects period after 2 minutes. Hoping my change in the rebuild changes this.
Edit 4: And no dice. It dies after two minutes with a few comments in the log. Any time a button is pressed, it spits a bunch of stuff about not being able to open the audio device. Probably trying to make the button sound through the headphone jack while that isn't completely initialized. More research to do later, but I think I'm done for the night.

Steel01 said:
I don't like triple posting, but I still want to trigger new post alerts...
Click to expand...
Click to collapse
Instead of using baksmali, why not use jadx (decompiles from apk straight to java and is interactive too)?
Sorry for the short (and only potentially helpful) reply to such a massive wall of text, but it's about midnight here and I need some sleep.
Also, I'm guessing your "nvservices.zip" file isn't supposed to be 5 bytes.

r3pwn said:
Instead of using baksmali, why not use jadx (decompiles from apk straight to java and is interactive too)?
Sorry for the short (and only potentially helpful) reply to such a massive wall of text, but it's about midnight here and I need some sleep.
Also, I'm guessing your "nvservices.zip" file isn't supposed to be 5 bytes.
Click to expand...
Click to collapse
I tried several tools to get there... Apktool being the one that got me the smali. Thanks for the reference, I'll look it up tomorrow. It's late here too. And the zip is 2.8 MB on this side. Just downloaded and it opened fine. Dunno what happened on your side.

Steel01 said:
I tried several tools to get there... Apktool being the one that got me the smali. Thanks for the reference, I'll look it up tomorrow. It's late here too. And the zip is 2.8 MB on this side. Just downloaded and it opened fine. Dunno what happened on your side.
Click to expand...
Click to collapse
Oh. I guess it was Tapatalk being stupid.

Related

More Cupcake questions

"cupcake" development branch
A link to this was posted on the G1-Hackers mailing list. I haven't seen it here yet so I figured I would share. You can find the original post at http://source.android.com/roadmap/cupcake.
---------------------------------------------------------------------------------
"cupcake" development branch
From http://source.android.com/roadmap:
During Android's transition to anopen-source project, some development has continued to happen in aprivate branch. We are working to move the rest of these changes intothe open as soon as possible, and all future open-source work willhappen in the public git repositories. All changes that have alreadybeen submitted to the public repositories will be merged into the newercode base, so nothing should be lost.
The Android team has begun pushing these changes to the public git repositories, in the "cupcake" branch.
About this code drop:
The "cupcake" branch is a read-only mirror of the private Android branch.cupcake is still very much a work in progress. It is a development branch, not a release.
Thefirst drop is a large roll-up commit of all of the changes sincerelease-1.0. We will transition to regular, smaller roll-up drops,ultimately pushing individual commits.The cupcake branch willbe merged into the master branch, so that all of the public patches canbe used with the new code base. None of the commits in the publicrepositories will be lost, unless they no longer make sense or areobsoleted by the new code base. Due to the United States' holidayseason, though, this may not be finished until early January.
To check out the cupcake branch:mkdir cupcake # create a new client directory
cd cupcake
repo init -u git:/android.git.kernel.org/platform/manifest.git -b cupcake
repo sync
Notable changes introduced in cupcake:
Applications
MMS
New features
Save attachments from MMS.
Significant bug fixes
Faster conversation list scrolling
Email
Significant bug fixes
Accounts that were marked "never check" are not auto-checked.
Date & time displayed using user preference (e.g. 24 hr vs. AM/PM).
cc: displayed in message view.
Relaxed POP3 parser rules so it works with non-compliant email servers.
Password quoting bugs in IMAP. Makes it work for users with funny chars in their password (e.g. spaces).
Various sources of errors in auto & manual account setup.
Improvements on how we report various connection errors. Makes it much easier for user to diagnose failed account setups.
New-mail notifications for POP3 accounts.
Properly recover from POP3 connection failures, so that the next connection has a chance of working properly.
Remove automatic accounts setup entries that were broken or nottestable. Minor fixes to a few of the remaining entries. Improvementsto warning dialogs used for a few special cases.
New accounts are now set to check every 15 minutes (instead of defaulting to "never").
Fixed a bug causing approximately 1 in 25 outbound messages to freezeup the IMAP connection (to a Gmail based server) when transferred tothe Sent folder. This broke the entire connection so new messagescould not be downloaded either.
Unit test framework so Email can be extended & tested more reliably.
Fix IMAP manually-created accounts so message delete works properly.
Alarm Clock
Significant bug fixes
Alert now plays audio/vibe directly, rather than through AlarmManager.AlarmClock alert starts playing audio/vibe in its IntentReceiver,rather than on activity start. These changes should prevent alarms frombeing blocked by modal dialogs.
Package Installer
Significant bug fixes
Bugs related to replacing existing applications.
Settings
New features
New menu option to list running processes in Settings->ManageApplications.
Music
New features
Music playback fades in after suspending for phone call.New media search intent allows for 3rd party apps to launch or respondto media searches based on artist, album, or title.
Affects: MusicPlayer, YouTube, Browser applications.
Browser
New features
Updated WebKit browser core, synced with Nov 2008 WebKit version.
Support for new, optimized JavaScript engine (SquirrelFish).
Copy/ paste is enabled in the browser. To copy with touch, press and holdthe shift key and select the text. Releasing the shift key or endingthe touch drag copies the text. To copy with the trackball, press andhold the shift key, move the cursor to the selection start, click thetrackball, and move the trackball to the extend the selection.Releasing the shift key, or clicking the trackball a second time,copies the text.
Find is enabled in the browser. To find text, choose it from the menu and type the text to find.
Drawinghas been sped up substantially by supporting partial contentinvalidates and partial screen invalidates. Pages with animations are5x faster.
VoiceDialer
New features
VoiceDialer supports 'open app' command
Camera/Gallery
New features
Video recorder mode
Share intent for videos
Video thumbnailsLocal file playback
Download manager
New features
Support for HTTP codes 301, 302, 303 and 307 (redirects).
HTTP code 503 is now handled, with support for retry-after in delay-seconds.
Downloads that were cleanly interrupted are now resumed instead of failing.
Applications can now pause their downloads.
Retry delays are now randomized.
Connectivity is now checked on all interfaces.
Downloads with invalid characters in file name can now be saved.
"cupcake" development branch continued
Framework
New features
Support of touch events in WebView.New JavaScript engine (SquirrelFish) in WebView.
Input method framework, for soft keyboards and other on-screen inputmethods. Includes new APIs for applications to interact with inputmethods, and the ability for third party developers to write their owninput methods.
Access to the raw audio data for playback and recording from application code.
New PendingIntent.FLAG_UPDATE_CURRENT option.
Support for top-level boolean resources.
Tactile feedback to the LockPatternView. Tactile feedback can beenabled/disabled by going to Settings > Security & location andthen checking/unchecking "Use tactile feedback". Note that this can beused independently of the visual feedback of the lines ("Use visiblepattern"). Thus it gives users a middle ground between showing thelines on the screen and having no feedback at all.
PackageManager changes to support un-installation ofpartially installed applications. Added new flagPackageManager.GET_UNINSTALLED_PACKAGES to include partially installedapps in all relevant PackageManager api's. ManageApplications screennow lists such partially installed apps and the user can uninstallthese applications completely.
Support third party updates of system applications. Newmenu options in Settings->ManageApplications to list updated systemapplications.
Framework support to list current running processes. New API in ActivityManager.
Framework feature to declare required configurations by applications.New manifest attribute uses-configuration in android manifest.
Hardware accelerated video encode (video recorder) in opencore.
Simplified SREC speech recognition API available.
Streaming audio I/O for applications.
Significant bug fixes
Fixed issues with saving state in the view hierarchy, so that you canproperly subclass from something like TextView and create your ownstate that inherits from that provided by TextView.
TextView now implements onKeyMultiple(), so that flinging the trackballwill result in accelerated scrolling. This required some changes tomovement methods, and included some improvements to the accelerationcomputed when flinging.
Framework bug fixes in PackageManager to share/un-share permissions for applications with shared uid's.Significant rework of Settings->ManageApplications Performance and UI enhancements.
Anumber of settings in android.provider.Settings.System were moved toandroid.provider.Settings.Secure. Only system software can modify thesesettings. Additionally, a new permission, WRITE_SECURE_SETTINGS, isrequired to access these settings. The old constants in Settings.Systemhave been deprecated. It is possible to read settings values viaSettings.System using the deprecated constants. However, attempts tomodify these settings via Settings.System will result in a log messageand the setting value will be left unchanged.Many bug fixes in the media framework
Bluetooth
New features
Support for A2DP & AVRCP profiles.
Significant bug fixes
First connection after pairing always fails on many carkits.
Mini Cooper and some late model BMW cars fail to use Bluetooth or take 2 minutes for Phone Book transfer.
System software
New features
New kernel based on Linux 2.6.27.
Improvements to the wakelock API.
Work to transition to the USB Gadget Framework underway.
Basic x86 support.
Radio & Telephony
New features
SIM Application Toolkit 1.0.
Green CALL button is no longer a shortcut for "add a new call". Thishas been a rarely used feature and confusing if triggered accidentally.
Longer in-call screen timeout when using the speakerphone.
"Show dialpad" / "Hide dialpad" item added to the in-call menu, to make it easier to discover the DTMF dialpad.
Significant bug fixes
An obscure case where the Phone UI could cause the device to not go tosleep on its own. This would happen if user bails out of the in-callscreen by hitting HOME, followed by the call disconnecting remotely. Don't allow a single tap to open the in-call dialpad. Itis now required to touch and drag it. This makes it much harder toaccidentally open the dialpad by touching the screen with your face.
Developer Tools
New features
Enable handset manufacturers to extend the Android SDK with add-ons. SDK add-ons will include:
systemlibraries to let developers use additional APIs provided by handsetmanufacturers or from other 3rd party vendors that handsetmanufacturers chose to include
emulator system images,skins, and hardware configuration to let developers test theirapplications on their Android implementation
This is work-in-progress. Please note that the latest Android SDK (Android 1.0 SDK, Release 2) is not compatible with the SDKplugin in the new branch, please use ADT 0.8.0. SDK add-on support is planned for future SDK release.
Build System
New features
The functions in build/envsetup.sh should be much more useful
nice, this is some secret undercover stuff that is much needed!! you all rock!
hbguy
I'm wondering would it be available to install for non-jailbraked phone?
worry said:
I'm wondering would it be available to install for non-jailbraked phone?
Click to expand...
Click to collapse
We are talking about Android source code here. It would need to be compiled appropriately to even flash to any phone. Your phone would still subject it to the same key test before it will flash it. So, No this won't work... Yet. Hopefully we will find a way to sign these images with the OTA keys instead of just test keys as we do now.
"Chicken Soups for Andy Phones"
Yes, I am aware of you should compile it first.
So you are saying, since it is not officially signed by google, you'll be able to install it only on dev or has-proper-boot-image phones?
wait, how do we get all these updates in the future though? sdk?
also what you mean as finding a way to sign these images with ota keys instead of just test key? meaning with jf's mod rc30 we could get these update?
hbguy
man, well these were a few of the things that i wanted to see changed its good that they are keeping in touch with the ppl runnin the app. this is very compelling information. can i suggest and addendum to the title, something alluding to the "update" nature of this dev team. i dont think theres a date, but ill def be willing to pick a G1 back up for that, esp if they managed to make a few of the processes faster.
hbguy said:
wait, how do we get all these updates in the future though? sdk?
also what you mean as finding a way to sign these images with ota keys instead of just test key? meaning with jf's mod rc30 we could get these update?
hbguy
Click to expand...
Click to collapse
Cupcake can't be built to run on Dream hardware yet. Not to worry as an OTA RC with the cupcake code drops should be available by year's end or early Jan 09.
Support third party updates of system applications. New menu options in Settings->ManageApplications to list updated system applications.
Click to expand...
Click to collapse
I haven't had a chance to look into it too much but, depending on the applications and files made accessible, this looks very promising. Things like the autorotating browser, maybe even skinning, could potentially be "legitimized" and no longer require root.
so how would one go about compiling to run on the dream?
korndub said:
so how would one go about compiling to run on the dream?
Click to expand...
Click to collapse
Right now...... You wait. There isn't 100% of the code here. Nothing specific to the dream hardware etc. I am hopeful we will be seeing things come soon though.
As far as what I meant about the keys... Right now in order to be able to flash an update that is signed with test keys, aka the keys we have right now, you need to use an exploit to gain root access and modify the keys the system looks for when updating. There are two possible ways that I see to get OTA RC30 flashed with with an unofficial image. The first way is for some ingenious person to find an exploit that can be used to obtain root again and therefore be able to change the keys the system looks for. The other option would be for someone to come up with a way to sign the image with the OTA keys.
kronarq said:
Right now...... You wait. There isn't 100% of the code here. Nothing specific to the dream hardware etc. I am hopeful we will be seeing things come soon though.
As far as what I meant about the keys... Right now in order to be able to flash an update that is signed with test keys, aka the keys we have right now, you need to use an exploit to gain root access and modify the keys the system looks for when updating. There are two possible ways that I see to get OTA RC30 flashed with with an unofficial image. The first way is for some ingenious person to find an exploit that can be used to obtain root again and therefore be able to change the keys the system looks for. The other option would be for someone to come up with a way to sign the image with the OTA keys.
Click to expand...
Click to collapse
kronarq is there a way to merge the existing source with the cupcake to fill in the parts that are missing?
Anyone else having problems pulling the source with repo?
hbguy said:
nice, this is some secret undercover stuff that is much needed!! you all rock!
hbguy
Click to expand...
Click to collapse
This was not "undercover" work. Google wanted to be able to work on stuff, yet release the G1 with a semi-stable firmware.
kronarq said:
We are talking about Android source code here. It would need to be compiled appropriately to even flash to any phone. Your phone would still subject it to the same key test before it will flash it. So, No this won't work... Yet. Hopefully we will find a way to sign these images with the OTA keys instead of just test keys as we do now.
Click to expand...
Click to collapse
This won't be the case. This is an official Google release, meaning when they merge them together in January, they will release an OTA update with all of these features.
I'm hoping there will be an OTA update with all these new goodies, but just because google is rolling "cupcake" into the open-source project, that does not mean that it will get rolled out to our G1's. That's up to T-Mobile and HTC. Let's just keep our fingers crossed.
Ok, maybe I'm missing something, but where are people getting the idea that this is not dream specific? From how I read it these are all things that are being built into the main source and as such will be compiled as an ota as other updates have been done in the past. Someone enlighten me here as I'm just not seeing the "specific" requirements people are putting on this? I'm no coder, but it doesn't look like anything more then just enabling what was already there or planned on being there. [/rant?]
MMTest97 said:
Ok, maybe I'm missing something, but where are people getting the idea that this is not dream specific? From how I read it these are all things that are being built into the main source and as such will be compiled as an ota as other updates have been done in the past. Someone enlighten me here as I'm just not seeing the "specific" requirements people are putting on this? I'm no coder, but it doesn't look like anything more then just enabling what was already there or planned on being there. [/rant?]
Click to expand...
Click to collapse
Agreed... everything that is dream specific is either on the android git repository or can be extracted from stock G1 Firmware
MMTest97 said:
Ok, maybe I'm missing something, but where are people getting the idea that this is not dream specific? From how I read it these are all things that are being built into the main source and as such will be compiled as an ota as other updates have been done in the past. Someone enlighten me here as I'm just not seeing the "specific" requirements people are putting on this? I'm no coder, but it doesn't look like anything more then just enabling what was already there or planned on being there. [/rant?]
Click to expand...
Click to collapse
Everything in the open source repository should be non-device specific (with the obvious exception of stuff like binary drivers). The repo will build an emulator image. To build for dream, there are some additional instructions. However the cupcake branch cannot be built for Dream at this time, so it is definitely not Dream-specific.
Datruesurfer said:
Agreed... everything that is dream specific is either on the android git repository or can be extracted from stock G1 Firmware
Click to expand...
Click to collapse
The differences between G1 and the repo extend beyond just Google-proprietary apps. There are subtle differences in the framework too.

SlimKat 4.4.4 Unified (QualComm)

Code:
[B][I][U][COLOR="Red"]WARNING![/COLOR][/U][/I][/B]
This is an ALPHA build. Everything is being worked up to come up to speed as
quickly as possible to be with its CM brother. Just be patient and all will
come in due time. But hey, at least is boots up into the system ... LOL
This is an UNOFFICIAL build of SlimKat (although built from offical SlimRom source) and by NO means is this my ROM. I am just compiling from SlimRom Source and credits go to elelinux, xda-garwyn, albinoman and all other coders who contributed to CyanogenMod device tree.
Code:
For which devices. The ROM should work with all klte versions that are qualcomm
chipsets.
Included in the build are:
kltexx,kltelra,kltetmo,kltecan,klteatt,kltedv,klteub,klteacg,kltedcm,klte
(UNOFFICIALLY SUPPORTED): kltespr,kltevzw,klteusc
Code:
IMPORTANT
* DO NOT expect daily builds. I'll build when I'm free.
* DO ask for support in this thread.
* DO NOT use this unofficial build and ask for support at the official threads.
* DO NOT be rude.
* RESPECT all users
* If u see a NOOB question and u don't feel like replying, DON'T, just ignore
that post. If u do reply, good for u.....and be nice in your reply.
Code:
[B][U]WORKING[/U][/B]
Audio
WiFi
Google Now
Bluetooth
GPS
Video playback
Audio playback
Code:
[B][U]NOT WORKING[/U][/B]
Service
Data
Calls
MMS
Hard keys
Camera
Internal/External SDcard mounting
Code:
[B][U]INSTALLATION[/U][/B]
Do NOT use superwipes
Wipe data, cache, and dalvik cache
* ((do not report bugs if you didn't full wipe))
Flash ROM
Flash GAPPS
Reboot
Report anything that is an issue
As of right now I have no way of testing NFC or IR Blaster, so I do not know if they are working on this build or not. Also on this build there is the infamous red box that appears when moving from screen to screen or app. I am going to fix that either today or tomorrow and then post the new build. The reason there is no data or cell reception is due to the APN list which will also be fixed in the next build.
I tested this on my T-Mobile G900T, so if others can please report back on their experience with this ROM on other devices that would be greatly appreciated and I will get those issues resolved as soon as possible. Thank you.
Code:
[B][U]DOWNLOADS[/U][/B]
ROM: [URL="http://d-h.st/2e0"]SlimKat 4.4.4 (QComm)(ALPHA 1)[/URL]
GAPPS: [URL="http://slimroms.net/index.php/downloads/dlsearch/viewcategory/1150-addons4-4"]Click me to pick your poison[/URL]
Great I'll try it out. I've 900F BTW
Thank you. Just remember what is working and what is not working please.
lunerceli said:
Thank you. Just remember what is working and what is not working please.
Click to expand...
Click to collapse
BTW, what the thing that you want me to report?
Just if it boots and the working list is working on your version please.
lunerceli said:
Just if it boots and the working list is working on your version please.
Click to expand...
Click to collapse
Slim minimal gapps.
1st edit: It's booting.
2nd edit: back key, home button and recent/menu key not working? Get NavBar. I like this!
3rd edit: Setting slow to response
4th edit: Stock camera has stopped. Google camera work but need to insert USB storage.
5th edit: Stock Music player not playing
6th edit: USB storage not mounted so can't test out audio/video but ringtone ringing at audio setting.
That's the issues at the moment besides of known issues. I guess i've to restore my backup now. Waiting for your new build thank you.
Ok. Thank you. I will get all of the issues fixed asap.
I'll try it tomorrow but I am also using a sm-g900t so I won't shed much light on the issues/bugs list cause its most likely to be the same as @lunerceli. Still going to flash thou, lol
Thanks for sharing your build with us.
Sent from my SM-G900T
I read your other post in the SlimRoms thread and I'd like to help a bit if I could. I'm going to flash this in the next hour after backing up my memory cards and then I'll grab you some logcats of crashing apps to save you some looking. I know enough to help, but not enough to debug so you aim me at the logs that help you and I'll get you as much as I can.
I run a SM-G900T as well so we will have similar errors. Thank you for taking the time to do this, I really like all the slim roms.
Working: (Mini Gapps)
- Booted and completed setup (hung on "Welcome..." for a bit, it got through)
- Wi-Fi
- Bluetooth/Stereo Bluetooth
- GPS (Took a minute, but did lock with "Device Only" setting chosen)
- Customization Options working (battery color, statusbar transparency, quick tile settings)
- Statusbar brightness slider
- Volume and power buttons
- Real Dark Slim (hangs for a few seconds, but it succeeds)
- Camera works with third party app (Camera ZoomFX) but crashes when taking photo since it can't save to storage (16MP!)
- Headphones (Music stops when unplugged; nice!)
- Music
- Keyboard
- Navigation Bar/Pie Controls
- Dialer
- Root Permissions (had to enable prompt in settings, but it works)
- Secure Lockscreen (Pin Number)
- Normal Apps (Browser, Calc, clock, Dialer, Hangouts, etc.)
Not Working:
- Hardware buttons (Back, Home, Menu/Recents) Tried to run a logcat here, but Android doesn't even see these other than vibration
- No Signal
- Storage (Internal and external can't be accessed) Startup Media Scan Pastebin
- Auto-brightness (Cannot be enabled) Auto-Brightness Log Pastebin
- Occasional Red Rectangle
-NFC (This, once turned on, cannot be turned off and the logcat feedback is about NFC every 7-10 seconds) NFC Feedback Pastebin
Not going to lie, this isn't far from being not only usable, but a daily driver. I'm going to see if I can pull a log later on for Auto-brightness failing and also for startup and maybe see why storage isn't being recognized and mounted. The file system sees both storage cards, /storage/sdcard0 and sdcard1 are both in the root explorer of android tuner, I just get permission denied when I try to access them.
Edit: Ran fix permissions scripts to see if it would mount the memory for me, and it did not. Also, adjusted media scan to prompt and it still didn't find anything. I'm going to try to pastebin you a log for each of the above failing. Got to work on a school assignment first though
Thank you for your feed back bro. I was on 24 hour duty last night and just spent like an hour to bring everything up and build it. I am going to work on it Friday night when I get off of work and hopefully by the end of the weekend it will be daily driveable and I can move to the next project.
lunerceli said:
Thank you for your feed back bro. I was on 24 hour duty last night and just spent like an hour to bring everything up and build it. I am going to work on it Friday night when I get off of work and hopefully by the end of the weekend it will be daily driveable and I can move to the next project.
Click to expand...
Click to collapse
There is no rush, I just wanted to get you some feedback putting things through its paces. I still intend to get you those log files if you find them helpful.
Get some sleep, this project will being be there tomorrow and thanks for tackling this for everyone in the community.
Edit: I put the logs I could get from my device in the last post next to the items in the list. Some things I couldn't pull, but you may know how. Also, and as I mentioned in the post, watching the Logcat scroll every 7-10 seconds I see the NFC log I pasted for you there. Not sure what is causing it, but NFC is toggling itself on and off.
Like I said, no rush on this I just wanted you to have it when you got around to working on it. Now it's my turn to get some sleep and if you need me to pull a log under a certain condition just quote me here and I'll get whatever you need. I'm looking forward to the next test build
Thank you for all of the info bro. I should have the next build up some time Saturday afternoon and almost everything should be fixed. Its been a while since I have done this so I am a little rusty. It is almost like riding a bike. Lol.
Build two is being compiled right now as we speak. I fixed a few things in the code so hopefully everything will work like it should. HAHAHAHA
Okay, so build two keeps stopping and ending in a segmentation fault for the framework.apk... I think I may have fixed it, but really don´t know .. LOL .. keeping the fingers crossed.
lunerceli said:
Okay, so build two keeps stopping and ending in a segmentation fault for the framework.apk... I think I may have fixed it, but really don´t know .. LOL .. keeping the fingers crossed.
Click to expand...
Click to collapse
Awesome thanks for your work! I would gladly test it when it's finished. I came from the Skyrocket a week and a half ago so I am still getting used to the Galaxy S5, but I helped the OP there for SlimKat by testing and providing logs, so just let me know if there is anything I can help with.
Well, every time I get close to getting another build done something gets in the way. I lost my system and had to set it up again. Now whenever I sync the repo it keeps not finding some of the repo saying it can't connect. Lol
lunerceli said:
Well, every time I get close to getting another build done something gets in the way. I lost my system and had to set it up again. Now whenever I sync the repo it keeps not finding some of the repo saying it can't connect. Lol
Click to expand...
Click to collapse
We appreciate that you keep on keeping on and that you keep us updated with this. Developing isn't easy, if it were we would all be making our own ROMs. Whenever you get this build out there will be testers around waiting to flash it to their devices. Me included
Sorry I haven´t posted anything in a couple of days, but I lost my system again and had to start from scratch. Some times I really have VM´s, but on my laptop I take everywhere It is too much of a pain in the ass to install Linux on the side or even straight up.
Just to update though, I am compiling the 2nd build right now and everything is going smoothly. I had to replace some of the Slim files with those from CM just to get past some build problems. I do believe that I have corrected most if not all of the not working. I am waiting for it to finish compiling and test it out before I release it to you guys. I will put up the download link regardless so that you fine ladies and gentlemen can test what and see what is going on in the development. The reason that I like to do this is so that the community can see active development and to compile the lists of what is and is not working with the ROM. I know it is a different approach to other developers, but this is just how I do it. Without you guys we as developers cannot do our jobs correctly and get a working daily driven ROM. Thank you for your support.
Mods please delete this thread. I am merging with another thread of the same topic. Thank you.
Will this rom work on G900FD as it has a qualcom chipset?

[5/12] Advanced Feed Development

Alright everyone, I'm Trailblazer101, an Android Developer who likes to take advantage of, and make better, the unique features of the phones I purchase. I started off with the Samsung Continuum back in 2010, which had a ticker ahead of its time, and went from there. I work 2 jobs, so time is tight sometimes, but I still manage to work on these things, a fun passion/hobby.
Status Updates
Code:
5/12
--- I got my patch working, and tested it out with a simple demo that takes advantage of the new capabilities. I've posted a Guide below!
5/10
--- Now that Verizon users have root, I will begin testing this myself :) Thanks to those who helped me figure out what we'd have to do, so I can get started right off the bat! I'll keep you posted.
What is this?!!
Okay, so by default the Feeds that you can make are restricted to the capabilities of a RemoteView. This severely limits what you can do with the Feed. Take a look here to see what exactly is supported, by default: http://stackoverflow.com/a/16089389
However, any Samsung App (which includes a few signed by Samsung on the Galaxy Apps Exclusives page) has the ability to put whatever it wants on the screen, just like a regular App. I've now extended that invitation on over to you/us!
Guide
The steps to take advantage of this is a little convoluted, so let me break it down for you easy!
STEP 1:
You have to flash my patch to allow this development to actually work. You can download it here: View attachment Trailblazer101_S6Edge_Advanced_Feeds_Patch.zip. Then flash it using FlashFire, or extract the zip and put everything where it needs to go, making sure to set the permissions appropriately!
STEP 2:
Now you can start developing your new Custom Feed! I would suggest using my simple demo project as your base, and going from there! You can find that here: View attachment EdgeScreen-BACKUP.zip. Extract it and take a look at the source!
STEP 3:
From here on out is where things get tricky... Without changing a thing, if you build from source and try to debug, it won't work. Why? Because the API that Samsung gives developers, like us, is different than the one they use for themselves. So Here's what you gotta do-- without changing a thing, build the Project. The best way to do that without debugging within Android Studio is to go to Gradle Projects -> :app -> Tasks -> build -> assembleDebug. This'll make the built apk and put it within "..\.EdgeScreen-BACKUP\app\build\outputs\apk\app-debug.apk".
STEP 4:
I'm assuming you have the latest Java Development Kit, and Android SDK, installed and configured properly, with their paths in the PATH variable, accordingly. You should also know how to use apktool for decompilation, at least a little I've compiled a toolkit folder based off of the test Project I shared above, which includes apktool, the NEW Samsung API files, the original built apk, and the already modified decompiled source/apk. You can download that here: View attachment Decompilation_Data.zip. Then, open a Command Prompt window and "cd" to the extracted folder.
STEP 5:
Decompile the built apk, which should be the same as the one in the extracted folder, using apktool like this:
Code:
.\apktool\apktool d -f TestFeed_orig.apk
STEP 6:
Compare the decompiled folder "TestFeed_orig" with my already modified "TestFeed_modded" one. I suggest using WinMerge! You'll see that the 'TestFeed_orig\smali\com\samsung\android\sdk' folder is very different. That's what I was talking about before, how Samsung Feeds have more options in their API. So delete the 'TestFeed_orig\smali\com\samsung' folder, and replace with the one in the '---SAMSUNG API---' folder.
STEP 7:
Continue comparing the two folders. Basically the rest of the changes are just getting our application to call the new Samsung API properly, instead of the stubs I was using in the Project. There aren't many changes you have to make, but they're all important!
STEP 8:
Once the two folders are the same, recompile it using apktool, like so:
Code:
.\apktool\apktool b TestFeed_orig
STEP 9:
Sign the new compiled apk stored in 'TestFeed_orig\dist' using your signing key. You can make your own, then use it to sign the app, following the instructions here: Official Instructions for Manual Signing.
STEP 10:
Install the newly signed apk, and enable the Feed by going to: Settings-> Edge screen -> Information stream -> Manage Feeds -> *ENABLE* FeedsCocktailExample! You may have to restart, or just hit 'reorder' in the top left. That sometimes fast-triggers it. Now turn off the screen, do the Feed Gesture to get it to turn on, and you should see our Custom Feed! It doesn't look like much, but it's using a custom view, HorizontalTextView, that would not work otherwise.
From here the options are endless. You can follow these steps and my Sample Project to play a video for a feed, if you wanted! Whatever strikes your fancy!
If you followed these steps and appreciate the help, show this thread some love, and maybe. Well i'd say buy me a beer, but it'll probably go to textbooks instead
Developer/Advanced Information!
We can make our own Feeds no problem, without root, they are just forced to use a RemoteView directly, which for all intents and purposes, is a pain in the kiester. Instead, it would be a lot nicer/convenient, without even mentioning the more advanced functionality we could bring, to use our own Views. However the version of SlookCocktailManager.UpdateCocktail that allows this is only found within a more advanced API, one I/no typical user don't have access to directly. BUT, I can still access it by decompiling for example the Edge RSS app from the Samsung AppStore, and putting/replacing the "sdk" folder from that into my own decompiled app, and recompiling. Easy enough, with apktool! (Of course with the headache of adding in my own temporary shell classes, in the project, so that I can actually write the calls, and just change the reference within the smali code once that sdk is replaced) The problem is, even when you do this, and it builds fine, installs great, and even begins initializing properly, we get an error from within CocktailBarService, the file I'm having you replace. More specifically, I tracked down the actual problem, and it comes back to "CocktailWhiteList", a class within CocktailBarServices, then checks the signature of the calling application, our Custom Feed, and sees if it comes from Samsung. This none of my expertise can fix, without being rooted, but trust me I tried. Now that we are rooted I was able to patch said apk, and get my own apps to work! Hurray!
cocktailbar service crashes when going into 'edge screen' option in settings menu.
logcat attached
Edit: sorry didn't rename cocktail bar (cocktailbarservice_signed to cocktailbarservice)
now it doesn't visibly crash, it just wont let me go into 'edge screen' option in settings menu
new log cat uploaded
This man looks promising! You have my S6 edge as soon as I have an official TWRP with working backup and restore
ktetreault14 said:
This man looks promising! You have my S6 edge as soon as I have an official TWRP with working backup and restore
Click to expand...
Click to collapse
I will help as well, when these tools are out for us..
Thanks for bringing cool stuff like this to the phone at this early date!
ktetreault14 said:
This man looks promising! You have my S6 edge as soon as I have an official TWRP with working backup and restore
Click to expand...
Click to collapse
How deep are you willing to go? Because it would be awesome if you could clear dalvik-cache, since I see this, right off the bat:
Code:
: Failed to find OatDexFile for DexFile /system/priv-app/CocktailBarService/CocktailBarService.apk ( canonical path /system/priv-app/CocktailBarService/CocktailBarService.apk) with checksum 0xfbfcb9f7 in OatFile /data/dalvik-cache/arm64/[email protected]@[email protected]@classes.dex
EDIT: could you also make sure that you set the right permissions for the apk? I'm getting the impression that they might be off with:
Code:
msg=audit(1429397519.049:355): auid=4294967295 uid=10001 gid=10001 ses=4294967295 subj=u:r:untrusted_app:s0 pid=12605 comm="ktailbarservice" reason="memory violation" sig=11
EDIT2: We might have to disable SELinux... That's rather unfortunate/puts a rather large damper on things, until custom kernels come out at least... After starting a root shell, can you try:
Code:
setenforce 0
I don't know if it'll work, but if that goes through successfully try and launch the Edge Settings Screen again!
EDIT3: Do'h. It may have been something really simple *crosses fingers* Could you please re-download the CocktailBarService, and try doing the same thing you did last time, with right permissions, and maybe a dalvik-cache wipe if it doesn't work!?
Tried the new apk you uploaded. Getting a force close still when trying to open. I changed SELINUX to permissive, wiped dalvik, even tried deleting arm64 folder as well. No luck.
04-19 00:25:09.907 E/AndroidRuntime(15867): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.samsung.android.app.cocktailbarservice/com.samsung.android.app.cocktailbarservice.settings.EdgeScreenSettingsMain}: java.lang.SecurityException: Permission Denial: get/set setting for user asks to run as user -2 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL
Was searching through logcat and found this. May this have something to do with the issue?
wase4711 said:
I will help as well, when these tools are out for us..
Thanks for bringing cool stuff like this to the phone at this early date!
Click to expand...
Click to collapse
Don't mean to hijack thread, but "Tool" is already available here:
NB: Chrome and IE don't translate into "Save file" - Use Mozilla which does > copy to phone and flash.
https://blck.io/twrp-2.8.6.0-zeroltetmo.img
Perfectly working on T-Mobile S6 Edge
Will
RoM_Addict said:
Don't mean to hijack thread, but "Tool" is already available here:
NB: Chrome and IE don't translate into "Save file" - Use Mozilla which does > copy to phone and flash.
https://blck.io/twrp-2.8.6.0-zeroltetmo.img
Perfectly working on T-Mobile S6 Edge
Will
Click to expand...
Click to collapse
that version doesn't work properly for me and many others; waiting for an "official" version from the TWRP folks..
trailblazer101 said:
How deep are you willing to go? Because it would be awesome if you could clear dalvik-cache, since I see this, right off the bat:
Code:
: Failed to find OatDexFile for DexFile /system/priv-app/CocktailBarService/CocktailBarService.apk ( canonical path /system/priv-app/CocktailBarService/CocktailBarService.apk) with checksum 0xfbfcb9f7 in OatFile /data/dalvik-cache/arm64/[email protected]@[email protected]@classes.dex
EDIT: could you also make sure that you set the right permissions for the apk? I'm getting the impression that they might be off with:
Code:
msg=audit(1429397519.049:355): auid=4294967295 uid=10001 gid=10001 ses=4294967295 subj=u:r:untrusted_app:s0 pid=12605 comm="ktailbarservice" reason="memory violation" sig=11
EDIT2: We might have to disable SELinux... That's rather unfortunate/puts a rather large damper on things, until custom kernels come out at least... After starting a root shell, can you try:
Code:
setenforce 0
I don't know if it'll work, but if that goes through successfully try and launch the Edge Settings Screen again!
EDIT3: Do'h. It may have been something really simple *crosses fingers* Could you please re-download the CocktailBarService, and try doing the same thing you did last time, with right permissions, and maybe a dalvik-cache wipe if it doesn't work!?
Click to expand...
Click to collapse
Hi trailblazer, I set the permissions the same as the original apk ,
right lets try again: I've downloaded the new version and set permissions, wiped dalvik-cache but when trying to disable SELinux i get
tmp-mksh: 0 : not found.
and when going into 'edge screen' settings i get unfortunsatly cocktailbar service has stopped.
Catlog attached:
I used this to modify SELINUX. For anyone else who is helping out, try this.
[4/19] QuickLaunch Demo And Advanced Feed Development Request For Rooted Users
b-reezy said:
I used this to modify SELINUX. For anyone else who is helping out, try this.
Click to expand...
Click to collapse
I sent you a PM! I explicitly declared that permission for each activity, so let's see how it goes now! I put the same apk I sent you now on the OP, so the other testers can try it! In the mean-time, I do have something real for you guys to play with! It's the QuickLaunch window, customizable and all (from hitting the Feeds Settings Icon). I'll put that in the OP with the tag "WORKS(Kinda)"!
One thing, which is a big reason why I'm trying to do it this way-- clicking the icons launches the app, it just doesn't turn the screen back on! I've tracked it down, and it seems as if when the Feed Screen is on, it has the SCover flag set to on, manually, but when a user clicks a button from another Feed, it turns that flag back off, thus turning the screen back on. The easiest/cleanest way for us to do that too would be our Custom Feed Panel implementing the same OnClickHandler that the others do, just can't without doingwhat we're trying to do!
EDIT: Please still use the QuickLaunch apk with the tag "Signed" though for testing the replacement of CocktailBarService! My new one just does it the bad way, and had to get rid of the code for trying the good.
(There's other ways to turn the screen on, but the way I'm trying to do it does it easily, and allows for more advanced functionality!)
FOR DEVELOPERS:
If you are interested in taking what I have and running with it/collaborating, I am more than willing to send all sources of what I have so far, my resources that I've been using, along with all information gathered so far. Just ask!
Hopefully this will become available for non-rooted. I am DIEING to get more functionality out of the Edge API for this phone. The feed is an awesome option, but having to swiping finger is a pain in the @$$. A double tap on the edge or an automatic turn on would be AWESOME when Texts or missed calls are there.
b-reezy said:
I used this to modify SELINUX. For anyone else who is helping out, try this.
Click to expand...
Click to collapse
BTW.. can be disabled in the kernel source also.. I did that in m8 times
trailblazer101 said:
I sent you a PM! I explicitly declared that permission for each activity, so let's see how it goes now! I put the same apk I sent you now on the OP, so the other testers can try it! In the mean-time, I do have something real for you guys to play with! It's the QuickLaunch window, customizable and all (from hitting the Feeds Settings Icon). I'll put that in the OP with the tag "WORKS(Kinda)"!
One thing, which is a big reason why I'm trying to do it this way-- clicking the icons launches the app, it just doesn't turn the screen back on! I've tracked it down, and it seems as if when the Feed Screen is on, it has the SCover flag set to on, manually, but when a user clicks a button from another Feed, it turns that flag back off, thus turning the screen back on. The easiest/cleanest way for us to do that too would be our Custom Feed Panel implementing the same OnClickHandler that the others do, just can't without doingwhat we're trying to do!
EDIT: Please still use the QuickLaunch apk with the tag "Signed" though for testing the replacement of CocktailBarService! My new one just does it the bad way, and had to get rid of the code for trying the good.
(There's other ways to turn the screen on, but the way I'm trying to do it does it easily, and allows for more advanced functionality!)
FOR DEVELOPERS:
If you are interested in taking what I have and running with it/collaborating, I am more than willing to send all sources of what I have so far, my resources that I've been using, along with all information gathered so far. Just ask!
Click to expand...
Click to collapse
Liking the Quicklaunch app , are you still needing testers? or have you got all the info you need?
Alex-V said:
BTW.. can be disabled in the kernel source also.. I did that in m8 times
Click to expand...
Click to collapse
Exactly and imo its better if its done this way..
for anyone interested
you need to edit the security/selinux/selinuxfs.c file from source
FIND:
Code:
selinux_status_update_setenforce(new_value);
#else
ADD RIGHT BELOW "#else":
Code:
new_value = 0;
So it becomes:
Code:
selinux_status_update_setenforce(new_value);
#else
new_value = 0;
or use this one (from the G925F source)
friedrich420 said:
Exactly and imo its better if its done this way..
for anyone interested
you need to edit the security/selinux/selinuxfs.c file from source
FIND:
Code:
selinux_status_update_setenforce(new_value);
#else
ADD RIGHT BELOW "#else":
Code:
new_value = 0;
So it becomes:
Code:
selinux_status_update_setenforce(new_value);
#else
new_value = 0;
or use this one (from the G925F source)
Click to expand...
Click to collapse
yeah.. that's the one I used.. I'm still for and back to root or not..means for me.. develop roms and kernels ..or use it as it is.. lol..
friedrich420 said:
Exactly and imo its better if its done this way..
for anyone interested
you need to edit the security/selinux/selinuxfs.c file from source
FIND:
Code:
selinux_status_update_setenforce(new_value);
#else
ADD RIGHT BELOW "#else":
Code:
new_value = 0;
So it becomes:
Code:
selinux_status_update_setenforce(new_value);
#else
new_value = 0;
or use this one (from the G925F source)
Click to expand...
Click to collapse
Hii my friend, i also still , have a non rooted S6 Edge :thumbup:
Hey guys, I finished the QuickLaunch Feed and posted it in the Apps Folder here:
Click Me!
I did manage to get it to turn the screen on, then, with the clicking of the shortcuts, and it still launches it once unlocked (if you have a lockscreen). I am going to begin work on a music player Feed, now
I will continue development on more advanced Feeds, and also delve into enhancing the edge in other ways, once we Verizon users get root (or until I win the lottery and get a Sprint version ). I see all these great opportunities to make it better, I just can't do anything with it until I'm rooted, since this didn't go as well as I planned. Where we are stuck at now is this, and where it would be too much of a pain for me to do without a phone of my own to test one:
We need to re-sign the system with a signature key we have access to. This includes framework, apps, and the priv-apps signed with the samsung key. Then I can go about doing what I wanted to do, but otherwise, it's a no go.
A developer who does have a Sprint or T-Mobile version with root, I can tell you the information I gathered so far. I have seen where the 'turn screen on gesture' is stored, and all these other great things, I just can't right now
trailblazer101 said:
Hey guys, I finished the QuickLaunch Feed and posted it in the Apps Folder here:
Click Me!
I did manage to get it to turn the screen on, then, with the clicking of the shortcuts, and it still launches it once unlocked (if you have a lockscreen). I am going to begin work on a music player Feed, now
I will continue development on more advanced Feeds, and also delve into enhancing the edge in other ways, once we Verizon users get root (or until I win the lottery and get a Sprint version ). I see all these great opportunities to make it better, I just can't do anything with it until I'm rooted, since this didn't go as well as I planned. Where we are stuck at now is this, and where it would be too much of a pain for me to do without a phone of my own to test one:
We need to re-sign the system with a signature key we have access to. This includes framework, apps, and the priv-apps signed with the samsung key. Then I can go about doing what I wanted to do, but otherwise, it's a no go.
A developer who does have a Sprint or T-Mobile version with root, I can tell you the information I gathered so far. I have seen where the 'turn screen on gesture' is stored, and all these other great things, I just can't right now
Click to expand...
Click to collapse
very nice.. thanks my friend ?
This is just sounding AWESOME! I am on AT&T so will have to wait as well for Root. I was wondering if there is a possability for the edge to just turn on, on its own without the need to swipe the screen? Like when a new notification comes in it will just scroll across the edge (or maybe the icon will blink on and off until you see it and swipe).
I still feel the swipe is to hard to do consistantly and would rather use a double tap or something if the auto on isn't possible.

how does xposed modify/affect ART?

Hi people,
I was wondering which parts of ART and what optimizations does Xposed disable. I read from one of @rovo89 GitHub that he needed to disable a couple of optimizations. Do these changes affect performance? If so, how can I make performance better?
Cheers!
-LLJY
It mostly disables method inlining and call sharpening. The latter would usually detect that a call to "myObject.toString()" will always resolve to one particular implementation, so ART would create a call directly to the native address of the compiled method. Both of these make it impossible to hook a method, as ART simply wouldn't look up the method anymore. I don't see a way to avoid this.
Little insight to demonstrate this. Consider this Java code:
Code:
package de.robv.android.xposed.smallapp;
public class MyClass {
private static int sMyField = 999;
public static int returnConstant() {
return 1234;
}
public static void main() {
sMyField = returnConstant();
}
}
This is the Dex code for the main() method:
Code:
0x0000: 7100 0700 0000 | invoke-static {}, int de.robv.android.xposed.smallapp.MyClass.returnConstant() // [email protected]
0x0003: 0a00 | move-result v0
0x0004: 6700 0600 | sput v0, I de.robv.android.xposed.smallapp.MyClass.sMyField // [email protected]
0x0006: 0e00 | return-void
And here is what ART (on Nougat / x86) compiles it to:
Code:
0x00001054: 83EC0C sub esp, 12
0x00001057: 890424 mov [esp], eax
0x0000105a: 8B08 mov ecx, [eax]
0x0000105c: C781B0010000D2040000 mov [ecx + 432], 1234
0x00001066: 83C40C add esp, 12
0x00001069: C3 ret
As you can see, the call to returnConstant() is gone. The value it would always return has been inlined. Granted, this is a very simple example, but this can happen for more complex methods as well. It's incremental, so if returnConstant() returned the result of "square(9)" and that square() function returned "x*x", then it would remove all of those calls and insert the precalculated value 81 in the native code.
Now if a module hooks returnConstant(), that hook would never be called, because, well, the method isn't called either. This behavior would depend on many factors (e.g. compiler filter settings in the ROM), so module developers couldn't even rely on the assumption that the hook isn't called. It would be virtually random.
To avoid this (and also a few similar simplifications), the Xposed fork of ART disables these optimizations and recompiles all the odex/oat files. I actually have no idea how big the performance impact is, but it's necessary. It can't even be selective, as it's not known at compile time which methods will be hooked. This optimization can't be reverted when a method is hooked (e.g. by recompiling that method), because it would mean that all the calling methods would have to be recompiled, which would require a list of all callers of that method (or at least those that have inlined it).
I'm not sure about Nougat yet. It has a JIT compiler (Marshmallow had one, too, but it was disabled because it wasn't stable yet), maybe that brings some new opportunities. But that's still a long way, first hooking has to work at all.
rovo89 said:
Little insight to demonstrate this. Consider this Java code:
This is the Dex code for the main() method:
And here is what ART (on Nougat / x86) compiles it to:
As you can see, the call to returnConstant() is gone. The value it would always return has been inlined.
some new opportunities. But that's still a long way, first hooking has to work at all.
Click to expand...
Click to collapse
Thank you for the response, I would just like to report that xposed adds a substantial amount of overhead compared to normal ART. Especially noticeable when ART is set to optimize everything.
Before flashing xposed, my phone running my own custom rom is noticeably faster compared to the iPhone 7. After flashing xposed, it lags behind quite abit.
I did loads of testing to come to this conclusion.
Just some feedback for you
_LLJY said:
I did loads of testing to come to this conclusion.
Click to expand...
Click to collapse
Did you also do real benchmarks? Most of the time when people talk about performance, they say it "feels" slower, but that's hard to investigate...
Also, modules might of course add overhead as well. What I mentioned above just refers to the framework itself.
rovo89 said:
Did you also do real benchmarks? Most of the time when people talk about performance, they say it "feels" slower, but that's hard to investigate...
Also, modules might of course add overhead as well. What I mentioned above just refers to the framework itself.
Click to expand...
Click to collapse
I tested Xposed on 3 devices, 2 ARMV7 and one ARM64. The Redmi note 4g(snapdragon 400) doesn't seem to be affected much at all. The Xperia Z5 (810) seems to slow down noticeably(I tested against a brand new Z5 with the same Rom) the Xiaomi mi3(800) does also get affected slightly although i haven't compared it against another new device. I will conduct a more scientific test where I actually time the devices using discomark to see how they do and put the results in a spreadsheet.
rovo89 said:
Did you also do real benchmarks? Most of the time when people talk about performance, they say it "feels" slower, but that's hard to investigate...
Also, modules might of course add overhead as well. What I mentioned above just refers to the framework itself.
Click to expand...
Click to collapse
on 6.0.1(nexus 5x) i don`t see any diference with or without xposed but seems on nougat will be a little complicate with the art modifications ! btw @rovo89 the xposed can be your phD theme (this is research)
Xposed sdk 23 v 86 does not work with cm 13 for i 9515 with newest kernel 3.4.113 anymore. Hope there will still be updates for xposed sdk 23????
Quote:
Originally Posted by friscoboi @sombree 20161115 got me stuck in a bootloop so far. I did everything as always with updates? Or does it take more than 30 minutes to reboot with the new kernel the first time?
It's because you're using xposed. And no, I'm not going to rebuild ROM with one of those unofficial fixes - you'll have to wait for fixed xposed
(Sorry to post here, but the older xposed thread is closed...)
rovo89 said:
Little insight to demonstrate this. Consider this Java code:
Code:
package de.robv.android.xposed.smallapp;
public class MyClass {
private static int sMyField = 999;
public static int returnConstant() {
return 1234;
}
public static void main() {
sMyField = returnConstant();
}
}
This is the Dex code for the main() method:
Code:
0x0000: 7100 0700 0000 | invoke-static {}, int de.robv.android.xposed.smallapp.MyClass.returnConstant() // [email protected]
0x0003: 0a00 | move-result v0
0x0004: 6700 0600 | sput v0, I de.robv.android.xposed.smallapp.MyClass.sMyField // [email protected]
0x0006: 0e00 | return-void
And here is what ART (on Nougat / x86) compiles it to:
Code:
0x00001054: 83EC0C sub esp, 12
0x00001057: 890424 mov [esp], eax
0x0000105a: 8B08 mov ecx, [eax]
0x0000105c: C781B0010000D2040000 mov [ecx + 432], 1234
0x00001066: 83C40C add esp, 12
0x00001069: C3 ret
As you can see, the call to returnConstant() is gone. The value it would always return has been inlined. Granted, this is a very simple example, but this can happen for more complex methods as well. It's incremental, so if returnConstant() returned the result of "square(9)" and that square() function returned "x*x", then it would remove all of those calls and insert the precalculated value 81 in the native code.
Now if a module hooks returnConstant(), that hook would never be called, because, well, the method isn't called either. This behavior would depend on many factors (e.g. compiler filter settings in the ROM), so module developers couldn't even rely on the assumption that the hook isn't called. It would be virtually random.
To avoid this (and also a few similar simplifications), the Xposed fork of ART disables these optimizations and recompiles all the odex/oat files. I actually have no idea how big the performance impact is, but it's necessary. It can't even be selective, as it's not known at compile time which methods will be hooked. This optimization can't be reverted when a method is hooked (e.g. by recompiling that method), because it would mean that all the calling methods would have to be recompiled, which would require a list of all callers of that method (or at least those that have inlined it).
I'm not sure about Nougat yet. It has a JIT compiler (Marshmallow had one, too, but it was disabled because it wasn't stable yet), maybe that brings some new opportunities. But that's still a long way, first hooking has to work at all.
Click to expand...
Click to collapse
Dalvik VM also uses JIT compiler
Sent from my GT-S7580 using Tapatalk
DodoGTA said:
This is the Dex code for the main() method:
And here is what ART (on Nougat / x86) compiles it to:
As you can see, the call to returnConstant() is gone. The value it would always return has been inlined. Granted, this is a very simple example, but this can happen for more complex methods as well. It's incremental, so if returnConstant() returned the result of "square(9)" and that square() function returned "x*x", then it would remove all of those calls and insert the precalculated value 81 in the native code.
Now if a module hooks returnConstant(), that hook would never be called, because, well, the method isn't called either. This behavior would depend on many factors (e.g. compiler filter settings in the ROM), so module developers couldn't even rely on the assumption that the hook isn't called. It would be virtually random.
To avoid this (and also a few similar simplifications), the Xposed fork of ART disables these optimizations and recompiles all the odex/oat files. I actually have no idea how big the performance impact is, but it's necessary. It can't even be selective, as it's not known at compile time which methods will be hooked. This optimization can't be reverted when a method is hooked (e.g. by recompiling that method), because it would mean that all the calling methods would have to be recompiled, which would require a list of all callers of that method (or at least those that have inlined it).
I'm not sure about Nougat yet. It has a JIT compiler (Marshmallow had one, too, but it was disabled because it wasn't stable yet), maybe that brings some new opportunities. But that's still a long way, first hooking has to work at all.
Dalvik VM also uses JIT compiler
Click to expand...
Click to collapse
You don't say
rovo89 said:
Did you also do real benchmarks? Most of the time when people talk about performance, they say it "feels" slower, but that's hard to investigate...
Also, modules might of course add overhead as well. What I mentioned above just refers to the framework itself.
Click to expand...
Click to collapse
I still haven't done actual tests due to time constraints but an interesting thing is that XDA labs does indeed take a fraction of a second longer to launch with Xposed. But it's barely noticeable, I had to time it.
_LLJY said:
I still haven't done actual tests due to time constraints but an interesting thing is that XDA labs does indeed take a fraction of a second longer to launch with Xposed. But it's barely noticeable, I had to time it.
Click to expand...
Click to collapse
if it helps, with xposed activated and deactivated (typically after a new rom install), activated it's perfectly fine, performance is a bit hindered but not so much that you notice it right away. Skip ahead a couple hours and it's laggy and slow, stuttering, apps don't open quite as fast, nor do they stay open (that's to do with another issue regarding xposed v87). But before that v87 update, that issue persisted.
But when i have xposed disabled (after flashing the new build), it's perfectly fine, performance is as snappy as a GS4 (SD600) would get you and apps open faster, don't lag or get bogged down. And they generally perform much better over time.
I can at least for me, confirm this since I've started using xposed (v70-76 i believe).
(Sprint Galaxy S4 SD600 16gb model, cm13 (12/4/2016 nightly) with ten modules installed.)
Do let me know if this helps at all with determining the performance hit with xposed enabled and with a decent amount of modules installed.
I'm gonna guess there's no new news about xposed for nougat
Shiftydogit said:
I'm gonna guess there's no new news about xposed for nougat
Click to expand...
Click to collapse
Correct. @rovo89 has not quite cracked the code on making it work with N just yet. He's working on it though so patience is required.
sjamie said:
Correct. @rovo89 has not quite cracked the code on making it work with N just yet. He's working on it though so patience is required.
Click to expand...
Click to collapse
Hopefully he gets it N seems like a pain in the grass for a lot of things we power users enjoy
Shiftydogit said:
Hopefully he gets it N seems like a pain in the grass for a lot of things we power users enjoy
Click to expand...
Click to collapse
Amen.
Wonder what's happening, I heard that Nougat xposed is unreliable with JIT?
I hope it gets fixed soon and gets out to the public.
Anyways, great job devs<3
Rotated Quickbits said:
Wonder what's happening, I heard that Nougat xposed is unreliable with JIT?
I hope it gets fixed soon and gets out to the public.
Anyways, great job devs<3
Click to expand...
Click to collapse
Maybe a new year present????
mitas35 said:
Maybe a new year present????
Click to expand...
Click to collapse
I'm going to like and respond to this post as it was only minutes away from the new years
All I'm hoping for, is that Android O doesn't mess with the compiler any more than N did, Android O Developer Previews are going to come before the official announcement on the 17 - 19 May 2017, and first betas are set to come in the summer, which aren't that far away...
If it does, then its going to be a long catch up game for @rovo89

[MOD/MAGISK] TDP Tweaks v. 1.4.04 - June 2nd, 2023

TDP Tweaks​IGNORE THE VERSION NUMBER THAT SHOWS IN MAGISK. I FORGOT TO CHANGE IT WHEN I PUSH THE RELEASE​Details​
Version: 1.4.04
Platform API: 31+
Android Version: 12+
Magisk Version: 25.2+
Source Code: https://gitlab.com/kp-development/android/tdp-tweaks
This is a Magisk module that attempts to modify some settings and tweak some services for better device performance, better battery management, and better privacy.
It modifies some system settings, and then attempts to disable analytics services, ad services, diagnostic services, and tracking services. Due to the nature of these services, the disablers will run every 4 hours based on the time you last rebooted your device.
If there are packages you need to exclude from this, you can add them to your /data/adb/modules/tdp-tweaks/tdp-excludes file; line by line; and they will be skipped. There are no defaults, and we will attempt to do this for every app installed on your device including system apps.
If you need help/support with this module, you will need to turn on debugging. To do this, all you have to do is create a file in /data/adb/modules/tdp-tweaks/ called: tdp-debug. The module will pick this up and start logging on it's next run. If you need the log right away, reboot your device after creating it.
Everything except the kernel tweaks should work on any device on Android 12 and up, though I only have a OnePlus 11, so I am only able to test them out on that. Your mileage may very, but if you have something else, and it works on that, please make sure to let me know.
NOTE: I cannot and will not be held responsible for bricks, world takeovers, or nuclear warfare. As such, installing this mod is completely on you. If you do not want this, do not flash it.
Requirements​
Platform API: 31+
Android Version: 12+
Magisk Version: 25.2+
Install​
Download the zip file, and open Magisk.
It's attached to this post
It's also here: https://gitlab.com/kp-development/android/tdp-tweaks/-/releases/
Tap on Modules
Tap Install from storage and browse to where you downloaded the zip file to.
Tap Ok
Reboot
Sit back and enjoy your device
Settings​Officially, there are no settings because this is only a set of shell scripts. Albeit, I did put in some logic to check for certain files in the mods directory to turn on/off some of them, as well, as exclude some packages and enable debugging... so ... follow along.
/data/adb/modules/tdp-tweaks/tdp-debug: This file will enable logging of all actions to the following location: `/data/adb/modules/tdp-tweaks/log.txt` If you have any issues with this module, I will be asking you for this log file...
Remove the file to turn this off
/data/adb/modules/tdp-tweaks/tdp-excludes: This file will be read line-by-line in order to exclude packages from the "disabler" scripts. If you find some apps no longer work for you, you may want to add them in here to be skipped over...
This file is empty by default
/data/adb/modules/tdp-tweaks/tdp-settings: This file will enable some system settings tweaks.
This file is included by default
Remove this file to turn this off
The following sections are enabled by default. Remove the line if you want to disable one
battery: enables the battery tweaks
performance: enables the performance tweaks
display: enables the display tweaks
feedback: enables the feedback tweaks
gesture: enables the gesture tweaks
googleservice: enables the google service tweaks
gmsintent: enables the GMS tweaks
googlesystem: enables the google system update tweaks
lockscreen: enables the lockscreen tweaks
telephony: enables the telephony tweaks
screensaver: enables the screensaver tweaks
settings: enables the system settings tweaks
security: enables the security tweaks
wifi: enables the wifi tweaks
packageverifier: enables the package verifier tweaks
location: enables the location service tweaks
animation: enables faster animations
dozing: enables the dozing tweaks
abusiveapps: enables the abusive apps tweaks
wellbeing: enables the wellbeing tweaks
network: enables the networking tweaks
/data/adb/modules/tdp-tweaks/tdp-kernel: This file will enable some kernel tweaks.
Remove this file to turn this off
/data/adb/modules/tdp-tweaks/tdp-analytics: This file will enable the analytics disabler.
Remove this file to turn this off
/data/adb/modules/tdp-tweaks/tdp-diagnostics: This file will enable the diagnostics disabler.
Remove this file to turn this off
/data/adb/modules/tdp-tweaks/tdp-adservices: This file will enable the ad services disabler.
Remove this file to turn this off
/data/adb/modules/tdp-tweaks/tdp-tracking: This file will enable the tracking disabler.
Remove this file to turn this off
/data/adb/modules/tdp-tweaks/tdp-compiler: This file enable the package compiler.
This only runs once
If you need to run it more than once, remove this file: /data/add/modules/tdp-tweaks/.compilerran
This can cause issues with some apps.
Either uninstall the app, and reinstall it: or,
put a file here: /data/add/modules/tdp-tweaks/tdp-undocompile and reboot
Requesting Support​First things first, I do this for myself and no-one else, and have simply decided to share it. I don't owe you anything, so if you demand anything from me, you will either be ignored, or reported, or both.
Thus said, I cannot help without logs, so make sure that when you ask for help that you have turned on debugging for it (see above), you post the log. At the very least I will need a Magisk log, which you can find in the management app. Also helpful would be the log this module writes to (if you have enabled debugging)... it is located here: /data/adb/modules/tdp-tweaks/log.txt. Also helpful would be a logcat, please google how to get this, as I will not hold anyones hand.
You can either file an issue in my repo, or reply to this thread on XDA.
Bootlooping​This is actually pretty easy to recover from. If it happens to you, please follow these steps to recover... also note, this does not just go for my module, but any magisk module that you may end up bootlooping with.
Hold your power button until you power off.
Once your device is off, press the power button and when the boot animation starts, press and hold your volume down, and keep holding it until it boots.
Once you are in Safe Mode (you will know as your homescreen will show it), simply reboot your device. Magisk detects safe mode and disables all modules.
Please note, and this is very important: YMMV
This process may be different for your device, but there is this great thing called the internet, and that can help you. Here, this is as much hand holding as you are going to get: https://www.google.com/search?q=how+do+I+boot+my+android+phone+into+safe+mode
Donations​Always welcomed, never required.
If you do decide to donate, please accept my thanks as I lift the beer(s) you bought to toast you
Donations can be processed here: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QTT7BM7SQG46G
{
"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"
}
Release Notes​
v. 1.4.04
Fix: settings tweaks... now runs every 4 hours as well.
yes, some do reset to default states
Add: added some networking and performance tweaks
Add: added some build.prop tweaks thanks to @zaidannn7
Removed: Defaults
from now on, you need to enable these yourself. Read the above and you will figure out how to do it.
v. 1.3.77
Remove: gmsintent tweaks
causing too many issues with play services and play store
Remove: googlesystem tweaks
causing too many issues with play services and play store
Remove: haptic feedback disabler
Added: App battery compiler
Changes the apps profiles from speed.
only runs once. If you need to run it again, remove the /data/add/modules/tdp-tweaks/.compilerran file and reboot
this can cause some issues with some apps. If you need to undo this, simply drop a new file in the module: /data/add/modules/tdp-tweaks/tdp-undocompile and reboot
v. 1.3.01
Fix: better search in the disablers for package exclusions
Improvement: read tdp-settings for enabled settings section
by default all sections are enabled.
to disable:
first backup /data/adb/modules/tdp-tweaks/tdp-settings
remove the setting line(s) you want to disable
descriptions are in the repo's readme & in the OP
save the file
reboot
Fix disable back animation
Fix: move rest of wifi tweaks to the proper section
Remove: Kernel tweaks for now.
I want to see if I can "detect" the current scheduler and tweak based on that
v. 1.2.78
Initial Public Release
Confirmed Devices​
Pixel 6
Pixel 6 Pro
OnePlus 11
Thanks & Kudos​
topjohnwu
Magisk, and the ability for us to create modules for it.
@cpirnie & dpirnie
My folks
@dpirnie
My monkey
@gpirnie
My wife!
NOTICE​I no longer have my Raven (my wife does), so I can no longer test on it. However, the updates I post should continue to work on it as most of them will be QOL improvements.
Please PM me if you want to be a tester.
In The Works​An app to control the enabling/disabling/exclusions of the tweaks.
NON ROOT VERSION​You may be able to still utilize some of these tweaks if you are not rooted. I've only tested this on the wife's Raven (she's not rooted, and won't let me ) Understand, this does not and cannot include any of the disablers from the full package. It's because the disablers require root.
Make sure you have at least version 33.0.3 of the SDK tools on your machine and it's setup to use those.
Google how to do this if you do not know how.
Plug your phone into your PC
Open command/shell/whatever you use for it...
Make sure your device is recognized with: adb devices
If it's not google how to enable ADB Debugging for your device, and enable it.
Download the attached script and make sure you are in your shell in that location.
Run: adb push adb.sh /sdcard/
Next Run: adb shell sh /sdcard/adb.sh and let it do it's thing
You may get some Java errors towards the end of the run... just ignore them
Profit
A must have magisk module.
Update after using this for few days, enabled everything minus tdp-adservices.
Device feels slightly snappier, even if animations are set back to normal.
Battery has improved, played Star Rail for 2h at max settings and still managed to get 6:13h sot, I'm mind blown.
Will try full day out and see how it does too.
I don't get past 5:30h under normal usage without gaming, no matter what, actually this is the first time I see 6h screen on time on my device.
P6Pro, EvoX - functional, we'll see how it behaves
animations, app loading seems faster to me. Possible?
hrabe.X said:
animations, app loading seems faster to me. Possible?
Click to expand...
Click to collapse
Yes. I set animations to .25
Justarandomguy said:
I'm on latest A13 stable with kirisakura kernel, phone has been 100% stable and perfectly working for weeks, won´t update anything so I can see if this creates any issue or changes anything and report back, been using it for an hour and so far so good, it's nice to see new contributions!
(Edit, first log if you wanna check, everything is alright and working well here, maybe it feels even faster?)
Click to expand...
Click to collapse
Appreciate it. Glad it feels faster for ya
Gonna look into those exceptions in the next few days. Have you had a chance to "turn on" the other modules?
kevp75 said:
Appreciate it. Glad it feels faster for ya
Gonna look into those exceptions in the next few days. Have you had a chance to "turn on" the other modules?
Click to expand...
Click to collapse
Hey, nope, installed and enjoy, did no more, if you want me to try something tell me, I had some services disabled already like Digital Wellbeing and so, maybe that's creating some issues in the log as I did something the module wanted to do, a log from someone else might be different
I've been running Foobar66's analytics and firebase disabler since it was released. This looks like a updated and more modern solution. They are essentially the same thing though, right?
noidea24 said:
I've been running Foobar66's analytics and firebase disabler since it was released. This looks like a updated and more modern solution. They are essentially the same thing though, right?
Click to expand...
Click to collapse
Interesting. Didn't know about that one. Just going on the description it appears to be similar, the exception would be that I automate it... IF the modules are enabled.
kevp75 said:
Interesting. Didn't know about that one. Just going on the description it appears to be similar, the exception would be that I automate it... IF the modules are enabled.
Click to expand...
Click to collapse
Yeah I really like his mod and terminal options, easy commands to run through system or user apps. I just flashed a fresh image with radioactive kernel, I'll throw this on top and give it a run.
noidea24 said:
Yeah I really like his mod and terminal options, easy commands to run through system or user apps. I just flashed a fresh image with radioactive kernel, I'll throw this on top and give it a run.
Click to expand...
Click to collapse
aye
mine does em all, but only if you create the files like I mention in the OP.
Basically, I just grab a list of packages, and try to loop through each checking for a string in the associated package classes. Like: "analy" for anything with Analytics, "adserv" for AdServices, etc...
By default, only the "Settings" tweaks are active, the rest aren't until you add those files.
I don't think the "disablers" will do anything to battery life, though, a by-product of some of the services being disabled may... my thinking for those was more for privacy than anything else... the "settings" and "kernel" tweaks were where I was thinking about battery.. which, right now I'm 35% after 30 hours... only about 4hrs SOT, but 2.5hr streaming poweramp over BT, couple hours on facebook, weatherbug going for 4 hours, and youtube going for 5 hours =) so... purtty happy with that I must say
edit: posted my screeny for that in post 4
noidea24 said:
I've been running Foobar66's analytics and firebase disabler since it was released. This looks like a updated and more modern solution. They are essentially the same thing though, right?
Click to expand...
Click to collapse
I use to use that but it wasn't perfected and caused some app issues. Now I use that app manager app by muntashirAkon it has this ad and tracker blocker which seems to be a better version of it all. It doesn't cause app issues because he test it. Maybe you might be interested in his block list op. Anyway I have both this module and that apps blocking activated.
Becareful with foobar 66s module op the reason I stopped using it was that it was causing some app issues I think because it disables to much firebase components. I don't touch them.
I was wondering if this Mod only works for Stock Android as It looks like the following files aren't activated on my Pixel 6 Pro running LineageOS latest April update:-
tdp-kernel
tdp-analytics
tdp-diagnostics
tdp-adservice
tdp-tracking
TeeJae360 said:
I was wondering if this Mod only works for Stock Android as It looks like the following files aren't activated on my Pixel 6 Pro running LineageOS latest April update:-
tdp-kernel
tdp-analytics
tdp-diagnostics
tdp-adservice
tdp-trackingView attachment 5897481
Click to expand...
Click to collapse
Same for me using stock firmware. The folder structure is different. Also I think this caused heavy drain for me I don't want to test it again because i had to do a full wipe flash to get the rom to stop draining high. Also noticed it turns aod of every boot. I wasn't able to find and delete the setting file to fix that.
cbomb1337 said:
Same for me using stock firmware. The folder structure is different. Also I think this caused heavy drain for me I don't want to test it again because i had to do a full wipe flash to get the rom to stop draining high. Also noticed it turns aod of every boot. I wasn't able to find and delete the setting file to fix that.
Click to expand...
Click to collapse
read the OP also, mod does nothing to AOD
TeeJae360 said:
I was wondering if this Mod only works for Stock Android as It looks like the following files aren't activated on my Pixel 6 Pro running LineageOS latest April update:-
tdp-kernel
tdp-analytics
tdp-diagnostics
tdp-adservice
tdp-trackingView attachment 5897481
Click to expand...
Click to collapse
read the OP
I have installed this on my rooted Pixel 6 pro and so far going great. Phone feels faster and more responsive. So thanks a lot for this, great work
Just one question, is there any way of seeing if the services are disabled on the phone?

Categories

Resources