Update dependencies

When upgrading to gradle 9 +, we remove several unused tasks for development to simplify the process.

Close #385, #441, #445, #448, #462 as merged.
This commit is contained in:
JingMatrix 2025-11-08 10:44:22 +01:00
parent 2666bdad2d
commit 0044a36fcf
12 changed files with 43 additions and 107 deletions

View File

@ -24,7 +24,7 @@ jobs:
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v5
with: with:
submodules: recursive submodules: recursive
fetch-depth: 0 fetch-depth: 0
@ -41,26 +41,26 @@ jobs:
fi fi
- name: Checkout libxposed/api - name: Checkout libxposed/api
uses: actions/checkout@v4 uses: actions/checkout@v5
with: with:
repository: libxposed/api repository: libxposed/api
path: libxposed/api path: libxposed/api
ref: 54582730315ba4a3d7cfaf9baf9d23c419e07006 ref: 54582730315ba4a3d7cfaf9baf9d23c419e07006
- name: Checkout libxposed/service - name: Checkout libxposed/service
uses: actions/checkout@v4 uses: actions/checkout@v5
with: with:
repository: libxposed/service repository: libxposed/service
path: libxposed/service path: libxposed/service
- name: Setup Java - name: Setup Java
uses: actions/setup-java@v4 uses: actions/setup-java@v5
with: with:
distribution: temurin distribution: temurin
java-version: 21 java-version: 21
- name: Setup Gradle - name: Setup Gradle
uses: gradle/actions/setup-gradle@v4 uses: gradle/actions/setup-gradle@v5
- name: Setup ninja - name: Setup ninja
uses: seanmiddleditch/gha-setup-ninja@v6 uses: seanmiddleditch/gha-setup-ninja@v6
@ -110,19 +110,19 @@ jobs:
unzip magisk-loader/release/LSPosed-v*-zygisk-debug.zip -d LSPosed-zygisk-debug unzip magisk-loader/release/LSPosed-v*-zygisk-debug.zip -d LSPosed-zygisk-debug
- name: Upload zygisk release - name: Upload zygisk release
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v5
with: with:
name: ${{ steps.prepareArtifact.outputs.zygiskReleaseName }} name: ${{ steps.prepareArtifact.outputs.zygiskReleaseName }}
path: "./LSPosed-zygisk-release/*" path: "./LSPosed-zygisk-release/*"
- name: Upload zygisk debug - name: Upload zygisk debug
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v5
with: with:
name: ${{ steps.prepareArtifact.outputs.zygiskDebugName }} name: ${{ steps.prepareArtifact.outputs.zygiskDebugName }}
path: "./LSPosed-zygisk-debug/*" path: "./LSPosed-zygisk-debug/*"
- name: Upload mappings - name: Upload mappings
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v5
with: with:
name: mappings name: mappings
path: | path: |
@ -130,7 +130,7 @@ jobs:
app/build/outputs/mapping app/build/outputs/mapping
- name: Upload symbols - name: Upload symbols
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v5
with: with:
name: symbols name: symbols
path: build/symbols path: build/symbols

1
.gitignore vendored
View File

@ -9,3 +9,4 @@ apache/local/generated
.DS_Store .DS_Store
/build /build
/captures /captures
bin/

View File

