diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index eded7b0..74fafb0 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -38,13 +38,13 @@ jobs: fi - name: Checkout libxposed/api - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: repository: libxposed/api path: libxposed/api - name: Checkout libxposed/service - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: repository: libxposed/service path: libxposed/service @@ -52,7 +52,7 @@ jobs: - name: Setup Java uses: actions/setup-java@v3 with: - java-version: '17' + java-version: '21' distribution: 'temurin' - name: Setup Gradle diff --git a/.gitignore b/.gitignore index 040a5f3..e89e875 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +.project +.settings +libxposed *.iml .gradle /local.properties diff --git a/.gitmodules b/.gitmodules index 7928cfd..554e947 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,7 +4,7 @@ branch = android10-release [submodule "core"] path = core - url = https://github.com/LSPosed/LSPosed.git + url = https://github.com/JingMatrix/LSPosed.git branch = master [submodule "patch/libs/manifest-editor"] path = patch/libs/manifest-editor diff --git a/build.gradle.kts b/build.gradle.kts index e1fdeb0..d5453f6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,6 +4,7 @@ import com.android.build.gradle.BaseExtension import org.eclipse.jgit.api.Git import org.eclipse.jgit.internal.storage.file.FileRepository import org.eclipse.jgit.storage.file.FileRepositoryBuilder +import com.android.build.gradle.LibraryExtension plugins { alias(libs.plugins.agp.lib) apply false @@ -54,11 +55,11 @@ val androidTargetSdkVersion by extra(34) val androidCompileSdkVersion by extra(34) val androidCompileNdkVersion by extra("25.2.9519653") val androidBuildToolsVersion by extra("34.0.0") -val androidSourceCompatibility by extra(JavaVersion.VERSION_17) -val androidTargetCompatibility by extra(JavaVersion.VERSION_17) +val androidSourceCompatibility by extra(JavaVersion.VERSION_21) +val androidTargetCompatibility by extra(JavaVersion.VERSION_21) tasks.register("clean") { - delete(rootProject.buildDir) + delete(layout.buildDirectory) } listOf("Debug", "Release").forEach { variant -> @@ -80,7 +81,7 @@ fun Project.configureBaseExtension() { buildToolsVersion = androidBuildToolsVersion externalNativeBuild.cmake { - version = "3.22.1+" + version = "3.28.1+" } defaultConfig { @@ -201,6 +202,7 @@ fun Project.configureBaseExtension() { "intermediates", "optimized_processed_res", "release", + "optimizeReleaseResources", "resources-release-optimize.ap_" ) val optimized = File("${zip}.opt") @@ -236,3 +238,17 @@ subprojects { configureBaseExtension() } } + + +project(":core") { + afterEvaluate { + if (property("android") is LibraryExtension) { + val android = property("android") as LibraryExtension + android.run { + buildTypes { + release { proguardFiles(rootProject.file("share/lspatch-rules.pro")) } + } + } + } + } +} diff --git a/core b/core index f892775..69f7390 160000 --- a/core +++ b/core @@ -1 +1 @@ -Subproject commit f8927757e8704d96611e1f3d75f702e3f0ce061f +Subproject commit 69f73908ef82eaaac3d81e6274cbd625e2a5a418 diff --git a/gradle/lspatch.versions.toml b/gradle/lspatch.versions.toml index d80798e..f1fbcd9 100644 --- a/gradle/lspatch.versions.toml +++ b/gradle/lspatch.versions.toml @@ -1,13 +1,13 @@ [versions] -room = "2.5.2" +room = "2.6.1" accompanist = "0.27.0" compose-destinations = "1.9.42-beta" shizuku = "13.1.2" hiddenapi-refine = "4.3.0" hiddenapi-stub = "4.2.0" -compose-bom = "2023.06.01" -kotlin = "1.8.21" -ksp = "1.8.21-1.0.11" +compose-bom = "2024.05.00" +kotlin = "1.9.23" +ksp = "1.9.23-1.0.20" commons-io = "2.13.0" beust-jcommander = "1.82" google-gson = "2.10.1" diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index c1962a7..e644113 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 37aef8d..b82aa23 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index aeb74cb..1aa94a4 100755 --- a/gradlew +++ b/gradlew @@ -83,7 +83,8 @@ done # This is normally unused # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -130,10 +131,13 @@ location of your Java installation." fi else JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. @@ -141,7 +145,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac @@ -149,7 +153,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then '' | soft) :;; #( *) # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -198,11 +202,11 @@ fi # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ diff --git a/gradlew.bat b/gradlew.bat index 93e3f59..25da30d 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -43,11 +43,11 @@ set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -57,11 +57,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail diff --git a/manager/build.gradle.kts b/manager/build.gradle.kts index 33611f5..a7cb86c 100644 --- a/manager/build.gradle.kts +++ b/manager/build.gradle.kts @@ -25,10 +25,6 @@ android { } buildTypes { - debug { - isMinifyEnabled = true - proguardFiles("proguard-rules-debug.pro") - } release { isMinifyEnabled = true proguardFiles( @@ -41,21 +37,13 @@ android { } } - kotlinOptions { - jvmTarget = "17" - } - - kotlin { - jvmToolchain(17) - } - buildFeatures { compose = true buildConfig = true } composeOptions { - kotlinCompilerExtensionVersion = "1.4.7" + kotlinCompilerExtensionVersion = "1.5.13" } namespace = "org.lsposed.lspatch" diff --git a/patch-loader/build.gradle.kts b/patch-loader/build.gradle.kts index e9e03a8..fab09df 100644 --- a/patch-loader/build.gradle.kts +++ b/patch-loader/build.gradle.kts @@ -40,9 +40,11 @@ androidComponents.onVariants { variant -> task("copySo$variantCapped") { dependsOn("assemble$variantCapped") + dependsOn("strip${variantCapped}DebugSymbols") + val libDir = variant.name + "/strip${variantCapped}DebugSymbols" from( fileTree( - "dir" to "$buildDir/intermediates/stripped_native_libs/${variant.name}/out/lib", + "dir" to "$buildDir/intermediates/stripped_native_libs/$libDir/out/lib", "include" to listOf("**/liblspatch.so") ) ) diff --git a/share/android/build.gradle.kts b/share/android/build.gradle.kts index e7d9dd9..125a681 100644 --- a/share/android/build.gradle.kts +++ b/share/android/build.gradle.kts @@ -9,13 +9,6 @@ android { androidResources = false buildConfig = false } - - buildTypes { - release { - isMinifyEnabled = true - proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt")) - } - } } dependencies { diff --git a/share/lspatch-rules.pro b/share/lspatch-rules.pro new file mode 100644 index 0000000..07290b4 --- /dev/null +++ b/share/lspatch-rules.pro @@ -0,0 +1,9 @@ +-keepnames class org.lsposed.lspd.deopt.* +-keepnames class org.lsposed.lspd.hooker.** { *; } +-keepnames class org.lsposed.lspd.impl.LSPosedContext +-keepnames class org.lsposed.lspd.impl.LSPosedHelper +-keepnames class org.lsposed.lspd.impl.LSPosedHookCallback +-keepnames class org.lsposed.lspd.util.Hookers +-keepnames class org.lsposed.lspd.util.LspModuleClassLoader + +-keepattributes SourceFile,LineNumberTable