Update dependencies

1. Use JDK 21
2. Update ksp for compatibility (compulsory)
3. R8 claims that org.lsposed.lspatch.util.ModuleLoader is needed

We use rules in share/lspatch-rules.pro to ensure that LSPatch works
properly after R8 engine
This commit is contained in:
JingMatrix 2023-07-20 21:03:35 +02:00
parent 3dacebc6bf
commit cddf811b9c
14 changed files with 70 additions and 54 deletions

View File

@ -38,13 +38,13 @@ jobs:
fi fi
- name: Checkout libxposed/api - name: Checkout libxposed/api
uses: actions/checkout@v3 uses: actions/checkout@v4
with: with:
repository: libxposed/api repository: libxposed/api
path: libxposed/api path: libxposed/api
- name: Checkout libxposed/service - name: Checkout libxposed/service
uses: actions/checkout@v3 uses: actions/checkout@v4
with: with:
repository: libxposed/service repository: libxposed/service
path: libxposed/service path: libxposed/service
@ -52,7 +52,7 @@ jobs:
- name: Setup Java - name: Setup Java
uses: actions/setup-java@v3 uses: actions/setup-java@v3
with: with:
java-version: '17' java-version: '21'
distribution: 'temurin' distribution: 'temurin'
- name: Setup Gradle - name: Setup Gradle

3
.gitignore vendored
View File

@ -1,3 +1,6 @@
.project
.settings
libxposed
*.iml *.iml
.gradle .gradle
/local.properties /local.properties

2
.gitmodules vendored
View File

@ -4,7 +4,7 @@
branch = android10-release branch = android10-release
[submodule "core"] [submodule "core"]
path = core path = core
url = https://github.com/LSPosed/LSPosed.git url = https://github.com/JingMatrix/LSPosed.git
branch = master branch = master
[submodule "patch/libs/manifest-editor"] [submodule "patch/libs/manifest-editor"]
path = patch/libs/manifest-editor path = patch/libs/manifest-editor

View File

@ -4,6 +4,7 @@ import com.android.build.gradle.BaseExtension
import org.eclipse.jgit.api.Git import org.eclipse.jgit.api.Git
import org.eclipse.jgit.internal.storage.file.FileRepository import org.eclipse.jgit.internal.storage.file.FileRepository
import org.eclipse.jgit.storage.file.FileRepositoryBuilder import org.eclipse.jgit.storage.file.FileRepositoryBuilder
import com.android.build.gradle.LibraryExtension
plugins { plugins {
alias(libs.plugins.agp.lib) apply false alias(libs.plugins.agp.lib) apply false
@ -54,11 +55,11 @@ val androidTargetSdkVersion by extra(34)
val androidCompileSdkVersion by extra(34) val androidCompileSdkVersion by extra(34)
val androidCompileNdkVersion by extra("25.2.9519653") val androidCompileNdkVersion by extra("25.2.9519653")
val androidBuildToolsVersion by extra("34.0.0") val androidBuildToolsVersion by extra("34.0.0")
val androidSourceCompatibility by extra(JavaVersion.VERSION_17) val androidSourceCompatibility by extra(JavaVersion.VERSION_21)
val androidTargetCompatibility by extra(JavaVersion.VERSION_17) val androidTargetCompatibility by extra(JavaVersion.VERSION_21)
tasks.register<Delete>("clean") { tasks.register<Delete>("clean") {
delete(rootProject.buildDir) delete(layout.buildDirectory)
} }
listOf("Debug", "Release").forEach { variant -> listOf("Debug", "Release").forEach { variant ->
@ -80,7 +81,7 @@ fun Project.configureBaseExtension() {
buildToolsVersion = androidBuildToolsVersion buildToolsVersion = androidBuildToolsVersion
externalNativeBuild.cmake { externalNativeBuild.cmake {
version = "3.22.1+" version = "3.28.1+"
} }
defaultConfig { defaultConfig {
@ -201,6 +202,7 @@ fun Project.configureBaseExtension() {
"intermediates", "intermediates",
"optimized_processed_res", "optimized_processed_res",
"release", "release",
"optimizeReleaseResources",
"resources-release-optimize.ap_" "resources-release-optimize.ap_"
) )
val optimized = File("${zip}.opt") val optimized = File("${zip}.opt")
@ -236,3 +238,17 @@ subprojects {
configureBaseExtension() 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")) }
}
}
}
}
}

2
core

@ -1 +1 @@
Subproject commit f8927757e8704d96611e1f3d75f702e3f0ce061f Subproject commit 69f73908ef82eaaac3d81e6274cbd625e2a5a418

View File

@ -1,13 +1,13 @@
[versions] [versions]
room = "2.5.2" room = "2.6.1"
accompanist = "0.27.0" accompanist = "0.27.0"
compose-destinations = "1.9.42-beta" compose-destinations = "1.9.42-beta"
shizuku = "13.1.2" shizuku = "13.1.2"
hiddenapi-refine = "4.3.0" hiddenapi-refine = "4.3.0"
hiddenapi-stub = "4.2.0" hiddenapi-stub = "4.2.0"
compose-bom = "2023.06.01" compose-bom = "2024.05.00"
kotlin = "1.8.21" kotlin = "1.9.23"
ksp = "1.8.21-1.0.11" ksp = "1.9.23-1.0.20"
commons-io = "2.13.0" commons-io = "2.13.0"
beust-jcommander = "1.82" beust-jcommander = "1.82"
google-gson = "2.10.1" google-gson = "2.10.1"

Binary file not shown.

View File

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

22
gradlew vendored
View File

@ -83,7 +83,8 @@ done
# This is normally unused # This is normally unused
# shellcheck disable=SC2034 # shellcheck disable=SC2034
APP_BASE_NAME=${0##*/} 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. # Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum MAX_FD=maximum
@ -130,10 +131,13 @@ location of your Java installation."
fi fi
else else
JAVACMD=java 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 Please set the JAVA_HOME variable in your environment to match the
location of your Java installation." location of your Java installation."
fi
fi fi
# Increase the maximum file descriptors if we can. # Increase the maximum file descriptors if we can.
@ -141,7 +145,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #( case $MAX_FD in #(
max*) max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. # 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 ) || MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit" warn "Could not query maximum file descriptor limit"
esac esac
@ -149,7 +153,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
'' | soft) :;; #( '' | soft) :;; #(
*) *)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. # 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" || ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD" warn "Could not set maximum file descriptor limit to $MAX_FD"
esac 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. # 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"' DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command; # Collect all arguments for the java command:
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of # * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# shell script including quotes and variable substitutions, so put them in # and any embedded shellness will be escaped.
# double quotes to make sure that they get re-expanded; and # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# * put everything else in single quotes, so that it's not re-expanded. # treated as '${Hostname}' itself on the command line.
set -- \ set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \ "-Dorg.gradle.appname=$APP_BASE_NAME" \