@ -18,14 +18,14 @@ java {
val lang3Src = "commons-lang/src/main/java/org/apache/commons/lang3" val lang3Src = "commons-lang/src/main/java/org/apache/commons/lang3"
val localDir = "local/generated" val localDir = "local/generated"
task<Copy>("ClassUtilsX") { tasks.register<Copy>("ClassUtilsX") {
from("$lang3Src/ClassUtils.java") from("$lang3Src/ClassUtils.java")
into(localDir) into(localDir)
filter { line: String -> line.replace("ClassUtils", "ClassUtilsX") } filter { line: String -> line.replace("ClassUtils", "ClassUtilsX") }
rename("(.+).java", "$1X.java") rename("(.+).java", "$1X.java")
} }
task<Copy>("SerializationUtilsX") { tasks.register<Copy>("SerializationUtilsX") {
from("$lang3Src/SerializationUtils.java") from("$lang3Src/SerializationUtils.java")
into(localDir) into(localDir)
filter { line: String -> line.replace("SerializationUtils", "SerializationUtilsX") } filter { line: String -> line.replace("SerializationUtils", "SerializationUtilsX") }

@ -1 +1 @@
Subproject commit fc2ff10b429b0150f82da4ff3f7a0f7fd3ff1fc1 Subproject commit 52d1b7bfdfe22fa8ff0e9f0c8a6a7b6a70f3ab69

2
external/fmt vendored

@ -1 +1 @@
Subproject commit 93f03953af6b0268e1a29bb5b23d50f72b87a151 Subproject commit 3fccfb8a80804ff1269af71f0a43c8934ca36c92

2
external/lsplt vendored

@ -1 +1 @@
Subproject commit e3db0003526b1e5be3fb9323ff5ff128a59f9ffb Subproject commit 3e29437f037cb7d2b9fbb459dcf162f6b8d1d926

View File

@ -1,11 +1,11 @@
[versions] [versions]
agp = "8.12.0" agp = "8.13.0"
kotlin = "2.2.0" kotlin = "2.2.20"
nav = "2.9.3" nav = "2.9.5"
appcenter = "5.0.5" appcenter = "5.0.5"
libxposed = "100" libxposed = "100"
glide = "4.16.0" glide = "5.0.5"
okhttp = "5.1.0" okhttp = "5.2.0"
[plugins] [plugins]
agp-lib = { id = "com.android.library", version.ref = "agp" } 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-borderview = { module = "dev.rikka.rikkax.widget:borderview", version = "1.1.0" }
rikkax-widget-mainswitchbar = { module = "dev.rikka.rikkax.widget:mainswitchbar", version = "1.0.2" } 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-annotation = { module = "androidx.annotation:annotation", version = "1.9.1" }
androidx-browser = { module = "androidx.browser:browser", version = "1.9.0" } androidx-browser = { module = "androidx.browser:browser", version = "1.9.0" }
androidx-constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version = "2.2.1" } androidx-constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version = "2.2.1" }
androidx-core = { module = "androidx.core:core", version = "1.16.0" } androidx-core = { module = "androidx.core:core", version = "1.17.0" }
androidx-fragment = { module = "androidx.fragment:fragment", version = "1.8.8" } androidx-fragment = { module = "androidx.fragment:fragment", version = "1.8.9" }
androidx-navigation-fragment = { group = "androidx.navigation", name = "navigation-fragment", version.ref = "nav" } 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-navigation-ui = { group = "androidx.navigation", name = "navigation-ui", version.ref = "nav" }
androidx-preference = { module = "androidx.preference:preference", version = "1.2.1" } 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" } agp-apksig = { group = "com.android.tools.build", name = "apksig", version.ref = "agp" }
appiconloader = { module = "me.zhanghai.android.appiconloader:appiconloader", version = "1.5.0" } appiconloader = { module = "me.zhanghai.android.appiconloader:appiconloader", version = "1.5.0" }
material = { module = "com.google.android.material:material", version = "1.12.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" } hiddenapibypass = { module = "org.lsposed.hiddenapibypass:hiddenapibypass", version = "6.1" }
kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" } 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" } kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version = "1.10.2" }

Binary file not shown.

View File

@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists 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 networkTimeout=10000
validateDistributionUrl=true validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME

5
gradlew vendored
View File

@ -1,7 +1,7 @@
#!/bin/sh #!/bin/sh
# #
# Copyright © 2015-2021 the original authors. # Copyright © 2015 the original authors.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -114,7 +114,6 @@ case "$( uname )" in #(
NONSTOP* ) nonstop=true ;; NONSTOP* ) nonstop=true ;;
esac esac
CLASSPATH="\\\"\\\""
# Determine the Java command to use to start the JVM. # 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 # For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" ) JAVACMD=$( cygpath --unix "$JAVACMD" )
@ -212,7 +210,6 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
set -- \ set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \ "-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@" "$@"

3
gradlew.bat vendored
View File

@ -70,11 +70,10 @@ goto fail
:execute :execute
@rem Setup the command line @rem Setup the command line
set CLASSPATH=
@rem Execute Gradle @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 :end
@rem End local scope for the variables with windows NT shell @rem End local scope for the variables with windows NT shell

View File

