App Manager | CHANNEL – Telegram
App Manager v2.6.0 Stable

All the changes introduced in v2.5.21, v2.5.22, v2.5.23, v2.5.24, and the ones below:
- New Feature: Log Viewer (accessible from the main menu, “running” tag in the app info page and three-dots menu in each item of the running apps page).
- New Language: Arabic
- [Feature] Removed unAPKM from the app as newer APKMs are no longer encrypted. (Use UnAPKM extension from F-Droid to continue to decrypt the encrypted APKM files.)
- [Feature] Added AES and RSA encryption (AES/GCM/NoPadding with 12 bytes IV) for backups
- [Feature] Added clear cache option in ADB mode
- [Feature] Added compatibility support for mobile data usage in old operating systems
- [Feature] Added colour codes to the “backup” tag in the main page denoting the age of the backups: Red => Uninstalled, Dark cyan => Up to date backup, Orange => Outdated backup
- [Feature] Added filter by profile in the main page
- [Feature] Added options to disable log viewer
- [Feature] Added select all button in various multiple choice dialogs
- [Feature] Added the ability to import (JKS, BKS and PKCS #12 KeyStores and PK8 formatted private key and PEM certificate) and generate signing keys
- [Feature] Added the option to import/export App Manager's KeyStore. It's a typical Bouncy Castle KeyStore in BKS extension
- [Feature] Added SAF tag in the app info page for apps that uses storage access framework. Clicking on it lists the granted URIs.
- [Feature] Added Verify and redo backups and back up apps with changes in 1-click ops page (in the back up section)
- [Feature] Display native libraries alongside shared libraries in the shared libs tab
- [Feature] Display file names that could not be imported (when importing files from Blocker or Watt)
- [Feature] Improved formatting of the backup info dialogs
- [Feature] Moved usage access to enable/disable features in the settings page
- [Feature] Organized settings by moving a rules and installer settings to a different fragment
- [Feature] Replaced block trackers with block/unblock trackers
- [Feature] Store backup hashes in the database to detect changes in data (will be enhanced in future)
- [Feature] Updated trackers and libraries
- [Fix] Renamed global component blocking to instant component blocking
- [Fix] Renamed Backup APK to Save APK
- [Fix] Removed the backup option Source and renamed APK only to APK files
- [Fix] Replaced the backup option Data with Internal data. External data no longer depends on this option.
- [Fix] Replaced the backup option Exclude cache with Cache (i.e., the flag has been inverted).
- [Fix] Avoided crash in the app details page when device configuration (night mode, orientation, etc.) changes
- [Fix] Backup URI grants only for the given users
- [Fix] Fixed a crash occurs occasionally when detecting whether an app is running
- [Fix] Fixed a crash when yesterday data isn't available in the app usage page
- [Fix] Fixed a crash when back button is pressed immediately after pressing the add button in the profile page
- [Fix] Fixed backup service from hanging if it encounters invalid file types
- [Fix] Fixed fetching storage info for users other than the current user
- [Fix] Fixed hidden API restriction bypass issue for Android 11 (which unfortunately increased the APK size)
- [Fix] Fixed displaying wrong data usage in Android Lollipop devices
- [Fix] Fixed restoring backups with symbolic links
- [Fix] Foreground service notification is removed immediately after the operation is complete

Notice: After restoring apps that use SAF and SSAID, the device has to be restarted immediately.
Currently, the users are not notified if a restart is necessary after restoring a backup.
If you are in confusion, make sure to restart your device after restoring a backup.
👍2
NOTICE: If you are upgrading from a previous release, you must restart your device.
👍1
How back up/restore works in App Manager

[See related docs here.]

App Manager has introduced the first usable Android backup technology for the privacy enthusiasts. It's designed from scratch keeping privacy and security in mind. It's the first backup software that offers some form of verification to ensure the integrity of the backups, to ensure that the backups you've made are not meddled with, at the same time, leaving some way to restore them using third-party tools or even with noscripting languages. Issue #30 on GitHub describes my initial approaches which was further enhanced a number of times before it was become stable. This feature was introduced in v2.5.16 as an alpha feature and in v2.5.24 as a beta feature.

What does it back up? It backs up a number of data from an app which includes apk files, OBB files, app data (internal, external), permissions, app ops, network policies, battery optimization status, notification permission, uri grants (in Storage Access Framework) and SSAID. This may not seem a lot but I don’t know a single app that does as much (there is a non-free app which is pretty close to mine but it has many limitation and often restriction as well).

What format does it use? Backups are archived in tar format, compressed using either GZip or BZip2 (based on user preferences). We use standard extensions with a fixed naming convention so that they can be parsed using third-party noscripts. SD cards are often formatted in FAT32 which means the size of a single file can't be more than 4GB. As a result, each archive is split into multiple parts if necessary. Rules that you configure in App Manager are stored in a csv file in the standard rules file format. Extras such as permissions, app ops, SSAID are also stored in a separate csv file in the same format. App metadata are stored in a JSON file. Lastly, the checksums are stored in a normal text file using the same format used by the sha*sum commands in Linux (to make the parsing easier by third-party scrips).

How backups are protected? Currently AM supports OpenPGP (via OpenKeychain, a highly recommended app to manage your PGP keys on Android), RSA and AES. For now, encryptions are not enforced, but I highly recommend you to adopt an encryption otherwise your personal information could be accessed by other apps which have access to the storage and they can even manipulate the backups (creators of botnets are often smarter than you think!). RSA and AES keys can be configured in AM and they are stored in an internal Bouncy Castle KeyStore. If you try configure RSA or AES, you will be asked for the KeyStore password and the alias password for the key. The passwords are encrypted using a key generated and stored at Android KeyStore so that we don’t have to rely on the KeyStore in order to allow backups. You can also export or import the entire KeyStore in case you want to switch device or simply use a third-party tool. Since the KeyStore password is only known to you (and hopefully, you won’t tell to others), your backups can only be restored by you.
Everything but metadata are encrypted (if you allow encryption). Metadata not only contains information about the app but also information about the backup and encryption such as the AES key (for RSA), nonce (for RSA and AES) and key IDs (for OpenPGP). The checksum file contains the checksum of all files except the checksum itself. As a result, manipulating an encrypted backup is almost impossible. There is still one or two security issues that I have to deal with but are mostly related to how backups are made or restored and nothing to do with the backup themselves.
👍1
Limitations. Along with other issues Android is not made to store snapshots of apps’ activities. After restoring a backup, one would expect the app to be in the same state as before but this is not possible on Android without taking a snapshot of the entire operating system. The apps that use Android KeyStore may not restore correctly due to how Android KeyStore works and how the app interacts with it which is why their backups are disable by default. Apps with SSAID and Storage Access Framework only works correctly after a restart because the new configurations can only be written to disks (not in memory) which are read only during the boot.

This is just the beginning of my exploring the Android ecosystem. There's still more to work on and to improve. However, it is a tale told by an idiot, full of sound and fury, signifying nothing.
👍1
F-Droid users: App Manager is back on F-Droid!
👍1
Starting from v2.6.0, the INTERNET permission is only required for the ADB-over-TCP users. If you're blocking network permission (despite our repeated assurance) and the mode of operation is set to auto, you may get stuck in the initialization screen forever depending on how the permission is blocked. So, make sure to change mode of operation to the desired one before doing so. In reality, had we chosen to be decisive about how the INTERNET permission is used, we would've been able to connect to the Internet without the permission using root. The FAQ will be updated in the next version.

PS: We've considered using an Internet extension for the ADB users but consensus suggests that a large number of users rely on ADB over TCP, and future features such as blocking network signatures may require this permission.
👍2
App Manager v2.6.1 Stable

This patch release contains bug fixes and minor features. It also provides fixes for a few security vulnerabilities. Therefore, it is recommended for all users. Crash-related fixes are annotated with [Crash].

- New Feature: Wireless debugging for Android 11. Due to licensing issues, ADB pairing couldn't be implemented. See notes below.
- Improvement: Fixed various issues with mode of operations, especially ADB
- Improvement: Fixed loading app list in some Android 6 devices
- Improvement: Improved loading app icons
- Improvement: Move from RestrictionBypass to HiddenApiBypass, saves more than 300 KB
- [Feature] Added more debloat profiles: Fujitsu, HTC, Korean and Japanese carriers, Tencent, Toshiba and Vivo. They are added from different sources and are not well-tested.
- [Feature] Added support for ADB via TLS-1.3
- [Feature] Added date-time in the backup info dialog prompt
- [Feature] Display APK verification status in the scanner page
- [Feature] Display suspended and hidden tags for the respective apps in the app info tab
- [Feature] Display unknown netpolicies and Lineage OS specific netpolicies
- [Feature] Prompt user to confirm falling back to no-root when root/ADB is not working/detected
- [Feature] Updated trackers, libraries and translations
- [Fix] Display changes for the external APK for the same version code
- [Fix] Display error message as toast if the activity cannot be launched in the interceptor page
- [Fix] Display “no changes” instead of empty what's new dialog
- [Fix] Enforced privileged execution of hidden APIs in root/ADB mode
- [Fix] Fixed backing up external folders for the given user (instead of nothing if the user is not the current user)
- [Fix] Fixed backing up keystore due to the use of illegal escape characters
- [Fix] Fixed extracting OBB files for the given user (instead of the current user)
- [Fix] Fixed importing RSA or signing keys
- [Fix] Fixed indefinite loading issue in the app info tab if SSAID couldn't be loaded
- [Fix] Fixed installing apps uninstalled without clearing user data (and signature)
- [Fix] Fixed listing unsupported app ops
- [Fix] Fixed opening apps on Aurora Store
- [Fix] Fixed prompting user to confirm ADB connection even if the user clicked “Always allow from this computer”
- [Fix] Load app details page for hidden apps
- [Fix] Made the key name in the shared preferences editor dialog scrollable and selectable
- [Fix] Match running services based on package name and user ID instead of just package name
- [Fix] Store ADB keys in App Manager keystore
- [Fix] Skip running remote server in root mode
- [Crash] On trying to configure RSA encryption
- [Crash] On trying to open an uninstalled system app when the installer feature is disabled
- [Crash] On trying to open the permissions tab on Android 12
- [Crash] On trying to reopen the interceptor
- [Crash] On searching in the main page with certain character combinations
- [Crash] On trying to save logs in a zip file
- [Crash] When external storage is not available for writing logs

Notes

In order to use wireless debugging, first enable ADB over TCP as usual and select Always allow from this computer. When App Manager is working on this mode, enable wireless debugging, and then, go to App Manager settings and change Mode of Operations to Wireless Debugging. At this point, App Manager should display a prompt where the port number from the wireless debugging window should be inserted. With this mode enabled, App Manager will display this prompt everytime it requires the port number. As always, remember to disable wireless debugging once App Manager's initialization screen goes away. Unless you're using MIUI, you won't need to enable wireless debugging until the next restart.

Aurora Store 4.0.5 (and later) have introduced promotional apps. As a result, we stopped supporting these versions. You can still use the previous versions without issues.
👍1
Today (31 May 2021) marks one year of App Manager as the very first release was made on this day last year.

To be honest, I never knew that App Manager would go this far (who knows the future, anyway?). Some of its users might be interested to know what went into my mind during that time or what inspired me to do it as they did in the past. However, to my regret, I don't remember anything at all!
👍1
For ADB users only.

ADB requires generating and storing RSA key pairs which is similar to but not the same as HTTPS requests. As stated in the v2.6.1 changelog, ADB keypairs are now stored in App Manager’s built-in KeyStore (previously, it was stored in the cache folder) in order to improve security. KeyStore, as the name suggests, is a file where various keys and certificates can be stored securely. However, in order to provide actual security, KeyStore has to be encrypted with a password. Each key in the KeyStore has a name, called alias. As a result, if you’re opening AM for the first time or after an update, App Manager will require you to create or insert your KeyStore password. After that, it will also require you to insert a password for an alias called adb_rsa. The second step is optional. You can leave it empty and just proceed in which case the default KeyStore password will be used.

Why it needs a password while apps like Signal don’t?
Signal uses the Android-provided KeyStore (which is very secure) directly which means they generate and/or store all their encryption/singing keys and certificates via/into Android KeyStore. As a result, the databases and preferences used by Signal are not portable. In order to make them portable, they had to implement a backup system where you have to remember (or save) a new password (or a key). App Manager uses its own KeyStore with custom password provided by the user. The password is, then, encrypted with an AES key generated from (and stored into) Android KeyStore, and the encrypted password is stored in App Manager’s unencrypted preferences so that the user do not have to insert the KeyStore password repeatedly. We have taken this approach so that the KeyStore maybe backed up and restored without issues. This also won’t crash App Manager when you back up and restore App Manager using App Manager itself or any other backup solutions.
👍1
SetEdit_v2.0.apk
2.6 MB
SetEdit v2.0

- Option to export list as a JSON file
- Material design with App Manager-style theme
- Support for Android 11 and gesture navigation
and some other minor improvements.
1👍1
Screenshots
1👍1
SetEdit_v2.1.apk
2.6 MB
SetEdit v2.1

- Enabled searching for settings tables
- Added the ability to change app theme
- Ability to copy permission command from the dialog prompt.
👍1
I couldn’t make a scheduled release today (28 June) due to extreme weather. I’ll try tomorrow!
👍1
App Manager v2.6.2 Stable

This patch release contains critical bug fixes for the back up/restore feature.

- [Feature] Added new batch operation: clear cache
- [Feature] Back up permission flags (restoring is not currently possible)
- [Feature] Display permission flags on long clicking on a supported permission item
- [Feature] Improved uses features tab: Unavailable features have light-red color, unavailable but required features have dark-red color
- [Feature] Updated focusability in some pages to improve keyboard/remote navigation
- [Feature] Updated libraries and trackers
- [Fix] Added backward compatibility for ADB over TCP
- [Fix] Fixed filter out in log viewer
- [Fix] Fixed MIUI-specific app ops issue in Android 11
- [Fix] Fixed relative path issue in back up/restore
- [Fix] Fixed returning the wrong manifest if the APK has multiple manifests
- [Fix] Added workaround for Android KeyStore bug in older Android versions
- [Crash] Display error message instead of crashing in the activity interceptor page
- [Crash] Fixed random crashes in the app info page
- [Crash] On trying to uninstall an app in Android Lollipop
- [Crash] When configuring RSA encryption or signing info
- [Crash] When a package has changed but the executor has been shutdown
- [Crash] When a package has changed after exiting its app info page
- [Crash] NPE on running apps page

Note: Aurora Store 4.0.6 reverted promotional apps, therefore, the support has been re-added. Only 4.0.5 is unsupported.
👍2