├── app
├── shared
│ ├── .gitignore
│ ├── build.gradle.kts
│ └── src
│ │ ├── debug
│ │ └── AndroidManifest.xml
│ │ └── main
│ │ └── java
│ │ └── com
│ │ └── topjohnwu
│ │ └── magisk
│ │ ├── ProviderInstaller.java
│ │ └── utils
│ │ └── CompoundEnumeration.java
├── src
│ └── main
│ │ ├── res
│ │ ├── font
│ │ │ └── googlesans.ttf
│ │ ├── values
│ │ │ ├── ids.xml
│ │ │ ├── theme_overlay.xml
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── resources.xml
│ │ │ ├── attrs.xml
│ │ │ └── styles_md2.xml
│ │ ├── values-night
│ │ │ ├── styles_md2.xml
│ │ │ ├── colors.xml
│ │ │ └── themes.xml
│ │ ├── drawable
│ │ │ ├── shape_divider.xml
│ │ │ ├── ic_logo.xml
│ │ │ ├── ic_splash_activity.xml
│ │ │ ├── ic_superuser_filled_md2.xml
│ │ │ ├── bg_line_top_rounded.xml
│ │ │ ├── bg_line_bottom_rounded.xml
│ │ │ ├── ic_divider.xml
│ │ │ ├── ic_add.xml
│ │ │ ├── ic_paint.xml
│ │ │ ├── sc_extension.xml
│ │ │ ├── sc_superuser.xml
│ │ │ ├── ic_update.xml
│ │ │ ├── ic_superuser_outlined_md2.xml
│ │ │ ├── ic_favorite.xml
│ │ │ ├── ic_home_filled_md2.xml
│ │ │ ├── ic_patreon.xml
│ │ │ ├── ic_update_md2.xml
│ │ │ ├── ic_device.xml
│ │ │ ├── ic_folder_list.xml
│ │ │ ├── ic_notifications_filled_md2.xml
│ │ │ ├── ic_check_md2.xml
│ │ │ ├── ic_more.xml
│ │ │ ├── ic_download_md2.xml
│ │ │ ├── ic_superuser.xml
│ │ │ ├── ic_home_outlined_md2.xml
│ │ │ ├── ic_install.xml
│ │ │ ├── ic_loop.xml
│ │ │ ├── ic_save_md2.xml
│ │ │ ├── ic_check_circle_unchecked_md2.xml
│ │ │ ├── ic_check_circle_checked_md2.xml
│ │ │ ├── ic_download.xml
│ │ │ ├── ic_close_md2.xml
│ │ │ ├── ic_back_md2.xml
│ │ │ ├── ic_notifications_md2.xml
│ │ │ ├── ic_dns.xml
│ │ │ ├── ic_translate.xml
│ │ │ ├── ic_delete_md2.xml
│ │ │ ├── ic_order_name.xml
│ │ │ ├── ic_extension.xml
│ │ │ ├── ic_search_md2.xml
│ │ │ ├── ic_module_filled_md2.xml
│ │ │ ├── ic_restart.xml
│ │ │ ├── ic_day.xml
│ │ │ ├── ic_multiuser.xml
│ │ │ ├── ic_forth_md2.xml
│ │ │ ├── ic_magisk_delete.xml
│ │ │ ├── ic_bug_md2.xml
│ │ │ ├── ic_home_md2.xml
│ │ │ ├── ic_module_md2.xml
│ │ │ ├── ic_bug_filled_md2.xml
│ │ │ ├── ic_settings_md2.xml
│ │ │ ├── ic_superuser_md2.xml
│ │ │ ├── ic_bug_outlined_md2.xml
│ │ │ ├── ic_module_outlined_md2.xml
│ │ │ ├── ic_restore.xml
│ │ │ ├── ic_shortcut.xml
│ │ │ ├── ic_check_circle_md2.xml
│ │ │ ├── ic_hide.xml
│ │ │ ├── ic_night.xml
│ │ │ ├── ic_refresh_data_md2.xml
│ │ │ ├── ic_day_night.xml
│ │ │ ├── ic_twitter.xml
│ │ │ ├── ic_github.xml
│ │ │ ├── ic_settings_filled_md2.xml
│ │ │ └── ic_manager.xml
│ │ ├── color
│ │ │ ├── color_error_transient.xml
│ │ │ ├── color_primary_transient.xml
│ │ │ ├── color_text_transient.xml
│ │ │ ├── color_on_primary_transient.xml
│ │ │ ├── color_card_background_color_selector.xml
│ │ │ ├── color_primary_error_transient.xml
│ │ │ ├── color_menu_tint.xml
│ │ │ └── color_state_primary_transient.xml
│ │ ├── drawable-v26
│ │ │ ├── ic_launcher.xml
│ │ │ ├── sc_extension.xml
│ │ │ └── sc_superuser.xml
│ │ ├── menu
│ │ │ ├── menu_flash.xml
│ │ │ ├── menu_theme.xml
│ │ │ ├── menu_log_md2.xml
│ │ │ ├── menu_home_md2.xml
│ │ │ ├── menu_deny_md2.xml
│ │ │ ├── menu_reboot.xml
│ │ │ └── menu_bottom_nav.xml
│ │ ├── values-v28
│ │ │ └── styles_md2_impl.xml
│ │ ├── values-v27
│ │ │ └── themes.xml
│ │ ├── anim
│ │ │ ├── fragment_enter.xml
│ │ │ ├── fragment_exit.xml
│ │ │ ├── fragment_enter_pop.xml
│ │ │ └── fragment_exit_pop.xml
│ │ ├── layout
│ │ │ ├── item_spinner.xml
│ │ │ ├── item_console_md2.xml
│ │ │ ├── item_log_textview.xml
│ │ │ ├── item_text.xml
│ │ │ ├── markdown_window_md2.xml
│ │ │ ├── item_module_download.xml
│ │ │ ├── item_list_single_line.xml
│ │ │ ├── fragment_theme_md2.xml
│ │ │ └── item_icon_link.xml
│ │ └── values-v31
│ │ │ └── themes.xml
│ │ ├── aidl
│ │ └── com
│ │ │ └── topjohnwu
│ │ │ └── magisk
│ │ │ └── core
│ │ │ └── utils
│ │ │ └── IRootUtils.aidl
│ │ └── java
│ │ ├── com
│ │ └── topjohnwu
│ │ │ └── magisk
│ │ │ ├── view
│ │ │ ├── TextItem.kt
│ │ │ └── TappableHeadlineItem.kt
│ │ │ ├── core
│ │ │ ├── base
│ │ │ │ ├── BaseJobService.kt
│ │ │ │ ├── BaseReceiver.kt
│ │ │ │ ├── BaseService.kt
│ │ │ │ └── BaseProvider.kt
│ │ │ ├── model
│ │ │ │ ├── module
│ │ │ │ │ ├── Module.kt
│ │ │ │ │ └── OnlineModule.kt
│ │ │ │ ├── su
│ │ │ │ │ └── SuPolicy.kt
│ │ │ │ └── UpdateInfo.kt
│ │ │ ├── data
│ │ │ │ ├── magiskdb
│ │ │ │ │ ├── StringDao.kt
│ │ │ │ │ └── SettingsDao.kt
│ │ │ │ ├── NetworkServices.kt
│ │ │ │ └── SuLogDao.kt
│ │ │ ├── Provider.kt
│ │ │ └── utils
│ │ │ │ ├── DispatcherExecutor.kt
│ │ │ │ ├── ProgressInputStream.kt
│ │ │ │ └── RequestInstall.kt
│ │ │ ├── events
│ │ │ └── dialog
│ │ │ │ ├── DialogEvent.kt
│ │ │ │ ├── SecondSlotWarningDialog.kt
│ │ │ │ ├── BiometricEvent.kt
│ │ │ │ ├── SuperuserRevokeDialog.kt
│ │ │ │ ├── UninstallDialog.kt
│ │ │ │ └── MarkDownDialog.kt
│ │ │ ├── ui
│ │ │ ├── install
│ │ │ │ └── InstallFragment.kt
│ │ │ ├── theme
│ │ │ │ └── ThemeViewModel.kt
│ │ │ ├── log
│ │ │ │ ├── SuLogRvItem.kt
│ │ │ │ └── LogRvItem.kt
│ │ │ ├── superuser
│ │ │ │ └── SuperuserFragment.kt
│ │ │ ├── flash
│ │ │ │ └── ConsoleItem.kt
│ │ │ └── settings
│ │ │ │ └── SettingsFragment.kt
│ │ │ ├── arch
│ │ │ ├── AsyncLoadViewModel.kt
│ │ │ ├── ViewEvent.kt
│ │ │ └── NavigationActivity.kt
│ │ │ ├── signing
│ │ │ └── ByteArrayStream.java
│ │ │ ├── ktx
│ │ │ └── XSU.kt
│ │ │ └── databinding
│ │ │ └── FilterableDiffObservableList.kt
│ │ └── androidx
│ │ └── lifecycle
│ │ └── ProcessLifecycleAccessor.java
└── .gitignore
├── docs
├── releases
│ ├── 19200.md
│ ├── 19300.md
│ ├── 20300.md
│ ├── 24300.md
│ ├── 21100.md
│ ├── 25200.md
│ ├── 19100.md
│ ├── index.md
│ ├── 21200.md
│ ├── 21400.md
│ ├── 24200.md
│ ├── 23000.md
│ └── 22100.md
├── images
│ ├── logo.png
│ ├── ota_done.png
│ ├── device_info.png
│ ├── restore_img.png
│ ├── manager_reboot.png
│ ├── disable_auto_ota.png
│ └── install_inactive_slot.png
└── README.md
├── native
├── src
│ ├── boot
│ │ ├── lib.rs
│ │ ├── Cargo.toml
│ │ ├── compress.hpp
│ │ ├── magiskboot.hpp
│ │ └── hexpatch.cpp
│ ├── .gitignore
│ ├── sepolicy
│ │ ├── lib.rs
│ │ └── Cargo.toml
│ ├── exported_sym.txt
│ ├── AndroidManifest.xml
│ ├── external
│ │ ├── systemproperties
│ │ │ ├── include
│ │ │ │ ├── async_safe
│ │ │ │ │ └── log.h
│ │ │ │ └── private
│ │ │ │ │ └── ErrnoRestorer.h
│ │ │ └── Android.mk
│ │ └── pcre2_workaround.c
│ ├── .cargo
│ │ └── config.toml
│ ├── init
│ │ ├── lib.rs
│ │ ├── Cargo.toml
│ │ ├── preload.c
│ │ └── logging.rs
│ ├── base
│ │ ├── include
│ │ │ ├── base.hpp
│ │ │ └── embed.hpp
│ │ ├── Cargo.toml
│ │ ├── logging.hpp
│ │ ├── new.cpp
│ │ ├── missing.hpp
│ │ ├── lib.rs
│ │ └── Android.mk
│ ├── core
│ │ ├── Cargo.toml
│ │ ├── lib.rs
│ │ ├── applet_stub.cpp
│ │ └── core.hpp
│ ├── lto_fix.lds
│ ├── Cargo.toml
│ ├── include
│ │ ├── resetprop.hpp
│ │ └── socket.hpp
│ ├── Application.mk
│ ├── zygisk
│ │ ├── loader.c
│ │ ├── deny
│ │ │ ├── deny.hpp
│ │ │ └── revert.cpp
│ │ ├── memory.cpp
│ │ ├── ptrace.hpp
│ │ └── memory.hpp
│ ├── resetprop
│ │ └── prop.hpp
│ └── Android-rs.mk
├── .gitignore
└── build.gradle.kts
├── stub
├── src
│ └── main
│ │ ├── res
│ │ ├── values-cs
│ │ │ └── strings.xml
│ │ ├── values-el
│ │ │ └── strings.xml
│ │ ├── values-sr
│ │ │ └── strings.xml
│ │ ├── values-sv
│ │ │ └── strings.xml
│ │ ├── values-vi
│ │ │ └── strings.xml
│ │ ├── values-pt-rBR
│ │ │ └── strings.xml
│ │ ├── values-pt-rPT
│ │ │ └── strings.xml
│ │ ├── values-th
│ │ │ └── strings.xml
│ │ ├── values-zh-rTW
│ │ │ └── strings.xml
│ │ ├── values-az
│ │ │ └── strings.xml
│ │ ├── values-ja
│ │ │ └── strings.xml
│ │ ├── values-zh-rCN
│ │ │ └── strings.xml
│ │ ├── values-ar
│ │ │ └── strings.xml
│ │ ├── values-lt
│ │ │ └── strings.xml
│ │ ├── values-de
│ │ │ └── strings.xml
│ │ ├── values-ko
│ │ │ └── strings.xml
│ │ ├── values-mk
│ │ │ └── strings.xml
│ │ ├── values-it
│ │ │ └── strings.xml
│ │ ├── values-iw
│ │ │ └── strings.xml
│ │ ├── values-bg
│ │ │ └── strings.xml
│ │ ├── values-uk
│ │ │ └── strings.xml
│ │ ├── values-ru
│ │ │ └── strings.xml
│ │ ├── values-nb
│ │ │ └── strings.xml
│ │ ├── values-ka
│ │ │ └── strings.xml
│ │ ├── values-nl
│ │ │ └── strings.xml
│ │ ├── values
│ │ │ └── strings.xml
│ │ ├── values-ta
│ │ │ └── strings.xml
│ │ ├── values-ro
│ │ │ └── strings.xml
│ │ ├── values-hu
│ │ │ └── strings.xml
│ │ ├── values-sk
│ │ │ └── strings.xml
│ │ ├── values-pa
│ │ │ └── strings.xml
│ │ ├── values-ast
│ │ │ └── strings.xml
│ │ ├── values-be
│ │ │ └── strings.xml
│ │ ├── values-et
│ │ │ └── strings.xml
│ │ ├── values-hr
│ │ │ └── strings.xml
│ │ ├── values-sw
│ │ │ └── strings.xml
│ │ ├── values-hi
│ │ │ └── strings.xml
│ │ ├── values-pl
│ │ │ └── strings.xml
│ │ ├── values-es
│ │ │ └── strings.xml
│ │ ├── values-in
│ │ │ └── strings.xml
│ │ ├── values-tr
│ │ │ └── strings.xml
│ │ ├── values-fa
│ │ │ └── strings.xml
│ │ ├── values-ml
│ │ │ └── strings.xml
│ │ ├── values-sq
│ │ │ └── strings.xml
│ │ ├── values-ca
│ │ │ └── strings.xml
│ │ └── values-fr
│ │ │ └── strings.xml
│ │ ├── java
│ │ └── com
│ │ │ └── topjohnwu
│ │ │ └── magisk
│ │ │ ├── net
│ │ │ ├── ResponseListener.java
│ │ │ └── ErrorHandler.java
│ │ │ ├── dummy
│ │ │ ├── DummyService.java
│ │ │ ├── DummyReceiver.java
│ │ │ └── DummyProvider.java
│ │ │ └── DelegateApplication.java
│ │ └── AndroidManifest.xml
├── .gitignore
├── build.gradle.kts
└── proguard-rules.pro
├── tools
├── bootctl
├── futility
├── elf-cleaner.exe
├── keys
│ ├── verity.pk8
│ ├── kernel.keyblock
│ └── kernel_data_key.vbprivk
├── ndk-bins
│ ├── 21
│ │ ├── arm
│ │ │ ├── libc.a
│ │ │ ├── libm.a
│ │ │ ├── libz.a
│ │ │ ├── crtend_so.o
│ │ │ ├── libstdc++.a
│ │ │ ├── crtbegin_so.o
│ │ │ ├── crtend_android.o
│ │ │ ├── crtbegin_dynamic.o
│ │ │ └── crtbegin_static.o
│ │ ├── i686
│ │ │ ├── libc.a
│ │ │ ├── libm.a
│ │ │ ├── libz.a
│ │ │ ├── crtend_so.o
│ │ │ ├── libstdc++.a
│ │ │ ├── crtbegin_so.o
│ │ │ ├── crtbegin_static.o
│ │ │ ├── crtend_android.o
│ │ │ └── crtbegin_dynamic.o
│ │ ├── aarch64
│ │ │ ├── libc.a
│ │ │ ├── libm.a
│ │ │ ├── libz.a
│ │ │ ├── crtend_so.o
│ │ │ ├── libstdc++.a
│ │ │ ├── crtbegin_so.o
│ │ │ ├── crtbegin_static.o
│ │ │ ├── crtend_android.o
│ │ │ └── crtbegin_dynamic.o
│ │ └── x86_64
│ │ │ ├── libc.a
│ │ │ ├── libm.a
│ │ │ ├── libz.a
│ │ │ ├── crtbegin_so.o
│ │ │ ├── crtend_so.o
│ │ │ ├── libstdc++.a
│ │ │ ├── crtbegin_dynamic.o
│ │ │ ├── crtbegin_static.o
│ │ │ └── crtend_android.o
│ └── README.md
└── bootctl.patch
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── .github
└── ISSUE_TEMPLATE
│ └── config.yml
├── .gitignore
├── settings.gradle.kts
├── .gitattributes
├── scripts
├── module_installer.sh
└── update_binary.sh
├── config.prop.sample
└── gradle.properties
/app/shared/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/docs/releases/19200.md:
--------------------------------------------------------------------------------
1 | # TODO
2 |
--------------------------------------------------------------------------------
/docs/releases/19300.md:
--------------------------------------------------------------------------------
1 | # TODO
2 |
--------------------------------------------------------------------------------
/native/src/boot/lib.rs:
--------------------------------------------------------------------------------
1 | pub use base;
2 |
--------------------------------------------------------------------------------
/native/src/.gitignore:
--------------------------------------------------------------------------------
1 | test.cpp
2 | target/
3 |
--------------------------------------------------------------------------------
/native/src/sepolicy/lib.rs:
--------------------------------------------------------------------------------
1 | pub use base;
2 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-cs/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-el/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-sr/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-sv/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-vi/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/native/src/exported_sym.txt:
--------------------------------------------------------------------------------
1 | {
2 | zygisk_inject_entry;
3 | };
4 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-pt-rBR/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-pt-rPT/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/native/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | obj
3 | libs
4 | /.externalNativeBuild
5 | /.cxx
6 |
--------------------------------------------------------------------------------
/tools/bootctl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/bootctl
--------------------------------------------------------------------------------
/tools/futility:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/futility
--------------------------------------------------------------------------------
/docs/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/docs/images/logo.png
--------------------------------------------------------------------------------
/stub/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | /src/release/AndroidManifest.xml
3 | /src/debug/AndroidManifest.xml
4 |
--------------------------------------------------------------------------------
/tools/elf-cleaner.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/elf-cleaner.exe
--------------------------------------------------------------------------------
/tools/keys/verity.pk8:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/keys/verity.pk8
--------------------------------------------------------------------------------
/docs/images/ota_done.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/docs/images/ota_done.png
--------------------------------------------------------------------------------
/docs/images/device_info.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/docs/images/device_info.png
--------------------------------------------------------------------------------
/docs/images/restore_img.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/docs/images/restore_img.png
--------------------------------------------------------------------------------
/native/src/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-th/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/tools/keys/kernel.keyblock:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/keys/kernel.keyblock
--------------------------------------------------------------------------------
/tools/ndk-bins/21/arm/libc.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/arm/libc.a
--------------------------------------------------------------------------------
/tools/ndk-bins/21/arm/libm.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/arm/libm.a
--------------------------------------------------------------------------------
/tools/ndk-bins/21/arm/libz.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/arm/libz.a
--------------------------------------------------------------------------------
/docs/images/manager_reboot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/docs/images/manager_reboot.png
--------------------------------------------------------------------------------
/tools/ndk-bins/21/i686/libc.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/i686/libc.a
--------------------------------------------------------------------------------
/tools/ndk-bins/21/i686/libm.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/i686/libm.a
--------------------------------------------------------------------------------
/tools/ndk-bins/21/i686/libz.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/i686/libz.a
--------------------------------------------------------------------------------
/docs/images/disable_auto_ota.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/docs/images/disable_auto_ota.png
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/tools/ndk-bins/21/aarch64/libc.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/aarch64/libc.a
--------------------------------------------------------------------------------
/tools/ndk-bins/21/aarch64/libm.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/aarch64/libm.a
--------------------------------------------------------------------------------
/tools/ndk-bins/21/aarch64/libz.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/aarch64/libz.a
--------------------------------------------------------------------------------
/tools/ndk-bins/21/arm/crtend_so.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/arm/crtend_so.o
--------------------------------------------------------------------------------
/tools/ndk-bins/21/arm/libstdc++.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/arm/libstdc++.a
--------------------------------------------------------------------------------
/tools/ndk-bins/21/x86_64/libc.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/x86_64/libc.a
--------------------------------------------------------------------------------
/tools/ndk-bins/21/x86_64/libm.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/x86_64/libm.a
--------------------------------------------------------------------------------
/tools/ndk-bins/21/x86_64/libz.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/x86_64/libz.a
--------------------------------------------------------------------------------
/tools/keys/kernel_data_key.vbprivk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/keys/kernel_data_key.vbprivk
--------------------------------------------------------------------------------
/tools/ndk-bins/21/arm/crtbegin_so.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/arm/crtbegin_so.o
--------------------------------------------------------------------------------
/tools/ndk-bins/21/i686/crtend_so.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/i686/crtend_so.o
--------------------------------------------------------------------------------
/tools/ndk-bins/21/i686/libstdc++.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/i686/libstdc++.a
--------------------------------------------------------------------------------
/app/src/main/res/font/googlesans.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/app/src/main/res/font/googlesans.ttf
--------------------------------------------------------------------------------
/docs/images/install_inactive_slot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/docs/images/install_inactive_slot.png
--------------------------------------------------------------------------------
/tools/ndk-bins/21/aarch64/crtend_so.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/aarch64/crtend_so.o
--------------------------------------------------------------------------------
/tools/ndk-bins/21/aarch64/libstdc++.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/aarch64/libstdc++.a
--------------------------------------------------------------------------------
/tools/ndk-bins/21/arm/crtend_android.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/arm/crtend_android.o
--------------------------------------------------------------------------------
/tools/ndk-bins/21/i686/crtbegin_so.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/i686/crtbegin_so.o
--------------------------------------------------------------------------------
/tools/ndk-bins/21/x86_64/crtbegin_so.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/x86_64/crtbegin_so.o
--------------------------------------------------------------------------------
/tools/ndk-bins/21/x86_64/crtend_so.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/x86_64/crtend_so.o
--------------------------------------------------------------------------------
/tools/ndk-bins/21/x86_64/libstdc++.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/x86_64/libstdc++.a
--------------------------------------------------------------------------------
/tools/ndk-bins/21/aarch64/crtbegin_so.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/aarch64/crtbegin_so.o
--------------------------------------------------------------------------------
/tools/ndk-bins/21/arm/crtbegin_dynamic.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/arm/crtbegin_dynamic.o
--------------------------------------------------------------------------------
/tools/ndk-bins/21/arm/crtbegin_static.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/arm/crtbegin_static.o
--------------------------------------------------------------------------------
/tools/ndk-bins/21/i686/crtbegin_static.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/i686/crtbegin_static.o
--------------------------------------------------------------------------------
/tools/ndk-bins/21/i686/crtend_android.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/i686/crtend_android.o
--------------------------------------------------------------------------------
/tools/ndk-bins/21/aarch64/crtbegin_static.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/aarch64/crtbegin_static.o
--------------------------------------------------------------------------------
/tools/ndk-bins/21/aarch64/crtend_android.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/aarch64/crtend_android.o
--------------------------------------------------------------------------------
/tools/ndk-bins/21/i686/crtbegin_dynamic.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/i686/crtbegin_dynamic.o
--------------------------------------------------------------------------------
/tools/ndk-bins/21/x86_64/crtbegin_dynamic.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/x86_64/crtbegin_dynamic.o
--------------------------------------------------------------------------------
/tools/ndk-bins/21/x86_64/crtbegin_static.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/x86_64/crtbegin_static.o
--------------------------------------------------------------------------------
/tools/ndk-bins/21/x86_64/crtend_android.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/x86_64/crtend_android.o
--------------------------------------------------------------------------------
/tools/ndk-bins/21/aarch64/crtbegin_dynamic.o:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pranshoe/Magisk-Monet/HEAD/tools/ndk-bins/21/aarch64/crtbegin_dynamic.o
--------------------------------------------------------------------------------
/app/src/main/res/values/ids.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/shared/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("com.android.library")
3 | }
4 |
5 | setupCommon()
6 |
7 | android {
8 | namespace = "com.topjohnwu.shared"
9 | }
10 |
--------------------------------------------------------------------------------
/native/src/external/systemproperties/include/async_safe/log.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #define async_safe_format_buffer snprintf
4 | #define async_safe_format_log(...) /* NOP */
5 |
--------------------------------------------------------------------------------
/app/src/main/res/values-night/styles_md2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | .idea/
5 | /build
6 | *.hprof
7 | .externalNativeBuild/
8 | *.apk
9 | src/*/assets
10 | src/*/jniLibs
11 | src/*/resources
12 |
--------------------------------------------------------------------------------
/stub/src/main/java/com/topjohnwu/magisk/net/ResponseListener.java:
--------------------------------------------------------------------------------
1 | package com.topjohnwu.magisk.net;
2 |
3 | public interface ResponseListener {
4 | void onResponse(T response);
5 | }
6 |
--------------------------------------------------------------------------------
/native/src/.cargo/config.toml:
--------------------------------------------------------------------------------
1 | [build]
2 | # This is only used to make the IDE happy, the actual compilation will
3 | # have the target overriden by command-line
4 | target = "aarch64-linux-android"
5 |
--------------------------------------------------------------------------------
/native/src/init/lib.rs:
--------------------------------------------------------------------------------
1 | pub use logging::*;
2 |
3 | mod logging;
4 |
5 | #[cxx::bridge(namespace = "rust")]
6 | pub mod ffi2 {
7 | extern "Rust" {
8 | fn setup_klog();
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/native/src/base/include/base.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include "../missing.hpp"
4 | #include "../xwrap.hpp"
5 | #include "../files.hpp"
6 | #include "../misc.hpp"
7 | #include "../logging.hpp"
8 | #include
9 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: false
2 | contact_links:
3 | - name: XDA Community Support
4 | url: https://forum.xda-developers.com/f/magisk.5903/
5 | about: Please ask and answer questions here.
6 |
7 |
--------------------------------------------------------------------------------
/native/src/boot/Cargo.toml:
--------------------------------------------------------------------------------
1 | [package]
2 | name = "magiskboot"
3 | version = "0.0.0"
4 | edition = "2021"
5 |
6 | [lib]
7 | crate-type = ["staticlib"]
8 | path = "lib.rs"
9 |
10 | [dependencies]
11 | base = { path = "../base" }
12 |
--------------------------------------------------------------------------------
/native/src/base/Cargo.toml:
--------------------------------------------------------------------------------
1 | [package]
2 | name = "base"
3 | version = "0.0.0"
4 | edition = "2021"
5 |
6 | [lib]
7 | path = "lib.rs"
8 |
9 | [dependencies]
10 | cxx = { path = "../external/cxx-rs" }
11 | libc = "0.2"
12 | cfg-if = "1.0"
13 |
--------------------------------------------------------------------------------
/stub/src/main/java/com/topjohnwu/magisk/net/ErrorHandler.java:
--------------------------------------------------------------------------------
1 | package com.topjohnwu.magisk.net;
2 |
3 | import java.net.HttpURLConnection;
4 |
5 | public interface ErrorHandler {
6 | void onError(HttpURLConnection conn, Exception e);
7 | }
8 |
--------------------------------------------------------------------------------
/native/src/sepolicy/Cargo.toml:
--------------------------------------------------------------------------------
1 | [package]
2 | name = "magiskpolicy"
3 | version = "0.0.0"
4 | edition = "2021"
5 |
6 | [lib]
7 | crate-type = ["staticlib", "rlib"]
8 | path = "lib.rs"
9 |
10 | [dependencies]
11 | base = { path = "../base" }
12 |
--------------------------------------------------------------------------------
/native/src/init/Cargo.toml:
--------------------------------------------------------------------------------
1 | [package]
2 | name = "magiskinit"
3 | version = "0.0.0"
4 | edition = "2021"
5 |
6 | [lib]
7 | crate-type = ["staticlib"]
8 | path = "lib.rs"
9 |
10 | [dependencies]
11 | base = { path = "../base" }
12 | cxx = "1.0.69"
13 |
--------------------------------------------------------------------------------
/app/src/main/res/values-night/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #0D0D0D
4 | #E4801401
5 | #ffdad7
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values/theme_overlay.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | out
2 | *.zip
3 | *.jks
4 | *.apk
5 | /config.prop
6 | /update.sh
7 | /dict.txt
8 |
9 | # Built binaries
10 | native/out
11 |
12 | # Android Studio / Gradle
13 | *.iml
14 | .gradle
15 | /local.properties
16 | /.idea
17 | /build
18 | /captures
19 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-zh-rTW/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | 需要升級到完整版 Magisk Manager。是否下載並安裝?
3 | 請連上網路!升級到完整版 Magisk Manager 是必須的。
4 | 正在下載
5 |
6 |
--------------------------------------------------------------------------------
/native/src/core/Cargo.toml:
--------------------------------------------------------------------------------
1 | [package]
2 | name = "magisk"
3 | version = "0.0.0"
4 | edition = "2021"
5 |
6 | [lib]
7 | crate-type = ["staticlib"]
8 | path = "lib.rs"
9 |
10 | [dependencies]
11 | base = { path = "../base" }
12 | cxx = { path = "../external/cxx-rs" }
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_divider.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.1-bin.zip
4 | networkTimeout=10000
5 | zipStoreBase=GRADLE_USER_HOME
6 | zipStorePath=wrapper/dists
7 |
--------------------------------------------------------------------------------
/native/src/external/pcre2_workaround.c:
--------------------------------------------------------------------------------
1 | // Workaround pcre2_chartables.c symlink to pcre2_chartables.c.dist failing on Windows NDK if Cygwin git used,
2 | // and NDK not directly accepting a .c.dist file in LOCAL_SRC_FILES list.
3 |
4 | #include "pcre/src/pcre2_chartables.c.dist"
5 |
--------------------------------------------------------------------------------
/app/src/main/res/color/color_error_transient.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/color/color_primary_transient.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/color/color_text_transient.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/color/color_on_primary_transient.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/docs/releases/20300.md:
--------------------------------------------------------------------------------
1 | # 2020.1.10 Magisk v20.3
2 |
3 | ### Magisk
4 | - Fix `magiskboot` crashing when dealing with `lz4_legacy` format
5 |
6 | ### Magisk Manager
7 | - Fix MagiskHide app component toggles
8 |
9 | ### Full Changelog: [here](https://topjohnwu.github.io/Magisk/changes.html)
10 |
--------------------------------------------------------------------------------
/app/shared/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-az/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Qurmanı sonlandırmaq üçün full Magisk Manager`ə yüksəldin. Yüklənib qurulsun?
3 | Lütfən internetə qoşulun! Full Magisk Manager\'ə yüksəltmə lazımidir.
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-ja/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Magisk Manager のフルバージョンにアップグレードしてセットアップを完了します。ダウンロードしてインストールしますか?
3 | ダウンロード中
4 | インターネットに接続してください!フルバージョンの Magisk Manager が必要です。
5 |
6 |
--------------------------------------------------------------------------------
/native/src/base/include/embed.hpp:
--------------------------------------------------------------------------------
1 | #if defined(__arm__)
2 | #include
3 | #elif defined(__aarch64__)
4 | #include
5 | #elif defined(__i386__)
6 | #include
7 | #elif defined(__x86_64__)
8 | #include
9 | #else
10 | #error Unsupported ABI
11 | #endif
12 |
--------------------------------------------------------------------------------
/native/src/core/lib.rs:
--------------------------------------------------------------------------------
1 | pub use base;
2 | use logging::*;
3 |
4 | mod logging;
5 |
6 | #[cxx::bridge]
7 | pub mod ffi {
8 | extern "Rust" {
9 | fn rust_test_entry();
10 | fn android_logging();
11 | fn magisk_logging();
12 | fn zygisk_logging();
13 | }
14 | }
15 |
16 | fn rust_test_entry() {}
17 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-zh-rCN/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 需要下载完整版 Magisk 才能正常运行。开始下载?
4 | 下载需要网络,请检查网络连接。
5 | 正在下载
6 | 请重新打开本应用
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/color/color_card_background_color_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/aidl/com/topjohnwu/magisk/core/utils/IRootUtils.aidl:
--------------------------------------------------------------------------------
1 | // IRootUtils.aidl
2 | package com.topjohnwu.magisk.core.utils;
3 |
4 | // Declare any non-default types here with import statements
5 |
6 | interface IRootUtils {
7 | android.app.ActivityManager.RunningAppProcessInfo getAppProcess(int pid);
8 | IBinder getFileSystem();
9 | }
10 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-ar/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | عليك الترقية ماجـيسك Manager لإكمال تهيئة التطبيق.هل اكمل؟
4 | يرجى الاتصال بالانترنيت! ترقية ماجـيسك مطلوب...
5 | جارٍ التنزيل
6 |
7 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-lt/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Atsinaujinkite į pilną Magisk Manager versiją, kad baigtumėte pasiruošimą. Atsisiųsti ir instaliuoti?
3 | Prašome prisijungti prie interneto! Atsinaujinimas į pilną Magisk Manager versiją yra privalomas.
4 |
5 |
--------------------------------------------------------------------------------
/stub/src/main/java/com/topjohnwu/magisk/dummy/DummyService.java:
--------------------------------------------------------------------------------
1 | package com.topjohnwu.magisk.dummy;
2 |
3 | import android.app.Service;
4 | import android.content.Intent;
5 | import android.os.IBinder;
6 |
7 | public class DummyService extends Service {
8 | @Override
9 | public IBinder onBind(Intent intent) {
10 | return null;
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-de/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Upgrade zum vollständigen Magisk Manager, um das Setup abzuschließen. Herunterladen und installieren?
3 | Bitte eine Verbindung mit dem Internet herstellen! Upgrade zum vollständigen Magisk Manager ist erforderlich.
4 |
5 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-ko/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | 완전한 Magisk Manager로 업데이트하여 설치를 마치십시오. 다운로드하고 설치하시겠습니까?
3 | 인터넷에 연결해 주시기 바랍니다! 완전한 Magisk Manager로 업데이트 해야 합니다.
4 | 다운로드중
5 | 앱을 수동으로 재시작 하세요
6 |
7 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-mk/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Надградете до целосната верзија на Magisk Manager за да го завршите поставувањето. Преземете и инсталирајте?
3 | Ве молиме поврзете се на интернет бидејќи е потребна надградба на целосната верзија на Magisk Manager.
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/color/color_primary_error_transient.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_logo.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/settings.gradle.kts:
--------------------------------------------------------------------------------
1 | @Suppress("UnstableApiUsage")
2 | dependencyResolutionManagement {
3 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
4 | repositories {
5 | google()
6 | mavenCentral()
7 | maven("https://jitpack.io")
8 | }
9 | }
10 | rootProject.name = "Magisk"
11 | include(":app", ":app:shared", ":native", ":stub")
12 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-it/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Aggiorna alla versione completa di Magisk Manager per completare l\'installazione. Vuoi procedere al download e all\'installazione?
3 | Controlla la connessione a Internet! È necessaria per l\'aggiornamento di Magisk Manager.
4 |
5 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-iw/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | יש לעדכן לגירסה מלאה של מנהל Magisk בכדי לסיים את העדכון. להוריד ולהתקין?
4 | נא להתחבר לאינטרנט! עדכון לגירסה מלאה של מנהל Magisk נדרש.
5 | מוריד
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/color/color_menu_tint.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/stub/src/main/java/com/topjohnwu/magisk/dummy/DummyReceiver.java:
--------------------------------------------------------------------------------
1 | package com.topjohnwu.magisk.dummy;
2 |
3 | import android.content.BroadcastReceiver;
4 | import android.content.Context;
5 | import android.content.Intent;
6 |
7 | public class DummyReceiver extends BroadcastReceiver {
8 | @Override
9 | public void onReceive(Context context, Intent intent) {}
10 | }
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v26/sc_extension.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v26/sc_superuser.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
8 |
9 |
--------------------------------------------------------------------------------
/native/src/core/applet_stub.cpp:
--------------------------------------------------------------------------------
1 | #include
2 |
3 | #include
4 | #include
5 | #include
6 |
7 | int main(int argc, char *argv[]) {
8 | if (argc < 1)
9 | return 1;
10 | enable_selinux();
11 | cmdline_logging();
12 | init_argv0(argc, argv);
13 | umask(0);
14 | return APPLET_STUB_MAIN(argc, argv);
15 | }
16 |
--------------------------------------------------------------------------------
/native/src/lto_fix.lds:
--------------------------------------------------------------------------------
1 | SECTIONS {
2 | .init_array : {
3 | *(SORT_BY_INIT_PRIORITY(.init_array.*))
4 | *(EXCLUDE_FILE(*crtend_android.o) .init_array)
5 | }
6 | } INSERT AFTER .fini_array;
7 | SECTIONS {
8 | .fini_array : {
9 | *(SORT_BY_INIT_PRIORITY(.fini_array.*))
10 | *(EXCLUDE_FILE(*crtend_android.o) .fini_array)
11 | }
12 | } INSERT BEFORE .init_array;
13 |
--------------------------------------------------------------------------------
/app/src/main/java/com/topjohnwu/magisk/view/TextItem.kt:
--------------------------------------------------------------------------------
1 | package com.topjohnwu.magisk.view
2 |
3 | import com.topjohnwu.magisk.R
4 | import com.topjohnwu.magisk.databinding.DiffRvItem
5 |
6 | class TextItem(val text: Int) : DiffRvItem() {
7 | override val layoutRes = R.layout.item_text
8 |
9 | override fun contentSameAs(other: TextItem) = text == other.text
10 | }
11 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-bg/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Надградете до пълната версия на Magisk Manager, за да довършите първоначалната настройка. Изтегляне и инсталиране сега?
3 | Моля да се свържете към работеща интернет мрежа, защото надграждането до пълната версия на Magisk Manager е задължително.
4 |
5 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-uk/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Оновіть додаток Magisk для завершення встановлення. Завантажити і встановити?
4 | Будь ласка, підключіться до Інтернету! Потрібно оновити додаток Magisk.
5 | Завантаження
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_flash.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/native/src/boot/compress.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include
4 |
5 | #include "format.hpp"
6 |
7 | filter_strm_ptr get_encoder(format_t type, stream_ptr &&base);
8 |
9 | filter_strm_ptr get_decoder(format_t type, stream_ptr &&base);
10 |
11 | void compress(const char *method, const char *infile, const char *outfile);
12 |
13 | void decompress(char *infile, const char *outfile);
14 |
--------------------------------------------------------------------------------
/app/src/main/java/androidx/lifecycle/ProcessLifecycleAccessor.java:
--------------------------------------------------------------------------------
1 | package androidx.lifecycle;
2 |
3 | import android.content.Context;
4 |
5 | import androidx.annotation.NonNull;
6 |
7 | public class ProcessLifecycleAccessor {
8 | public static void init(@NonNull Context context) {
9 | LifecycleDispatcher.init(context);
10 | ProcessLifecycleOwner.init(context);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-ru/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Обновите Magisk для завершения установки. Продолжить?
3 | Пожалуйста, подключитесь к Интернету! Требуется обновление Magisk.
4 | Загрузка
5 | Пожалуйста, перезапустите приложение
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/java/com/topjohnwu/magisk/core/base/BaseJobService.kt:
--------------------------------------------------------------------------------
1 | package com.topjohnwu.magisk.core.base
2 |
3 | import android.app.job.JobService
4 | import android.content.Context
5 | import com.topjohnwu.magisk.core.patch
6 |
7 | abstract class BaseJobService : JobService() {
8 | override fun attachBaseContext(base: Context) {
9 | super.attachBaseContext(base.patch())
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/docs/releases/24300.md:
--------------------------------------------------------------------------------
1 | ## 2022.3.10 Magisk v24.3
2 |
3 | For those coming from v24.1, check the full changelog for changes introduced in v24.2.
4 |
5 | - [General] Stop using `getrandom` syscall
6 | - [Zygisk] Update API to v3, adding new fields to `AppSpecializeArgs`
7 | - [App] Improve app repackaging installation workflow
8 |
9 | ### Full Changelog: [here](https://topjohnwu.github.io/Magisk/changes.html)
10 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-nb/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Oppgrader til den komplette versjonen av Magisk Manager for å fullføre oppsettet. Vil du laste ned og installere?
4 | Vennligst koble deg på internettet! Å oppgradere til den komplette versjonen av Magisk Manager er påkrevd.
5 |
6 |
--------------------------------------------------------------------------------
/docs/README.md:
--------------------------------------------------------------------------------
1 | # Magisk Documentation
2 |
3 | - [Installation Instructions](install.md)
4 | - [Frequently Asked Questions](faq.md)
5 | - [Release Notes](releases/index.md)
6 | - [Magisk Changelog](changes.md)
7 |
8 | The following sections are for developers
9 |
10 | - [Developer Guides](guides.md)
11 | - [Magisk Tools](tools.md)
12 | - [Internal Details](details.md)
13 | - [Android Booting Shenanigans](boot.md)
14 |
--------------------------------------------------------------------------------
/docs/releases/21100.md:
--------------------------------------------------------------------------------
1 | ## 2020.11.13 Magisk v21.1
2 |
3 | v21.1 is a maintenance update from v21.0, mostly addressing bugs, refining some details, and adding new boot image format support (for Pixel 5 and 4a 5G). Checkout the full [v21.0 release notes](https://topjohnwu.github.io/Magisk/releases/21000.html) if coming from older releases.
4 |
5 | ### Full Changelog: [here](https://topjohnwu.github.io/Magisk/changes.html)
6 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_theme.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_splash_activity.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_superuser_filled_md2.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/native/src/Cargo.toml:
--------------------------------------------------------------------------------
1 | [workspace]
2 | exclude = ["external"]
3 | members = ["base", "boot", "core", "init", "sepolicy"]
4 |
5 | [profile.dev]
6 | opt-level = "z"
7 | lto = true
8 | codegen-units = 1
9 | panic = "abort"
10 | strip = true
11 |
12 | [profile.release]
13 | opt-level = "z"
14 | lto = true
15 | codegen-units = 1
16 | panic = "abort"
17 | strip = true
18 |
19 | [patch.crates-io]
20 | cxx = { path = "external/cxx-rs" }
21 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_line_top_rounded.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-ka/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | განაახლეთ სრულ Magisk მენჯერის ვერსიამდე ინსტალაციის დასასრულებლად. გსურთ გადმოწერა და ინსტალირება?
4 | გთხოვთ დაუკავშირდით ინტერნეტს! საჭიროა Magisk მენეჯერის სრულ ვერსიამდე განახლება.
5 | მიმდინარეობს გადმოწერა
6 |
7 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-nl/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Installeer de volledige Magisk Manager om de installatie af te ronden. Wil je dit nu doen?
4 | Maak verbinding met het internet! Het installeren van de volledige Magisk Manager is vereist.
5 | Bezig met downloaden...
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_line_bottom_rounded.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/color/color_state_primary_transient.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/stub/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Upgrade to full Magisk to finish the setup. Download and install?
4 | Please connect to the Internet! Upgrading to full Magisk is required.
5 | Downloading
6 | Please manually re-launch the app
7 |
8 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-ta/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | அமைப்பை முடிக்க முழு மேகிஸ்க்கு மேம்படுத்தவும். பதிவிறக்கி நிறுவவா?
4 | இணையத்துடன் இணைக்கவும்! முழு மேகிஸ்க்கு மேம்படுத்தல் தேவை.
5 | பதிவிறக்குகிறது
6 | பயன்பாட்டை கைமுறையாக மீண்டும் தொடங்கவும்
7 |
8 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-ro/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Treci la versiunea completă Magisk pentru a finaliza configurarea. Descarci și instalezi?
3 | Te rugăm să te conectezi la internet! Este necesară actualizarea la versiunea completă Magisk.
4 | Se descarcă
5 | Te rugăm să relansezi manual aplicația
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_divider.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-hu/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | A telepítés befejezéséhez frissíts a teljes Magiskre. Letöltés és telepítés?
4 | Csatlakozz az internethez! Frissíteni kell a teljes Magiskre.
5 | Letöltés
6 | Kérjük manuálisan indítsd újra az alkalmazást
7 |
8 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-sk/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Pre dokončenie inštalácie sa vyžaduje upgrade Magisk Managera. Stiahnuť a nainštalovať?
4 | Pripojte sa na internet! Upgrade Magisk Managera je potrebný.
5 | Sťahuje sa
6 | Zavrite a spustite apku manuálne
7 |
8 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-pa/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | ਸੈਟਅਪ ਨੂੰ ਪੂਰਾ ਕਰਨ ਲਈ ਪੂਰੇ ਮੈਜਿਕਸ ਮੈਨੇਜਰ ਵਿਚ ਅਪਗ੍ਰੇਡ ਕਰੋ. ਡਾਉਨਲੋਡ ਅਤੇ ਇੰਸਟੌਲ ਕਰੋ?
4 | ਕਿਰਪਾ ਕਰਕੇ ਇੰਟਰਨੈਟ ਨਾਲ ਜੁੜੋ! ਪੂਰਾ ਮੈਜਿਕਸ ਮੈਨੇਜਰ ਅਪਗ੍ਰੇਡ ਕਰਨ ਦੀ ਲੋੜ ਹੈ।
5 | ਡਾਊਨਲੋਡ ਹੋ ਰਿਹਾ ਹੈ
6 | ਕਿਰਪਾ ਕਰਕੇ ਐਪ ਨੂੰ ਮੁੜ ਚਾਲੂ ਕਰੋ
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_add.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_paint.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/sc_extension.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 | -
9 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/sc_superuser.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 | -
9 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #00AF9C
4 | #00796B
5 | #e0e0e0
6 | #e0e0e0
7 | @color/ic_launcher_background
8 | #ffdad7
9 | #410102
10 |
11 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-ast/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Instala la versión completa de Magisk pa finar la configuración. ¿Quies facelo agora?
4 | ¡Conéctate a internet! Tienes d\'instalar la versión completa de Magisk.
5 | Baxando
6 | Volvi llanzar l\'aplicación manualmente
7 |
8 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-be/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Абнавіце Magisk Manager для завяршэння ўсталёўкі. Спампаваць і ўсталяваць?
4 | Калі ласка, падлучыцеся да інтэрнэту! Патрабуецца абнаўленне Magisk Manager.
5 | Спампоўванне
6 | Калі ласка, уласнаручна перазапусціце праграму
7 |
8 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-et/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Täienda seadistuse lõpetamiseks Magiski täisversioonile. Kas laadid alla ja installid?
4 | Palun ühendu Internetti! Nõutud on Magiski täisversioonile täiendamine.
5 | Allalaadimine
6 | Palun käivita rakendus käsitsi uuesti
7 |
8 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-hr/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Nadogradite na full Magisk Manager da biste dovršili postavljanje. Preuzeti i instalirati?
4 | Povežite se na Internet! Potrebna je nadogradnja na full Magisk Manager.
5 | Preuzimanje
6 | Ručno ponovno pokrenite aplikaciju
7 |
8 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-sw/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Pata toleo jipya la Magisk kamili ili kumaliza usanidi. Pakua na usakinishe?
4 | Tafadhali unganisha kwenye Mtandao! Kusasisha hadi Magisk kamili inahitajika.
5 | Inapakua
6 | Tafadhali zindua upya programu wewe mwenyewe
7 |
8 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-hi/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | सेटअप को पूरा करने के लिए पूर्ण मैजिस्क मैनेजर में अपग्रेड करें. डाउनलोड करके इंस्टॉल करें?
4 | कृपया इन्टरनेट से जुड़िये! पूर्ण मैजिस्क मैनेजर में अपग्रेड की आवश्यकता है।
5 | डाउनलोड हो रहा है
6 | कृपया ऐप को फिर से शुरू करें
7 |
8 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-pl/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Zaktualizuj Magisk do pełnej wersji aby ukończyć instalację. Pobrać i zainstalować?
4 | Połącz się z Internetem! Wymagane jest uaktualnienie Magisk do pełnej wersji.
5 | Pobieranie
6 | Proszę ręcznie uruchomić aplikację ponownie.
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_update.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/docs/releases/25200.md:
--------------------------------------------------------------------------------
1 | ## 2022.7.20 Magisk v25.2
2 |
3 | Maintenance release fixing various issues.
4 |
5 | - [MagiskInit] Fix a potential issue when stub cpio is used
6 | - [MagiskInit] Fix reboot to recovery when stub cpio is used
7 | - [MagiskInit] Fix sepolicy.rules symlink for rootfs devices
8 | - [General] Better data encryption detection
9 | - [General] Move the whole logging infrastructure into Rust
10 |
11 | ### Full Changelog: [here](https://topjohnwu.github.io/Magisk/changes.html)
12 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-es/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Debe actualizar a la versión completa de Magisk Manager para finalizar la instalación. ¿Descargar e instalar?
3 | ¡Por favor conéctese a internet! Se requiere actualizar a la versión completa de Magisk Manager
4 | Descargando
5 | Vuelva a iniciar manualmente la aplicación
6 |
7 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-in/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Tingkatkan Magisk Manager ke versi utuh untuk menyelesaikan penyiapan. Download dan instal?
4 | Harap sambungkan ke Internet! Peningkatan Magisk Manager versi utuh diperlukan.
5 | Mendownload
6 | Buka kembali aplikasi secara manual
7 |
8 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-tr/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Kurulumu tamamlamak için tam Magisk Manager\'a yükseltin. İndirip yüklensin mi?
4 | Lütfen internete bağlanın! Tam sürüm Magisk Manager\'a yükseltmek gerekiyor.
5 | İndiriliyor
6 | Lütfen uygulamayı manuel olarak kapatıp açın
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/java/com/topjohnwu/magisk/core/base/BaseReceiver.kt:
--------------------------------------------------------------------------------
1 | package com.topjohnwu.magisk.core.base
2 |
3 | import android.content.BroadcastReceiver
4 | import android.content.Context
5 | import android.content.Intent
6 | import androidx.annotation.CallSuper
7 | import com.topjohnwu.magisk.core.patch
8 |
9 | abstract class BaseReceiver : BroadcastReceiver() {
10 | @CallSuper
11 | override fun onReceive(context: Context, intent: Intent?) {
12 | context.patch()
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_superuser_outlined_md2.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
--------------------------------------------------------------------------------
/native/src/include/resetprop.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include
4 | #include
5 |
6 | int setprop(const char *name, const char *value, bool prop_svc = true);
7 | std::string getprop(const char *name, bool persist = false);
8 | void getprops(void (*callback)(const char *, const char *, void *),
9 | void *cookie = nullptr, bool persist = false);
10 | int delprop(const char *name, bool persist = false);
11 | void load_prop_file(const char *filename, bool prop_svc = true);
12 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-fa/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | برای به پایان رساندن تنظیمات ، به نسخه کامل Magisk Manager ارتقا دهید. دانلود و نصب بشه؟
4 | لطفاً به اینترنت متصل شوید! برای ارتقا به نسخه کامل Magisk Manager لازم است.
5 | درحال دانلود
6 | لطفاً به صورت دستی برنامه را دوباره راه اندازی کنید
7 |
--------------------------------------------------------------------------------
/app/src/main/java/com/topjohnwu/magisk/core/model/module/Module.kt:
--------------------------------------------------------------------------------
1 | package com.topjohnwu.magisk.core.model.module
2 |
3 | abstract class Module : Comparable {
4 | abstract var id: String
5 | protected set
6 | abstract var name: String
7 | protected set
8 | abstract var version: String
9 | protected set
10 | abstract var versionCode: Int
11 | protected set
12 |
13 | override operator fun compareTo(other: Module) = id.compareTo(other.id)
14 | }
15 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_favorite.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_home_filled_md2.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_patreon.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_update_md2.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v28/styles_md2_impl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/java/com/topjohnwu/magisk/core/base/BaseService.kt:
--------------------------------------------------------------------------------
1 | package com.topjohnwu.magisk.core.base
2 |
3 | import android.app.Service
4 | import android.content.Context
5 | import android.content.Intent
6 | import android.os.IBinder
7 | import com.topjohnwu.magisk.core.patch
8 |
9 | open class BaseService : Service() {
10 | override fun attachBaseContext(base: Context) {
11 | super.attachBaseContext(base.patch())
12 | }
13 | override fun onBind(intent: Intent?): IBinder? = null
14 | }
15 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_device.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-ml/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | സജ്ജീകരണം പൂർത്തിയാക്കാൻ പൂർണ്ണ മജിസ്കിലേക്ക് അപ്ഗ്രേഡ് ചെയ്യുക. ഡൗൺലോഡ് ചെയ്ത് ഇൻസ്റ്റാൾ ചെയ്യണോ?
4 | ദയവായി ഇന്റർനെറ്റിലേക്ക് കണക്റ്റുചെയ്യുക! പൂർണ്ണ മജിസ്കിലേക്ക് അപ്ഗ്രേഡ് ചെയ്യേണ്ടതുണ്ട്.
5 | ഡൗൺലോഡ് ചെയ്യുന്നു
6 | ആപ്പ് സ്വമേധയാ വീണ്ടും തുറക്കുക
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_folder_list.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-sq/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Përditësoni Magisk në versionin e plotë për të përfunduar konfigurimin. Shkarkoni dhe instaloni?
4 | Ju lutemi lidhuni me internetin! Kërkohet internet për të shkarkuar Magisk në versionin e plotë.
5 | Duke shkarkuar
6 | Ju lutemi, ri-hapni aplikacionin manualisht
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_notifications_filled_md2.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-ca/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Fes una actualització total de Magisk Manager per finalitzar l\'instal·lació. Descarregar i instal·lar?
4 | Si us plau, connecta\'t a internet! Es necessari fer una actualització total de Magisk Manager.
5 | Baixant
6 | Torni a obrir l\'aplicació manualment, si us plau
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_check_md2.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v27/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/native/src/base/logging.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include
4 | #include
5 |
6 | #include
7 |
8 | extern int (*cpp_logger)(LogLevel level, const char *fmt, va_list ap);
9 |
10 | void LOGD(const char *fmt, ...) __printflike(1, 2);
11 | void LOGI(const char *fmt, ...) __printflike(1, 2);
12 | void LOGW(const char *fmt, ...) __printflike(1, 2);
13 | void LOGE(const char *fmt, ...) __printflike(1, 2);
14 | #define PLOGE(fmt, args...) LOGE(fmt " failed with %d: %s\n", ##args, errno, std::strerror(errno))
15 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_more.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_download_md2.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_superuser.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_home_outlined_md2.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
11 |
--------------------------------------------------------------------------------
/stub/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_install.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_loop.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_save_md2.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_check_circle_unchecked_md2.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_check_circle_checked_md2.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_download.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_close_md2.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
12 |
13 |
--------------------------------------------------------------------------------
/native/src/Application.mk:
--------------------------------------------------------------------------------
1 | APP_BUILD_SCRIPT := src/Android.mk
2 | APP_ABI := armeabi-v7a arm64-v8a x86 x86_64
3 | APP_CFLAGS := -Wall -Oz -fomit-frame-pointer -flto
4 | APP_LDFLAGS := -flto
5 | APP_CPPFLAGS := -std=c++20
6 | APP_STL := none
7 | APP_PLATFORM := android-21
8 | APP_THIN_ARCHIVE := true
9 | APP_STRIP_MODE := --strip-all
10 |
11 | # Busybox should use stock libc.a
12 | ifdef B_BB
13 | APP_PLATFORM := android-26
14 | APP_LDFLAGS += -T src/lto_fix.lds
15 | ifeq ($(OS),Windows_NT)
16 | APP_SHORT_COMMANDS := true
17 | endif
18 | endif
19 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/fragment_enter.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/fragment_exit.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/fragment_enter_pop.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/fragment_exit_pop.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
15 |
--------------------------------------------------------------------------------
/stub/src/main/res/values-fr/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Une mise à niveau de Magisk Manager en version complète est nécessaire afin de terminer l’installation. Souhaitez‑vous procéder à son téléchargement et son installation ?
4 | Veuillez vous connecter à Internet ! Une mise à niveau complète de Magisk Manager est requise.
5 | Téléchargement en cours
6 | Veuillez relancer manuellement l’application
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_back_md2.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_notifications_md2.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_log_md2.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_home_md2.xml:
--------------------------------------------------------------------------------
1 |
2 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_dns.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/java/com/topjohnwu/magisk/events/dialog/DialogEvent.kt:
--------------------------------------------------------------------------------
1 | package com.topjohnwu.magisk.events.dialog
2 |
3 | import com.topjohnwu.magisk.arch.ActivityExecutor
4 | import com.topjohnwu.magisk.arch.UIActivity
5 | import com.topjohnwu.magisk.arch.ViewEvent
6 | import com.topjohnwu.magisk.view.MagiskDialog
7 |
8 | abstract class DialogEvent : ViewEvent(), ActivityExecutor {
9 |
10 | override fun invoke(activity: UIActivity<*>) {
11 | MagiskDialog(activity).apply(this::build).show()
12 | }
13 |
14 | abstract fun build(dialog: MagiskDialog)
15 |
16 | }
17 |
18 | typealias GenericDialogListener = () -> Unit
19 |
--------------------------------------------------------------------------------
/docs/releases/19100.md:
--------------------------------------------------------------------------------
1 | # 2019.5.1 Magisk v19.1
2 | Finally, a lovely stable release!
3 |
4 | For those that were using v18.1, here are some quick highlights of v19.0
5 |
6 | - Imageless Magisk: 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.
7 | - Native 64-bit support
8 | - Zygote Ptrace Based MagiskHide
9 |
10 | Other than adding support for Samsung system-as-root devices, this release is mostly bug fixes from v19.0. Enjoy :)
11 |
12 | ### Full Changelog: [here](https://topjohnwu.github.io/Magisk/changes.html)
13 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 16dp
5 |
6 | 2dp
7 | 4dp
8 | 8dp
9 | 12dp
10 | 16dp
11 | 28dp
12 | 32dp
13 | 48dp
14 | 80dp
15 |
16 | 56dp
17 |
18 | 24sp
19 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_translate.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/native/src/external/systemproperties/Android.mk:
--------------------------------------------------------------------------------
1 | LOCAL_PATH := $(call my-dir)
2 |
3 | include $(CLEAR_VARS)
4 | LOCAL_MODULE:= libsystemproperties
5 | LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
6 | LOCAL_EXPORT_C_INCLUDES := $(LOCAL_C_INCLUDES)
7 | LOCAL_STATIC_LIBRARIES := libcxx
8 | LOCAL_CFLAGS := -Wno-deprecated-declarations
9 | LOCAL_SRC_FILES := \
10 | context_node.cpp \
11 | contexts_serialized.cpp \
12 | contexts_split.cpp \
13 | prop_area.cpp \
14 | prop_info.cpp \
15 | system_properties.cpp \
16 | system_property_api.cpp \
17 | system_property_set.cpp \
18 | property_info_parser.cpp
19 |
20 | include $(BUILD_STATIC_LIBRARY)
21 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_delete_md2.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_spinner.xml:
--------------------------------------------------------------------------------
1 |
2 |
14 |
--------------------------------------------------------------------------------
/app/src/main/java/com/topjohnwu/magisk/ui/install/InstallFragment.kt:
--------------------------------------------------------------------------------
1 | package com.topjohnwu.magisk.ui.install
2 |
3 | import com.topjohnwu.magisk.R
4 | import com.topjohnwu.magisk.arch.BaseFragment
5 | import com.topjohnwu.magisk.arch.viewModel
6 | import com.topjohnwu.magisk.databinding.FragmentInstallMd2Binding
7 |
8 | class InstallFragment : BaseFragment() {
9 |
10 | override val layoutRes = R.layout.fragment_install_md2
11 | override val viewModel by viewModel()
12 |
13 | override fun onStart() {
14 | super.onStart()
15 | requireActivity().setTitle(R.string.install)
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_order_name.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
--------------------------------------------------------------------------------
/app/src/main/java/com/topjohnwu/magisk/events/dialog/SecondSlotWarningDialog.kt:
--------------------------------------------------------------------------------
1 | package com.topjohnwu.magisk.events.dialog
2 |
3 | import com.topjohnwu.magisk.R
4 | import com.topjohnwu.magisk.view.MagiskDialog
5 |
6 | class SecondSlotWarningDialog : DialogEvent() {
7 |
8 | override fun build(dialog: MagiskDialog) {
9 | dialog.apply {
10 | setTitle(android.R.string.dialog_alert_title)
11 | setMessage(R.string.install_inactive_slot_msg)
12 | setButton(MagiskDialog.ButtonType.POSITIVE) {
13 | text = android.R.string.ok
14 | }
15 | setCancelable(true)
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_extension.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/tools/ndk-bins/README.md:
--------------------------------------------------------------------------------
1 | ## Prebuilt Static Libraries
2 |
3 | These binaries are extracted straight from [Google NDK r10e](https://dl.google.com/android/repository/android-ndk-r10e-linux-x86_64.zip).
4 | API `16` contains the Bionic libc as old as Android Cupcake (!!). API `21` contains the Bionic libc from Lollipop (minimal API with 64-bit support).
5 |
6 | Over the years, Bionic has slowly become more and more gigantic as devices became more powerful and Google kept adding new features.
7 | These are the oldest, which also means smallest, Bionic libc Google had ever offered.
8 | We prefer to use these static libs because they yield significantly smaller static executables.
9 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v31/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
11 |
12 |
--------------------------------------------------------------------------------
/docs/releases/index.md:
--------------------------------------------------------------------------------
1 | # Release Notes
2 |
3 | - [v25.2](25200.md)
4 | - [v25.1](25100.md)
5 | - [v25.0](25000.md)
6 | - [v24.3](24300.md)
7 | - [v24.2](24200.md)
8 | - [v24.1](24100.md)
9 | - [v24.0](24000.md)
10 | - [v23.0](23000.md)
11 | - [v22.1](22100.md)
12 | - [v22.0](22000.md)
13 | - [v21.4](21400.md)
14 | - [v21.2](21200.md)
15 | - [v21.1](21100.md)
16 | - [v21.0](21000.md)
17 | - [v20.4](20400.md)
18 | - [v20.3](20300.md)
19 | - [v20.2](20200.md)
20 | - [v20.1](20100.md)
21 | - [v20.0](20000.md)
22 | - [v19.4](19400.md)
23 | - [v19.3](19300.md)
24 | - [v19.2](19200.md)
25 | - [v19.1](19100.md)
26 | - [v19.0](19000.md)
27 | - [v18.1](18100.md)
28 | - [v18.0](18000.md)
29 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_console_md2.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
10 |
11 |
12 |
13 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/app/src/main/java/com/topjohnwu/magisk/core/model/su/SuPolicy.kt:
--------------------------------------------------------------------------------
1 | package com.topjohnwu.magisk.core.model.su
2 |
3 | class SuPolicy(val uid: Int) {
4 | companion object {
5 | const val INTERACTIVE = 0
6 | const val DENY = 1
7 | const val ALLOW = 2
8 | }
9 |
10 | var policy: Int = INTERACTIVE
11 | var until: Long = -1L
12 | var logging: Boolean = true
13 | var notification: Boolean = true
14 |
15 | fun toMap(): MutableMap = mutableMapOf(
16 | "uid" to uid,
17 | "policy" to policy,
18 | "until" to until,
19 | "logging" to logging,
20 | "notification" to notification
21 | )
22 | }
23 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_search_md2.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_module_filled_md2.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_restart.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_log_textview.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
9 |
10 |
11 |
12 |
13 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/native/src/base/new.cpp:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 |
4 | /* Override libc++ new implementation
5 | * to optimize final build size */
6 |
7 | void* operator new(std::size_t s) { return malloc(s); }
8 | void* operator new[](std::size_t s) { return malloc(s); }
9 | void operator delete(void *p) { free(p); }
10 | void operator delete[](void *p) { free(p); }
11 | void* operator new(std::size_t s, const std::nothrow_t&) noexcept { return malloc(s); }
12 | void* operator new[](std::size_t s, const std::nothrow_t&) noexcept { return malloc(s); }
13 | void operator delete(void *p, const std::nothrow_t&) noexcept { free(p); }
14 | void operator delete[](void *p, const std::nothrow_t&) noexcept { free(p); }
15 |
--------------------------------------------------------------------------------
/app/src/main/java/com/topjohnwu/magisk/arch/AsyncLoadViewModel.kt:
--------------------------------------------------------------------------------
1 | package com.topjohnwu.magisk.arch
2 |
3 | import androidx.annotation.MainThread
4 | import androidx.lifecycle.viewModelScope
5 | import kotlinx.coroutines.Job
6 | import kotlinx.coroutines.launch
7 |
8 | abstract class AsyncLoadViewModel : BaseViewModel() {
9 |
10 | private var loadingJob: Job? = null
11 |
12 | @MainThread
13 | fun startLoading() {
14 | if (loadingJob?.isActive == true) {
15 | // Prevent multiple jobs from running at the same time
16 | return
17 | }
18 | loadingJob = viewModelScope.launch { doLoadWork() }
19 | }
20 |
21 | protected abstract suspend fun doLoadWork()
22 | }
23 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Set the default behavior, in case people don't have core.autocrlf set.
2 | * text eol=lf
3 |
4 | # Explicitly declare text files you want to always be normalized and converted
5 | # to native line endings on checkout.
6 | # *.c text
7 | # *.h text
8 |
9 | # Declare files that will always have CRLF line endings on checkout.
10 | *.cmd text eol=crlf
11 | *.bat text eol=crlf
12 |
13 | # Denote all files that are truly binary and should not be modified.
14 | tools/** binary
15 | *.jar binary
16 | *.exe binary
17 | *.apk binary
18 | *.png binary
19 | *.jpg binary
20 | *.ttf binary
21 |
22 | # Help GitHub detect languages
23 | native/jni/external/** linguist-vendored
24 | native/jni/systemproperties/** linguist-language=C++
25 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_day.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_multiuser.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_forth_md2.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
12 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/native/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("com.android.library")
3 | }
4 |
5 | setupCommon()
6 |
7 | android {
8 | namespace = "com.topjohnwu.magisk.native"
9 |
10 | externalNativeBuild {
11 | ndkBuild {
12 | path("src/Android.mk")
13 | }
14 | }
15 |
16 | sourceSets.getByName("main") {
17 | manifest.srcFile("src/AndroidManifest.xml")
18 | }
19 |
20 | defaultConfig {
21 | externalNativeBuild {
22 | ndkBuild {
23 | // Pass arguments to ndk-build.
24 | arguments(
25 | "B_MAGISK=1", "B_INIT=1", "B_BOOT=1", "B_TEST=1", "B_POLICY=1", "B_PRELOAD=1", "B_PROP=1"
26 | )
27 | }
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/app/src/main/java/com/topjohnwu/magisk/ui/theme/ThemeViewModel.kt:
--------------------------------------------------------------------------------
1 | package com.topjohnwu.magisk.ui.theme
2 |
3 | import android.view.MenuItem
4 | import com.topjohnwu.magisk.R
5 | import com.topjohnwu.magisk.arch.BaseViewModel
6 | import com.topjohnwu.magisk.core.Config
7 | import com.topjohnwu.magisk.events.RecreateEvent
8 | import com.topjohnwu.magisk.events.dialog.DarkThemeDialog
9 | import com.topjohnwu.magisk.view.TappableHeadlineItem
10 |
11 | class ThemeViewModel : BaseViewModel(){
12 | fun onThemeModeOptionClicked(){
13 | DarkThemeDialog().publish()
14 | }
15 | fun saveTheme(theme: Theme) {
16 | if (!theme.isSelected) {
17 | Config.themeOrdinal = theme.ordinal
18 | RecreateEvent().publish()
19 | }
20 | }
21 | }
--------------------------------------------------------------------------------
/scripts/module_installer.sh:
--------------------------------------------------------------------------------
1 | #!/sbin/sh
2 |
3 | #################
4 | # Initialization
5 | #################
6 |
7 | umask 022
8 |
9 | # echo before loading util_functions
10 | ui_print() { echo "$1"; }
11 |
12 | require_new_magisk() {
13 | ui_print "*******************************"
14 | ui_print " Please install Magisk v20.4+! "
15 | ui_print "*******************************"
16 | exit 1
17 | }
18 |
19 | #########################
20 | # Load util_functions.sh
21 | #########################
22 |
23 | OUTFD=$2
24 | ZIPFILE=$3
25 |
26 | mount /data 2>/dev/null
27 |
28 | [ -f /data/adb/magisk/util_functions.sh ] || require_new_magisk
29 | . /data/adb/magisk/util_functions.sh
30 | [ $MAGISK_VER_CODE -lt 20400 ] && require_new_magisk
31 |
32 | install_module
33 | exit 0
34 |
--------------------------------------------------------------------------------
/docs/releases/21200.md:
--------------------------------------------------------------------------------
1 | ## 2020.12.28 Magisk v21.2
2 |
3 | v21.2 is a maintenance update, mostly addressing bugs, and expanding device compatibility. Checkout the full [v21.0 release notes](https://topjohnwu.github.io/Magisk/releases/21000.html) if coming from older releases.
4 |
5 | ### v21.2
6 |
7 | - [MagiskInit] Detect 2SI after mounting `system_root` on legacy SAR devices
8 | - [General] Make sure `post-fs-data` scripts cannot block more than 35 seconds
9 | - [General] Fix the `magisk --install-module` command
10 | - [General] Trim Windows newline when reading files
11 | - [General] Directly log to file to prevent `logcat` weirdness
12 | - [MagiskBoot] Fix header dump/load for header v3 images
13 |
14 | ### Full Changelog: [here](https://topjohnwu.github.io/Magisk/changes.html)
15 |
--------------------------------------------------------------------------------
/app/src/main/java/com/topjohnwu/magisk/view/TappableHeadlineItem.kt:
--------------------------------------------------------------------------------
1 | package com.topjohnwu.magisk.view
2 |
3 | import com.topjohnwu.magisk.R
4 | import com.topjohnwu.magisk.databinding.DiffRvItem
5 |
6 | sealed class TappableHeadlineItem : DiffRvItem() {
7 |
8 | abstract val title: Int
9 | abstract val icon: Int
10 |
11 | override val layoutRes = R.layout.item_tappable_headline
12 |
13 | // --- listener
14 |
15 | interface Listener {
16 |
17 | fun onItemPressed(item: TappableHeadlineItem)
18 |
19 | }
20 |
21 | // --- objects
22 |
23 | object ThemeMode : TappableHeadlineItem() {
24 | override val title = R.string.settings_dark_mode_title
25 | override val icon = R.drawable.ic_day_night
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/native/src/zygisk/loader.c:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 |
4 | #if defined(__LP64__)
5 | // Use symlink to workaround linker bug on old broken Android
6 | // https://issuetracker.google.com/issues/36914295
7 | #define SECOND_STAGE_PATH "/system/bin/app_process"
8 | #else
9 | #define SECOND_STAGE_PATH "/system/bin/app_process32"
10 | #endif
11 |
12 | __attribute__((constructor))
13 | static void zygisk_loader() {
14 | android_dlextinfo info = {
15 | .flags = ANDROID_DLEXT_FORCE_LOAD
16 | };
17 | void *handle = android_dlopen_ext(SECOND_STAGE_PATH, RTLD_LAZY, &info);
18 | if (handle) {
19 | void(*entry)(void*) = dlsym(handle, "zygisk_inject_entry");
20 | if (entry) {
21 | entry(handle);
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/app/src/main/java/com/topjohnwu/magisk/core/data/magiskdb/StringDao.kt:
--------------------------------------------------------------------------------
1 | package com.topjohnwu.magisk.core.data.magiskdb
2 |
3 | class StringDao : MagiskDB() {
4 |
5 | suspend fun delete(key: String) {
6 | val query = "DELETE FROM ${Table.STRINGS} WHERE key == \"$key\""
7 | exec(query)
8 | }
9 |
10 | suspend fun put(key: String, value: String) {
11 | val kv = mapOf("key" to key, "value" to value)
12 | val query = "REPLACE INTO ${Table.STRINGS} ${kv.toQuery()}"
13 | exec(query)
14 | }
15 |
16 | suspend fun fetch(key: String, default: String = ""): String {
17 | val query = "SELECT value FROM ${Table.STRINGS} WHERE key == \"$key\" LIMIT 1"
18 | return exec(query) { it["value"] }.firstOrNull() ?: default
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/app/src/main/java/com/topjohnwu/magisk/core/data/magiskdb/SettingsDao.kt:
--------------------------------------------------------------------------------
1 | package com.topjohnwu.magisk.core.data.magiskdb
2 |
3 | class SettingsDao : MagiskDB() {
4 |
5 | suspend fun delete(key: String) {
6 | val query = "DELETE FROM ${Table.SETTINGS} WHERE key == \"$key\""
7 | exec(query)
8 | }
9 |
10 | suspend fun put(key: String, value: Int) {
11 | val kv = mapOf("key" to key, "value" to value)
12 | val query = "REPLACE INTO ${Table.SETTINGS} ${kv.toQuery()}"
13 | exec(query)
14 | }
15 |
16 | suspend fun fetch(key: String, default: Int = -1): Int {
17 | val query = "SELECT value FROM ${Table.SETTINGS} WHERE key == \"$key\" LIMIT 1"
18 | return exec(query) { it["value"]?.toInt() }.firstOrNull() ?: default
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_text.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
10 |
11 |
12 |
13 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/native/src/include/socket.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include
4 | #include
5 | #include
6 | #include
7 | #include
8 |
9 | struct sock_cred : public ucred {
10 | std::string context;
11 | };
12 |
13 | socklen_t setup_sockaddr(sockaddr_un *sun, const char *name);
14 | bool get_client_cred(int fd, sock_cred *cred);
15 | std::vector recv_fds(int sockfd);
16 | int recv_fd(int sockfd);
17 | int send_fds(int sockfd, const int *fds, int cnt);
18 | int send_fd(int sockfd, int fd);
19 | int read_int(int fd);
20 | int read_int_be(int fd);
21 | void write_int(int fd, int val);
22 | void write_int_be(int fd, int val);
23 | std::string read_string(int fd);
24 | bool read_string(int fd, std::string &str);
25 | void write_string(int fd, std::string_view str);
26 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_magisk_delete.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
12 |
13 |
17 |
18 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_bug_md2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
12 |
13 |
17 |
18 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_home_md2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
12 |
13 |
17 |
18 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/markdown_window_md2.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_module_md2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
12 |
13 |
17 |
18 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/values/resources.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Magisk
6 | Zygisk
7 |
8 |
9 | \@topjohnwu
10 | \@diareuse
11 | PayPal
12 | Patreon
13 | Twitter
14 | GitHub
15 |
16 | @drawable/ic_logo
17 |
18 |
19 |
--------------------------------------------------------------------------------
/native/src/init/preload.c:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 | #include
4 | #include
5 |
6 | __attribute__((constructor))
7 | static void preload_init() {
8 | // Make sure our next exec won't get bugged
9 | unsetenv("LD_PRELOAD");
10 | unlink("/dev/preload.so");
11 | }
12 |
13 | int security_load_policy(void *data, size_t len) {
14 | int (*load_policy)(void *, size_t) = dlsym(RTLD_NEXT, "security_load_policy");
15 | // Skip checking errors, because if we cannot find the symbol, there
16 | // isn't much we can do other than crashing anyways.
17 | int result = load_policy(data, len);
18 |
19 | // Wait for ack
20 | int fd = open("/sys/fs/selinux/enforce", O_RDONLY);
21 | char c;
22 | read(fd, &c, 1);
23 | close(fd);
24 |
25 | return result;
26 | }
27 |
--------------------------------------------------------------------------------
/app/src/main/java/com/topjohnwu/magisk/arch/ViewEvent.kt:
--------------------------------------------------------------------------------
1 | package com.topjohnwu.magisk.arch
2 |
3 | import android.content.Context
4 | import kotlinx.coroutines.CoroutineScope
5 |
6 | /**
7 | * Class for passing events from ViewModels to Activities/Fragments
8 | * (see https://medium.com/google-developers/livedata-with-snackbar-navigation-and-other-events-the-singleliveevent-case-ac2622673150)
9 | */
10 | abstract class ViewEvent
11 |
12 | abstract class ViewEventWithScope: ViewEvent() {
13 | lateinit var scope: CoroutineScope
14 | }
15 |
16 | interface ContextExecutor {
17 | operator fun invoke(context: Context)
18 | }
19 |
20 | interface ActivityExecutor {
21 | operator fun invoke(activity: UIActivity<*>)
22 | }
23 |
24 | interface FragmentExecutor {
25 | operator fun invoke(fragment: BaseFragment<*>)
26 | }
27 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_bug_filled_md2.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/native/src/base/missing.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include
4 | #include
5 | #include
6 | #include
7 | #include
8 |
9 | static inline int sigtimedwait(const sigset_t* set, siginfo_t* info, const timespec* timeout) {
10 | union {
11 | sigset_t set;
12 | sigset64_t set64;
13 | } s{};
14 | s.set = *set;
15 | return syscall(__NR_rt_sigtimedwait, &s.set64, info, timeout, sizeof(s.set64));
16 | }
17 |
18 | static inline int fexecve(int fd, char* const* argv, char* const* envp) {
19 | syscall(__NR_execveat, fd, "", argv, envp, AT_EMPTY_PATH);
20 | if (errno == ENOSYS) {
21 | char buf[256];
22 | std::snprintf(buf, sizeof(buf), "/proc/self/fd/%d", fd);
23 | execve(buf, argv, envp);
24 | }
25 | return -1;
26 | }
27 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_settings_md2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
12 |
13 |
17 |
18 |
22 |
23 |
--------------------------------------------------------------------------------
/config.prop.sample:
--------------------------------------------------------------------------------
1 | ##########################################################
2 | # All variables in config.prop are optional
3 | # Removing or leaving them blank will keep default values
4 | ##########################################################
5 |
6 | # The version name of Magisk. Default: git HEAD short SHA1
7 | version=string
8 |
9 | # Output path. Default: out
10 | outdir=string
11 |
12 | #####################################################
13 | # Signing configs for signing zips and APKs
14 | # These 4 variables has to be either all set or not
15 | #####################################################
16 |
17 | # Path to keystore file
18 | keyStore=string
19 | # Keystore password
20 | keyStorePass=string
21 | # The desired key alias in the keystore
22 | keyAlias=string
23 | # Password of specified key alias
24 | keyPass=string
25 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_superuser_md2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
12 |
13 |
17 |
18 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_deny_md2.xml:
--------------------------------------------------------------------------------
1 |
2 |
21 |
--------------------------------------------------------------------------------
/app/shared/src/main/java/com/topjohnwu/magisk/ProviderInstaller.java:
--------------------------------------------------------------------------------
1 | package com.topjohnwu.magisk;
2 |
3 | import android.content.Context;
4 |
5 | public class ProviderInstaller {
6 |
7 | public static boolean install(Context context) {
8 | try {
9 | // Try installing new SSL provider from Google Play Service
10 | Context gms = context.createPackageContext("com.google.android.gms",
11 | Context.CONTEXT_INCLUDE_CODE | Context.CONTEXT_IGNORE_SECURITY);
12 | gms.getClassLoader()
13 | .loadClass("com.google.android.gms.common.security.ProviderInstallerImpl")
14 | .getMethod("insertProvider", Context.class)
15 | .invoke(null, gms);
16 | } catch (Exception e) {
17 | return false;
18 | }
19 | return true;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/app/src/main/res/values-night/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_bug_outlined_md2.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
--------------------------------------------------------------------------------
/native/src/base/lib.rs:
--------------------------------------------------------------------------------
1 | #![feature(format_args_nl)]
2 |
3 | pub use libc;
4 |
5 | pub use files::*;
6 | pub use logging::*;
7 | pub use misc::*;
8 | pub use xwrap::*;
9 |
10 | mod files;
11 | mod logging;
12 | mod misc;
13 | mod xwrap;
14 |
15 | #[cxx::bridge]
16 | pub mod ffi {
17 | #[derive(Copy, Clone)]
18 | pub enum LogLevel {
19 | Error,
20 | Warn,
21 | Info,
22 | Debug,
23 | }
24 |
25 | extern "Rust" {
26 | fn log_with_rs(level: LogLevel, msg: &str);
27 | fn exit_on_error(b: bool);
28 | fn set_log_level_state(level: LogLevel, enabled: bool);
29 | fn cmdline_logging();
30 | }
31 | }
32 |
33 | #[cxx::bridge(namespace = "rust")]
34 | pub mod ffi2 {
35 | extern "Rust" {
36 | fn xpipe2(fds: &mut [i32; 2], flags: i32) -> i32;
37 | fn fd_path(fd: i32, buf: &mut [u8]) -> isize;
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/scripts/update_binary.sh:
--------------------------------------------------------------------------------
1 | #!/sbin/sh
2 |
3 | TMPDIR=/dev/tmp
4 | rm -rf $TMPDIR
5 | mkdir -p $TMPDIR 2>/dev/null
6 |
7 | export BBBIN=$TMPDIR/busybox
8 | for arch in "x86_64" "x86" "arm64-v8a" "armeabi-v7a"; do
9 | unzip -o "$3" "lib/$arch/libbusybox.so" -d $TMPDIR >&2
10 | libpath="$TMPDIR/lib/$arch/libbusybox.so"
11 | chmod 755 $libpath
12 | if [ -x $libpath ] && $libpath >/dev/null 2>&1; then
13 | mv -f $libpath $BBBIN
14 | break
15 | fi
16 | done
17 | $BBBIN rm -rf $TMPDIR/lib
18 |
19 | export INSTALLER=$TMPDIR/install
20 | $BBBIN mkdir -p $INSTALLER
21 | $BBBIN unzip -o "$3" "assets/*" "lib/*" "META-INF/com/google/*" -x "lib/*/libbusybox.so" -d $INSTALLER >&2
22 | export ASH_STANDALONE=1
23 | if echo "$3" | $BBBIN grep -q "uninstall"; then
24 | exec $BBBIN sh "$INSTALLER/assets/uninstaller.sh" "$@"
25 | else
26 | exec $BBBIN sh "$INSTALLER/META-INF/com/google/android/updater-script" "$@"
27 | fi
28 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_module_outlined_md2.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_restore.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_shortcut.xml:
--------------------------------------------------------------------------------
1 |
8 |
11 |
12 |
--------------------------------------------------------------------------------
/stub/src/main/java/com/topjohnwu/magisk/DelegateApplication.java:
--------------------------------------------------------------------------------
1 | package com.topjohnwu.magisk;
2 |
3 | import android.app.Application;
4 | import android.content.Context;
5 | import android.content.res.Configuration;
6 |
7 | public class DelegateApplication extends Application {
8 |
9 | private Application receiver;
10 |
11 | @Override
12 | protected void attachBaseContext(Context base) {
13 | super.attachBaseContext(base);
14 | receiver = DynLoad.createAndSetupApp(this);
15 | }
16 |
17 | @Override
18 | public void onCreate() {
19 | super.onCreate();
20 | if (receiver != null)
21 | receiver.onCreate();
22 | }
23 |
24 | @Override
25 | public void onConfigurationChanged(Configuration newConfig) {
26 | super.onConfigurationChanged(newConfig);
27 | if (receiver != null)
28 | receiver.onConfigurationChanged(newConfig);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/tools/bootctl.patch:
--------------------------------------------------------------------------------
1 | # How to build the bootctl bundled within the Magisk app:
2 | #
3 | # 1. Checkout and sync the AOSP tree:
4 | # https://source.android.com/setup/build/downloading
5 | # 2. Build for arm64:
6 | # lunch aosp_arm64-eng
7 | # 3. Apply patches:
8 | # cd system/extras; patch -p1 < bootctl.patch
9 | # 4. Build the executable:
10 | # m bootctl
11 |
12 | diff --git a/bootctl/Android.bp b/bootctl/Android.bp
13 | index f63871cf..8a551bbe 100644
14 | --- a/bootctl/Android.bp
15 | +++ b/bootctl/Android.bp
16 | @@ -26,11 +26,15 @@ cc_binary {
17 | "-Werror",
18 | ],
19 |
20 | - shared_libs: [
21 | + static_libs: [
22 | "android.hardware.boot@1.0",
23 | "android.hardware.boot@1.1",
24 | "android.hardware.boot@1.2",
25 | + ],
26 | + shared_libs: [
27 | "libhidlbase",
28 | "libutils",
29 | + "libcutils",
30 | + "liblog",
31 | ],
32 | }
33 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_check_circle_md2.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
10 |
11 |
14 |
15 |
19 |
20 |
24 |
25 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_reboot.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/docs/releases/21400.md:
--------------------------------------------------------------------------------
1 | ## 2021.1.17 Magisk v21.4
2 |
3 | **Update**: v21.4 adds more regression hot fixes.
4 |
5 | Happy 2021! v21.3 adds a workaround for devices with buggy F2FS Linux kernel drivers. This F2FS bug may cause bootloops on many devices. Checkout the full [v21.0 release notes](https://topjohnwu.github.io/Magisk/releases/21000.html) if coming from older releases.
6 |
7 | ### v21.4
8 |
9 | - [MagiskSU] Fix `su -c` behavior that broke many root apps
10 | - [General] Properly handle read/write over sockets (the `broken pipe` issue)
11 |
12 | ### v21.3
13 |
14 | - [MagiskInit] Avoid mounting `f2fs` userdata as it may result in kernel crashes. This shall fix a lot of bootloops
15 | - [MagiskBoot] Fix a minor header checksum bug for `DHTB` header and ASUS `blob` image formats
16 | - [MagiskHide] Allowing hiding isolated processes if the mount namespace is separated
17 |
18 | ### Full Changelog: [here](https://topjohnwu.github.io/Magisk/changes.html)
19 |
--------------------------------------------------------------------------------
/native/src/boot/magiskboot.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include
4 |
5 | #define HEADER_FILE "header"
6 | #define KERNEL_FILE "kernel"
7 | #define RAMDISK_FILE "ramdisk.cpio"
8 | #define SECOND_FILE "second"
9 | #define EXTRA_FILE "extra"
10 | #define KER_DTB_FILE "kernel_dtb"
11 | #define RECV_DTBO_FILE "recovery_dtbo"
12 | #define DTB_FILE "dtb"
13 | #define NEW_BOOT "new-boot.img"
14 |
15 | int unpack(const char *image, bool skip_decomp = false, bool hdr = false);
16 | void repack(const char *src_img, const char *out_img, bool skip_comp = false);
17 | int split_image_dtb(const char *filename);
18 | int hexpatch(const char *file, const char *from, const char *to);
19 | int cpio_commands(int argc, char *argv[]);
20 | int dtb_commands(int argc, char *argv[]);
21 |
22 | uint32_t patch_verity(void *buf, uint32_t size);
23 | uint32_t patch_encryption(void *buf, uint32_t size);
24 | bool check_env(const char *name);
25 |
--------------------------------------------------------------------------------
/native/src/core/core.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include
4 | #include
5 |
6 | extern bool RECOVERY_MODE;
7 | extern std::atomic pkg_xml_ino;
8 |
9 | std::string find_preinit_device();
10 | void unlock_blocks();
11 | void reboot();
12 | void start_log_daemon();
13 | void setup_logfile(bool reset);
14 | std::string read_certificate(int fd, int version = -1);
15 |
16 | // Module stuffs
17 | void handle_modules();
18 | void load_modules();
19 | void disable_modules();
20 | void remove_modules();
21 | void exec_module_scripts(const char *stage);
22 |
23 | // Scripting
24 | void exec_script(const char *script);
25 | void exec_common_scripts(const char *stage);
26 | void exec_module_scripts(const char *stage, const std::vector &modules);
27 | void install_apk(const char *apk);
28 | void uninstall_pkg(const char *pkg);
29 | void clear_pkg(const char *pkg, int user_id);
30 | [[noreturn]] void install_module(const char *file);
31 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_hide.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/docs/releases/24200.md:
--------------------------------------------------------------------------------
1 | ## 2022.3.1 Magisk v24.2
2 |
3 | Maintenance release fixing various issues.
4 |
5 | - [MagiskSU] Fix buffer overflow
6 | - [MagiskSU] Fix owner managed multiuser superuser settings
7 | - [MagiskSU] Fix command logging when using `su -c `
8 | - [MagiskSU] Prevent su request indefinite blocking
9 | - [MagiskBoot] Support `lz4_legacy` archive with multiple magic
10 | - [MagiskBoot] Fix `lz4_lg` compression
11 | - [DenyList] Allow targeting processes running as system UID
12 | - [Zygisk] Workaround Samsung's "early zygote"
13 | - [Zygisk] Improved Zygisk loading mechanism
14 | - [Zygisk] Fix application UID tracking
15 | - [Zygisk] Fix improper `umask` being set in zygote
16 | - [App] Fix BusyBox execution test
17 | - [App] Improve stub loading mechanism
18 | - [App] Major app upgrade flow improvements
19 | - [General] Improve commandline error handling and messaging
20 |
21 | ### Full Changelog: [here](https://topjohnwu.github.io/Magisk/changes.html)
22 |
--------------------------------------------------------------------------------
/app/src/main/java/com/topjohnwu/magisk/core/model/UpdateInfo.kt:
--------------------------------------------------------------------------------
1 | package com.topjohnwu.magisk.core.model
2 |
3 | import android.os.Parcelable
4 | import com.squareup.moshi.JsonClass
5 | import kotlinx.parcelize.Parcelize
6 |
7 | @JsonClass(generateAdapter = true)
8 | data class UpdateInfo(
9 | val magisk: MagiskJson = MagiskJson(),
10 | )
11 |
12 | @Parcelize
13 | @JsonClass(generateAdapter = true)
14 | data class MagiskJson(
15 | val version: String = "",
16 | val versionCode: Int = -1,
17 | val link: String = "",
18 | val note: String = ""
19 | ) : Parcelable
20 |
21 | @JsonClass(generateAdapter = true)
22 | data class ModuleJson(
23 | val version: String,
24 | val versionCode: Int,
25 | val zipUrl: String,
26 | val changelog: String,
27 | )
28 |
29 | @JsonClass(generateAdapter = true)
30 | data class CommitInfo(
31 | val sha: String
32 | )
33 |
34 | @JsonClass(generateAdapter = true)
35 | data class BranchInfo(
36 | val commit: CommitInfo
37 | )
38 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_night.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_refresh_data_md2.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/native/src/zygisk/deny/deny.hpp:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | #include
4 | #include
5 | #include
6 | #include