MuntashirAkon / AppManager

A full-featured package manager and viewer for Android
https://muntashirakon.github.io/AppManager/
Other
4.74k stars 265 forks source link

One click Ads and tracker Removal #35

Closed UltraBlackLinux closed 4 years ago

UltraBlackLinux commented 4 years ago

Id love to see a feature that allows you to disable all ad and tracking pms with the click of a button. This could work together with Exodus and Ad Away. Thanks!

Atrate commented 4 years ago

Warden by Aurora OSS provides this exact feature, named "Nuke it!"

https://gitlab.com/AuroraOSS/AppWarden

MuntashirAkon commented 4 years ago

Warden by Aurora OSS provides this exact feature, named "Nuke it!"

https://gitlab.com/AuroraOSS/AppWarden

Does it have any relation to Nuked scripts? Also, I've noticed it is using some form of disabling bloatware similar to /d/gapps (they didn't credited them though).

MuntashirAkon commented 4 years ago

Related to #27

UltraBlackLinux commented 4 years ago

@Atrate I saw warden and I was thinking about switching from this app to warden, but warden just has less features and doesnt even manage app pms that good after all, sticking with App manager :)

MuntashirAkon commented 4 years ago

@Atrate I saw warden and I was thinking about switching from this app to warden, but warden just has less features and doesnt even manage app pms that good after all, sticking with App manager :)

That's your choice.

I personally think it's important to have a nice UI but you should also care about app size and useless features. For instance, I decided not to use any histogram or pie chart for app usage because it's nothing more than a fancy UI that is nice to have, it has no statistical significance.

GNU is about liberty: A user has the right to select and copy any text which is why I've designed it in way so that almost everything is selectable. I'm working on other projects such as RetroMusicPlayer of late for the same reason (liberty). They have a GNU GPL license but their project doesn't look GNU to me. If anyone can make better things than me, there's nothing to be ashamed of: I've made this app not to earn any money (I don't accept any donations) but for my own use. And then I shared it online because I thought that there could be other people like me who are looking for the same thing.

MuntashirAkon commented 4 years ago

Considering the facts that ClassyShark3xodusis already integrated and that component blocker is already implemented, it wouldn't much difficult to implement such a feature. But beware that the API that is used to list tracker classes is deprecated for a long time and will probably be removed/hidden in Android 11.

MuntashirAkon commented 4 years ago

It seems you don't actually need to analyse the apk to find the trackers since components themselves have the tracker signature. So, basically just checking for tracking signature among the components does the job. This is relatively easy to implement and I'm thinking of enhancing it further (more than just a one click ad/tracker removal). I always do this with new features so that I can reuse the functions for other purposes.

My guess is that an user might be interested in blocking trackers in both App Info and App Details (where the components are listed) as well as some people would love to see it as a batch operation (one might for example wants to select all facebook apps and apply the blocking). I also need it to be integrated with the original component blocking mechanism so that user can import/export them later. This would be similar to disable all dangerous app ops and disable all dangerous permissions options many users are expecting and also as a batch operation and a one click operation. I will add a one click operation in the main menu which can be used to perform operations similar to this but to all/user apps.

What do you think?

nerd190 commented 4 years ago

Whilst i find it easy enough to just scan an app, find its trackers and go block them myself, all using App Manager... I suppose its a nice feature to have, whilst I use 99% opensource apps (only a few components to disable) some people do not and may have lots. Even for me, some apps I cannot avoid, I use Discord & Instagram for gaming, both have no open source Android clients, so I block using App Manager, then I have them disabled when not in use (automatically by 'Disabler' from F-Droid). As this is about batch "component" disabling, could the app possibly do batch "app" disabling too? (just like 'Disabler' can), obviously we can already disable, but the ability to make a list to quickly freeze/ unfreeze would be great (and the ONLY reason I use Disabler still) also Disabler allows to add tabs (that act as different lists) so I have one tab with all Google apps in, they are ALL disabled at all times and I only unfreeze if I need to buy something from them (which is rare), I have a second tab for social media (Discord, Insta, Facebook, Twitter) always disabled unless I am using them (have them open) and that keeps all the bloat on my phone handled properly (1. Block components in App Manager. 2. Disable anything that doesnt need to be running in Disabler.) I never made a new issue as this issue could be possibly labled something like "batch disabling" (apps & components). Thank you! (P.S yes, what you have prosed this far sounds great!)

MuntashirAkon commented 4 years ago

@5c0tt-b0t I agree with you 100% on this. I was thinking of some sort of debloating tools such as /d/gapps which has a handy lists of packages which can be disabled/deleted. But I didn't think of a customisable solution. I'll checkout this app to see if I can find any clue on how to implement such feature. I have also thought of routine tasks but that's not going to be implemented anytime soon.

UltraBlackLinux commented 4 years ago

@MuntashirAkon So you will add one-click-removal for trackers but not for ads? If you dont know how to do it, take a look at lucky patcher (luckypatchers.net)

Atrate commented 4 years ago

Lucky Patcher removes ads in 2 ways:

  1. It simply disables app components related to ads. This could be implemented in AM.

  2. It can also rebuild APKs to remove those components and other identified ad sources altogether, it can also remove GooglePS dependency this way. This is blocked by #6.

MuntashirAkon commented 4 years ago

It simply disables app components related to ads. This could be implemented in AM.

Exodus' list of trackers include ads as well. I use oF2pks's list of trackers which includes both ads and trackers, some of which are not included in Exodus' list.

It can also rebuild APKs to remove those components and other identified ad sources altogether, it can also remove GooglePS dependency this way. This is blocked by #6.

I will investigate this possibility after implementing the essential features. Do you think F-Droid would approve an app with such abilities?

MuntashirAkon commented 4 years ago

You will add one-click-removal for trackers but not for ads?

There's no distinction between ads and trackers as ads generally tracks users. But some ads (for example, Spotify) have it's own custom ad components which are not included in the list of trackers/ads. It's important to understand that it doesn't prevent an app from tracking you (“Nuke it” is indeed a misleading name) as it only detects and blocks components that have the tracking signature. You can't block any component that has a different signature than this (again, Spotify has at least 8 trackers in it but absolutely no tracking components).

Atrate commented 4 years ago

Do you think F-Droid would approve an app with such abilities?

https://f-droid.org/en/docs/Inclusion_Policy/

Trademarks must not be infringed, and any other legal requirements must be adhered to.

Rebuilding APK files could be considered a violation of apps' license terms or even the DMCA but I would still try to include this in F-Droid and in a worst-case scenario maybe make an AppManager Lite without APK rebuilding.

MuntashirAkon commented 4 years ago

It seems I'll need another milestone for this since I haven't yet came up with a good plan for a one-click solution. Notice that, I am planning on creating an 1-click ops window where all the one click operations will be listed (and performed).