20
gradlew.bat vendored
View File

@ -43,11 +43,11 @@ set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1 %JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute if %ERRORLEVEL% equ 0 goto execute
echo. echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. echo location of your Java installation. 1>&2
goto fail goto fail
@ -57,11 +57,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute if exist "%JAVA_EXE%" goto execute
echo. echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. echo location of your Java installation. 1>&2
goto fail goto fail

View File

@ -25,10 +25,6 @@ android {
} }
buildTypes { buildTypes {
debug {
isMinifyEnabled = true
proguardFiles("proguard-rules-debug.pro")
}
release { release {
isMinifyEnabled = true isMinifyEnabled = true
proguardFiles( proguardFiles(
@ -41,21 +37,13 @@ android {
} }
} }
kotlinOptions {
jvmTarget = "17"
}
kotlin {
jvmToolchain(17)
}
buildFeatures { buildFeatures {
compose = true compose = true
buildConfig = true buildConfig = true
} }
composeOptions { composeOptions {
kotlinCompilerExtensionVersion = "1.4.7" kotlinCompilerExtensionVersion = "1.5.13"
} }
namespace = "org.lsposed.lspatch" namespace = "org.lsposed.lspatch"

View File

@ -40,9 +40,11 @@ androidComponents.onVariants { variant ->
task<Copy>("copySo$variantCapped") { task<Copy>("copySo$variantCapped") {
dependsOn("assemble$variantCapped") dependsOn("assemble$variantCapped")
dependsOn("strip${variantCapped}DebugSymbols")
val libDir = variant.name + "/strip${variantCapped}DebugSymbols"
from( from(
fileTree( 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") "include" to listOf("**/liblspatch.so")
) )
) )

View File

@ -9,13 +9,6 @@ android {
androidResources = false androidResources = false
buildConfig = false buildConfig = false
} }
buildTypes {
release {
isMinifyEnabled = true
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"))
}
}
} }
dependencies { dependencies {

9
share/lspatch-rules.pro Normal file
View File

@ -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