App Manager | DEBUG – Telegram
App Manager | DEBUG
2.11K subscribers
104 photos
2 videos
2.33K files
1.79K links
Read policies here before downloading: https://github.com/MuntashirAkon/AMInsecureDebugBuilds

RELEASE channel: @AppManagerChannel
Download Telegram
App Manager | DEBUG
How should I adopt the new Material Design 3 in App Manager?
I think we’re quite clear on what the most users want. Since somebody down-voted on the poll, I believe it is necessary to clarify things a bit regarding why I’ve been migrating to M3 only a few days after it’s been released:

The Material Design 2 has too many flaws and inconsistencies. I mean I’ve had to make many customizations just to make things look good, but even then, it wasn’t enough as I was modernizing the UI by adding the all-new technologies such as the bottom sheet dialog or chips. But the primary issue with M2 is its colours. While it is possible to tolerate the light theme, the dark theme was too white (as complained by many). As a result, I’ve needed to apply different hacks to actually replace the light-gray colours with more black ones, and adding new components have been very difficult. With M3, the developers have done quite impressive work on the colours and consistency (although there are still some minor catches and framework-imposed limitations) which has made it easy and exciting to work on designs.

However, we will go through a series of tests before deciding on the final designs. I am trying to follow M3 guidelines as close as possible but I might have to bend rules in a few cases or places. As always, be sure to report any UI/UX issues as it is not possible to find all the issues all by myself in such a massive project as this one.
🔥5👍1
With the release of Magisk v24.x, I will be adding support for Magisk DenyList. However, this will not replace MagiskHide e.g. if you have both MagiskHide and DenyList, both options will show up. For back up/restore, the MagiskHide rules will be applied as Magisk DenyList if MagiskHide could not be detected.

Those who still don’t know what Magisk DenyList is:
It is a new functionality (introduced in Magisk v24.0) that hides Magisk and all its components (effectively hiding the root). However, it requires that you enable both Zygisk and DenyList in the settings page of Magisk. Although this replaced MagiskHide, it is not the same as MagiskHide because MagiskHide can also tweak certain build properties to attempt to evade SafetyNet detection. Consequently, the number of tweaks have become so many that John Wu had a hard time keep track of them (and this shouldn’t be something Magisk should do). As a result, they have been now available as separate Magisk modules. One of such magisk modules is Universal SafetyNet Fix which is actively being developed by Danny Lin, Chris Renshaw (Magisk contributor), et al.
🔥5
AM Debug v2.7.0 Run#1670

Refactor Migrate to Material 3

A partial migration to Material 3 library with the App Manager's custom colours
removed. This also removes many unneeded hacks and workarounds required for
Material Design 2 (MD2) library. In addition, several custom components are
added or derived based on the Material guidelines which are not present in the
material-components libraries. They include:

1. SwipeRefreshLayout (based on AndroidX's SwipeRefreshLayout). This component
lets a developer set SRL background and animation colours via attributes.
2. AlertDialogBuilder (based on MaterialAlertDialogBuilder and
AlertDialog.Builder) capable of displaying a dialog that opens in
full-screen mode in small devices as per the Material guidelines. This
component is currently unstable.
3. DialogTitleBuilder capable of setting icon, noscript, supporting text (official
MaterialAlertDialogBuilder lacks the support for supporting text) as per
Material guidelines. It generates a view that can be set using
AlertDialogBuilder's setCustomTitle().
4. FullScreenDialogTitleBuilder capable of generating the noscript section for a
full-screen dialog. This is internally used by AlertDialogBuilder to
generate full-screen dialog.

All the layout files have been refactored to apply the Material 3 changes
along with some UI changes. They include:

1. In the app usage page, data usage for mobile networks were shown using an
M prefix and data usage for Wi-Fi networks were shown using a W prefix.
They have been replaced with an Android phone icon and a Wi-Fi icon
respectively.
2. In the activities tab in the app details page, the size of the shortcut
buttons were reduced in order to make them less prominent.
3. In the log viewer page, the contents of the “Search by” dialog have been
made more straight-forward to let users know that they are actually
filterable options. The information in the dialog can also be selected
(and copied).
4. Key generator and changelogs dialogs in the settings page are displayed in
full-screen in small devices.
5. Fast scrolling capabilities are added in the app info tab, the running apps
page and the app usage page.
6. The “Reset to default” button in the interceptor page has been made less
prominent.

Finally, there are some known issues:
1. Bottom sheet dialogs are not respecting the Material 3 guidelines.
2. Dialog noscript section isn't following the Material 3 guidelines (partly
because material-components library itself does not follow them).
3. Spinners (also known as combobox in some languages) should be replaced with
their counterparts in the material-components library.
4. Some texts in App Manager are too small.

Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
🔥3
App Manager | DEBUG
AM Debug v2.7.0 Run#1670 Refactor Migrate to Material 3 A partial migration to Material 3 library with the App Manager's custom colours removed. This also removes many unneeded hacks and workarounds required for Material Design 2 (MD2) library. In addition…
NOTE: I haven’t added support for dynamic colours yet. Due to a large amount of changes, thus, a slow response from the IDE due to my PC having not enough memory, I wasn’t about to test out all the features and I didn’t run any integration tests. So, this might cause certain issues depending on your Android versions. Be sure to report any issues that you might be facing. Also, the poll (above) is still open. You can still change your mind after testing out the new colours.
👍4🔥1🎉1
AM Debug v2.7.0 Run#1671

