mirror of
https://github.com/topjohnwu/Magisk.git
synced 2024-12-25 06:17:38 +00:00
topjohnwu
adf95ce3a0
Read fstab from device tree
In previous versions, magiskinit will not early mount if /sepolicy is detected. However on OP5/5T latest betas, the devices are fully trebelized, but for some reason the file /sepolicy still exists, making magiskinit think it is NOT a treble device and doesn't work properly. So to properly fix this issue, I will have to use the "official" way - check fstab in device trees. Any block mentioned in the fstab in device trees are supposed to be early mounted. Currently magiskinit will only mount system and vendor even if other partitions exists in the dtb fstab, since other partitions are not used to construct sepolicy (currently). These changes can also fix #373, since we dynamically detect PARTNAME from device trees.
Magisk
Building Environment Requirements
- Python 3.5+: run
build.py
script - Java Development Kit (JDK) 8: Compile Magisk Manager and sign zips
- Latest Android SDK: set
ANDROID_HOME
environment variable to the path to Android SDK - Android NDK: Install NDK along with SDK (
$ANDROID_HOME/ndk-bundle
), or optionally specify a custom pathANDROID_NDK_HOME
- (Windows Only) Python package Colorama: Install with
pip install colorama
, used for ANSI color codes
Building Notes and Instructions
- Building is tested on macOS, Ubuntu, and Windows 10 using the latest stable NDK and NDK r10e. Officially released binaries were built with NDK r10e.
- Set configurations in
config.prop
. A sample fileconfig.prop.sample
is provided as an example. - Run
build.py
with argument-h
to see the built-in help message. The-h
option also works for each supported actions, e.g../build.py binary -h
- By default,
build.py
build binaries and Magisk Manager in debug mode. If you want to build Magisk Manager in release mode (via the--release
flag), you need a Java Keystore filerelease-key.jks
to sign Magisk Manager's APK. For more information, check out Google's Official Documentation. - The SafetyNet extension pack requires the full Magisk Manager as a
compileOnly
dependency. Build the release APK, convert it back to Java.class
files (I use dex2jar), and place the converted JAR undersnet/libs
before compiling.
License
Magisk, including all git submodules are free software:
you can redistribute it and/or modify it under the terms of the
GNU General Public License as published by the Free Software Foundation,
either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Credits
MagiskManager (app
)
- Copyright 2016-2018, John Wu (@topjohnwu)
- All contributors and translators on Github
MagiskSU (native/jni/su
)
- Copyright 2016-2018, John Wu (@topjohnwu)
- Copyright 2015, Pierre-Hugues Husson (phh@phh.me)
- Copyright 2013, Koushik Dutta (@koush)
- Copyright 2010, Adam Shanks (@ChainsDD)
- Copyright 2008, Zinx Verituse (@zinxv)
MagiskPolicy (native/jni/magiskpolicy
)
- Copyright 2016-2018, John Wu (@topjohnwu)
- Copyright 2015, Pierre-Hugues Husson (phh@phh.me)
- Copyright 2015, Joshua Brindle (@joshua_brindle)
MagiskHide (native/jni/magiskhide
)
- Copyright 2016-2018, John Wu (@topjohnwu)
- Copyright 2016, Pierre-Hugues Husson (phh@phh.me)
resetprop (native/jni/resetprop
)
- Copyright 2016-2018 John Wu (@topjohnwu)
- Copyright 2016 nkk71 (nkk71x@gmail.com)
External Dependencies (native/jni/external
)
- Makefile for busybox, generated by ndk-busybox-kitchen
- Each dependencies has its own license/copyright information in each subdirectory.
All of them are either GPL or GPL compatible.
Others Not Mentioned
- Copyright 2016-2018, John Wu (@topjohnwu)
Languages
C++
36.6%
Kotlin
30.4%
Rust
16.4%
Java
9%
Shell
4.9%
Other
2.6%