[Android Apps and Games] Dark3n:
SD Maid beta v4.8.0 is now available.

Some notes:

The database tools search scope has been expanded. Inside official database folders we look at all files, but outside those SD Maid previously only looked at files with the extension ".db" for performance reasons, I've now added ".sql" and ".sqlite". I've also expanded the list of folders where SD Maid checks every file to include variants (`/databases/`, `/database/` etc.). The whole sdcard root is now also included by default instead of only `/Android/data/` in the search if SD Maid can determine ownership for files.

I've improved and expanded SD Maid's dynamic clutter matching (ownership detection). Dynamic clutter matching allows us to infer package<>folder relations without requiring explicit database entries. The dynamic clutter matching I added targets developer mistakes where an apps path was hardcoded or erroneously used. One such common mistake is to hardcode pathes and confuse public with private storage, we then end up with folders such as `/storage/emulated/0/data/data/package.name`.

SD Maids is now targeting (build with) API26 (Android Oreo), this means SD Maid is now subject to the new background execution constraints that have been introduced in Android Oreo. This required changing service `bind`, `start` and notification behavior. Previously we started the service, then bound to it, now we bind to it, and and start it when you close the UI. It's complicated. Maybe I'll post about it in a another post if there is interest. I'm interest in feedback regarding SD Maids behavior when running in the background and when opening/closing the UI with active tasks running.

Android Oreo requires notifications to be part of "channels", so we have two basic channels now. A "status" channel that shows you what SD Maid is doing and a "results" channel that shows task results. In the future we could create a channel for each tool. You can disable notification channels but note that if you disable the "status" channel that SD Maid looses priority and might be killed by the system during background tasks if the UI is closed.

There was a bug that caused SD Maid to hang indefintely during the rootcheck if a device was incorrectly rooted (i.e. neither fully rooted nor unrooted). I first thought this was related to an issue in the code that kills the shell doing the root check but it turned out to be a much deeper issue. The shell system has a watchdog timer that triggers if (if set) after 20 seconds of no response from the rootcheck. The code for that was actually working perfectly but there was a deadlock between the watchdog thread and the thread that was waiting for the shell results. I did a huge rewrite of the `InteractiveShell` class to fix this and make it less prone to errors as the code has gotten quite complex over the time. I added lots of unit tests to cover these kind of issues and while I think it's running perfect now, let me know if you notice tasks hanging at 100% as I make mistakes too :|. The rewrite and unit tests also moved me closer to my goal of open sourcing the shell code as library at some point. Theoretically this change should also have improved the overall task canceling behavior in SD Maid.

For rooted Samsung users we have a nice improvement of the CorpseFinder's `/data/app` and `/data/app-private` filter. Apparently the app updater on some ROMs forgets to delete the dalvik files of the old versions causing the old folder in which they reside to be left behind too. Previously SD Maid would only detect this once the app was uninstalled because we couldn't differentiate between the old and new folder of the installed app, now we can :).

SD Maids issue tracker is getting more and more use and I'm very happy about that. Thanks to everyone who used it for reports, ideas and bugs.

I'm thinking about changing SD Maids versioning scheme such that the first number repsents the major version which only changes when I drop support for old Android version, and the second number just being one that increases with each update. Currently I try to change the 2nd number when I make larger changes in an update and use the 3rd number to signify that the update just contains small fixes. Looking back at the changelog, I don't think I ever really managed to do that... What are your thoughts on that?

I've made all issue tickets in the changelog clickable :)

http://sdmaid.darken.eu/changelog

http://sdmaid.darken.eu/issues﻿

http://sdmaid.darken.eu/download