Refactor Fix various issues

1. Fix a compatibility issue that prevented pre-Marshmallow devices from
displaying “About the device” page
2. Fix FileNotFound issue in some versions of Android in the instructions page
3. Fix displaying wrong icon for “View in Settings” in the app info tab
4. Reveal RunningAppsActivity for unprivileged users. Although it can display
only one app (App Manager) in Android 7.0 and later, it might be useful to
see the memory (and swap) usage in the long run.

Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
🔥2
AM Debug v2.7.0 Run#1672

AppDetails Fix displaying info for permissions whose app ops are set to foreground

Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
🔥2
AM Debug v2.7.0 Run#1673

AppDetails Fix empty app ops page in Android 12

In addition, prevent the list of app ops from being truncated for no-root users
(android.permission.GET_APP_OPS_STATS is granted via ADB)

Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
🔥3
App Manager | DEBUG
How should I adopt the new Material Design 3 in App Manager?
By the way, those who are interested in privacy may want to look at this blogpost: https://fingerprintjs.com/blog/how-android-wallpaper-images-threaten-privacy/

It’s always better to use the PWA version of an app (if available) if you don’t trust the corporation behind it, but you badly need it for some reason.
🔥5😱1
AM Debug v2.7.0 Run#1674

Refactor Make PendingIntent of crash-report notification mutable

Making PendingIntent immutable has rendered it unusable in MIUI.

Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
🔥2
AM Debug v2.7.0 Run#1675

AppDetails Fix missing permissions

Some permissions were not displayed in the “uses permissions” tab in old
Android versions because App Manager was trying to retrieve app ops associated
with the permissions that did not exist at that time.

Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
🔥2
AM Debug v2.7.0 Run#1676

AppOps Add new app ops from Android 12

Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
👍1🔥1
App Manager | DEBUG
AM Debug v2.7.0 Run#1676 AppOps Add new app ops from Android 12 Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
In the latest update of Android 12, Three more app ops have been added, namely NEARBY_WIFI_DEVICES, ESTABLISH_VPN_SERVICE and ESTABLISH_VPN_MANAGER.
🔥4
AM Debug v2.7.0 Run#1677

Refactor Fix startup issues related to authentication

On startup or starting any activities, App Manager has to ensure the following:
1. If security is enabled, App Manager prompts for a security check. At
present, this only works if the device has password, pin or pattern lock.
2. After (1) is completed with success, it checks for the configured mode of
operation and calculates how the mode of operation should be handled:
i. If the mode of operation is set to auto, it tries to detect root/ADB
every time the app is opened i.e. a new session1 is created.
Auto-detection of ADB is enhanced to scan possible port numbers other
than 5555 which has a timeout of 7 (seven) seconds. Therefore, for
no-root users, it is more efficient if the mode of operation is set to
no-root.
ii. If the mode of operation is set to root, it tries to launch a remote
service2 using root. If the attempt is failed, App Manager will fall
back to the no-root mode for the session.
iii. If the mode of operation is set to ADB over TCP, it tries to detect
the port number with a timeout of 10 seconds or uses a pre-configured
port number (in most cases, it is 5555). Otherwise, it falls back to
the no-root mode for the session. This could be set as the default mode
of operation for Wireless Debugging to prevent further hassle if the
pairing has already been completed or App Manager has previously been
connected via ADB over TCP. This is because the same key is used for
configuring both Wireless Debugging and ADB over TCP.3
iv. If the mode of operation is set to Wireless Debugging, it tries to
detect and connect to the first available port number within 5 (five)
seconds. If it fails to detect or connect to a port, it will display a
dialog to let users choose between connecting and pairing. If pairing
is selected, a dialog will be displayed where it is possible to enter a
pairing code and the associated port number. After the pairing is
finished or connect is selected in the previous dialog, it will display
a dialog where the port number of the wireless debugging has to be
entered.
Upon failure to use any of the above options, it tries one last time
to autodetect a port number and falls back to the no-root mode for the
session if it cannot.

Known issues:
1. Auto-detection of port number may not be required for the old versions of
Android. Therefore, setting a timeout of 7 or 10 seconds could be costly on
these devices.
2. Sometimes auto-detection of port number may not work due to timeout.

Notes:
1 A session is the amount time an application runs without completely exiting
itself. Consequently, this depends on a lot of factors such as the removal
of the app from the recents, battery optimization and the amount of free
memory at a given time.
2 Remote service in App Manager runs inside root (UID 0) or ADB (UID 2000 or
0 depending on the device configuration). The communication between remote
service and App Manager is done via Binder.
3 ADB over TCP is known as ADB over Network in Lineage OS 17 and earlier.

Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
👍2🔥2