diff --git a/docs/README.md b/docs/README.md index 66191189718..b2fa8ce4e90 100755 --- a/docs/README.md +++ b/docs/README.md @@ -2,7 +2,7 @@ home: true heroImage: /icon.png heroText: App Manager -tagline: For v2.5.20 +tagline: For v2.5.21 actionText: Get Started actionLink: /guide/ features: diff --git a/docs/faq/app-components.md b/docs/faq/app-components.md index b25332c1c45..b8065c0c59f 100755 --- a/docs/faq/app-components.md +++ b/docs/faq/app-components.md @@ -10,10 +10,20 @@ sidebarDepth: 2 ::: ## What are the app components? -Activities, services, broadcast receivers (also known as receivers) and content providers (also known as providers) are combinedly called app components. More technically, they all inherit the `ComponentInfo` class. +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](../guide/scanner-page.md). 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][1] (IFW), it is very superior to other methods such as `pm`, [Shizuku][5] 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. ## Why are the components blocked by AM not detected by other related apps? -It is because of the blocking method I'm using. This method is called [Intent Firewall][1] (IFW) and is compatible with [Watt][2] and [Blocker][3]. [MyAndroidTool][4] (MAT) supports IFW but it uses a different format. There are other methods for blocking app components such as _pm_ and [Shizuku][5]. If an app component is blocked using these latter methods, the affected app can identify it and can unblock it as it has full access to its own components. Many deceptive apps actually exploit this in order to keep the tracker components unblocked. +It is because of the blocking method I'm using. This method is called [Intent Firewall][1] (IFW) and is compatible with [Watt][2] and [Blocker][3]. [MyAndroidTool][4] (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][9]. 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][10] page (within the component tabs). From v2.5.12, you can import these rules in [Settings][9]. 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. diff --git a/docs/guide/adb-over-tcp.md b/docs/guide/adb-over-tcp.md index 81b7b5a36f9..e980741eaac 100755 --- a/docs/guide/adb-over-tcp.md +++ b/docs/guide/adb-over-tcp.md @@ -6,7 +6,7 @@ sidebarDepth: 2 Many root-only features can still be used by enabling ADB over TCP. To do that, a PC or Mac is required with Android platform-tools installed, and an Android phone with developer options & USB debugging enabled. ::: tip Root users -If superuser permission has been granted to App Manager, it can already execute privileged code without any problem. **Threfore, root users don't need to enable ADB over TCP.** If you still want to use ADB over TCP, you must revoke superuser permission for App Manager and restart your device. You may see _working on ADB mode_ message without restarting but this isn't entirely true. The server (used as an interface between system and App Manager) is still running in root mode. This is a known issue and will be fixed in a future version of App Manager. +If superuser permission has been granted to App Manager, it can already execute privileged code without any problem. **Therefore, root users don't need to enable ADB over TCP.** If you still want to use ADB over TCP, you must revoke superuser permission for App Manager and restart your device. You may see _working on ADB mode_ message without restarting but this isn't entirely true. The server (used as an interface between system and App Manager) is still running in root mode. This is a known issue and will be fixed in a future version of App Manager. ::: _See also: [FAQ: ADB over TCP][faq_aot]_ @@ -40,7 +40,7 @@ Often the **USB debugging** mode could be disabled automatically by the system. Make sure you have **USB tethering** enabled. ### 2.4. Troubleshooting -In case **USB Debugging** is grayed out, you can do the following: +In case **USB Debugging** is greyed out, you can do the following: 1. Make sure you enabled USB debugging before connecting your phone to the PC or Mac via USB cable 2. Enable USB tethering after connecting to PC or Mac via USB cable 3. (For Samsung) If you're device is running KNOX, you may have to follow some additional steps. See official documentations or consult support for further assistant diff --git a/docs/guide/app-details-page.md b/docs/guide/app-details-page.md index f2e2815b203..7b94785c82a 100755 --- a/docs/guide/app-details-page.md +++ b/docs/guide/app-details-page.md @@ -8,8 +8,8 @@ sidebarDepth: 2 [[toc]] ::: -## Color Codes -List of background colors used in this page and their meaning: +## Colour Codes +List of background colours used in this page and their meaning: - Red (day) or dark red (night) - Any app op or permission that has the dangerous flag is marked as red. Components that are blocked within App Manager are also marked as red - Light red (day) or very dark red (night) - Components that are disabled outside App Manager have these colors. It should be noted that a component that is marked as disabled does not always mean that it is disabled by the user: It could be disabled by the system as well or marked as disabled in the app manifest. Also, all components of a disabled app are considered disabled by the system (and by App Manager as well) - Vivid orange (day) or very dark orange (night) - Ad or tracker components @@ -20,14 +20,14 @@ List of background colors used in this page and their meaning: ### General Information The list below is in the same order as listed in the App Info tab. -- **App Icon.** The application icon, if an app doesn't have a icon, the system default icon is displayed. +- **App Icon.** The application icon, if an app doesn't have an icon, the system default icon is displayed. - **App Label.** The application label or application name. - **Version.** Application version is divided into two parts. The first part is called _version name_, the format of this part varies but it often consists of multiple integers separated by dots. The second part is called _version code_ and it is closed under first brackets. Version code is an integer which is usually used to differentiate between app versions (as version name can often be unreadable by a machine). In general, new version of an app has higher version code than the old ones. For instance, if `123` and `125` are two version codes of an app, we can say that the latter is more updated than the former because the version code of the latter is higher. For applications that depend on platforms (mobile, tabs, desktops, etc.), these version numbers can be misleading as they use prefixes for each platform. -- **Tags.** (Also known as tag clouds) Tags include the basic, concise and most useful info of an app. Tags contain _tracker info_ (i.e., number of tracker components), _app type_ (user app or system app and whether the app is an updated version of the system app or if the app is installed systemless-ly using Magisk), _running_ (i.e. one or more services of the app is running in the background), _split apk info_ (i.e., number of splits), _debuggable_ (the app is a debug version), _test only_ (the app is a test only app), _large heap_ (the app has requested a large heap size), _stopped_ (the app is force stopped), _disabled_ (the app is disabled), _KeyStore_ (the app has items in the Android KeyStore) and _no code_ (the app doesn't have any code associated with it). The importance of including _test only_ and _debuggable_ is that app with these properties can do additional tasks or these apps can be `run-as` without root which can cause potential security problems if these apps store any private information. _large heap_ denotes that the app will be allocated a higher amount of memory (RAM) if needed. While this may not be harmful for most cases, any suspicious apps requesting large heap should be taken seriously. +- **Tags.** (Also known as tag clouds) Tags include the basic, concise and most useful info of an app. Tags contain _tracker info_ (i.e., number of tracker components), _app type_ (user app or system app and whether the app is an updated version of the system app or if the app is installed systemless-ly using Magisk), _running_ (i.e. one or more services of the app is running in the background), _split APK info_ (i.e., number of splits), _debuggable_ (the app is a debug version), _test only_ (the app is a test only app), _large heap_ (the app has requested a large heap size), _stopped_ (the app is force stopped), _disabled_ (the app is disabled), _KeyStore_ (the app has items in the Android KeyStore) and _no code_ (the app doesn't have any code associated with it). The importance of including _test only_ and _debuggable_ is that app with these properties can do additional tasks or these apps can be `run-as` without root which can cause potential security problems if these apps store any private information. _large heap_ denotes that the app will be allocated a higher amount of memory (RAM) if needed. While this may not be harmful for most cases, any suspicious apps requesting large heap should be taken seriously. - **Horizontal Action Panel.** This is a action panel containing various actions regarding the app. See [below](#horizontal-action-panel) for a complete list of actions available there. -- **Paths & Directories.** Contains various information regarding application paths including _app directory_ (where the apk files are stored), _data directories_ (internal, device protected and externals), _split apk directories_ (along with the split names), and _native JNI library_ (if present). JNI libraries are used to invoke native codes usually written in C/C++. Use of native library can make the app run faster or help an app use third-pary libraries written using languages other than Java like in most games. You can also open these directories using your favourite file managers (provided they support it and have necessary permissions) by clicking on the launch icon on the right-hand side of each item. +- **Paths & Directories.** Contains various information regarding application paths including _app directory_ (where the APK files are stored), _data directories_ (internal, device protected and externals), _split APK directories_ (along with the split names), and _native JNI library_ (if present). JNI libraries are used to invoke native codes usually written in C/C++. Use of native library can make the app run faster or help an app use third-party libraries written using languages other than Java like in most games. You can also open these directories using your favourite file managers (provided they support it and have necessary permissions) by clicking on the launch icon on the right-hand side of each item. - **Data Usage Since Last Boot.** A rather self explanatory option. But beware that due to some issues, the results might often be misleading and simply wrong. This part remains hidden if _Usage Access_ permission is not granted in newer devices. -- **Storage & Cache.** Displays information regarding the size of the app (apk files), data and cache. In older devices, size of external data, cache, media and obb folders are also displayed. This part remains hidden if _Usage Access_ permission is not granted in newer devices. +- **Storage & Cache.** Displays information regarding the size of the app (APK files), data and cache. In older devices, size of external data, cache, media and OBB folders are also displayed. This part remains hidden if _Usage Access_ permission is not granted in newer devices. - **More Info.** Displays other information such as * **SDK.** Displays information related to the Android SDK. There are two (one in old devices) values: _Max_ denotes the target SDK and _Min_ denotes the minimum SDK (the latter is not available in old devices). It is best practice to use apps with maximum SDK that the platform currently supports. SDK is also known as **API Level**. _See also: [Android Version History][wiki_android_versions]_ @@ -41,15 +41,15 @@ The list below is in the same order as listed in the App Info tab. ### Horizontal Action Panel Horizontal Action Panel, as described in the previous section, consists of various app-related actions, such as — -- **Launch.** Application that has a launchable [activity](#activities) can be launched using this button. -- **Disable.** Disable an app. This button is not displayed for already disabled apps or to users who do not have root or [ADB][2]. If you disable an app, the app will not be displayed in your Launcher app. Shortcuts for the app will also be removed. If you disable an user app, you can only enable them via App Manager or any other tool that supports it. There isn't any option in Android Settings to enable a disabled user app. +- **Launch.** Application that has a launcher [activity](#activities) can be launched using this button. +- **Disable.** Disable an app. This button is not displayed for already disabled apps or to users who do not have root or [ADB][2]. If you disable an app, the app will not be displayed in your Launcher app. Shortcuts for the app will also be removed. If you disable a user app, you can only enable them via App Manager or any other tool that supports it. There isn't any option in Android Settings to enable a disabled user app. - **Uninstall.** Uninstall an app. - **Enable.** Enable an app. This button is not displayed for already enabled apps or to users who do not have root or [ADB][2]. - **Force Stop.** Force-stop an app. When you force stop an app, the app will not be able to run in background unless you explicitly open it first. However, this is not always true. - **Clear Data.** Clear data from an app. This includes any information stored in the internal and often the external directories, including accounts (if set by the app), cache, etc. Clearing data from App Manager, for example, removes all the rules (the blocking is not removed though) saved within the app. Which is why you should always take backups of your rules. This button is not displayed to users who do not have root or [ADB][2]. - **Clear Cache.** Clear app cache only. There is not any Android-way to clear app cache. Therefore, it needs root permission to clear cache from the app's internal storage. -- **Install.** Install an apk opened using any third-party app. This button is only displayed for an external apk that hasn't been installed. -- **What's New.** This button is displayed for an apk that has higher version code than the installed one. Clicking on this button displays a dialog consisting of differences in a version control manner. The information it displays include _version_, _trackers_, _permissions_, _components_, _signatures_ (checksum changes), _features_, _shared libraries_ and _sdk_. +- **Install.** Install an APK opened using any third-party app. This button is only displayed for an external APK that hasn't been installed. +- **What's New.** This button is displayed for an APK that has higher version code than the installed one. Clicking on this button displays a dialog consisting of differences in a version control manner. The information it displays include _version_, _trackers_, _permissions_, _components_, _signatures_ (checksum changes), _features_, _shared libraries_ and _SDK_. - **Update.** Displayed for an app that has a higher version code than the installed app. - **Reinstall.** Displayed for an app that has the same version code as the installed app. - **Downgrade.** Displayed for an app that has a lower version code than the installed app. @@ -64,7 +64,7 @@ Horizontal Action Panel, as described in the previous section, consists of vario ### Options Menu Options menu is located in the top-right corner of the page. A complete description of the options present there are given below: -- **Share.** Share button can be used to share the apk file or _apks_ file (if the app is has multiple splits) can be imported into [SAI][sai]. You can share it with your favourite file manager to save the file in your shared storage. +- **Share.** Share button can be used to share the APK file or _APKS_ file (if the app is has multiple splits) can be imported into [SAI][sai]. You can share it with your favourite file manager to save the file in your shared storage. - **Refresh.** Refreshes the App Info tab. - **View in Settings.** Opens the app in Android Settings. - **Backup/Restore.** Opens the backup/restore dialog. @@ -81,7 +81,7 @@ Enabling this option does not weaken your Termux' security. The third-party apps ::: ## Component Tabs -**Activities**, **Services**, **Receivers** (originally _broadcast receivers_) and **Providers** (originally _Content Providers_) are together called the application components. This is because they share similar features in many ways. For example, they all have a _name_ and a _label_. Application components are the building blocks of any application, and most of these have to declared in the application manifest. Application manifest is a file where application specific metadata are stored. The Android operating system learns what to do with an app by reading the metadata. [Colors](#color-codes) used in these tabs are explained above. +**Activities**, **Services**, **Receivers** (originally _broadcast receivers_) and **Providers** (originally _Content Providers_) are together called the application components. This is because they share similar features in many ways. For example, they all have a _name_ and a _label_. Application components are the building blocks of any application, and most of these have to declared in the application manifest. Application manifest is a file where application specific metadata are stored. The Android operating system learns what to do with an app by reading the metadata. [Colours](#colour-codes) used in these tabs are explained above. You also have the ability to sort the list of components to display blocked or tracker components on top of the list using the **Sort** option in the overflow menu. ::: details Table of Contents - [Activities](#activities) @@ -94,13 +94,13 @@ Enabling this option does not weaken your Termux' security. The third-party apps ### Activities **Activities** are windows or pages that you can browse (for instance _Main page_ and _App Details page_ are two separate activities). In other words, an activity is a user interface (UI) component. Each activity can have multiple UI components known as _widgets_ or _fragments_, and similarly, each of these latter components can have multiple of them nested or on top of each other. But an activity is a _master_ component: There cannot be two nested activities. An application author can also choose to open external files within an activity using a method called _intent filters_. When you try to open a file using your file manager, either your file manager or system scans for intent filters to decide which activities can open that particular file and offers you to open the file with these activities (therefore, it is nothing to do with the application itself). There are other intent filters as well. -Activities which are _exportable_ can usually be opened by any third-party apps (some activities require permissions, if that is the case, only an app having those permissions can open them). In the _Activities_ tab, the name of the activity (on top of each list item) is actually a button. It is enabled for the _exportable_ activities and disabled for others. You can use this to open the activity directly using App Manager. +Activities which are _exportable_ can usually be opened by any third-party apps (some activities require permissions, if that is the case, only an app having those permissions can open them). In the _Activities_ tab, the name of the activity (on top of each list item) is actually a button. It is enabled for the _exportable_ activities and disabled for others (root users can open any activities). You can click on the button to open the activity directly in App Manager. You can also open the Interceptor page by long clicking on an activity. Currently it only works for _exportable_ activities. ::: warning Notice If you are not able to open any activity, chances are it has certain dependencies which are not met, e.g., you cannot open _App Details Activity_ because it requires that you at least supply a package name. These dependencies cannot always be inferred programmatically. Therefore, you cannot open them using App Manager. ::: -You can also create shortcut for these _exportable_ activites (using the dedicated button), and if you want, you can edit the shortcut as well using the _Edit Shortcut_ button. +You can also create shortcut for these _exportable_ activities (using the dedicated button), and if you want, you can edit the shortcut as well using the _Edit Shortcut_ button. ::: danger Caution If you uninstall App Manager, the shortcuts created by App Manager will be lost. @@ -109,7 +109,7 @@ If you uninstall App Manager, the shortcuts created by App Manager will be lost. ### Services Unlike [activities](#activities) which users can see, **Services** handle background tasks. If you're, for example, downloading a video from the internet using your phone's Internet browser, the Internet browser is using a background service to download the content. -When you close an activity, it usually gets destroyed immediately (depending on many factors such as how much free memory your phone has). But services can be run for indefinite periods if desired. If more services are running in background, you phone will get slower due to shortage of memory and/or processing power, and your phone's battery can be drained more quickly. Newer Android versions have a battery optimization feature enabled by default for all apps. With this feature enabled, the system can randomly terminate any service. +When you close an activity, it usually gets destroyed immediately (depending on many factors such as how much free memory your phone has). But services can be run for indefinite periods if desired. If more services are running in background, you phone will get slower due to shortage of memory and/or processing power, and your phone's battery can be drained more quickly. Newer Android versions have a battery optimisation feature enabled by default for all apps. With this feature enabled, the system can randomly terminate any service. By the way, both activities and services are run in the same looper called the main [looper][looper], which means the services are not really run in the background. It's the application authors job to ensure that. How do application communicate with services? They use [broadcast receivers](#receivers). @@ -117,17 +117,30 @@ By the way, both activities and services are run in the same looper called the m **Receivers** (also called _broadcast receivers_) can be used to trigger execution of certain tasks for certain events. These components are called broadcast receivers because they are executed as soon as a broadcast message is received. These broadcast messages are sent using a method called intent. Intent is a special feature for Android which can be used to open applications, activities, services and send broadcast messages. Therefore, like [activities](#activities), broadcast receivers use intent filters to receive only the desired broadcast message(s). Broadcast messages can be sent by either system or the app itself. When a broadcast message is sent, the corresponding receivers are awaken by the system so that they can execute tasks. For example, if you have low memory, your phone may freeze or experience lags for a moment after you enable mobile data or connect to the Wifi. Ever wondered why? This is because broadcast receivers that can receive `android.net.conn.CONNECTIVITY_CHANGE` are awaken by the system as soon as you enable data connection. Since many apps use this intent filter, all of these apps are awaken almost immediately by the system which causes the freeze or lags. That being said, receivers can be used for inter-process communication (IPC), i.e., it helps you communicate between different apps (provided you have the necessary permissions) or even different components of a single app. ### Providers -**Providers** (also called _content providers_) are used for data management. For example, when you save an apk file or export rules in App Manager, it uses a content provider called `androidx.core.content.FileProvider` to save the apk or export the rules. There are other content providers or even custom ones to manage various content-related tasks such as database management, tracking, searching, etc. Each content provider has a field called _Authority_ which is unique to that particular app in the entire Android eco-system just like the package name. +**Providers** (also called _content providers_) are used for data management. For example, when you save an apk file or export rules in App Manager, it uses a content provider called `androidx.core.content.FileProvider` to save the APK or export the rules. There are other content providers or even custom ones to manage various content-related tasks such as database management, tracking, searching, etc. Each content provider has a field called _Authority_ which is unique to that particular app in the entire Android eco-system just like the package name. ### Additional Features for Rooted Phones -Unlike non-root users who are just spectators in these tabs, root users can perform various operations. On the right-most side of each component item, there is a “block” icon (which becomes a “unblock/restore” icon when the component is being blocked). This icon can be used to toggle blocking status of that particular component. If you do not have [Global Component Blocking][settings_gcb] enabled or haven't applied blocking for the app before, you have to apply the changes using the **Apply rules** option in the top-right menu. You can also remove already applied rules using the same option (which would be read as **Remove rules** this time). You also have the ability to sort the component list to display blocked or tracker components on top of the list using the **Sort** option in the same menu. You can also disable all ad and tracker components using the **Block tracker** option in the menu. +Unlike non-root users who are mostly spectators in these tabs, root users can perform various operations. + +#### Blocking Components +On the right-most side of each component item, there is a “block” icon (which becomes a “unblock/restore” icon when the component is being blocked). This icon (actually, a button) can be used to toggle the blocking status of that particular component. If you do not have [Global Component Blocking][settings_gcb] enabled or haven't applied blocking for the app before, you have to apply the changes using the **Apply rules** option in three-dots menu. You can also remove already applied rules using the same option (which would be read as **Remove rules** this time). + +_See also: [FAQ: App Components][faq_ac]_ + +#### Blocking Trackers +You can disable tracker components using the **Block tracker** option in the three-dots menu. All tracker components will be blocked regardless of the tab you're currently in. + +::: tip Info +Tracker components are a subset of app components. Therefore, they are blocked using the same method used for blocking any other components. +::: _See also:_ +- _[FAQ: Tracker classes versus tracker components](../faq/app-components.md#tracker-classes-versus-tracker-components)_ - _[Scanner Page][scanner]_ -- _[FAQ: App Components][faq_ac]_ +- _[1-Click Ops Page: Block/Unblock Trackers](./one-click-ops-page.md#block-unblock-trackers)_ ## Permission Tabs -**App Ops**, **Uses Permissions** and **Permissions** tabs are related to permissions. In Android communication between apps or processes which do not have the same identity (known as _shared id_) often require permission(s). These permissions are managed by the permission controller. Some permissions are considered _normal_ permissions which are granted automatically if they appear in the application manifest, but _dangerous_ and _development_ permissions require confirmation from the user. [Colors](#color-codes) used in these tabs are explained above. +**App Ops**, **Uses Permissions** and **Permissions** tabs are related to permissions. In Android communication between apps or processes which do not have the same identity (known as _shared id_) often require permission(s). These permissions are managed by the permission controller. Some permissions are considered _normal_ permissions which are granted automatically if they appear in the application manifest, but _dangerous_ and _development_ permissions require confirmation from the user. [Colours](#colour-codes) used in these tabs are explained above. ::: details Table of Contents - [App Ops](#app-ops) @@ -137,7 +150,7 @@ _See also:_ ### App Ops **App Ops** stands for **Application Operations**. Since Android 4.3, _App Ops_ are used by Android system to control most of the application permissions. Each app op has a unique number associated with them which are closed inside first brackets in the App Ops tab. They also have private and optionally a public name. Some app ops are associated with _permissions_ as well. The dangerousness of an app op is decided based on the associated permission, and other informations such as _flags_, _permission name_, _permission description_, _package name_, _group_ are taken from the associated [permission](#permissions). Other information may include the following: -- **Mode.** It describes the current authorization status which can be _allow_, _deny_ (a rather misonomer, it simply means error), _ignore_ (it actually means deny), _default_ (inferred from a list of defaults set internally by the vendor), _foreground_ (in newer Androids, it means the app op can only be used when the app is running in foreground), and some custom modes set by the vendors (MIUI uses _ask_ and other modes with just numbers without any associated names). +- **Mode.** It describes the current authorisation status which can be _allow_, _deny_ (a rather misnomer, it simply means error), _ignore_ (it actually means deny), _default_ (inferred from a list of defaults set internally by the vendor), _foreground_ (in newer Androids, it means the app op can only be used when the app is running in foreground), and some custom modes set by the vendors (MIUI uses _ask_ and other modes with just numbers without any associated names). - **Duration.** The amount of time this app op has been used (there can be negative durations whose use cases are currently not known to me). - **Accept Time.** The last time the app op was accepted. - **Reject Time.** The last time the app op was rejected. @@ -157,7 +170,7 @@ _See also: [Technical Info: App Ops][1]_ ### Uses Permissions **Uses Permissions** are the permissions used by the application. This is named so because they are declared in the manifest using `uses-permission` tags. Informations such as _flags_, _permission name_, _permission description_, _package name_, _group_ are taken from the associated [permission](#permissions). -**Root and [ADB][2] users** can grant or revoke the _dangerous_ and _development_ permissions using the toggle button on the right side of each permission item. They can also revoke dangerous permissions all at once using the corresponding option in the menu. Only these two types of permissions can be revoked because Android doesn't allow modifiying _normal_ permissions (which most of them are). The only alternative is to edit the app manifest and remove these permissions from there. +**Root and [ADB][2] users** can grant or revoke the _dangerous_ and _development_ permissions using the toggle button on the right side of each permission item. They can also revoke dangerous permissions all at once using the corresponding option in the menu. Only these two types of permissions can be revoked because Android doesn't allow modifying _normal_ permissions (which most of them are). The only alternative is to edit the app manifest and remove these permissions from there. ::: tip Info Since dangerous permissions are revoked by default by the system, revoking all dangerous permissions is the same as resetting all permissions. @@ -179,15 +192,15 @@ Users can sort the permissions by permission name (in ascending order) or choose - **Group.** The group name associated with the permission (if any). Newer Androids do not seem to use group names which is why you'll usually see `android.permission-group.UNDEFINED` or no group name at all. ## Signatures Tab -**Signatures** are actually called signing info. An application is signed by one or more singing certificates by the application developers before publishing it. The integrity of an application (whether the app is from the actual developer and isn't modified by other people) can be checked using the signing info; because when an app is modified by a third-party unauthorized person, the app cannot be signed using the original certificate(s) again because the signing info are kept private by the actual developer. _How do you verify these signatures?_ Using checksums. Checksums are generated from the certificates themselves. If the developer supplies the checksums, you can match the checksums using the different checksums generated in the **Signatures** tab. For example, if you have downloaded App Manager from Github, Telegram Channel or IzzyOnDroid's repo, you can verify whether the app is actually released by me by simply matching the following _sha256_ checksum with the one displayed in this tab: +**Signatures** are actually called signing info. An application is signed by one or more singing certificates by the application developers before publishing it. The integrity of an application (whether the app is from the actual developer and isn't modified by other people) can be checked using the signing info; because when an app is modified by a third-party unauthorised person, the app cannot be signed using the original certificate(s) again because the signing info are kept private by the actual developer. _How do you verify these signatures?_ Using checksums. Checksums are generated from the certificates themselves. If the developer supplies the checksums, you can match the checksums using the different checksums generated in the **Signatures** tab. For example, if you have downloaded App Manager from Github, Telegram Channel or IzzyOnDroid's repo, you can verify whether the app is actually released by me by simply matching the following _SHA256_ checksum with the one displayed in this tab: ``` 320c0c0fe8cef873f2b554cb88c837f1512589dcced50c5b25c43c04596760ab ``` -There are three types of checksums displayed there: _md5_, _sha1_ and _sha256_. +There are three types of checksums displayed there: _MD5_, _SHA1_ and _SHA256_. ::: danger Caution -It is recommended that you verify signing info using only _sha256_ checksums or all three of them. DO NOT rely on _md5_ or _sha1_ checksums only as they are known to generate the same results for multiple certificates. +It is recommended that you verify signing info using only _SHA256_ checksums or all three of them. DO NOT rely on _MD5_ or _SHA1_ checksums only as they are known to generate the same results for multiple certificates. ::: ## Other Tabs diff --git a/docs/guide/backup-restore.md b/docs/guide/backup-restore.md index 990f3a26fb0..da15c6d976f 100755 --- a/docs/guide/backup-restore.md +++ b/docs/guide/backup-restore.md @@ -20,32 +20,32 @@ If one or more selected apps don't have any backup, the **Restore** and **Delete ::: ## Backup Options -Backup options (internally known as backup flags) let you customize your backups on the fly. However, the customizations will not be remembered for future backups. If you want customize this dialog, use [Backup Options][settings_bo] in the [Settings page][settings]. +Backup options (internally known as backup flags) let you customise the backups on the fly. However, the customisations will not be remembered for the future backups. If you want customise this dialog, use [Backup Options][settings_bo] in the [Settings page][settings]. A complete description of backup options is given below: -- **Source.** Whether to backup or restore the entire source directory. When you install an app, the apk files are saved inside /data/app/ along with any native libraries as well as some other files such as the odex and vdex files. This directory is called **source directory** or **code path**. You can further customize this using the **APK only** option (see below). -- **Data.** Whether to backup the internal data directories. These directories are located at /data/user/ and (for Android N or later) /data/user_de/. -- **External data.** Whether to backup data directories located at the internal memory as well as SD Card (if exists). External data directories often contain non-essential app data or media files (instead of using the dedicated media folder) and may increase the backup size. But it might be essential for some apps. Although it isn't checked by default (as it might dramatically increase backup size), you will need to check it in order to ensure a smooth restore of your backups. -- **Exclude cache.** Android apps have mutliple cache directories located at every data directories (both internal and external). There are two types of cache: **cache** and **code cache**. Enabling this option excludes both cache directories from all the data directories. It is generally advised to exclude cache directories since most apps don't clear the cache (for some reason, the only way an app can clear its cache is by deleting the entire cache directory) and usually handled by the OS itself. Apps such as Telegram may use very large cache (depending on the storage space) which may dramatically increase your backup size. -- **Blocking rules.** This option lets you backup blocking rules configured within App Manager. This might come in handy if you have customized permissions or block some components using App Manager as they will also be backed up or restored when you enable this option. -- **Skip signature checks.** When taking a backup, checksums for every file (as well as the signing certificate(s) of the base apk file) are generated and stored at `checksums.txt`. When you restore the backup, the checksums are generated again and are matched with the checksums stored in the said file. Enabling this option will disable the signature checks. This option is applied only when you restore a backup. During backup, the checksums are generated regardless of this option. +- **Source.** Whether to backup or restore the entire source directory. When you install an app, the APK files are stored inside the /data/app/ along with any native libraries as well as some other files such as the ODEX and VDEX files. This directory is called **source directory** or **code path**. You can further customise this using the **APK only** option. +- **APK only.** When you enable **Source** option, the whole source directory is backed up or restored. Enabling this along with **Source** will only backup or restore the APK files and skip backing up the native libraries or ODEX and VDEX files. +- **Data.** Whether to back up the internal data directories. These directories are located at /data/user/ and (for Android N or later) /data/user_de/. +- **External data.** Whether to back up data directories located in the internal memory as well as SD Card (if exists). External data directories often contain non-essential app data or media files (instead of using the dedicated media folder) and may increase the backup size. But it might be essential for some apps. Although it isn't checked by default (as it might dramatically increase the size of the backups), you will need to check it in order to ensure a smooth restore of your backups. +- **OBB and media.** Whether to back up or restore the OBB and the media directories located in the external storage or the SD Card. This is useful for games and some graphical software which actually use these folders. +- **Exclude cache.** Android apps have multiple cache directories located at every data directories (both internal and external). There are two types of cache: **cache** and **code cache**. Enabling this option excludes both cache directories from all the data directories. It is generally advised to exclude cache directories since most apps don't clear the cache (for some reason, the only way an app can clear its cache is by deleting the entire cache directory) and usually handled by the OS itself. Apps such as Telegram may use very large cache (depending on the storage space) which may dramatically increase your backup size. When it is enabled, AM also ignores backup from the **no_backup** directories. +- **Extras.** Whether to back up or restore app permissions, enabled by default. Note that, blocking rules are applied _after_ applying permissions. So, if a permission is also available in the blocking rules, it will be overwritten (i.e., the one from the blocking rules will be used). +- **Rules.** This option lets you back up blocking rules configured within App Manager. This might come in handy if you have customised permissions or block some components using App Manager as they will also be backed up or restored when you enable this option. +- **Backup Multiple.** Whether this is a multiple backup. By default backups are saved using their user ID. Enabling this option allows you to create additional backups. These backups use the current date-time as the default backup name but you can also specify custom backup name using the input field displayed when you click on the **Backup** button. +- **All users.** Backup or restore for all users instead of only the current user. _This option is obsolete and will be replaced with a more suitable option in future._ +- **Skip signature checks.** When taking a backup, checksum of every file (as well as the signing certificate(s) of the base APK file) is generated and stored in the `checksums.txt` file. When you restore the backup, the checksums are generated again and are matched with the checksums stored in the said file. Enabling this option will disable the signature checks. This option is applied only when you restore a backup. During backup, the checksums are generated regardless of this option. ::: warning Caution - You should always disable this option to ensure that you're backups are not modified by any third-party applications. But this only works if you enable encryption. + You should always disable this option to ensure that you're backups are not modified by any third-party applications. But checksum verification only works if you enable encryption. ::: -- **APK only.** When you enable **Source** option, the whole source directory is backed up or restored. Enabling this along with **Source** will only backup or restore the apk files and skip backing up native libraries or odex and vdex files. -- **OBB and media.** Whether to backup or restore the OBB and the media directories located at the external storage or SD Card. This is useful for games and some graphical software which actually use these folders. -- **All users.** Backup or restore for all users instead of only the current user. -- **Backup Multiple.** Whether this is a multiple backup. By default backups are saved using their user ID. Enabling this option allows you to create additional backups. These backups use the current datetime as the default backup name but you can also add custom backup name using the input field which is displayed when you click on the **Backup** button. -- **Permissions.** Whether to backup or restore app permissions, enabled by default. Note that, blocking rules are applied _after_ applying permissions. So, if a permission is also available in the blocking rules, it will be overwritten (i.e., the one from the blocking rules will be used). ::: tip Notice App Manager doesn't yet support restoring Storage Access Framework (SAF) rules. You have to enable them manually after restoring a backup. ::: ## Backup -Backup respects all the backup options except **Skip signature checks**. If base backups (i.e., backups that don't have the **Backup Multiple** option) already exist, you will get a warning as the backups will be overwritten. If **Backup Multiple** is set, you have an option to input the backup name or you can leave it blank to use the current datetime. +Backup respects all the backup options except **Skip signature checks**. If base backups (i.e., backups that don't have the **Backup Multiple** option) already exist, you will get a warning as the backups will be overwritten. If **Backup Multiple** is set, you have an option to input the backup name or you can leave it blank to use the current date-time. ## Restore -Restore respects all the backup options and will fail if **Source** option is set but the backup doesn't contain any source backups or in other cases, if the app isn't installed. When restoring backups of multiple packages, you can only restore the base backups (see [backup](#backup) section for an explanation). However, when restoring backups of a single package, you have the option to select which backup to restore. If **All users** option is set, AM will restore the selected backup for all users in the latter case but in the former case, it will restore base backups for the respective users. +Restore respects all the backup options and will fail if **Source** option is set but the backup doesn't contain any source backups or in other cases, if the app isn't installed. When restoring backups for multiple packages, you can only restore the base backups (see [backup](#backup) section for an explanation). However, when restoring backups for a single package, you have the option to select which backup to restore. If **All users** option is set, AM will restore the selected backup for all users in the latter case but in the former case, it will restore base backups for the respective users. ## Delete Backup Delete backup only respects **All users** option and when it is selected, only the base backups for all users will be deleted with a prompt. When deleting backups for a single package, another dialog will be displayed where you can select the backups to delete. diff --git a/docs/guide/main-page.md b/docs/guide/main-page.md index da7c2260ee5..d2ad6099cbe 100755 --- a/docs/guide/main-page.md +++ b/docs/guide/main-page.md @@ -13,16 +13,16 @@ Main page lists all the installed apps (or a list of apps supplied by any third- ## Batch Operations Batch operations or operation on multiple apps are also available within this page (most these operations require root or [ADB over TCP][1]). To enable multiple selection mode, click on any app icon or long click on any app. After that you can use the regular click to select apps instead of opening the [App Details][4] page. These operations include: -- Backup apk file (no root) +- Backup APK file (no root) - Backup/restore/delete app data (apk, dex, app data, etc.) - Clear data from apps - Disable/uninstall/kill apps - Disable run in background, ads and tracker components - Export blocking rules -## Color Codes -Here's a list of colors used in this page and their meaning: -- Light grayish orange (day) or dark blue (night) - App selected for batch operation +## Colour Codes +Here's a list of colours used in this page and their meaning: +- Light greyish orange (day) or dark blue (night) - App selected for batch operation - Light red (day) or very dark red (night) - Disabled app - Yellow Star - App is in debug mode - Orange _Date_ - App can read logs (permission granted) @@ -57,7 +57,7 @@ Apps listed on the main page can be sorted in different ways. The sorting prefer - _Package name_ - Sort in ascending order based on package names - _Last update_ - Sort in descending order based on the package update date (or install date if it is a newly installed package) - _Shared user ID_ - Sort in descending order based on kernel user id -- _App size/sdk_ - Sort in ascending order based on app sdk (sorting by app size in not currently available) +- _Target SDK_ - Sort in ascending order based on the target SDK - _Signature_ - Sort in ascending order based on app's signing info - _Disabled first_ - List disabled apps first - _Blocked first_ - Sort in descending order based on the number of blocked components diff --git a/docs/guide/one-click-ops-page.md b/docs/guide/one-click-ops-page.md index 3376629ea56..ddd5f8711a3 100755 --- a/docs/guide/one-click-ops-page.md +++ b/docs/guide/one-click-ops-page.md @@ -6,25 +6,26 @@ This page appears after clicking on the **1-Click Ops** option in the [main menu [[toc]] ::: -## Block Trackers -This option can be used to block or unblock ad or tracker components from all the installed apps. When clicking on this option, you will be offered to select whether to list all apps or only the user apps. Novice users should select user apps only. After that, a multichoice dialog box will appear where you can deselect the apps you want to exclude from this operation. Clicking on _block_ or _unblock_ will apply the changes immediately. +## Block/Unblock Trackers +This option can be used to block or unblock ad/tracker components from the installed apps. After you click on this option, you will be asked to select if AM will list trackers from all apps or only from the user apps. Novice users should avoid blocking trackers from the system apps in order to avoid consequences. After that, a multi-choice dialog box will appear where you can deselect the apps you want to exclude from this operation. Clicking _block_ or _unblock_ applies the changes immediately. ::: warning Notice -Certain apps may not function as expected after applying the blocking. If that is the case, remove blocking rules all at once or one by one using the corresponding [App Details][1] page. - +Certain apps may not function as expected after applying the blocking. If that is the case, remove blocking rules all at once or one by one in the component tabs of the corresponding [App Details][1] page. ::: -_See also: [How to unblock the tracker components blocked using 1-Click Ops or Batch Ops?](../faq/app-components.md#how-to-unblock-the-tracker-components-blocked-using-1-click-ops-or-batch-ops)_ +_See also:_ +- _[How to unblock the tracker components blocked using 1-Click Ops or Batch Ops?](../faq/app-components.md#how-to-unblock-the-tracker-components-blocked-using-1-click-ops-or-batch-ops)_ +- _[App Details Page: Blocking Trackers](app-details-page.md#blocking-trackers)_ ## Block Components… This option can be used to block certain app components denoted by the signatures. App signature is the full name or partial name of the components. For safety, it is recommended that you should add a `.` (dot) at the end of each partial signature name as the algorithm used here chooses all matched components in a greedy manner. You can insert more than one signature in which case all signatures have to be separated by spaces. Similar to the option above, there is an option to apply blocking to system apps as well. ::: danger Caution -If you are not aware of the consequences of blocking app components by signature(s), you should avoid usinig this setting as it may result in boot loop or soft brick, and you may have to apply factory reset in order to use your OS. +If you are not aware of the consequences of blocking app components by signature(s), you should avoid using this setting as it may result in boot loop or soft brick, and you may have to apply factory reset in order to use your OS. ::: -## Deny App Ops… -This option can be used to block certain [app operations](../tech/AppOps.md) of all or selected apps. You can insert more than one app op constants separated by spaces. It is not possible in advance to know all app op constants as they vary from device to device and OS to OS. To find the desired app op constant, browse the _App Ops_ tab in the [App Details][1] page. The constants are integers closed inside brackets next to each app op name. +## Set Mode for App Ops… +This option can be used to configure certain [app operations](../tech/AppOps.md) of all or selected apps. You can insert more than one app op constants separated by spaces. It is not always possible to know in advance about all the app op constants as they vary from device to device and from OS to OS. To find the desired app op constant, browse the _App Ops_ tab in the [App Details][1] page. The constants are integers closed inside brackets next to each app op name. You can also use the app op names. You also have select one of the [modes](../tech/AppOps.md#mode-constants) that will be applied against the app ops. ::: danger Caution Unless you are well informed about app ops and the consequences of blocking them, you should avoid using this feature as it may result in boot loop or soft brick, and you may have to apply factory reset in order to use your OS. diff --git a/docs/guide/profile-page.md b/docs/guide/profile-page.md index 3f27f197189..6df7bc77453 100755 --- a/docs/guide/profile-page.md +++ b/docs/guide/profile-page.md @@ -39,7 +39,7 @@ Denotes how certain configured options will behave. For instance, if _disable_ o ### Components This behaves the same way as the [Block Components…][block_components] option does in the 1-Click Ops page. However, this only applies for the selected packages. If the [state](#state) is _on_, the components will be blocked, and if the [state](#state) is _off_, the components will be unblocked. The option can be disabled (regardless of the inserted values) by clicking on the _disabled_ button on the input dialog. -_See also: [What are the app components?][what_are_compoents]_ +_See also: [What are the app components?][what_are_components]_ ### App Ops This behaves the same way as the [Deny App Ops…][deny_app_ops] option does in the 1-Click Ops page. However, this only applies for the selected packages. If the [state](#state) is _on_, the app ops will be denied, and if the [state](#state) is _off_, the app ops will be allowed. The option can be disabled (regardless of the inserted values) by clicking on the _disabled_ button on the input dialog. @@ -78,7 +78,7 @@ Enabling this option will enable APK backup for the selected packages. This is n [profiles]: ./profiles-page.md [block_components]: ./one-click-ops-page.md#block-components -[what_are_compoents]: ../faq/app-components.md#what-are-the-app-components +[what_are_components]: ../faq/app-components.md#what-are-the-app-components [deny_app_ops]: ./one-click-ops-page.md##deny-app-ops [backup_options]: ./backup-restore.md#backup-options [backup_restore]: ./backup-restore.md diff --git a/docs/guide/profiles-page.md b/docs/guide/profiles-page.md index d64462967f8..ed4454cbafe 100755 --- a/docs/guide/profiles-page.md +++ b/docs/guide/profiles-page.md @@ -10,7 +10,7 @@ Profiles page can be accessed from the options menu in the main page. It display ## Options Menu There are two options menu in this page. The three dots menu at the top-right offers two options such as _presets_ and _import_. -- **Presets.** Presets option lists a number of built-in profiles that can be used as an starting point. The profiles are generated from the project [Universal Android Debloater][uad]. +- **Presets.** Presets option lists a number of built-in profiles that can be used as a starting point. The profiles are generated from the project [Universal Android Debloater][uad]. _See also: [What are bloatware and how to remove them?][faq_bloatware]_ - **Import.** This option can be used to import an existing profile. diff --git a/docs/guide/scanner-page.md b/docs/guide/scanner-page.md index 93d1ed42037..f26c5fa42f3 100755 --- a/docs/guide/scanner-page.md +++ b/docs/guide/scanner-page.md @@ -11,12 +11,16 @@ tags: # Scanner Page **Scanner page** appears after clicking on the _scanner_ button in the [App Info tab][app_info]. External APK files can also be opened for scanning from file managers, web browsers, etc. -It scans for trackers & libraries and display the number of trackers & libraries as a summary. It also displays checksums of the apk file as well as the signing certificate(s). +It scans for trackers and libraries, and display the number of trackers and libraries as a summary. It also displays checksums of the APK file as well as the signing certificate(s). + +::: danger Disclaimer +AM only scans an app statically. An app may provide the options for opting out, or in some cases, certain features of the tracker may not be used at all by the app (such as F-Droid), or some apps may simply use them as placeholders to prevent breaking certain features (such as Fennec F-Droid). The intention of the scanner is to give you an idea about what the APK might contain. It should be taken as an initial step for further investigations. +::: Clicking on the first item (i.e. number of classes) opens a new page containing a list of tracker classes for the app. All classes can also be viewed by clicking on the _Toggle Class Listing_ menu. A sneak-peek of each class can be viewed by simply clicking on any class item. ::: warning Notice -Due to various limitations, it is not possible to scan all the components of an apk file. This is especially true if an apk is highly obfuscated. The scanner also does not check strings (or website signatures). +Due to various limitations, it is not possible to scan all the components of an APK file. This is especially true if an APK is highly obfuscated. The scanner also does not check strings (or website signatures). ::: The second item lists the number of trackers along with their names. Clicking on the item displays a dialog containing the name of trackers, matched signatures and the number of classes against each signature. The tracker names may have some prefixes such as: diff --git a/docs/guide/settings-page.md b/docs/guide/settings-page.md index 0956c1a7fd5..b7bc3be6408 100755 --- a/docs/guide/settings-page.md +++ b/docs/guide/settings-page.md @@ -3,7 +3,7 @@ next: false sidebarDepth: 2 --- # Settings Page -Settings can be used to customize the behavior of the app. +Settings can be used to customise the behaviour of the app. ::: details Table of Contents [[toc]] @@ -15,17 +15,19 @@ Configure in-app language. App Manager current supports 12 (twelve) languages. ## App Theme Configure in-app theme. -## Usage Access -Turning off this option disables the **App Usage** page as well as _data usage_ and _app storage info_ in the [App Info tab][3]. With this option turned off, App Manager will never ask for _Usage Access_ permission - -## Root Mode -Enable or disable root mode. +## Mode of Operation +You can select one of the four options: +- **Auto.** Let AM select the suitable option for you. Although this is the default option, it may cause problems in some devices. +- **Root.** Select root mode. AM will request for root permission if not already granted. But when selected, AM will run in root mode even if you don't allow root. This may cause crashes, therefore, you shouldn't enable it if you haven't granted root. +- **ADB over TCP.** Enable [ADB over TCP][1] mode. AM may hang indefinitely if you haven't enabled ADB over TCP. +- **No-root.** AM runs in no-root mode. AM will perform better if this is enabled but all the root/ADB features will be disabled. -::: tip -To use [ADB][1], root mode has to be disabled at first and then preferably after a relaunch, ADB mode will be detected automatically. -::: +## Usage Access +Turning off this option disables the **App Usage** page as well as _data usage_ and _app storage info_ in the [App Info tab][3]. With this option turned off, App Manager will never ask for _Usage Access_ permission. -_See also: [ADB over TCP][1]_ +## APK Signing +### Signature schemes +Select the [signature schemes](https://source.android.com/security/apksigning) to use. It is recommended that you use at least v1 and v2 signature schemes. Use the _Reset to Default_ button in case you're confused. ## Rules @@ -47,7 +49,7 @@ _See also: [App Manager: Rules Specification][rules_spec]_ Export blocking rules for all apps configured within App Manager. This may include [app components][what_are_components], app ops and permissions based on what options is/are selected in the multichoice options. #### Import -Import previously exported blocking rules from App Manager. Similar to export, this may include [app components][what_are_components], app ops and permissions based on what options is/are selected in the multichoice options. +Import previously exported blocking rules from App Manager. Similar to export, this may include [app components][what_are_components], app ops and permissions based on what options is/are selected in the multi-choice options. #### Import Existing Rules Add components disabled by other apps to App Manager. App Manager only keeps track of component disabled within App Manager. If you use other tools to block app components, you can use this tools to import these disabled components. Clicking on this option triggers a search for disabled components and will lists apps with components disabled by user. For safety, all the apps are unselected by default. You can manually select the apps in the list and re-apply the blocking through App Manager. @@ -69,6 +71,21 @@ Import blocking rules from [Blocker][4], each file containing rules for a single ### Remove all rules One-click option to remove all rules configured within App Manager. This will enable all blocked components, app ops will be set to their default values and permissions will be granted. +## Installer +Installer specific options + +### Show users in installer +For root/ADB users, a list of users will be displayed before installing the app. The app will be installed only for the specified user (or all users if selected). + +### Sign APK +Whether to sign the APK files before installing the app. See [APK signing](#apk-signing) section above to configure signing. + +### Install location +Choose APK install location. This can be one of _auto_, _internal only_ and _prefer external_. Depending on Android version, the last option may not always install the app in the external storage. + +### Installer App +Select the installer app, useful for some apps which explicitly checks for installer. This only works for root/ADB users. + ## Backup/Restore Settings related to [backup/restore][backup_restore]. @@ -76,15 +93,21 @@ Settings related to [backup/restore][backup_restore]. Set which compression method to be used during backups. App Manager supports GZip and BZip2 compression methods, GZip being the default compression method. It doesn't affect the restore of an existing backup. ### Backup Options -Customize the backup/restore dialog. +Customise the backup/restore dialog. + +### Backup apps with Android KeyStore +Allow backup of apps that has entries in the Android KeyStore (disabled by default). Some apps (such as Signal) may crash if restored. KeyStore backup also doesn't work from Android 9 but still kept as many apps having KeyStore can be restored without problem. -### OpenPGP provider -Set OpenPGP provider in order to encrypt backups. +### Encryption +Set an encryption method for the backups. AM currently supports OpenPGP only. ::: warning Caution -As of v2.5.16, App Manager doesn't remember key IDs for a particular backup. You have to remember them yourself. +In v2.5.16, App Manager doesn't remember key IDs for a particular backup. You have to remember them yourself. This has been fixed in v2.5.18. ::: +## Device Info +Display Android version, security, CPU, GPU, battery, memory, screen, languages, user info, etc. + [1]: ./adb-over-tcp.md [2]: ./app-details-page.md [3]: ./app-details-page.md#app-info-tab