# App Components

Table of Contents

# What are the app components?

Activities, services, broadcast receivers (also known as receivers) and content providers (also known as providers) are jointly called app components. More technically, they all inherit the ComponentInfo class.

# What are trackers?

Tracker is a special keyword in AM that is used to denote ad or tracker component. It doesn't denote the number of actual trackers like in the scanner page. This is analogous to tracker component (as opposed to trackers classes).

# How are the tracker or other components blocked in AM? What are its limitations?

AM blocks application components (or tracker components) using a method called Intent Firewall (opens new window) (IFW), it is very superior to other methods such as pm, Shizuku (opens new window) or any other method that uses the package manager to enable or disable the components. If a component is disabled by the latter methods, the app itself can detect that the component is being blocked and can re-enable it as it has full access to its own components. (Many deceptive apps actually exploit this in order to keep the tracker components unblocked.) On the other hand, IFW is a true firewall and the app cannot detect if the blocking is present. It also cannot re-enable it by any means. AM uses the term block rather than disable for this reason.

But even IFW has some limitations which are primarily applicable for the system apps:

  • The app in question is whitelisted by the system ie. the system cannot function properly without these apps and may cause random crashes. These apps include but not limited to Android System, System UI, Phone Services. They will run even if you disable them or block their components via IFW.
  • Another system app or system process is calling an specific component of the app in question via interprocess communication (IPC). In this case, the component will be activated regardless of its presence in the IFW rules or even if the entire app is disabled. If you have such system apps, the only way to prevent them from running is to get rid of them.

It is because of the blocking method I'm using. This method is called Intent Firewall (opens new window) (IFW) and is compatible with Watt (opens new window) and Blocker (opens new window). MyAndroidTool (opens new window) (MAT) supports IFW but it uses a different format. Therefore, Watt can detect blocked components by default but Blocker can only detect them if you enable IFW in its settings page. MAT cannot detect AM's blocking rules since the format is different. AM cannot detect MAT's rules if IFW is enabled in MAT. In that case, you can still import them from the settings page. MAT has an export option but it's not supported due to its non-free nature.

# Does app components blocked by other tools retained in AM?

No. But components blocked by the Android System or any other tools are displayed in the App Details page (within the component tabs). From v2.5.12, you can import these rules in Settings. But since there is no way to distinguish between components blocked by third-party apps and components blocked by the System, you should be very careful when choosing app.

# What happened to the components blocked by AM which are also blocked by other tools?

AM blocks the components again using Intent Firewall (opens new window) (IFW). They are not unblocked (if blocked using pm or Shizuku (opens new window) method) and blocked again. But if you unblock a component in the App Details page, it will be reverted back to default state — blocked or unblocked as described in the corresponding app manifest — using both IFW and pm method. However, components blocked by MyAndroidTools (opens new window) (MAT) with IFW method will not be unblocked by AM. To solve this issue, you can first import the corresponding configuration to AM in Settings in which case MAT's configurations will be removed. But this option is only available from v2.5.12.

# What is global component blocking?

When you block a component in the App Details page, the blocking is not applied by default. It is only applied when you apply blocking using the Apply rules option in the top-right menu. If you enable global component blocking, blocking will be applied as soon as you block a component. If you choose to block tracker components, however, blocking is applied automatically regardless of this setting. You can also remove blocking for an app by simply clicking on Remove rules in the same menu in the App Details page. Since the default behaviour gives you more control over apps, it is better to keep global component blocking option disabled.

See also: Global Component Blocking

# Tracker classes versus tracker components

All app components are classes but not all classes are components. In fact, only a few of the classes are components. That being said, scanner page displays a list of trackers along with the number of classes, not just the components. In all other pages, trackers and tracker components are used synonymously to denote tracker components, i.e. blocking tracker means blocking tracker components, not tracker classes.

Info

Tracker classes cannot be blocked. They can only be removed by editing the app itself.

# How to unblock the tracker components blocked using 1-Click Ops or Batch Ops?

Some apps may misbehave due to their dependency to tracker components blocked by AM. From v2.5.12, there is an option to unblock tracker components in the 1-Click Ops page. However, in previous versions, there is no such options. To unblock these tracker components, first go to the App Details page of the misbehaving app. Then, switching to the Activities tab, click on the Remove rules options in the top-right menu. All the blocking rules related to the components of the app will be removed immediately. Alternatively, If you have found the component that is causing the issue, you can unblock the component by clicking on the unblock button next to the component name. If you have enabled global component blocking in Settings, disable it first as Remove rules option will not be visible when it is enabled.

If you have Google Play Services (com.google.android.gms) installed, unblocking the following services may fix the problem:

  • Ad Request Broker Service
    .ads.AdRequestBrokerService
  • Cache Broker Service
    .ads.cache.CacheBrokerService
  • Gservices Value Broker Service
    .ads.GservicesValueBrokerService
  • Advertising Id Notification Service
    .ads.identifier.service.AdvertisingIdNotificationService
  • Advertising Id Service
    .ads.identifier.service.AdvertisingIdService
Last Updated: 1/1/2021, 3:56:06 PM