Commit Graph

1391 Commits

Author SHA1 Message Date
topjohnwu 1060dd2906 Random refactoring 2021-01-23 13:26:28 -08:00
topjohnwu 5798536559 Remove unnecessary hacks 2021-01-22 20:25:37 -08:00
topjohnwu c87fdbea0f Fix erroneous stream close 2021-01-22 03:07:39 -08:00
topjohnwu ec8fffe61c Merge Magisk install zip into Magisk Manager
Distribute Magisk directly with Magisk Manager APK. The APK will
contain all required binaries and scripts for installation and
uninstallation. App versions will now align with Magisk releases.

Extra effort is spent to make the APK itself also a flashable zip that
can be used in custom recoveries, so those still prefer to install
Magisk with recoveries will not be affected with this change.

As a bonus, this makes the whole installation and uninstallation
process 100% offline. The existing Magisk Manager was not really
functional without an Internet connection, as the installation process
was highly tied to zips hosted on the server.

An additional bonus: since all binaries are now shipped as "native
libraries" of the APK, we can finally bump the target SDK version
higher than 28. The target SDK version was stuck at 28 for a long time
because newer SELinux restricts running executables from internal
storage. More details can be found here: https://github.com/termux/termux-app/issues/1072
The target SDK bump will be addressed in a future commit.

Co-authored with @vvb2060
2021-01-22 02:29:54 -08:00
topjohnwu 9100186dce Make emulator direct install env fix 2021-01-18 13:32:10 -08:00
topjohnwu 5a71998b4e Stop embedding magisk in magiskinit 2021-01-18 04:25:26 -08:00
topjohnwu b5b62e03af Fix copySepolicyRules logic 2021-01-16 21:45:45 -08:00
Rikka 95a5b57265 Remove "Flashing" overlay
Fix #3579, fix #3250
2021-01-15 21:28:59 -08:00
vvb2060 20be99ec8a Restore mistakenly deleted codes 2021-01-15 19:59:55 -08:00
topjohnwu 79dfdb29e7 Minor tweaks for patching tar files 2021-01-11 19:47:36 -08:00
topjohnwu 5ce29c30d2 Fix sepolicy copying 2021-01-10 20:16:02 -08:00
topjohnwu 79fa0d3a90 Hide selection improvements 2020-12-30 16:40:22 -08:00
topjohnwu 8e61080a4a Preparation for hiding isolated processes 2020-12-30 15:55:53 -08:00
topjohnwu f983bfc883 Embed keys into dex files 2020-12-26 21:33:30 -08:00
topjohnwu 9a707236b8 Move signing code into main app sources 2020-12-26 17:03:10 -08:00
topjohnwu d089698475 Don't use root for logging getprop
Might contain sensitive info that shouldn't be shared
2020-12-19 23:09:36 -08:00
vvb2060 8ed2dd6687 Skip query for log files and patched boot file 2020-12-19 22:26:10 -08:00
vvb2060 50305ca1fe Support save manager log 2020-12-19 22:25:44 -08:00
vvb2060 3e91567636 Add a suffix to magisk_patched.img
prevent it from being used as input file
2020-12-19 21:53:16 -08:00
vvb2060 984f32f994 Move copy_sepolicy_rules to manager
We don’t need it when patch boot
2020-12-19 13:58:53 -08:00
topjohnwu 1232113772 Update preference migration implementation
Only try to read preference through content provider when the app
is fresh install and a previous package ID is set. Also catch all
Exceptions to prevent crashing the app.

This prevents malicious settings injection and crashes when multiple
manager is installed.

