手把手教你從源碼開始編譯Magisk APP和依賴項

Magisk 是一套用於定製 Android 的開源工具,支持高於 Android 5.0(基於Magisk 23.0)的設備。它涵蓋了 Android 定製的基本部分:root、引導腳本、SELinux 修補、移除 AVB2.0 / dm-verity / 強制加密等。java

如下是一些基礎功能項:node

MagiskSU:提供設備的 root 權限。 MagiskModules:經過安裝模塊來修改只讀分區。 MagiskHide:可以在 root 檢測或系統完整性檢測中隱藏 Magisk MagiskBoot:一套極其完整的解包與自動打包 Android 啓動鏡像(boot.img)的工具。python

編譯前的準備

Magisk 能夠在支持 Android Studio 的任何平臺上編譯。這是開發者的原話,但經我實測使用 IntelliJ IDEA 也可以正常配置。因此你須要先安裝好最新版本的 Android Studio 或者 IntelliJ IDEA 二選一。(因爲本項目的Android Gradle插件即AGP的版本老是保持最新,因此推薦將 Android Studio 也更新到最新版本,不然打開項目後會發生 Android Studio 版本過舊錯誤。) 安裝好Python 3.6+的版本 (Windows:在安裝包時勾選 'Add Python to PATH' ,安裝後還需打開命令行運行 pip install colorama )linux

配置步驟

首先,使用Git克隆源代碼:(記住,必定要加上 recurse-submodules 參數,不然編譯時會因缺乏庫文件而失敗)android

git clone --recurse-submodules https://github.com/topjohnwu/Magisk.git
複製代碼

以我我的使用的Kali Linux虛擬機環境爲例:git