@ -108,7 +108,7 @@ dependencies {
compileOnly(projects.hiddenapi.stubs) compileOnly(projects.hiddenapi.stubs)
} }
val zipAll = task("zipAll") { val zipAll = tasks.register("zipAll") {
group = "LSPosed" group = "LSPosed"
} }
@ -125,7 +125,7 @@ fun afterEval() = android.applicationVariants.forEach { variant ->
val moduleId = "${flavorLowered}_$moduleBaseId" val moduleId = "${flavorLowered}_$moduleBaseId"
val zipFileName = "$moduleName-v$verName-$verCode-${flavorLowered}-$buildTypeLowered.zip" val zipFileName = "$moduleName-v$verName-$verCode-${flavorLowered}-$buildTypeLowered.zip"
val prepareMagiskFilesTask = task<Sync>("prepareMagiskFiles$variantCapped") { val prepareMagiskFilesTask = tasks.register<Sync>("prepareMagiskFiles$variantCapped") {
group = "LSPosed" group = "LSPosed"
dependsOn( dependsOn(
"assemble$variantCapped", "assemble$variantCapped",
@ -204,7 +204,7 @@ fun afterEval() = android.applicationVariants.forEach { variant ->
} }
} }
val zipTask = task<Zip>("zip${variantCapped}") { val zipTask = tasks.register<Zip>("zip${variantCapped}") {
group = "LSPosed" group = "LSPosed"
dependsOn(prepareMagiskFilesTask) dependsOn(prepareMagiskFilesTask)
archiveFileName = zipFileName archiveFileName = zipFileName
@ -212,16 +212,18 @@ fun afterEval() = android.applicationVariants.forEach { variant ->
from(magiskDir) from(magiskDir)
} }
zipAll.dependsOn(zipTask) zipAll.configure {
dependsOn(zipTask)
}
val adb: String = androidComponents.sdkComponents.adb.get().asFile.absolutePath val adb: String = androidComponents.sdkComponents.adb.get().asFile.absolutePath
val pushTask = task<Exec>("push${variantCapped}") { val pushTask = tasks.register<Exec>("push${variantCapped}") {
group = "LSPosed" group = "LSPosed"
dependsOn(zipTask) dependsOn(zipTask)
workingDir("${projectDir}/release") workingDir("${projectDir}/release")
commandLine(adb, "push", zipFileName, "/data/local/tmp/") commandLine(adb, "push", zipFileName, "/data/local/tmp/")
} }
val flashMagiskTask = task<Exec>("flashMagisk${variantCapped}") { val installMagiskTask = tasks.register<Exec>("installMagisk${variantCapped}") {
group = "LSPosed" group = "LSPosed"
dependsOn(pushTask) dependsOn(pushTask)
commandLine( commandLine(
@ -229,12 +231,12 @@ fun afterEval() = android.applicationVariants.forEach { variant ->
"magisk --install-module /data/local/tmp/${zipFileName}" "magisk --install-module /data/local/tmp/${zipFileName}"
) )
} }
task<Exec>("flashMagiskAndReboot${variantCapped}") { tasks.register<Exec>("installMagiskAndReboot${variantCapped}") {
group = "LSPosed" group = "LSPosed"
dependsOn(flashMagiskTask) dependsOn(installMagiskTask)
commandLine(adb, "shell", "su", "-c", "/system/bin/svc", "power", "reboot") commandLine(adb, "shell", "su", "-c", "/system/bin/svc", "power", "reboot")
} }
val flashKsuTask = task<Exec>("flashKsu${variantCapped}") { val installKsuTask = tasks.register<Exec>("installKsu${variantCapped}") {
group = "LSPosed" group = "LSPosed"
dependsOn(pushTask) dependsOn(pushTask)
commandLine( commandLine(
@ -242,12 +244,12 @@ fun afterEval() = android.applicationVariants.forEach { variant ->
"ksud module install /data/local/tmp/${zipFileName}" "ksud module install /data/local/tmp/${zipFileName}"
) )
} }
task<Exec>("flashKsuAndReboot${variantCapped}") { tasks.register<Exec>("installKsuAndReboot${variantCapped}") {
group = "LSPosed" group = "LSPosed"
dependsOn(flashKsuTask) dependsOn(installKsuTask)
commandLine(adb, "shell", "su", "-c", "/system/bin/svc", "power", "reboot") commandLine(adb, "shell", "su", "-c", "/system/bin/svc", "power", "reboot")
} }
val flashAPatchTask = task<Exec>("flashAPatch${variantCapped}") { val installAPatchTask = tasks.register<Exec>("installAPatch${variantCapped}") {
group = "LSPosed" group = "LSPosed"
dependsOn(pushTask) dependsOn(pushTask)
commandLine( commandLine(
@ -255,9 +257,9 @@ fun afterEval() = android.applicationVariants.forEach { variant ->
"apd module install /data/local/tmp/${zipFileName}" "apd module install /data/local/tmp/${zipFileName}"
) )
} }
task<Exec>("flashAPatchAndReboot${variantCapped}") { tasks.register<Exec>("installAPatchAndReboot${variantCapped}") {
group = "LSPosed" group = "LSPosed"
dependsOn(flashAPatchTask) dependsOn(installAPatchTask)
commandLine(adb, "shell", "su", "-c", "/system/bin/svc", "power", "reboot") commandLine(adb, "shell", "su", "-c", "/system/bin/svc", "power", "reboot")
} }
} }
@ -266,68 +268,5 @@ afterEvaluate {
afterEval() afterEval()
} }
val adb: String = androidComponents.sdkComponents.adb.get().asFile.absolutePath
val killLspd = task<Exec>("killLspd") {
group = "LSPosed"
commandLine(adb, "shell", "su", "-c", "killall", "lspd")
isIgnoreExitValue = true
}
val pushDaemon = task<Exec>("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<Exec>("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<Exec>("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<Exec>("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<Exec>("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(":app")
evaluationDependsOn(":daemon") evaluationDependsOn(":daemon")