Fix #3542
2020-12-09 02:07:58 -08:00
vvb2060 039d4936cb Disable superuser fragment properly 2020-12-09 01:16:30 -08:00
topjohnwu 784dd80965 Update MediaStoreUtils 2020-12-09 01:15:56 -08:00
vvb2060 1ffe9bd83b Fix update channel without description on release build 2020-12-09 00:40:33 -08:00
vvb2060 ec1af9dc1e Delete useless arrays 2020-12-09 00:17:58 -08:00
vvb2060 ff4cea229a Check environment on emulator
We need to test modules on emulator.
2020-12-09 00:16:27 -08:00
vvb2060 3f81f9371f Disable installation while downloading metadata 2020-12-09 00:16:13 -08:00
vvb2060 60e89a7d22 Ignore manager not installed state 2020-12-09 00:15:58 -08:00
vvb2060 c50daa5c9e Allow restore boot when no network 2020-12-09 00:15:41 -08:00
topjohnwu 58d00ab863 Remove some warnings 2020-12-07 00:06:02 -08:00
RikkaW 4dbf7eb04b Fix spacing in module filter list 2020-12-06 23:49:23 -08:00
RikkaW a39577c44d Fix extra spacing in module list 2020-12-06 23:49:23 -08:00
topjohnwu a848f10bba Update Kotlin 2020-11-23 12:35:24 -08:00
RikkaW 0df891b336 Handle window insets with a new way
For example, switching pages in home should only have scale and alpha animations, but a "translate y" animation shows. This is because Data Binding is triggered later (like "in the next frame"), causing the animation runs before view attribute changes.

This commit introduces WindowInsetsHelper class and use it to handle all window insets. With the help of LayoutInflaterFactory from the previous commit, we can control insets behavior by adding our attributes to the XML and anything is done by WindowInsetsHelper class.

As changes are highly coupling, this commit also contains new ItemDecoration for lists, replacing the random combination of padding and empty drawable. And "fixEdgeEffect" extension for RecyclerView, making edge effects respect padding.
2020-11-19 23:24:39 -08:00
RikkaW 385853a290 Introduce LayoutInflaterFactory
This add the ability touch layout XML instantiates process. And most importantly, we can access AttributeSet, making custom view attribute possible.

Some other changes requires this.
2020-11-19 23:24:39 -08:00
RikkaW fa3ef8a1c1 Significantly simplify MagiskDialog layout
The goal of original implementation, wrap view again and again, seems to be use the shadow and customizable round corners from MaterialCardView. But this can be done with use MaterialShapeDrawable which used in MaterialCardView directly. This will significantly simplify the layout and MagiskDialog class.
2020-11-19 23:21:36 -08:00
RikkaW c93ada03c7 Implement Edge-to-edge with newer APIs
The implementation adds a "Base" family styles, making creating themes across multiple API versions more clearer and easier.
2020-11-19 23:21:36 -08:00
topjohnwu 9241246de6 Only use MediaStore APIs on Android 11+
Fix #3428
2020-11-13 02:53:30 -08:00
topjohnwu 2739d3cb67 Update PayPal link 2020-11-07 15:10:10 -08:00
vvb2060 e9759a5868 Update HideViewModel 2020-11-07 14:47:44 -08:00
topjohnwu 16e4c67992 Significantly broaden sepolicy.rule compatibility
Previously, Magisk uses persist or cache for storing modules' custom
sepolicy rules. In this commit, we significantly broaden its
compatibility and also prevent mounting errors.

The persist partition is non-standard and also critical for Snapdragon
devices, so we prefer not to use it by default.

We will go through the following logic to find the best suitable
non-volatile, writable location to store and load sepolicy.rule files:

Unencrypted data -> FBE data unencrypted dir -> cache -> metadata -> persist

This should cover almost all possible cases: very old devices have
cache partitions; newer devices will use FBE; latest devices will use
metadata FBE (which guarantees a metadata parition); and finally,
all Snapdragon devices have the persist partition (as a last resort).

Fix #3179
2020-11-02 23:20:38 -08:00
topjohnwu 0d11f73a1d Handle unexpected exceptions
Fix #3276
2020-10-22 03:09:05 -07:00
vvb2060 533cb8eb58 Tapjacking protection 2020-10-22 02:40:47 -07:00
vvb2060 4a7c3c06bc Disable hide/restore when no remote info 2020-10-20 23:56:44 -07:00
vvb2060 da93bbc1fe Fix network 2020-10-20 23:56:21 -07:00
topjohnwu fa2dbe981e Handle retrofit errors 2020-10-20 03:03:40 -07:00
vvb2060 468796c23d Add option to show OS apps 2020-10-17 05:57:43 -07:00
vvb2060 5833aadef5 Silence kotlin warnings 2020-10-17 05:57:35 -07:00
vvb2060 a4c48847d1 Cancel vibration to sync with notification channel 2020-10-17 05:56:07 -07:00
vvb2060 43288be091 Prevent dot in the first position 2020-10-17 05:55:58 -07:00