┌──(root kali)-[/]
└─# git clone --recurse-submodules https://github.com/topjohnwu/Magisk.git 
正克隆到 'Magisk'...
remote: Enumerating objects: 62787, done.
remote: Counting objects: 100% (872/872), done.
remote: Compressing objects: 100% (440/440), done.
remote: Total 62787 (delta 409), reused 759 (delta 331), pack-reused 61915
接收對象中: 100% (62787/62787), 52.55 MiB | 211.00 KiB/s, 完成.
處理 delta 中: 100% (38854/38854), 完成.
子模組 'busybox'(https://github.com/topjohnwu/ndk-busybox.git)已對路徑 'native/jni/external/busybox' 註冊
子模組 'bzip2'(https://github.com/nemequ/bzip2.git)已對路徑 'native/jni/external/bzip2' 註冊
子模組 'dtc'(https://github.com/dgibson/dtc.git)已對路徑 'native/jni/external/dtc' 註冊
子模組 'libcxx'(https://github.com/topjohnwu/libcxx.git)已對路徑 'native/jni/external/libcxx' 註冊
子模組 'lz4'(https://github.com/lz4/lz4.git)已對路徑 'native/jni/external/lz4' 註冊
子模組 'mincrypt'(https://github.com/topjohnwu/mincrypt.git)已對路徑 'native/jni/external/mincrypt' 註冊
子模組 'nanopb'(https://github.com/nanopb/nanopb.git)已對路徑 'native/jni/external/nanopb' 註冊
子模組 'pcre'(https://android.googlesource.com/platform/external/pcre)已對路徑 'native/jni/external/pcre' 註冊
子模組 'selinux'(https://github.com/topjohnwu/selinux.git)已對路徑 'native/jni/external/selinux' 註冊
子模組 'xhook'(https://github.com/iqiyi/xHook.git)已對路徑 'native/jni/external/xhook' 註冊
子模組 'xz'(https://github.com/xz-mirror/xz.git)已對路徑 'native/jni/external/xz' 註冊
子模組 'zlib'(https://android.googlesource.com/platform/external/zlib)已對路徑 'native/jni/external/zlib' 註冊
子模組 'termux-elf-cleaner'(https://github.com/termux/termux-elf-cleaner.git)已對路徑 'tools/termux-elf-cleaner' 註冊
​
正克隆到 '/Magisk/native/jni/external/busybox'...
remote: Enumerating objects: 111657, done.        
remote: Counting objects: 100% (3015/3015), done.        
remote: Compressing objects: 100% (1110/1110), done.        
remote: Total 111657 (delta 2065), reused 2390 (delta 1878), pack-reused 108642 
接收對象中: 100% (111657/111657), 31.97 MiB | 581.00 KiB/s, 完成.
處理 delta 中: 100% (88773/88773), 完成.
​
正克隆到 '/Magisk/native/jni/external/libcxx'...
remote: Enumerating objects: 8419, done.        
remote: Counting objects: 100% (8419/8419), done.        
remote: Compressing objects: 100% (4266/4266), done.        
remote: Total 8419 (delta 3852), reused 8419 (delta 3852), pack-reused 0 
接收對象中: 100% (8419/8419), 4.19 MiB | 503.00 KiB/s, 完成.
處理 delta 中: 100% (3852/3852), 完成.
​
正克隆到 '/Magisk/native/jni/external/nanopb'...
remote: Enumerating objects: 7820, done.        
remote: Counting objects: 100% (236/236), done.        
remote: Compressing objects: 100% (135/135), done.        
remote: Total 7820 (delta 120), reused 199 (delta 98), pack-reused 7584 
接收對象中: 100% (7820/7820), 3.93 MiB | 162.00 KiB/s, 完成.
處理 delta 中: 100% (5053/5053), 完成.
​
正克隆到 '/Magisk/native/jni/external/selinux'...
remote: Enumerating objects: 21280, done.        
remote: Total 21280 (delta 0), reused 0 (delta 0), pack-reused 21280 
接收對象中: 100% (21280/21280), 11.78 MiB | 541.00 KiB/s, 完成.
處理 delta 中: 100% (15644/15644), 完成.
​
正克隆到 '/Magisk/native/jni/external/xhook'...
remote: Enumerating objects: 901, done.        
remote: Total 901 (delta 0), reused 0 (delta 0), pack-reused 901 
接收對象中: 100% (901/901), 836.34 KiB | 287.00 KiB/s, 完成.
處理 delta 中: 100% (450/450), 完成.
​
正克隆到 '/Magisk/native/jni/external/xz'...
remote: Enumerating objects: 10683, done.        
remote: Counting objects: 100% (221/221), done.        
remote: Compressing objects: 100% (117/117), done.        
remote: Total 10683 (delta 129), reused 154 (delta 104), pack-reused 10462 
接收對象中: 100% (10683/10683), 2.76 MiB | 252.00 KiB/s, 完成.
處理 delta 中: 100% (8103/8103), 完成.
​
正克隆到 '/Magisk/tools/termux-elf-cleaner'...
remote: Enumerating objects: 45, done.        
remote: Counting objects: 100% (3/3), done.        
remote: Compressing objects: 100% (3/3), done.        
remote: Total 45 (delta 0), reused 1 (delta 0), pack-reused 42 
接收對象中: 100% (45/45), 24.93 KiB | 135.00 KiB/s, 完成.
處理 delta 中: 100% (18/18), 完成.
​
正克隆到 '/Magisk/native/jni/external/bzip2'...
fatal: 沒法訪問 'https://github.com/nemequ/bzip2.git/':GnuTLS recv error (-54): 在 pull 函數中出錯。
fatal: 沒法克隆 'https://github.com/nemequ/bzip2.git' 到子模組路徑 '/Magisk/native/jni/external/bzip2'
第二次嘗試克隆 'native/jni/external/bzip2' 失敗,退出
複製代碼

若是你在克隆的時候像我這樣網絡不太好出現了子模塊沒下載的狀況,可使用 git submodule update -f 強制更新:github

┌──(root kali)-[/Magisk]
└─# git submodule update
正克隆到 '/Magisk/native/jni/external/bzip2'...
正克隆到 '/Magisk/native/jni/external/dtc'...
正克隆到 '/Magisk/native/jni/external/lz4'...
​
┌──(root kali)-[/Magisk]
└─# git submodule update -f                                                                               
子模組路徑 'native/jni/external/busybox':檢出 '84ce191c8e3e69869617991c275f1b724422c604'
子模組路徑 'native/jni/external/bzip2':檢出 '67d818584d505503c2bdbd15aec43e6219642762'
子模組路徑 'native/jni/external/dtc':檢出 'd37f6b20107e952064e3f77e9d6915a9c09d10a6'
子模組路徑 'native/jni/external/libcxx':檢出 'f61fcee091736dd0ae38670876157e9862ac6ff8'
子模組路徑 'native/jni/external/lz4':檢出 'fdf2ef5809ca875c454510610764d9125ef2ebbd'
子模組路徑 'native/jni/external/mincrypt':檢出 '1f355c50a4025a3549cbeeb6cb29b639d8721323'
子模組路徑 'native/jni/external/nanopb':檢出 '1466e6f953835b191a7f5acf0c06c941d4cd33d9'
子模組路徑 'native/jni/external/pcre':檢出 '986dc24ace8aea66189a95510813747155fa3800'
子模組路徑 'native/jni/external/selinux':檢出 '969114cff6ee973f47a3c84cacdef77e504d7bd9'
子模組路徑 'native/jni/external/xhook':檢出 '9180bd74098fd41f808d3968e2e52b4f5db92c99'
子模組路徑 'native/jni/external/xz':檢出 'b5be61cc06088bb07f488f9baf7d447ff47b37c1'
子模組路徑 'native/jni/external/zlib':檢出 '3a0aa2b3df38ad6298f91c4d8afef708bb4f088e'
子模組路徑 'tools/termux-elf-cleaner':檢出 '334efd1923c563e19d00e655dfbfb2f9f7031bb1'
複製代碼

Android Studio 或 IDEA 安裝時會自帶一份JDK,原做者推薦把系統的JDK配置爲這個。但若是你已經安裝過了其餘JDK而且能正常運行,你也能夠跳過這一步。(因爲Gradle編譯時還須要啓動一個消耗很多內存的JDK進程,原做者可能所以考慮改變系統默認JDK的設置)步驟以下:api

macOS:
export JAVA_HOME="/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home"
Linux:(把Path\To要替換成你本身的路徑)
export PATH="/path/to/androidstudio/jre/bin:$PATH"
Windows:在系統變量的 PATH 項中添加 C:\Path\To\Android Studio\jre\bin 。(把Path\To要替換成你本身的路徑)
複製代碼

在系統中添加一個新的環境變量:ANDROID_SDK_ROOT 路徑到你的 Android SDK 的存儲路徑。 (這項配置能夠在Android Studio或IDEA選項裏找到)安全

Linux/MacOS:(把Path\To要替換成你本身的路徑)
export ANDROID_SDK_ROOT="/path/to/Android/Sdk"
Windows:在系統變量中添加 ANDROID_SDK_ROOT ,把變量值設置爲你的 Android SDK 路徑。
複製代碼

因爲編譯Magisk須要一份特殊的Android NDK,因此你須要先在倉庫的根目錄下執行 ./build.py ndk ,此Python腳本就會自動幫你下載解壓並配置好這份NDK。markdown

Linux/MacOS:
┌──(root kali)-[/Magisk]
└─# ./build.py ndk
Windows:(加python便可,後面再也不闡述)
⚡ E:/Magisk> python build.py ndk
複製代碼

運行 build.py 來了解編譯選項。若是你上面的環境變量配置錯誤,則會報錯。 對於每一項動做,使用 -h 能夠查看更多幫助內容。

┌──(root kali)-[/Magisk]
└─# ./build.py            
usage: build.py [-h] [-r] [-v] [-c CONFIG] {all,binary,app,stub,snet,clean,ndk} ...

Magisk build script

optional arguments:
  -h, --help            show this help message and exit
  -r, --release         compile in release mode
  -v, --verbose         verbose output
  -c CONFIG, --config CONFIG
                        custom config file (default: config.prop)

actions:
  {all,binary,app,stub,snet,clean,ndk}
    all                 build everything
    binary              build binaries
    app                 build the Magisk app
    stub                build stub APK
    snet                build snet extension
    clean               cleanup
    ndk                 setup Magisk NDK
複製代碼

簡述一下項目結構,項目工程分爲四個部分(詳細內容參見../docs/tools.md):

/stub APK部分
/app(指Magisk APP主程序)部分
/native 即C/C++部分,包含了8個實用工具 (包含在NDK編譯出的四個二進制文件內,分別是 Magisk、Magiskboot、Magiskinit、busybox )
snet 擴展的源碼需放在 /stub/src/main/java/com/topjohnwu/snet 中才能正常編譯,默認不會編譯此項內容。

magiskboot                 /* binary */
magiskinit                 /* binary */
magiskpolicy -> magiskinit
supolicy -> magiskinit
magisk                     /* binary */
magiskhide -> magisk
resetprop -> magisk
su -> magisk
複製代碼

使用Android Studio或 IDEA 的配置選項進行編譯的步驟示範: 在Android Studio或 IDEA 中打開項目後,點擊右上部分導航欄中的 「添加配置」 ,而後選擇 」添加新的運行配置「,在彈出的菜單中選擇 」Python「。(注:若是你沒有此選項,你須要去 「文件」 => 」設置「 => 」插件「 中搜索並安裝 」Python Community Edition「 插件)

如圖所示,點擊 「添加新的運行配置」:

添加配置 在編輯窗口中如圖依次設置好 腳本路徑 和 Python解釋器 路徑,並在環境變量中添加 ANDROID_SDK_ROOT 路徑到你的 Android SDK 的存儲路徑,最後點擊右下角 應用 保存好配置:

設置路徑

設置解釋器 當配置被保存好後,在原來的 「添加配置」 處會顯示你已添加好的Python腳本配置,這時就能夠點擊 「運行」 了。 若是想配置不一樣的編譯選項,回到剛纔的編輯窗口,在 參數 中 按腳本格式添加好相應的參數,而後保存配置便可。

設置參數 使用編譯選項 build.py all 進行全量編譯,輸出示例:(篇幅較長,能夠直接跳過)

/usr/bin/python3.9 /Magisk/build.py -v all

* Building stub APK

Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true
> Task :buildSrc:compileKotlin UP-TO-DATE
> Task :buildSrc:compileJava NO-SOURCE
> Task :buildSrc:compileGroovy NO-SOURCE
> Task :buildSrc:pluginDescriptors UP-TO-DATE
> Task :buildSrc:processResources UP-TO-DATE
> Task :buildSrc:classes UP-TO-DATE
> Task :buildSrc:inspectClassesForKotlinIC UP-TO-DATE
> Task :buildSrc:jar UP-TO-DATE
> Task :buildSrc:assemble UP-TO-DATE
> Task :buildSrc:compileTestKotlin NO-SOURCE
> Task :buildSrc:pluginUnderTestMetadata UP-TO-DATE
> Task :buildSrc:compileTestJava NO-SOURCE
> Task :buildSrc:compileTestGroovy NO-SOURCE
> Task :buildSrc:processTestResources NO-SOURCE
> Task :buildSrc:testClasses UP-TO-DATE
> Task :buildSrc:test NO-SOURCE
> Task :buildSrc:validatePlugins UP-TO-DATE
> Task :buildSrc:check UP-TO-DATE
> Task :buildSrc:build UP-TO-DATE

> Configure project :app
WARNING:: The option setting 'android.enableR8.fullMode=true' is experimental.
The current default is 'false'.

> Task :stub:preBuild UP-TO-DATE
> Task :app:shared:preBuild UP-TO-DATE
> Task :app:shared:preReleaseBuild UP-TO-DATE
> Task :stub:extractProguardFiles UP-TO-DATE
> Task :stub:preReleaseBuild UP-TO-DATE
> Task :app:shared:compileReleaseAidl NO-SOURCE
> Task :app:shared:packageReleaseRenderscript NO-SOURCE
> Task :stub:generateReleaseBuildConfig UP-TO-DATE
> Task :stub:compileReleaseAidl NO-SOURCE
> Task :app:shared:writeReleaseAarMetadata UP-TO-DATE
> Task :stub:compileReleaseRenderscript NO-SOURCE
> Task :app:shared:compileReleaseRenderscript NO-SOURCE
> Task :stub:javaPreCompileRelease UP-TO-DATE
> Task :app:shared:generateReleaseResValues UP-TO-DATE
> Task :app:shared:generateReleaseResources UP-TO-DATE
> Task :stub:writeReleaseApplicationId UP-TO-DATE
> Task :stub:analyticsRecordingRelease
> Task :app:shared:packageReleaseResources UP-TO-DATE
> Task :app:shared:extractDeepLinksRelease UP-TO-DATE
> Task :stub:checkReleaseAarMetadata UP-TO-DATE
> Task :stub:generateReleaseResValues UP-TO-DATE
> Task :stub:generateReleaseResources UP-TO-DATE
> Task :app:shared:processReleaseManifest UP-TO-DATE
> Task :stub:mergeReleaseResources UP-TO-DATE
> Task :app:shared:compileReleaseLibraryResources UP-TO-DATE
> Task :stub:createReleaseCompatibleScreenManifests UP-TO-DATE
> Task :stub:extractDeepLinksRelease UP-TO-DATE
> Task :app:shared:parseReleaseLocalResources UP-TO-DATE
> Task :stub:processReleaseMainManifest UP-TO-DATE
> Task :stub:processReleaseManifest UP-TO-DATE
> Task :stub:processReleaseManifestForPackage UP-TO-DATE
> Task :stub:mergeReleaseJniLibFolders UP-TO-DATE
> Task :app:shared:generateReleaseRFile UP-TO-DATE
> Task :stub:mergeReleaseShaders UP-TO-DATE
> Task :app:shared:generateReleaseBuildConfig UP-TO-DATE
> Task :app:shared:javaPreCompileRelease UP-TO-DATE
> Task :stub:processReleaseResources UP-TO-DATE
> Task :stub:compileReleaseShaders NO-SOURCE
> Task :stub:generateReleaseAssets UP-TO-DATE
> Task :app:shared:compileReleaseJavaWithJavac UP-TO-DATE
> Task :app:shared:bundleLibCompileToJarRelease UP-TO-DATE
> Task :stub:checkReleaseDuplicateClasses UP-TO-DATE
> Task :app:shared:prepareLintJarForPublish UP-TO-DATE
> Task :app:shared:processReleaseJavaRes NO-SOURCE
> Task :app:shared:bundleLibResRelease NO-SOURCE
> Task :app:shared:mergeReleaseJniLibFolders UP-TO-DATE
> Task :app:shared:mergeReleaseNativeLibs NO-SOURCE
> Task :app:shared:stripReleaseDebugSymbols NO-SOURCE
> Task :stub:compileReleaseJavaWithJavac UP-TO-DATE
> Task :stub:compileReleaseSources UP-TO-DATE
> Task :app:shared:copyReleaseJniLibsProjectOnly UP-TO-DATE
> Task :app:shared:mergeReleaseShaders UP-TO-DATE
> Task :app:shared:compileReleaseShaders NO-SOURCE
> Task :app:shared:generateReleaseAssets UP-TO-DATE
> Task :app:shared:packageReleaseAssets UP-TO-DATE
> Task :app:shared:mergeReleaseGeneratedProguardFiles UP-TO-DATE
> Task :app:shared:exportReleaseConsumerProguardFiles UP-TO-DATE
> Task :app:shared:bundleLibRuntimeToJarRelease UP-TO-DATE
> Task :stub:lintVitalRelease
> Task :stub:mergeReleaseNativeLibs UP-TO-DATE
> Task :stub:stripReleaseDebugSymbols NO-SOURCE
> Task :stub:extractReleaseNativeSymbolTables NO-SOURCE
> Task :stub:mergeReleaseNativeDebugMetadata NO-SOURCE
> Task :stub:mergeReleaseAssets UP-TO-DATE
> Task :stub:compressReleaseAssets UP-TO-DATE
> Task :stub:mergeReleaseGeneratedProguardFiles UP-TO-DATE
> Task :stub:processReleaseJavaRes NO-SOURCE
> Task :stub:mergeReleaseJavaResource UP-TO-DATE
> Task :stub:minifyReleaseWithR8 UP-TO-DATE
> Task :stub:optimizeReleaseResources UP-TO-DATE
> Task :stub:validateSigningRelease UP-TO-DATE
> Task :stub:writeReleaseAppMetadata UP-TO-DATE
> Task :stub:writeReleaseSigningConfigVersions UP-TO-DATE
> Task :stub:packageRelease
> Task :stub:assembleRelease

BUILD SUCCESSFUL in 3s
50 actionable tasks: 3 executed, 47 up-to-date
mv stub/build/outputs/apk/release/stub-release.apk -> out/stub-release.apk

Output: out/stub-release.apk


* Building binaries: magisk magiskinit magiskboot busybox

[armeabi-v7a] Compile++ thumb: magisk <= magisk.cpp
[armeabi-v7a] Compile++ thumb: magisk <= applets.cpp
[armeabi-v7a] Compile++ thumb: magisk <= socket.cpp
[armeabi-v7a] Compile++ thumb: magisk <= restorecon.cpp
[armeabi-v7a] Compile++ thumb: magisk <= scripting.cpp
[armeabi-v7a] Compile++ thumb: magisk <= bootstages.cpp
[armeabi-v7a] Compile++ thumb: magisk <= db.cpp
[armeabi-v7a] Compile++ thumb: magisk <= daemon.cpp
[armeabi-v7a] Compile++ thumb: magisk <= magiskhide.cpp
[armeabi-v7a] Compile++ thumb: magisk <= hide_policy.cpp
[armeabi-v7a] Compile++ thumb: magisk <= persist_properties.cpp
[armeabi-v7a] Compile++ thumb: magisk <= su.cpp
[armeabi-v7a] Compile++ thumb: magisk <= module.cpp
[armeabi-v7a] Compile++ thumb: magisk <= connect.cpp
[armeabi-v7a] Compile++ thumb: magisk <= resetprop.cpp
[armeabi-v7a] Compile++ thumb: magisk <= pts.cpp
[armeabi-v7a] Compile++ thumb: magisk <= hide_utils.cpp
[armeabi-v7a] Compile++ thumb: systemproperties <= context_node.cpp
[armeabi-v7a] Compile++ thumb: systemproperties <= contexts_serialized.cpp
[armeabi-v7a] Compile++ thumb: systemproperties <= prop_info.cpp
[armeabi-v7a] Compile++ thumb: systemproperties <= contexts_split.cpp
[armeabi-v7a] Compile++ thumb: systemproperties <= prop_area.cpp
[armeabi-v7a] Compile++ thumb: systemproperties <= system_properties.cpp
[armeabi-v7a] Compile++ thumb: magisk <= su_daemon.cpp
[armeabi-v7a] Compile++ thumb: systemproperties <= system_property_api.cpp
[armeabi-v7a] Compile++ thumb: utils <= new.cpp
[armeabi-v7a] Compile++ thumb: systemproperties <= system_property_set.cpp
[armeabi-v7a] Compile++ thumb: utils <= missing.cpp
[armeabi-v7a] Compile++ thumb: systemproperties <= property_info_parser.cpp
[armeabi-v7a] Compile++ thumb: utils <= logging.cpp
[armeabi-v7a] Compile++ thumb: magisk <= proc_monitor.cpp



[arm64-v8a] Compile++      : magisk <= socket.cpp
[arm64-v8a] Compile++      : magisk <= applets.cpp
[arm64-v8a] Compile++      : magisk <= magisk.cpp
[arm64-v8a] Compile++      : magisk <= scripting.cpp
[arm64-v8a] Compile++      : magisk <= restorecon.cpp
[arm64-v8a] Compile++      : magisk <= bootstages.cpp
[arm64-v8a] Compile++      : magisk <= magiskhide.cpp
[arm64-v8a] Compile++      : magisk <= db.cpp
[arm64-v8a] Compile++      : magisk <= daemon.cpp
[arm64-v8a] Compile++      : magisk <= hide_policy.cpp
[arm64-v8a] Compile++      : magisk <= module.cpp
[arm64-v8a] Compile++      : magisk <= pts.cpp
[arm64-v8a] Compile++      : magisk <= su.cpp
[arm64-v8a] Compile++      : magisk <= persist_properties.cpp
[arm64-v8a] Compile        : nanopb <= pb_common.c
[arm64-v8a] Compile        : nanopb <= pb_encode.c
[arm64-v8a] Compile        : nanopb <= pb_decode.c
[arm64-v8a] Compile++      : systemproperties <= context_node.cpp
[arm64-v8a] Compile++      : magisk <= hide_utils.cpp
[arm64-v8a] Compile++      : magisk <= connect.cpp
[arm64-v8a] Compile++      : systemproperties <= prop_info.cpp
[arm64-v8a] Compile++      : systemproperties <= contexts_serialized.cpp
[arm64-v8a] Compile++      : magisk <= resetprop.cpp
[arm64-v8a] Compile++      : systemproperties <= contexts_split.cpp
[arm64-v8a] Compile++      : systemproperties <= prop_area.cpp
[arm64-v8a] Compile++      : systemproperties <= system_property_api.cpp
[arm64-v8a] Compile++      : systemproperties <= system_properties.cpp
[arm64-v8a] Compile++      : systemproperties <= system_property_set.cpp
[arm64-v8a] Compile++      : utils <= new.cpp
[arm64-v8a] Compile++      : utils <= missing.cpp
[arm64-v8a] Compile++      : systemproperties <= property_info_parser.cpp
[arm64-v8a] Compile++      : utils <= logging.cpp
[arm64-v8a] Compile++      : magisk <= su_daemon.cpp


[x86] Compile++      : magisk <= applets.cpp
[x86] Compile++      : magisk <= restorecon.cpp
[x86] Compile++      : magisk <= magisk.cpp
[x86] Compile++      : magisk <= scripting.cpp
[x86] Compile++      : magisk <= socket.cpp
[x86] Compile++      : magisk <= bootstages.cpp
[x86] Compile++      : magisk <= magiskhide.cpp
[x86] Compile++      : magisk <= db.cpp
[x86] Compile++      : magisk <= daemon.cpp
[x86] Compile++      : magisk <= persist_properties.cpp
[x86] Compile++      : magisk <= hide_policy.cpp
[x86] Compile++      : magisk <= su.cpp
[x86] Compile++      : magisk <= module.cpp
[x86] Compile++      : magisk <= pts.cpp
[x86] Compile        : nanopb <= pb_common.c
[x86] Compile++      : magisk <= hide_utils.cpp
[x86] Compile        : nanopb <= pb_decode.c
[x86] Compile++      : systemproperties <= context_node.cpp
[x86] Compile        : nanopb <= pb_encode.c
[x86] Compile++      : systemproperties <= prop_info.cpp
[x86] Compile++      : systemproperties <= contexts_serialized.cpp
[x86] Compile++      : systemproperties <= contexts_split.cpp
[x86] Compile++      : magisk <= connect.cpp
[x86] Compile++      : systemproperties <= system_property_api.cpp
[x86] Compile++      : magisk <= resetprop.cpp
[x86] Compile++      : systemproperties <= prop_area.cpp
[x86] Compile++      : systemproperties <= system_property_set.cpp
[x86] Compile++      : systemproperties <= system_properties.cpp
[x86] Compile++      : systemproperties <= property_info_parser.cpp
[x86] Compile++      : utils <= missing.cpp
[x86] Compile++      : utils <= new.cpp
[x86] Compile++      : utils <= logging.cpp
[x86] Compile++      : magisk <= su_daemon.cpp
[x86] Compile++      : cxx <= any.cpp
[x86] Compile++      : utils <= stream.cpp
[x86] Compile++      : utils <= selinux.cpp
[x86] Compile++      : magisk <= proc_monitor.cpp
[x86] Compile++      : utils <= xwrap.cpp



[x86_64] Compile++      : magisk <= applets.cpp
[x86_64] Compile++      : magisk <= magisk.cpp
[x86_64] Compile++      : magisk <= socket.cpp
[x86_64] Compile++      : magisk <= scripting.cpp
[x86_64] Compile++      : magisk <= restorecon.cpp
[x86_64] Compile++      : magisk <= bootstages.cpp
[x86_64] Compile++      : magisk <= magiskhide.cpp
[x86_64] Compile++      : magisk <= db.cpp
[x86_64] Compile++      : magisk <= daemon.cpp
[x86_64] Compile++      : magisk <= hide_policy.cpp
[x86_64] Compile++      : magisk <= persist_properties.cpp
[x86_64] Compile++      : magisk <= module.cpp
[x86_64] Compile++      : magisk <= pts.cpp
[x86_64] Compile++      : magisk <= su.cpp
[x86_64] Compile        : nanopb <= pb_common.c
[x86_64] Compile        : nanopb <= pb_encode.c
[x86_64] Compile        : nanopb <= pb_decode.c
[x86_64] Compile++      : systemproperties <= context_node.cpp
[x86_64] Compile++      : magisk <= connect.cpp
[x86_64] Compile++      : systemproperties <= prop_info.cpp
[x86_64] Compile++      : systemproperties <= contexts_serialized.cpp
[x86_64] Compile++      : systemproperties <= contexts_split.cpp
[x86_64] Compile++      : magisk <= hide_utils.cpp
[x86_64] Compile++      : systemproperties <= prop_area.cpp
[x86_64] Compile++      : magisk <= resetprop.cpp
[x86_64] Compile++      : systemproperties <= system_property_api.cpp
[x86_64] Compile++      : utils <= new.cpp
[x86_64] Compile++      : systemproperties <= system_properties.cpp
[x86_64] Compile++      : systemproperties <= system_property_set.cpp
[x86_64] Compile++      : utils <= missing.cpp
[x86_64] Compile++      : systemproperties <= property_info_parser.cpp
[x86_64] Compile++      : magisk <= su_daemon.cpp
[x86_64] Compile++      : utils <= logging.cpp



[armeabi-v7a] StaticLibrary  : libmincrypt.a
[armeabi-v7a] StaticLibrary  : libnanopb.a
[armeabi-v7a] StaticLibrary  : libsystemproperties.a
[armeabi-v7a] StaticLibrary  : liblzma.a
[armeabi-v7a] StaticLibrary  : liblz4.a
[armeabi-v7a] StaticLibrary  : libutils.a
[armeabi-v7a] StaticLibrary  : libbz2.a
[armeabi-v7a] StaticLibrary  : libcxx.a
[armeabi-v7a] StaticLibrary  : libfdt.a
[armeabi-v7a] StaticLibrary  : libz.a
[armeabi-v7a] StaticLibrary  : libxz.a
[armeabi-v7a] StaticLibrary  : libsepol.a
[arm64-v8a] StaticLibrary  : libmincrypt.a
[arm64-v8a] StaticLibrary  : libnanopb.a
[arm64-v8a] StaticLibrary  : libsystemproperties.a
[arm64-v8a] StaticLibrary  : libutils.a
[arm64-v8a] StaticLibrary  : liblz4.a
[arm64-v8a] StaticLibrary  : libbz2.a
[arm64-v8a] StaticLibrary  : liblzma.a
[arm64-v8a] StaticLibrary  : libfdt.a
[arm64-v8a] StaticLibrary  : libz.a
[arm64-v8a] StaticLibrary  : libxz.a
[arm64-v8a] StaticLibrary  : libsepol.a
[arm64-v8a] StaticLibrary  : libcxx.a
[x86] StaticLibrary  : libnanopb.a
[x86] StaticLibrary  : libsystemproperties.a
[x86] StaticLibrary  : libmincrypt.a
[x86] StaticLibrary  : libutils.a
[x86] StaticLibrary  : libbz2.a
[x86] StaticLibrary  : libfdt.a
[x86] StaticLibrary  : liblzma.a
[x86] StaticLibrary  : liblz4.a
[x86] StaticLibrary  : libz.a
[x86] StaticLibrary  : libxz.a
[x86] StaticLibrary  : libsepol.a
[x86_64] StaticLibrary  : libnanopb.a
[x86_64] StaticLibrary  : libsystemproperties.a
[x86_64] StaticLibrary  : libutils.a
[x86_64] StaticLibrary  : libmincrypt.a
[x86_64] StaticLibrary  : liblz4.a
[x86_64] StaticLibrary  : libz.a
[x86_64] StaticLibrary  : liblzma.a
[x86_64] StaticLibrary  : libbz2.a
[x86_64] StaticLibrary  : libxz.a
[x86_64] StaticLibrary  : libfdt.a
[x86] StaticLibrary  : libcxx.a
[x86_64] StaticLibrary  : libsepol.a
[x86_64] StaticLibrary  : libcxx.a

[armeabi-v7a] Executable     : magisk
[x86] Executable     : magisk
[arm64-v8a] Executable     : magisk
[x86_64] Executable     : magisk
[armeabi-v7a] Executable     : magiskinit
[armeabi-v7a] Install        : magisk => libs/armeabi-v7a/magisk
[armeabi-v7a] Install        : magiskinit => libs/armeabi-v7a/magiskinit
[arm64-v8a] Install        : magisk => libs/arm64-v8a/magisk
[x86] Install        : magisk => libs/x86/magisk
[x86_64] Install        : magisk => libs/x86_64/magisk
[arm64-v8a] Executable     : magiskinit
[arm64-v8a] Install        : magiskinit => libs/arm64-v8a/magiskinit
[x86] Executable     : magiskboot
[x86] Install        : magiskboot => libs/x86/magiskboot
[armeabi-v7a] Executable     : magiskboot
[armeabi-v7a] Install        : magiskboot => libs/armeabi-v7a/magiskboot
[arm64-v8a] Executable     : magiskboot
[arm64-v8a] Install        : magiskboot => libs/arm64-v8a/magiskboot
[x86] Executable     : magiskinit
[x86] Install        : magiskinit => libs/x86/magiskinit
[x86_64] Executable     : magiskboot
[x86_64] Install        : magiskboot => libs/x86_64/magiskboot
[x86_64] Executable     : magiskinit
[x86_64] Install        : magiskinit => libs/x86_64/magiskinit

mv native/libs/armeabi-v7a/magisk -> native/out/armeabi-v7a/magisk
mv native/libs/armeabi-v7a/magiskinit -> native/out/armeabi-v7a/magiskinit
mv native/libs/armeabi-v7a/magiskboot -> native/out/armeabi-v7a/magiskboot
mv native/libs/x86/magisk -> native/out/x86/magisk
mv native/libs/x86/magiskinit -> native/out/x86/magiskinit
mv native/libs/x86/magiskboot -> native/out/x86/magiskboot
mv native/libs/arm64-v8a/magisk -> native/out/arm64-v8a/magisk
mv native/libs/arm64-v8a/magiskinit -> native/out/arm64-v8a/magiskinit
mv native/libs/arm64-v8a/magiskboot -> native/out/arm64-v8a/magiskboot
mv native/libs/x86_64/magisk -> native/out/x86_64/magisk
mv native/libs/x86_64/magiskinit -> native/out/x86_64/magiskinit
mv native/libs/x86_64/magiskboot -> native/out/x86_64/magiskboot

termux-elf-cleaner: Removing the DT_GNU_HASH dynamic section entry from 'native/out/armeabi-v7a/magisk'
termux-elf-cleaner: Removing the DT_VERNEEDNUM dynamic section entry from 'native/out/armeabi-v7a/magisk'
termux-elf-cleaner: Removing the DT_VERNEEDED dynamic section entry from 'native/out/armeabi-v7a/magisk'
termux-elf-cleaner: Removing the DT_VERSYM dynamic section entry from 'native/out/armeabi-v7a/magisk'
termux-elf-cleaner: Removing the DT_GNU_HASH dynamic section entry from 'native/out/x86/magisk'
termux-elf-cleaner: Removing the DT_VERNEEDNUM dynamic section entry from 'native/out/x86/magisk'
termux-elf-cleaner: Removing the DT_VERNEEDED dynamic section entry from 'native/out/x86/magisk'
termux-elf-cleaner: Removing the DT_VERSYM dynamic section entry from 'native/out/x86/magisk'
termux-elf-cleaner: Removing the DT_GNU_HASH dynamic section entry from 'native/out/arm64-v8a/magisk'
termux-elf-cleaner: Removing the DT_VERNEEDED dynamic section entry from 'native/out/arm64-v8a/magisk'
termux-elf-cleaner: Removing the DT_VERSYM dynamic section entry from 'native/out/arm64-v8a/magisk'
termux-elf-cleaner: Removing the DT_VERNEEDNUM dynamic section entry from 'native/out/arm64-v8a/magisk'
termux-elf-cleaner: Removing the DT_GNU_HASH dynamic section entry from 'native/out/x86_64/magisk'
termux-elf-cleaner: Removing the DT_VERNEEDNUM dynamic section entry from 'native/out/x86_64/magisk'
termux-elf-cleaner: Removing the DT_VERNEEDED dynamic section entry from 'native/out/x86_64/magisk'
termux-elf-cleaner: Removing the DT_VERSYM dynamic section entry from 'native/out/x86_64/magisk'

[armeabi-v7a] Compile thumb  : busybox <= applets.c
[armeabi-v7a] Compile thumb  : busybox <= whois.c
[armeabi-v7a] Compile thumb  : busybox <= ar.c
[armeabi-v7a] Compile thumb  : busybox <= bbunzip.c
[armeabi-v7a] Compile thumb  : busybox <= vconfig.c
[armeabi-v7a] Compile thumb  : busybox <= zcip.c
[armeabi-v7a] Compile thumb  : busybox <= cpio.c
[armeabi-v7a] Compile thumb  : busybox <= data_align.c
[armeabi-v7a] Compile thumb  : busybox <= common.c
[armeabi-v7a] Compile thumb  : busybox <= data_extract_all.c
[armeabi-v7a] Compile thumb  : busybox <= wget.c
[armeabi-v7a] Compile thumb  : busybox <= data_extract_to_stdout.c

[arm64-v8a] Compile        : busybox <= applets.c
[arm64-v8a] Compile        : busybox <= ar.c
[arm64-v8a] Compile        : busybox <= bbunzip.c
[arm64-v8a] Compile        : busybox <= cpio.c
[arm64-v8a] Compile        : busybox <= data_align.c
[arm64-v8a] Compile        : busybox <= common.c
[arm64-v8a] Compile        : busybox <= data_extract_all.c
[arm64-v8a] Compile        : busybox <= data_extract_to_command.c
[arm64-v8a] Compile        : busybox <= gzip.c
[arm64-v8a] Compile        : busybox <= data_extract_to_stdout.c
[armeabi-v7a] Compile thumb  : pcre2 <= pcre2_dfa_match.c
[arm64-v8a] Compile        : busybox <= data_skip.c
[arm64-v8a] Compile        : busybox <= decompress_uncompress.c
[arm64-v8a] Compile        : busybox <= bzip2.c


[x86] Compile        : busybox <= applets.c
[arm64-v8a] Compile        : pcre2 <= pcre2_xclass.c
[x86] Compile        : busybox <= ar.c
[x86] Compile        : busybox <= bbunzip.c
[x86] Compile        : busybox <= common.c
[x86] Compile        : busybox <= cpio.c
[x86] Compile        : busybox <= data_align.c
[x86] Compile        : busybox <= data_extract_all.c
[x86] Compile        : busybox <= data_extract_to_command.c
[x86] Compile        : busybox <= data_extract_to_stdout.c
[x86] Compile        : busybox <= gzip.c
[x86] Compile        : busybox <= data_skip.c
[arm64-v8a] Compile        : pcre2 <= pcre2_dfa_match.c
[x86] Compile        : busybox <= bzip2.c
[x86] Compile        : busybox <= decompress_uncompress.c
[x86] Compile        : busybox <= decompress_bunzip2.c


[x86_64] Compile        : busybox <= applets.c
[x86] Compile        : pcre2 <= pcre2_ucd.c
[x86_64] Compile        : busybox <= ar.c
[x86_64] Compile        : busybox <= bbunzip.c
[x86_64] Compile        : busybox <= cpio.c
[x86_64] Compile        : busybox <= common.c
[x86_64] Compile        : busybox <= data_align.c
[x86_64] Compile        : busybox <= data_extract_all.c
[x86_64] Compile        : busybox <= data_extract_to_command.c
[x86_64] Compile        : busybox <= data_extract_to_stdout.c
[x86_64] Compile        : busybox <= data_skip.c
[x86_64] Compile        : busybox <= gzip.c
[x86] Compile        : pcre2 <= pcre2_dfa_match.c
[x86_64] Compile        : busybox <= decompress_uncompress.c
[x86_64] Compile        : busybox <= bzip2.c
[x86_64] Compile        : busybox <= decompress_bunzip2.c
[x86_64] Compile        : busybox <= decompress_gunzip.c
[x86_64] Compile        : busybox <= decompress_unlzma.c



[armeabi-v7a] StaticLibrary  : libselinux.a
[x86_64] Compile        : pcre2 <= pcre2_substitute.c
[armeabi-v7a] StaticLibrary  : libpcre2.a
[arm64-v8a] StaticLibrary  : libpcre2.a
[arm64-v8a] StaticLibrary  : libselinux.a
[x86_64] Compile        : pcre2 <= pcre2_valid_utf.c
[x86] StaticLibrary  : libselinux.a
[x86_64] Compile        : pcre2 <= pcre2_xclass.c
[x86_64] StaticLibrary  : libselinux.a
[x86] StaticLibrary  : libpcre2.a
[x86_64] Compile        : pcre2 <= pcre2_ucd.c
[x86_64] Compile        : pcre2 <= pcre2_dfa_match.c
[x86_64] Compile        : pcre2 <= pcre2_compile.c
[x86_64] Compile        : pcre2 <= pcre2_match.c
[x86_64] StaticLibrary  : libpcre2.a
[armeabi-v7a] Executable     : busybox
[armeabi-v7a] Install        : busybox => libs/armeabi-v7a/busybox
[x86] Executable     : busybox
[x86] Install        : busybox => libs/x86/busybox
[x86_64] Executable     : busybox
[x86_64] Install        : busybox => libs/x86_64/busybox
[arm64-v8a] Executable     : busybox
[arm64-v8a] Install        : busybox => libs/arm64-v8a/busybox

mv native/libs/armeabi-v7a/busybox -> native/out/armeabi-v7a/busybox
mv native/libs/x86/busybox -> native/out/x86/busybox
mv native/libs/arm64-v8a/busybox -> native/out/arm64-v8a/busybox
mv native/libs/x86_64/busybox -> native/out/x86_64/busybox

* Building the Magisk app

Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true
> Task :buildSrc:compileKotlin UP-TO-DATE
> Task :buildSrc:compileJava NO-SOURCE
> Task :buildSrc:compileGroovy NO-SOURCE
> Task :buildSrc:pluginDescriptors UP-TO-DATE
> Task :buildSrc:processResources UP-TO-DATE
> Task :buildSrc:classes UP-TO-DATE
> Task :buildSrc:inspectClassesForKotlinIC UP-TO-DATE
> Task :buildSrc:jar UP-TO-DATE
> Task :buildSrc:assemble UP-TO-DATE
> Task :buildSrc:compileTestKotlin NO-SOURCE
> Task :buildSrc:pluginUnderTestMetadata UP-TO-DATE
> Task :buildSrc:compileTestJava NO-SOURCE
> Task :buildSrc:compileTestGroovy NO-SOURCE
> Task :buildSrc:processTestResources NO-SOURCE
> Task :buildSrc:testClasses UP-TO-DATE
> Task :buildSrc:test NO-SOURCE
> Task :buildSrc:validatePlugins UP-TO-DATE
> Task :buildSrc:check UP-TO-DATE
> Task :buildSrc:build UP-TO-DATE

> Configure project :app
WARNING:: The option setting 'android.enableR8.fullMode=true' is experimental.
The current default is 'false'.

> Task :app:shared:preBuild UP-TO-DATE
> Task :app:shared:preDebugBuild UP-TO-DATE
> Task :app:shared:compileDebugAidl NO-SOURCE
> Task :app:shared:packageDebugRenderscript NO-SOURCE
> Task :app:shared:compileDebugRenderscript NO-SOURCE
> Task :app:shared:generateDebugResValues
> Task :app:shared:generateDebugResources
> Task :app:shared:packageDebugResources
> Task :app:shared:writeDebugAarMetadata
> Task :app:shared:extractDeepLinksDebug
> Task :app:shared:processDebugManifest
> Task :app:shared:compileDebugLibraryResources
> Task :app:shared:generateDebugBuildConfig
> Task :app:shared:javaPreCompileDebug
> Task :app:shared:mergeDebugShaders
> Task :app:shared:compileDebugShaders NO-SOURCE
> Task :app:shared:generateDebugAssets UP-TO-DATE
> Task :app:shared:packageDebugAssets
> Task :app:shared:processDebugJavaRes NO-SOURCE
> Task :app:shared:bundleLibResDebug NO-SOURCE
> Task :app:shared:mergeDebugJniLibFolders
> Task :app:shared:mergeDebugNativeLibs NO-SOURCE
> Task :app:shared:stripDebugDebugSymbols NO-SOURCE
> Task :app:shared:copyDebugJniLibsProjectOnly
> Task :app:shared:parseDebugLocalResources
> Task :app:shared:generateDebugRFile
> Task :app:syncLibs
> Task :app:syncAssets
> Task :app:syncResources
> Task :app:preBuild
> Task :app:preDebugBuild
> Task :app:compileDebugAidl NO-SOURCE
> Task :app:compileDebugRenderscript NO-SOURCE

> Task :app:shared:compileDebugJavaWithJavac
注: 某些輸入文件使用或覆蓋了已過期的 API。
注: 有關詳細信息, 請使用 -Xlint:deprecation 從新編譯。
注: /Magisk/app/shared/src/main/java/com/topjohnwu/magisk/DynAPK.java使用了未經檢查或不安全的操做。
注: 有關詳細信息, 請使用 -Xlint:unchecked 從新編譯。

> Task :app:shared:bundleLibCompileToJarDebug
> Task :app:shared:bundleLibRuntimeToJarDebug
> Task :app:dataBindingMergeDependencyArtifactsDebug
> Task :app:generateDebugResValues
> Task :app:generateDebugResources
> Task :app:dataBindingMergeGenClassesDebug
> Task :app:dataBindingTriggerDebug
> Task :app:generateDebugBuildConfig
> Task :app:generateDebugKeyData
> Task :app:writeDebugApplicationId
> Task :app:mergeDebugResources
> Task :app:generateSafeArgsDebug
> Task :app:dataBindingGenBaseClassesDebug
> Task :app:checkDebugAarMetadata
> Task :app:createDebugCompatibleScreenManifests
> Task :app:extractDeepLinksDebug
> Task :app:processDebugMainManifest
> Task :app:processDebugManifest
> Task :app:mergeDebugNativeDebugMetadata NO-SOURCE
> Task :app:mergeDebugShaders
> Task :app:compileDebugShaders NO-SOURCE
> Task :app:generateDebugAssets UP-TO-DATE
> Task :app:mergeDebugAssets
> Task :app:processDebugJavaRes
> Task :app:compressDebugAssets
> Task :app:checkDebugDuplicateClasses
> Task :app:desugarDebugFileDependencies
> Task :app:processDebugManifestForPackage
> Task :app:mergeExtDexDebug
> Task :app:mergeDebugJniLibFolders
> Task :app:validateSigningDebug
> Task :app:mergeLibDexDebug
> Task :app:writeDebugAppMetadata
> Task :app:writeDebugSigningConfigVersions
> Task :app:mergeDebugNativeLibs
> Task :app:stripDebugDebugSymbols
> Task :app:processDebugResources
> Task :app:kaptGenerateStubsDebugKotlin
> Task :app:kaptDebugKotlin
> Task :app:compileDebugKotlin

w: /Magisk/app/src/main/java/com/topjohnwu/magisk/arch/BaseUIActivity.kt: (61, 16): 'setter for systemUiVisibility: Int' is deprecated. Deprecated in Java
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/arch/BaseUIActivity.kt: (61, 41): 'getter for systemUiVisibility: Int' is deprecated. Deprecated in Java
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/arch/BaseUIActivity.kt: (62, 29): 'SYSTEM_UI_FLAG_LAYOUT_STABLE: Int' is deprecated. Deprecated in Java
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/arch/BaseUIActivity.kt: (63, 29): 'SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN: Int' is deprecated. Deprecated in Java
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/arch/BaseUIActivity.kt: (64, 29): 'SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION: Int' is deprecated. Deprecated in Java
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/arch/BaseUIActivity.kt: (70, 56): 'getter for systemWindowInsetBottom: Int' is deprecated. Deprecated in Java
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/core/base/BaseActivity.kt: (103, 15): 'onActivityResult(Int, Int, Intent?): Unit' is deprecated. Overrides deprecated member in 'androidx.activity.ComponentActivity'. Deprecated in Java
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/core/base/BaseActivity.kt: (114, 13): 'startActivityForResult(Intent!, Int): Unit' is deprecated. Deprecated in Java
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/core/model/module/LocalModule.kt: (86, 37): 'toLowerCase(): String' is deprecated. Use lowercase() instead.
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/core/utils/BiometricHelper.kt: (15, 39): 'canAuthenticate(): Int' is deprecated. Deprecated in Java
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/core/utils/BiometricHelper.kt: (51, 14): 'setDeviceCredentialAllowed(Boolean): BiometricPrompt.PromptInfo.Builder' is deprecated. Deprecated in Java
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/events/OpenInappLinkEvent.kt: (20, 10): 'setToolbarColor(Int): CustomTabsIntent.Builder' is deprecated. Deprecated in Java
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/events/OpenInappLinkEvent.kt: (21, 10): 'enableUrlBarHiding(): CustomTabsIntent.Builder' is deprecated. Deprecated in Java
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/events/dialog/UninstallDialog.kt: (3, 20): 'ProgressDialog' is deprecated. Deprecated in Java
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/ktx/XAndroid.kt: (212, 17): 'updateConfiguration(Configuration!, DisplayMetrics!): Unit' is deprecated. Deprecated in Java
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/ui/MainActivity.kt: (54, 60): 'SOFT_INPUT_ADJUST_RESIZE: Int' is deprecated. Deprecated in Java
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/ui/hide/HideFragment.kt: (71, 14): 'setter for isAutoMeasureEnabled: Boolean' is deprecated. Deprecated in Java
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/ui/hide/HideInfo.kt: (94, 24): 'toLowerCase(Locale): String' is deprecated. Use lowercase() instead.
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/ui/inflater/LayoutInflaterFactory.kt: (47, 13): Name shadowed: name
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/ui/inflater/WindowInsetsHelper.kt: (200, 22): 'setter for systemUiVisibility: Int' is deprecated. Deprecated in Java
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/ui/inflater/WindowInsetsHelper.kt: (200, 49): 'getter for systemUiVisibility: Int' is deprecated. Deprecated in Java
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/ui/inflater/WindowInsetsHelper.kt: (201, 33): 'SYSTEM_UI_FLAG_LAYOUT_STABLE: Int' is deprecated. Deprecated in Java
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/ui/inflater/WindowInsetsHelper.kt: (202, 33): 'SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN: Int' is deprecated. Deprecated in Java
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/ui/inflater/WindowInsetsHelper.kt: (203, 33): 'SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION: Int' is deprecated. Deprecated in Java
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/ui/module/ModuleFragment.kt: (152, 14): 'setter for isAutoMeasureEnabled: Boolean' is deprecated. Deprecated in Java
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/ui/module/ModuleFragment.kt: (161, 14): 'setter for isAutoMeasureEnabled: Boolean' is deprecated. Deprecated in Java
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/ui/superuser/SuperuserViewModel.kt: (61, 35): 'toLowerCase(Locale): String' is deprecated. Use lowercase() instead.
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/utils/HideBottomViewOnScrollBehavior.kt: (18, 48): Parameter 'context' is never used
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/utils/HideBottomViewOnScrollBehavior.kt: (18, 66): Parameter 'attrs' is never used
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/utils/HideBottomViewOnScrollBehavior.kt: (53, 9): Parameter 'parent' is never used
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/utils/HideBottomViewOnScrollBehavior.kt: (73, 9): Parameter 'parent' is never used
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/utils/HideBottomViewOnScrollBehavior.kt: (75, 9): Parameter 'dependency' is never used
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/utils/HideTopViewOnScrollBehavior.kt: (13, 45): Parameter 'context' is never used
w: /Magisk/app/src/main/java/com/topjohnwu/magisk/utils/HideTopViewOnScrollBehavior.kt: (13, 63): Parameter 'attrs' is never used


> Task :app:compileDebugJavaWithJavac
> Task :app:compileDebugSources
> Task :app:dexBuilderDebug
> Task :app:mergeProjectDexDebug
> Task :app:mergeDebugJavaResource
> Task :app:packageDebug
> Task :app:assembleDebug

BUILD SUCCESSFUL in 8m 47s
59 actionable tasks: 59 executed
mv app/build/outputs/apk/debug/app-debug.apk -> out/app-debug.apk

Output: out/app-debug.apk


進程已結束,退出代碼爲 0
複製代碼

項目文件支持設置 config.prop,把項目根目錄下的 config.prop.sample 重命名爲 config.prop 便可。

若是想使用私鑰來簽名和打包APK文件,你須要更改 config.prop 中的設置。最詳細的說明已經在Android官方中文文檔裏:Google's Documentation ,因爲篇幅過長,這裏再也不從新闡述了。

相關文章
相關標籤/搜索