2016-09-14 04:31:13 +02:00
# Magisk
2016-11-08 22:16:03 +01:00
2017-06-03 20:49:24 +02:00
## How to build Magisk
2017-04-22 11:08:47 +02:00
2017-10-31 10:05:24 +01:00
#### Building has been tested on 3 major platforms: macOS, Ubuntu, Windows 10
2017-06-03 20:49:24 +02:00
2017-11-11 21:17:56 +01:00
### Environment Requirements
2017-06-03 20:49:24 +02:00
2017-08-20 09:03:26 +02:00
1. A 64-bit machine: `cmake` for Android is only available in 64-bit
2017-11-11 21:17:56 +01:00
2. Python 3.5+: run `build.py` script
3. Java Development Kit (JDK) 8: Compile Magisk Manager and sign zips
4. Latest Android SDK: `ANDROID_HOME` environment variable should point to the Android SDK folder
2017-11-23 16:55:33 +01:00
5. Android NDK: Install NDK along with SDK (`$ANDROID_HOME/ndk-bundle`), or specify custom path `ANDROID_NDK`
2017-12-04 15:59:29 +01:00
6. (Windows Only) Python package Colorama: Install with `pip install colorama`, used for ANSI color codes
2017-11-11 21:17:56 +01:00
7. (Unix only) C compiler: Build `zipadjust`. Windows users can use the pre-built `zipadjust.exe`
2017-06-03 20:49:24 +02:00
2017-11-11 21:17:56 +01:00
### Instructions and Notes
2017-12-04 15:59:29 +01:00
1. Magisk can be built with the latest NDK (r16 as of writing), however binaries released officially will be built with NDK r10e due to ELF incompatibilities with the binaries built from the newer NDKs.
2. The easiest way to setup the environment is by importing this folder as an Android Studio project. The IDE will download required components and construct the environment for you. You still have to set the `ANDROID_HOME` environment variable to point to the SDK path.
3. 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`
4. Build everything with `build.py`, don't directly call `gradlew` or `ndk-build`, since most requires special setup / dependencies.
5. By default, `build.py` will build binaries and Magisk Manager in debug mode. If you want to build Magisk Manager in release mode (through the flag `--release`), you will need to place a Java Keystore file at `release_signature.jks` to sign Magisk Manager's APK. For more information, check out [Google's Official Documentation](https://developer.android.com/studio/publish/app-signing.html#signing-manually).
2017-08-20 09:03:26 +02:00
2017-06-03 20:49:24 +02:00
## License
2017-04-22 11:08:47 +02:00
2017-08-20 09:03:26 +02:00
```
2017-10-31 10:05:24 +01:00
Magisk, including all git submodules are free software:
2017-08-20 09:03:26 +02:00
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.
2017-04-22 11:08:47 +02:00
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/>.
2017-08-20 09:03:26 +02:00
```
2017-04-22 11:08:47 +02:00
2017-06-03 20:49:24 +02:00
## Credits
2017-12-04 08:21:06 +01:00
**MagiskManager** (`app`)
2017-08-20 09:03:26 +02:00
2017-06-03 20:49:24 +02:00
* Copyright 2016-2017, John Wu (@topjohnwu)
2017-12-04 15:59:29 +01:00
* All contributors and translators on Github
2017-04-22 11:08:47 +02:00
2017-12-04 08:21:06 +01:00
**MagiskSU** (`core/jni/su`)
2017-08-20 09:03:26 +02:00
2017-04-22 11:08:47 +02:00
* Copyright 2016-2017, 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)
2017-12-04 08:21:06 +01:00
**MagiskPolicy** (`core/jni/magiskpolicy`)
2017-08-20 09:03:26 +02:00
2017-04-22 11:08:47 +02:00
* Copyright 2016-2017, John Wu (@topjohnwu)
* Copyright 2015, Pierre-Hugues Husson (phh@phh.me)
* Copyright 2015, Joshua Brindle (@joshua_brindle)
2017-12-04 08:21:06 +01:00
**MagiskHide** (`core/jni/magiskhide`)
2017-08-20 09:03:26 +02:00
2017-04-27 21:36:16 +02:00
* Copyright 2016-2017, John Wu (@topjohnwu)
2017-10-31 10:05:24 +01:00
* Copyright 2016, Pierre-Hugues Husson (phh@phh.me)
2017-04-27 21:36:16 +02:00
2017-12-04 08:21:06 +01:00
**resetprop** (`core/jni/resetprop`)
2017-08-20 09:03:26 +02:00
2017-04-22 11:08:47 +02:00
* Copyright 2016-2017 John Wu (@topjohnwu)
* Copyright 2016 nkk71 (nkk71x@gmail.com)
2017-07-30 18:59:41 +02:00
2017-12-04 15:59:29 +01:00
**External Dependencies** (`core/jni/external`)
2017-08-20 09:03:26 +02:00
2017-12-04 15:59:29 +01:00
* Makefile for busybox, generated by [ndk-busybox-kitchen](https://github.com/topjohnwu/ndk-busybox-kitchen)
* Each dependencies has its own license/copyright information in each subdirectory.
All of them are either GPL or GPL compatible.
2017-04-22 11:08:47 +02:00
2017-12-04 15:59:29 +01:00
**Others Not Mentioned**
2017-08-20 09:03:26 +02:00
2017-04-22 11:08:47 +02:00
* Copyright 2016-2017, John Wu (@topjohnwu)