diff --git a/.github/workflows/core.yml b/.github/workflows/core.yml index 0077b031..f9cd86cf 100644 --- a/.github/workflows/core.yml +++ b/.github/workflows/core.yml @@ -24,7 +24,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: submodules: recursive fetch-depth: 0 @@ -41,26 +41,26 @@ jobs: fi - name: Checkout libxposed/api - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: repository: libxposed/api path: libxposed/api ref: 54582730315ba4a3d7cfaf9baf9d23c419e07006 - name: Checkout libxposed/service - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: repository: libxposed/service path: libxposed/service - name: Setup Java - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: distribution: temurin java-version: 21 - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 + uses: gradle/actions/setup-gradle@v5 - name: Setup ninja uses: seanmiddleditch/gha-setup-ninja@v6 @@ -110,19 +110,19 @@ jobs: unzip magisk-loader/release/LSPosed-v*-zygisk-debug.zip -d LSPosed-zygisk-debug - name: Upload zygisk release - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: ${{ steps.prepareArtifact.outputs.zygiskReleaseName }} path: "./LSPosed-zygisk-release/*" - name: Upload zygisk debug - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: ${{ steps.prepareArtifact.outputs.zygiskDebugName }} path: "./LSPosed-zygisk-debug/*" - name: Upload mappings - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: mappings path: | @@ -130,7 +130,7 @@ jobs: app/build/outputs/mapping - name: Upload symbols - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: symbols path: build/symbols diff --git a/.gitignore b/.gitignore index 9be6d25c..643c3054 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ apache/local/generated .DS_Store /build /captures +bin/ diff --git a/apache/build.gradle.kts b/apache/build.gradle.kts index 30af6ab2..2127d2f0 100644 --- a/apache/build.gradle.kts +++ b/apache/build.gradle.kts @@ -18,14 +18,14 @@ java { val lang3Src = "commons-lang/src/main/java/org/apache/commons/lang3" val localDir = "local/generated" -task("ClassUtilsX") { +tasks.register("ClassUtilsX") { from("$lang3Src/ClassUtils.java") into(localDir) filter { line: String -> line.replace("ClassUtils", "ClassUtilsX") } rename("(.+).java", "$1X.java") } -task("SerializationUtilsX") { +tasks.register("SerializationUtilsX") { from("$lang3Src/SerializationUtils.java") into(localDir) filter { line: String -> line.replace("SerializationUtils", "SerializationUtilsX") } diff --git a/apache/commons-lang b/apache/commons-lang index fc2ff10b..52d1b7bf 160000 --- a/apache/commons-lang +++ b/apache/commons-lang @@ -1 +1 @@ -Subproject commit fc2ff10b429b0150f82da4ff3f7a0f7fd3ff1fc1 +Subproject commit 52d1b7bfdfe22fa8ff0e9f0c8a6a7b6a70f3ab69 diff --git a/external/fmt b/external/fmt index 93f03953..3fccfb8a 160000 --- a/external/fmt +++ b/external/fmt @@ -1 +1 @@ -Subproject commit 93f03953af6b0268e1a29bb5b23d50f72b87a151 +Subproject commit 3fccfb8a80804ff1269af71f0a43c8934ca36c92 diff --git a/external/lsplt b/external/lsplt index e3db0003..3e29437f 160000 --- a/external/lsplt +++ b/external/lsplt @@ -1 +1 @@ -Subproject commit e3db0003526b1e5be3fb9323ff5ff128a59f9ffb +Subproject commit 3e29437f037cb7d2b9fbb459dcf162f6b8d1d926 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index efef50b3..9ed1fc09 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,11 +1,11 @@ [versions] -agp = "8.12.0" -kotlin = "2.2.0" -nav = "2.9.3" +agp = "8.13.0" +kotlin = "2.2.20" +nav = "2.9.5" appcenter = "5.0.5" libxposed = "100" -glide = "4.16.0" -okhttp = "5.1.0" +glide = "5.0.5" +okhttp = "5.2.0" [plugins] agp-lib = { id = "com.android.library", version.ref = "agp" } @@ -31,12 +31,12 @@ rikkax-recyclerview = { module = "dev.rikka.rikkax.recyclerview:recyclerview-ktx rikkax-widget-borderview = { module = "dev.rikka.rikkax.widget:borderview", version = "1.1.0" } rikkax-widget-mainswitchbar = { module = "dev.rikka.rikkax.widget:mainswitchbar", version = "1.0.2" } -androidx-activity = { module = "androidx.activity:activity", version = "1.10.1" } +androidx-activity = { module = "androidx.activity:activity", version = "1.11.0" } androidx-annotation = { module = "androidx.annotation:annotation", version = "1.9.1" } androidx-browser = { module = "androidx.browser:browser", version = "1.9.0" } androidx-constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version = "2.2.1" } -androidx-core = { module = "androidx.core:core", version = "1.16.0" } -androidx-fragment = { module = "androidx.fragment:fragment", version = "1.8.8" } +androidx-core = { module = "androidx.core:core", version = "1.17.0" } +androidx-fragment = { module = "androidx.fragment:fragment", version = "1.8.9" } androidx-navigation-fragment = { group = "androidx.navigation", name = "navigation-fragment", version.ref = "nav" } androidx-navigation-ui = { group = "androidx.navigation", name = "navigation-ui", version.ref = "nav" } androidx-preference = { module = "androidx.preference:preference", version = "1.2.1" } @@ -53,7 +53,7 @@ okhttp-logging-interceptor = { group = "com.squareup.okhttp3", name = "logging-i agp-apksig = { group = "com.android.tools.build", name = "apksig", version.ref = "agp" } appiconloader = { module = "me.zhanghai.android.appiconloader:appiconloader", version = "1.5.0" } material = { module = "com.google.android.material:material", version = "1.12.0" } -gson = { module = "com.google.code.gson:gson", version = "2.13.1" } +gson = { module = "com.google.code.gson:gson", version = "2.13.2" } hiddenapibypass = { module = "org.lsposed.hiddenapibypass:hiddenapibypass", version = "6.1" } kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" } kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version = "1.10.2" } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 1b33c55b..f8e1ee31 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index d4081da4..bad7c246 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.0-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index 23d15a93..adff685a 100755 --- a/gradlew +++ b/gradlew @@ -1,7 +1,7 @@ #!/bin/sh # -# Copyright © 2015-2021 the original authors. +# Copyright © 2015 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -114,7 +114,6 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH="\\\"\\\"" # Determine the Java command to use to start the JVM. @@ -172,7 +171,6 @@ fi # For Cygwin or MSYS, switch paths to Windows format before running java if "$cygwin" || "$msys" ; then APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) JAVACMD=$( cygpath --unix "$JAVACMD" ) @@ -212,7 +210,6 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" diff --git a/gradlew.bat b/gradlew.bat index db3a6ac2..c4bdd3ab 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -70,11 +70,10 @@ goto fail :execute @rem Setup the command line -set CLASSPATH= @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* :end @rem End local scope for the variables with windows NT shell diff --git a/magisk-loader/build.gradle.kts b/magisk-loader/build.gradle.kts index 6a50f6c4..239f0d30 100644 --- a/magisk-loader/build.gradle.kts +++ b/magisk-loader/build.gradle.kts @@ -108,7 +108,7 @@ dependencies { compileOnly(projects.hiddenapi.stubs) } -val zipAll = task("zipAll") { +val zipAll = tasks.register("zipAll") { group = "LSPosed" } @@ -125,7 +125,7 @@ fun afterEval() = android.applicationVariants.forEach { variant -> val moduleId = "${flavorLowered}_$moduleBaseId" val zipFileName = "$moduleName-v$verName-$verCode-${flavorLowered}-$buildTypeLowered.zip" - val prepareMagiskFilesTask = task("prepareMagiskFiles$variantCapped") { + val prepareMagiskFilesTask = tasks.register("prepareMagiskFiles$variantCapped") { group = "LSPosed" dependsOn( "assemble$variantCapped", @@ -204,7 +204,7 @@ fun afterEval() = android.applicationVariants.forEach { variant -> } } - val zipTask = task("zip${variantCapped}") { + val zipTask = tasks.register("zip${variantCapped}") { group = "LSPosed" dependsOn(prepareMagiskFilesTask) archiveFileName = zipFileName @@ -212,16 +212,18 @@ fun afterEval() = android.applicationVariants.forEach { variant -> from(magiskDir) } - zipAll.dependsOn(zipTask) + zipAll.configure { + dependsOn(zipTask) + } val adb: String = androidComponents.sdkComponents.adb.get().asFile.absolutePath - val pushTask = task("push${variantCapped}") { + val pushTask = tasks.register("push${variantCapped}") { group = "LSPosed" dependsOn(zipTask) workingDir("${projectDir}/release") commandLine(adb, "push", zipFileName, "/data/local/tmp/") } - val flashMagiskTask = task("flashMagisk${variantCapped}") { + val installMagiskTask = tasks.register("installMagisk${variantCapped}") { group = "LSPosed" dependsOn(pushTask) commandLine( @@ -229,12 +231,12 @@ fun afterEval() = android.applicationVariants.forEach { variant -> "magisk --install-module /data/local/tmp/${zipFileName}" ) } - task("flashMagiskAndReboot${variantCapped}") { + tasks.register("installMagiskAndReboot${variantCapped}") { group = "LSPosed" - dependsOn(flashMagiskTask) + dependsOn(installMagiskTask) commandLine(adb, "shell", "su", "-c", "/system/bin/svc", "power", "reboot") } - val flashKsuTask = task("flashKsu${variantCapped}") { + val installKsuTask = tasks.register("installKsu${variantCapped}") { group = "LSPosed" dependsOn(pushTask) commandLine( @@ -242,12 +244,12 @@ fun afterEval() = android.applicationVariants.forEach { variant -> "ksud module install /data/local/tmp/${zipFileName}" ) } - task("flashKsuAndReboot${variantCapped}") { + tasks.register("installKsuAndReboot${variantCapped}") { group = "LSPosed" - dependsOn(flashKsuTask) + dependsOn(installKsuTask) commandLine(adb, "shell", "su", "-c", "/system/bin/svc", "power", "reboot") } - val flashAPatchTask = task("flashAPatch${variantCapped}") { + val installAPatchTask = tasks.register("installAPatch${variantCapped}") { group = "LSPosed" dependsOn(pushTask) commandLine( @@ -255,9 +257,9 @@ fun afterEval() = android.applicationVariants.forEach { variant -> "apd module install /data/local/tmp/${zipFileName}" ) } - task("flashAPatchAndReboot${variantCapped}") { + tasks.register("installAPatchAndReboot${variantCapped}") { group = "LSPosed" - dependsOn(flashAPatchTask) + dependsOn(installAPatchTask) commandLine(adb, "shell", "su", "-c", "/system/bin/svc", "power", "reboot") } } @@ -266,68 +268,5 @@ afterEvaluate { afterEval() } -val adb: String = androidComponents.sdkComponents.adb.get().asFile.absolutePath -val killLspd = task("killLspd") { - group = "LSPosed" - commandLine(adb, "shell", "su", "-c", "killall", "lspd") - isIgnoreExitValue = true -} -val pushDaemon = task("pushDaemon") { - group = "LSPosed" - dependsOn(":daemon:assembleDebug") - workingDir(project(":daemon").layout.buildDirectory.dir("outputs/apk/debug")) - commandLine(adb, "push", "daemon-debug.apk", "/data/local/tmp/daemon.apk") -} -val pushDaemonNative = task("pushDaemonNative") { - group = "LSPosed" - dependsOn(":daemon:assembleDebug") - doFirst { - val abi: String = ByteArrayOutputStream().use { outputStream -> - exec { - commandLine(adb, "shell", "getprop", "ro.product.cpu.abi") - standardOutput = outputStream - } - outputStream.toString().trim() - } - workingDir(project(":daemon").layout.buildDirectory.dir("intermediates/stripped_native_libs/debug/stripDebugDebugSymbols/out/lib/$abi")) - } - commandLine(adb, "push", "libdaemon.so", "/data/local/tmp/libdaemon.so") -} -val reRunDaemon = task("reRunDaemon") { - group = "LSPosed" - dependsOn(pushDaemon, pushDaemonNative, killLspd) - // tricky to pass a minus number to avoid the injection warning - commandLine( - adb, "shell", "ASH_STANDALONE=1", "su", "-mm", "-pc", - "/data/adb/magisk/busybox sh /data/adb/modules/*_lsposed/service.sh --system-server-max-retry=-1&" - ) - isIgnoreExitValue = true -} -val tmpApk = "/data/local/tmp/manager.apk" -val pushApk = task("pushApk") { - group = "LSPosed" - dependsOn(":app:assembleDebug") - doFirst { - exec { - commandLine(adb, "shell", "su", "-c", "rm", "-f", tmpApk) - } - } - workingDir(project(":app").layout.buildDirectory.dir("outputs/apk/debug")) - commandLine(adb, "push", "app-debug.apk", tmpApk) -} -val openApp = task("openApp") { - group = "LSPosed" - commandLine( - adb, "shell", - "am", "start", "-c", "org.lsposed.manager.LAUNCH_MANAGER", - "com.android.shell/.BugreportWarningActivity" - ) -} -task("reRunApp") { - group = "LSPosed" - dependsOn(pushApk) - finalizedBy(reRunDaemon) -} - evaluationDependsOn(":app") evaluationDependsOn(":daemon")