[Magisk] topjohnwu:
2017.12.26 Magisk v15.0

Merry Christmas! And wow it has been quite some while since the last stable release. Well it's Christmas, let's drag Magisk out of the eternal beta!

To wrap up the changes from v14 to v15, there are two major parts: update Magisk to be modular and adaptive to follow Google's Pixel concept, and completely remove all possible traces of the existence of Magisk.

Ever since I added Pixel support to Magisk, I have been amazed by how Google has designed this whole new system: modding a device has changed completely. I am a strong advocate of these new changes, praising the effort Google has put into designing such weird but fascinating setup despite many view this as "moves against developers". With the announcement of Project Treble, all devices will go through the same "Pixel-ize" treatment, so this future is inevitable. Project Treble is all about "modular", and Magisk has been rewritten to embrace this concept. I have spent extra effort to backport the changes made requires to run on these new modern devices to downward support all devices, so we do not need 2 drastically different installation methods: every single device running Magisk shares the same setup. Most things are now all dynamic, a single binary can handle all sorts of configurations, constructing the environment adaptively, and for Treble enabled devices even works when modular parts are swapped out. Fun fact: for Pixel devices, we only need a single init binary to boot up and properly run Magisk!

The second major part is to theoretically hide Magisk from any possible detection methods. Tons of hints/signal/traces of the existence of Magisk are now removed, and Magisk Manager supports repackaging to completely hide from naive package name detections. These changes requires some major redesign in Magisk structure and previous paths.

The above is a quick recap of what has happened in the past 3 months. The following are some important announcements.

New Template 1500

Magisk v14.5+ has gone through some major redesigns, but thankfully backward compatibility is done to fully support down to vanilla 1400 template. Most existing modules using 1400 template as a base should still install and work fine, however module developers might need to do some minor updates to properly support v15.0, depending on how the developer has implemented things. The new 1500 template strips out even more logic within the module, making it nearly a stub to just call functions from the external util_functions.sh, a script which will be installed along with Magisk. This gives me the ability to fix issues and do adjustments in Magisk's implementation without modules needing to do any adjustments. The template is very unlikely to change in near future, so module developers feel safe to migrate all modules to the new template.

Some notes: in 1500 template, the entry "template" in module.prop is now changed to "minMagisk". Since some talented developers do not use the template, calling it "template" doesn't seem to make much sense to them, that's why I renamed them to "minMagisk", to what the value actually means: the minimum required Magisk version. But don't worry, the two keywords "template" and "minMagisk" is 100% interoperable, you can use either in your module.prop, choose the one that makes sense to you.

Magisk Repo Submission Server

Previously, adding a new module requires me to manually clone developers repo to the online repo, and manually add them to collaborators to allow upgrading. It is quite a pain, and if I was busy I don't even bother to do so, so this causes many submission requests to piled up. I written a server to fix this issue (the code of the server is also open source). The new server will not only monitor the requests and process them within seconds, but also acts as a moderator to make sure all submitted and existing repos are setup properly and not outdated. 10+ incorrectly configured/extremely outdated modules are already removed from the online repo.

New submissions should create issues here: Magisk_Repo_Submissions, the instructions are updated to assist developers to submit and properly maintain their modules. Please note that once you created a new issue for submission, it shall be addressed within seconds if my server is up. The server is currently running on my laptop, so it will not always be online, but overall your requests should be addressed in no more than a day (I don't think I will leave my laptop without Internet for more than a day lol)

This release mostly fixes some small but critical bugs present in the last beta, users running into issues should try out this build. Those coming from v14.6, check the changelogs for all the changes in detail.