2019.3.28 Magisk v19.0

I would say this is one of my most ambitious release of all time! Due to the extremely massive changes, this release will be a public beta. Calling it v18.2 doesn’t do it justice, so v19.0 we go.

Magisk Module installer

Magisk module developers: pay extra attention! A completely new Magisk Module Installer replaces the old Magisk module template. This new format decouples ALL installation logic from modules, and encourages developers to use the provided API for installation. This new format is ENFORCED, meaning all existing modules should upgrade ASAP, and new modules are REQUIRED to follow the rules.

Carefully read through the updated docs!

Warning: All existing modules that does not use the new module format will be automatically removed on May 1st, 2019. Module devs: upgrade your existing modules ASAP!

Imageless Magisk

Since the existence of Magisk, all modules are stored within an EXT4 image which will be loop mounted at boot. This approach has a few problems: resizing the image is a huge headache (no live resizing, resize2fs on some devices refuse to work properly), and also MANY devices using F2FS ships a broken driver with the kernel, causing EXT4 loop devices unable to be mounted at all. All these problems come to an end now: modules are now directly stored in /data! Backwards compatibility is provided, for modules that uses the official module template, installation should work just fine.

Warning: Although module migration was tested, there are still chances that your modules will get lost in the process. Be prepared to reinstall your existing modules in that case.

Native 64 Bit is Back

At one point in history, Magisk uses native 64 binaries. However due to binary size considerations, all binaries was switched to 32 bit. Starting from v19, all static binaries are still 32 bit only, but the most important part: the main magisk binary now runs in native 64 bit on supported devices.

Zygote Ptrace Based MagiskHide

MagiskHide used to use logcat to monitor activity manager events for new process creation. That method is extremely unreliable: even with constant improvements since introduction, it is still not working 100% of the time. Here comes a fundamentally new approach: ptrace the zygote process and step through all fork events. In layman’s term, this new method is able to target a process before it even starts to run! The code for it is extremely tricky, but it was tested for quite a while in the canary channel, so I’m confident enough to release this to the public :)

Android Q

Full support for Android Q Beta 1 is also introduced in this release. However, you cannot use it on the Pixel 3 (XL) due to the fact that Google decided to use logical partitions on the 3rd gen Pixels starting with Q. A solution is still WIP, please stay tuned!

Final Words

What you can expect in upcoming releases: Samsung S10 support, and full logical partition support. Also, I AM aware of Google Pay issues, but these are not my main focus now since there are still tons of other issues for me to focus on. Several discussion threads on XDA provide seemingly working solutions, please do some research on your own.

Full Changelog: here