App Manager | CHANNEL – Telegram
Release Types, Schedules and Sources

App Manager has several types of releases based on user requirements and stability.

1. Stable release. Stable releases like any good software are very infrequent and long term supported. In future, when we finally reach v2.6, we will follow the major.minor.patch version naming instead of 2.major.minor and provide special fixes for stable releases so that users can continue to use stable releases without switching to pre-release. (Non-linear versioning is difficult to handle but we will do that anyway to improve experience for the stable release users.) Stable releases are available on GitHub, F-Droid (may lag behind updates) or Telegram channel.

2. Pre-release. Pre-releases are the unstable releases that are usually made when the number of commits has reached or surpassed 100 (with the exception of the source code being too unstable). Prereleases are discontinued. Use debug releases instead.

3. Debug release. Debug releases are usually served on each push to the repository. This is for the people who want to try out features as they are rolled out and want to contribute to App Manager by sorting out issues. Debug builds use a different package name and a signature, and can be installed side by side with the normal releases. Signature used in debug builds is public and, therefore, they should only be installed from a trusted source such as GitHub actions and Telegram channel.

Unofficial sources may distribute modified versions of App Manager, and none but you shall be responsible for the consequences of using such distributions.
👍21
App Manager v2.5.24 Pre-release

- [Feature] New language: Tradition Chinese
- [Feature] Added filter by uninstalled apps, apps without backups in the main page
- [Feature] Added wildcard support for app ops and permissions for profiles. * can be used instead of specifying app ops or permissions to revoke all configured/dangerous permissions/app ops
- [Feature] Allow specifying custom installer package which may or may not be installed
- [Feature] App icons are cached to improve load time
- [Feature] Complete rewrite of running apps internals in Java
- [Feature] Copy package name on clicking on the package name in the app info tab
- [Feature] Display file size, requirement, etc. for split APKs in the APK selection dialog
- [Feature] Display version and tracker info in the install confirmation dialog
- [Feature] Display uninstalled system apps and display installation prompt on clicking them
- [Feature] Improved ADB detection and persistence of such detection
- [Feature] Removed toybox along with its dependencies
- [Feature] Updated trackers and libraries
- [Feature] Updated credits
- [Feature] Utilise multiple CPUs for back up/restore
- [Feature] Verify copied checksum with the checksum of the signing certificate of the app on clicking on the app icon in the app info page
- [Fix] Added additional verifications to ensure that screen lock is not bypassed
- [Fix] Fixed back up/restore failure on some Android devices
- [Fix] Fixed crashes in the app details page when system configuration changes
- [Fix] Fixed crash on creating shortcuts on devices that do not support pin shortcut
- [Fix] Fixed generating wrong checksum for certificates in the signatures tab
- [Fix] Fixed uninstalling app for multiple users
- [Fix] Fixed various crashes on opening APK files from external apps
- [Fix] Hide backup option if one of the selected apps is not installed
- [Fix] Verify KeyStore backups during restoring a backup
1👍1
We're now hitting a major release (v2.6.0). This is going to be the first long term supported release, i.e. this will be the first version of app manager to receive patches until the next stable release is made.

App Manager is something I made for myself and never really thought that it would reach so much audiences. Now, I can feel that there are many people like me who were waiting for an app that would help them replace privacy invading, non-free apps as well as help those who're suffering from the guilt of using cracked software. The development of App Manager was so fast because I've spent a lot of time analysing other not-so-usable and, often abandoned projects which has given me insights on how to implement such features. I'm also working very hard to ensure security of the data because a rooting app itself is never fully secured (and you're welcome to find any security issues!).

Therefore, it's time to change the name of the app to something special so that it can be uniquely identified (the package name will still be the same though and the old repository will be redirected to the new one).

The best name will be chosen based on the apps functions and/or creativity, and the person will be credited in the about section!

Post your ideas here: https://github.com/MuntashirAkon/AppManager/issues/339
👍21
For developers only.

As you might know that sun.security API is hidden in Android and some important features can’t be used such as creating a new X509 certificate or Java KeyStore, I’ve ported sun.security from JDK 7 and can be used as a library to manage Java KeyStore (JKS) as well as PKCS #12. It can also be used to import PKCS #8 formatted private keys. See README here to learn more about its usage: https://github.com/MuntashirAkon/sun-security-android. If you're looking for a Java library to sign and verify APK files, take a look at my Android port of the apksig library here: https://github.com/MuntashirAkon/apksig-android.

This library is developed as part of App Manager’s upcoming feature which would allow users to import signing/encryption keys from Java KeyStore or create new signing/encryption keys.
👍2
App Manager v2.6.0 “First” Stable Release

Introducing Backups
Back up/restore feature is now finally out of beta! Read the corresponding guide to understand how it works.
Introducing Log Viewer
Log viewer is essentially a front-end for logcat. It can be used to filter logs by tag or pid (process ID), or even by custom filters. Log levels AKA verbosity can also be configured. You can also save, share and manage logs.
Lock App Manager
Lock App Manager with the screen lock configured for your device.
Extended Modes for App Ops
You can set any mode for any app ops that your device supports, either from the 1-click ops page or from the app ops tab.
New Batch Ops: Add to Profile
You can now easily add selected apps to an existing profile using the batch operations.
App Info: Improved
App info tab now has many options, including the ability to change SSAID, network policy (i.e. background network usage), battery optimization, etc. Most of the tags used in this tab are also clickable, and if you click on them, you will be able to look at the current state or configure them right away.
Advanced Sort and Filtering Options in the Main Page
Sort and filter options are now replaced by List Options which is highly configurable, including the ability to filter using profiles.
About This Device
Interested in knowing about your device in just one page? Go to the bottom of the settings page.
Enable/disable Features
Not interested in all the features that AM offers? You can disable some features in settings.
New Languages
AM now has more than 19 languages! New languages include Arabic, Farsi, Japanese and Traditional Chinese.
Signing the APK Files
You can now import external signing keys in AM! For security, App Manager has its own encrypted KeyStore which can also be imported or exported.
New Extension: UnAPKM
Since APKMirror has removed encryption from their APKM files, it’s no longer necessary to decrypt them. As a result, the option to decrypt APKM files has been removed. Instead, this option is now provided by the UnAPKM extension which you can grab from F-Droid. So, if you have an encrypted APKM file and have this extension installed, you can open the file directly in AM.

This is a promotional changelog, the typical changelog will be displayed when the APK is uploaded 30 minutes later. Foods for thought, eh?
👍1
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