parent
5d927f1dd2
commit
941726d559
|
|
@ -15,6 +15,11 @@ jobs:
|
|||
fail-fast: false
|
||||
matrix:
|
||||
os: [ ubuntu-latest ]
|
||||
env:
|
||||
CCACHE_COMPILERCHECK: '%compiler% -dumpmachine; %compiler% -dumpversion'
|
||||
CCACHE_NOHASHDIR: 'true'
|
||||
CCACHE_HARDLINK: 'true'
|
||||
CCACHE_BASEDIR: '${{ github.workspace }}'
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
|
|
@ -34,62 +39,55 @@ jobs:
|
|||
echo ${{ secrets.KEY_STORE }} | base64 --decode > key.jks
|
||||
fi
|
||||
|
||||
- name: Set up JDK 11
|
||||
- name: Checkout libxposed/api
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
repository: libxposed/api
|
||||
path: libxposed/api
|
||||
|
||||
- name: Checkout libxposed/service
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
repository: libxposed/service
|
||||
path: libxposed/service
|
||||
|
||||
- name: Setup Java
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
java-version: '11'
|
||||
java-version: '17'
|
||||
distribution: 'temurin'
|
||||
cache: 'gradle'
|
||||
|
||||
- name: Cache gradle dependencies
|
||||
uses: actions/cache@v3
|
||||
- name: Setup Gradle
|
||||
uses: gradle/gradle-build-action@v2
|
||||
with:
|
||||
path: |
|
||||
~/.gradle/caches
|
||||
~/.gradle/wrapper
|
||||
!~/.gradle/caches/build-cache-*
|
||||
key: gradle-deps-core-${{ hashFiles('**/build.gradle.kts') }}
|
||||
restore-keys: |
|
||||
gradle-deps
|
||||
gradle-home-cache-cleanup: true
|
||||
|
||||
- name: Cache gradle build
|
||||
uses: actions/cache@v3
|
||||
- name: Set up ccache
|
||||
uses: hendrikmuhs/ccache-action@v1.2
|
||||
with:
|
||||
path: |
|
||||
~/.gradle/caches/build-cache-*
|
||||
~/.gradle/buildOutputCleanup/cache.properties
|
||||
key: gradle-builds-core-${{ github.sha }}
|
||||
restore-keys: |
|
||||
gradle-builds
|
||||
max-size: 2G
|
||||
key: ${{ runner.os }}
|
||||
restore-keys: ${{ runner.os }}
|
||||
save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
|
||||
|
||||
- name: Cache native build
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: |
|
||||
~/.ccache
|
||||
patch-loader/build/.lto-cache
|
||||
key: native-cache-${{ github.sha }}
|
||||
restore-keys: native-cache-
|
||||
|
||||
- name: Install dep
|
||||
- name: Build dependencies
|
||||
working-directory: libxposed
|
||||
run: |
|
||||
sudo apt-get install -y ccache
|
||||
ccache -o max_size=1G
|
||||
ccache -o hash_dir=false
|
||||
ccache -o compiler_check='%compiler% -dumpmachine; %compiler% -dumpversion'
|
||||
ccache -zp
|
||||
cd api
|
||||
echo 'org.gradle.jvmargs=-Xmx2048m' >> gradle.properties
|
||||
./gradlew :api:publishApiPublicationToMavenLocal
|
||||
cd ..
|
||||
cd service
|
||||
echo 'org.gradle.jvmargs=-Xmx2048m' >> gradle.properties
|
||||
./gradlew :interface:publishInterfacePublicationToMavenLocal
|
||||
|
||||
- name: Build with Gradle
|
||||
run: |
|
||||
[ $(du -s ~/.gradle/wrapper | awk '{ print $1 }') -gt 250000 ] && rm -rf ~/.gradle/wrapper/* || true
|
||||
find ~/.gradle/caches -exec touch -d "2 days ago" {} + || true
|
||||
echo 'org.gradle.caching=true' >> gradle.properties
|
||||
echo 'org.gradle.parallel=true' >> gradle.properties
|
||||
echo 'org.gradle.vfs.watch=true' >> gradle.properties
|
||||
echo 'org.gradle.jvmargs=-Xmx2048m' >> gradle.properties
|
||||
echo 'android.native.buildOutput=verbose' >> gradle.properties
|
||||
./gradlew buildAll
|
||||
ccache -s
|
||||
|
||||
- name: Upload Debug artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
[submodule "core"]
|
||||
path = core
|
||||
url = https://github.com/LSPosed/LSPosed.git
|
||||
branch = lspatch
|
||||
branch = master
|
||||
[submodule "patch/libs/manifest-editor"]
|
||||
path = patch/libs/manifest-editor
|
||||
url = https://github.com/WindySha/ManifestEditor.git
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@ dependencies {
|
|||
implementation("com.google.code.findbugs:jsr305:3.0.2")
|
||||
implementation("org.bouncycastle:bcpkix-jdk15on:1.70")
|
||||
implementation("org.bouncycastle:bcprov-jdk15on:1.70")
|
||||
api("com.google.guava:guava:31.0.1-jre")
|
||||
api("com.android.tools.build:apksig:7.1.2")
|
||||
compileOnlyApi("com.google.auto.value:auto-value-annotations:1.9")
|
||||
annotationProcessor("com.google.auto.value:auto-value:1.9")
|
||||
api("com.google.guava:guava:32.0.1-jre")
|
||||
api("com.android.tools.build:apksig:8.0.2")
|
||||
compileOnlyApi("com.google.auto.value:auto-value-annotations:1.10.1")
|
||||
annotationProcessor("com.google.auto.value:auto-value:1.10.1")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@ import org.eclipse.jgit.internal.storage.file.FileRepository
|
|||
import org.eclipse.jgit.storage.file.FileRepositoryBuilder
|
||||
|
||||
plugins {
|
||||
id("com.android.application") apply false
|
||||
id("com.android.library") apply false
|
||||
alias(libs.plugins.agp.lib) apply false
|
||||
alias(libs.plugins.agp.app) apply false
|
||||
}
|
||||
|
||||
buildscript {
|
||||
|
|
@ -17,7 +17,7 @@ buildscript {
|
|||
}
|
||||
dependencies {
|
||||
classpath("org.eclipse.jgit:org.eclipse.jgit:6.3.0.202209071007-r")
|
||||
classpath(kotlin("gradle-plugin", version = "1.7.20"))
|
||||
classpath(kotlin("gradle-plugin", version = "1.8.21"))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -54,8 +54,8 @@ val androidTargetSdkVersion by extra(33)
|
|||
val androidCompileSdkVersion by extra(33)
|
||||
val androidCompileNdkVersion by extra("25.1.8937393")
|
||||
val androidBuildToolsVersion by extra("33.0.1")
|
||||
val androidSourceCompatibility by extra(JavaVersion.VERSION_11)
|
||||
val androidTargetCompatibility by extra(JavaVersion.VERSION_11)
|
||||
val androidSourceCompatibility by extra(JavaVersion.VERSION_17)
|
||||
val androidTargetCompatibility by extra(JavaVersion.VERSION_17)
|
||||
|
||||
tasks.register<Delete>("clean") {
|
||||
delete(rootProject.buildDir)
|
||||
|
|
|
|||
2
core
2
core
|
|
@ -1 +1 @@
|
|||
Subproject commit 5666dca1e3b83e9b664bfcd096370b1a7da6eff1
|
||||
Subproject commit cb32c70951e959855125a0b60f78b5dacbd3e153
|
||||
|
|
@ -1,8 +1,3 @@
|
|||
android.experimental.enableNewResourceShrinker=true
|
||||
android.experimental.enableNewResourceShrinker.preciseShrinking=true
|
||||
android.enableAppCompileTimeRClass=true
|
||||
android.nonTransitiveRClass=true
|
||||
android.enableR8.fullMode=true
|
||||
android.useAndroidX=true
|
||||
|
||||
agpVersion=7.4.0
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -1,5 +1,6 @@
|
|||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
|
||||
networkTimeout=10000
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@
|
|||
# Darwin, MinGW, and NonStop.
|
||||
#
|
||||
# (3) This script is generated from the Groovy template
|
||||
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||
# within the Gradle project.
|
||||
#
|
||||
# You can find Gradle at https://github.com/gradle/gradle/.
|
||||
|
|
@ -80,13 +80,10 @@ do
|
|||
esac
|
||||
done
|
||||
|
||||
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
|
||||
|
||||
APP_NAME="Gradle"
|
||||
# This is normally unused
|
||||
# shellcheck disable=SC2034
|
||||
APP_BASE_NAME=${0##*/}
|
||||
|
||||
# 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"'
|
||||
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD=maximum
|
||||
|
|
@ -143,12 +140,16 @@ fi
|
|||
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
|
||||
MAX_FD=$( ulimit -H -n ) ||
|
||||
warn "Could not query maximum file descriptor limit"
|
||||
esac
|
||||
case $MAX_FD in #(
|
||||
'' | soft) :;; #(
|
||||
*)
|
||||
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
|
||||
# shellcheck disable=SC3045
|
||||
ulimit -n "$MAX_FD" ||
|
||||
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
||||
esac
|
||||
|
|
@ -193,6 +194,10 @@ if "$cygwin" || "$msys" ; then
|
|||
done
|
||||
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
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ if "%OS%"=="Windows_NT" setlocal
|
|||
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%"=="" set DIRNAME=.
|
||||
@rem This is normally unused
|
||||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ fun Jar.configure(variant: String) {
|
|||
|
||||
into("assets") {
|
||||
from("src/main/assets")
|
||||
from("${rootProject.projectDir}/out/assets")
|
||||
from("${rootProject.projectDir}/out/assets/$variant")
|
||||
}
|
||||
|
||||
exclude("META-INF/*.SF", "META-INF/*.DSA", "META-INF/*.RSA", "META-INF/*.MF", "META-INF/*.txt", "META-INF/versions/**")
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
import java.util.Locale
|
||||
|
||||
val defaultManagerPackageName: String by rootProject.extra
|
||||
val apiCode: Int by rootProject.extra
|
||||
val verCode: Int by rootProject.extra
|
||||
|
|
@ -6,7 +8,7 @@ val coreVerCode: Int by rootProject.extra
|
|||
val coreVerName: String by rootProject.extra
|
||||
|
||||
plugins {
|
||||
id("com.android.application")
|
||||
alias(libs.plugins.agp.app)
|
||||
id("com.google.devtools.ksp")
|
||||
id("dev.rikka.tools.refine")
|
||||
id("kotlin-parcelize")
|
||||
|
|
@ -29,23 +31,33 @@ android {
|
|||
}
|
||||
release {
|
||||
isMinifyEnabled = true
|
||||
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
}
|
||||
all {
|
||||
sourceSets[name].assets.srcDirs(rootProject.projectDir.resolve("out/assets/$name"))
|
||||
}
|
||||
}
|
||||
|
||||
kotlinOptions {
|
||||
jvmTarget = "11"
|
||||
jvmTarget = "17"
|
||||
}
|
||||
|
||||
kotlin {
|
||||
jvmToolchain(17)
|
||||
}
|
||||
|
||||
buildFeatures {
|
||||
compose = true
|
||||
buildConfig = true
|
||||
}
|
||||
|
||||
composeOptions {
|
||||
kotlinCompilerExtensionVersion = "1.3.2"
|
||||
kotlinCompilerExtensionVersion = "1.4.7"
|
||||
}
|
||||
|
||||
sourceSets["main"].assets.srcDirs(rootProject.projectDir.resolve("out/assets"))
|
||||
namespace = "org.lsposed.lspatch"
|
||||
|
||||
applicationVariants.all {
|
||||
|
|
@ -59,8 +71,8 @@ android {
|
|||
|
||||
afterEvaluate {
|
||||
android.applicationVariants.forEach { variant ->
|
||||
val variantLowered = variant.name.toLowerCase()
|
||||
val variantCapped = variant.name.capitalize()
|
||||
val variantLowered = variant.name.lowercase()
|
||||
val variantCapped = variant.name.replaceFirstChar { it.uppercase() }
|
||||
|
||||
task<Copy>("copy${variantCapped}Assets") {
|
||||
dependsOn(":meta-loader:copy$variantCapped")
|
||||
|
|
@ -68,7 +80,7 @@ afterEvaluate {
|
|||
tasks["merge${variantCapped}Assets"].dependsOn(this)
|
||||
|
||||
into("$buildDir/intermediates/assets/$variantLowered/merge${variantCapped}Assets")
|
||||
from("${rootProject.projectDir}/out/assets")
|
||||
from("${rootProject.projectDir}/out/assets/${variant.name}")
|
||||
}
|
||||
|
||||
task<Copy>("build$variantCapped") {
|
||||
|
|
@ -86,38 +98,38 @@ dependencies {
|
|||
implementation(projects.share.android)
|
||||
implementation(projects.share.java)
|
||||
|
||||
val roomVersion = "2.4.3"
|
||||
val roomVersion = "2.5.2"
|
||||
val accompanistVersion = "0.27.0"
|
||||
val composeDestinationsVersion = "1.7.25-beta"
|
||||
implementation(platform("androidx.compose:compose-bom:2022.10.00"))
|
||||
val composeDestinationsVersion = "1.9.42-beta"
|
||||
implementation(platform("androidx.compose:compose-bom:2023.06.01"))
|
||||
|
||||
annotationProcessor("androidx.room:room-compiler:$roomVersion")
|
||||
compileOnly("dev.rikka.hidden:stub:3.4.3")
|
||||
compileOnly("dev.rikka.hidden:stub:4.2.0")
|
||||
debugImplementation("androidx.compose.ui:ui-tooling")
|
||||
debugImplementation("androidx.customview:customview:1.2.0-alpha02")
|
||||
debugImplementation("androidx.customview:customview-poolingcontainer:1.0.0")
|
||||
implementation("androidx.activity:activity-compose:1.6.1")
|
||||
implementation("androidx.activity:activity-compose:1.7.2")
|
||||
implementation("androidx.compose.material:material-icons-extended")
|
||||
implementation("androidx.compose.material3:material3")
|
||||
implementation("androidx.compose.ui:ui")
|
||||
implementation("androidx.compose.ui:ui-tooling-preview")
|
||||
implementation("androidx.core:core-ktx:1.9.0")
|
||||
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.5.1")
|
||||
implementation("androidx.navigation:navigation-compose:2.5.3")
|
||||
implementation("androidx.preference:preference:1.2.0")
|
||||
implementation("androidx.core:core-ktx:1.10.1")
|
||||
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.1")
|
||||
implementation("androidx.navigation:navigation-compose:2.6.0")
|
||||
implementation(libs.androidx.preference)
|
||||
implementation("androidx.room:room-ktx:$roomVersion")
|
||||
implementation("androidx.room:room-runtime:$roomVersion")
|
||||
implementation("com.google.accompanist:accompanist-navigation-animation:$accompanistVersion")
|
||||
implementation("com.google.accompanist:accompanist-pager:$accompanistVersion")
|
||||
implementation("com.google.accompanist:accompanist-swiperefresh:$accompanistVersion")
|
||||
implementation("com.google.android.material:material:1.7.0")
|
||||
implementation("com.google.code.gson:gson:2.10")
|
||||
implementation("dev.rikka.shizuku:api:12.2.0")
|
||||
implementation("dev.rikka.shizuku:provider:12.2.0")
|
||||
implementation("dev.rikka.tools.refine:runtime:3.1.1")
|
||||
implementation(libs.material)
|
||||
implementation(libs.gson)
|
||||
implementation("dev.rikka.shizuku:api:13.1.2")
|
||||
implementation("dev.rikka.shizuku:provider:13.1.2")
|
||||
implementation("dev.rikka.tools.refine:runtime:4.3.0")
|
||||
implementation("io.github.raamcosta.compose-destinations:core:$composeDestinationsVersion")
|
||||
implementation("me.zhanghai.android.appiconloader:appiconloader:1.5.0")
|
||||
implementation("org.lsposed.hiddenapibypass:hiddenapibypass:4.3")
|
||||
implementation(libs.appiconloader)
|
||||
implementation(libs.hiddenapibypass)
|
||||
ksp("androidx.room:room-compiler:$roomVersion")
|
||||
ksp("io.github.raamcosta.compose-destinations:ksp:$composeDestinationsVersion")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,3 +6,5 @@
|
|||
-keepclassmembers class org.lsposed.patch.LSPatch {
|
||||
private <fields>;
|
||||
}
|
||||
-dontwarn com.google.auto.value.AutoValue$Builder
|
||||
-dontwarn com.google.auto.value.AutoValue
|
||||
|
|
|
|||
|
|
@ -16,3 +16,5 @@
|
|||
-keepclassmembers class org.lsposed.patch.LSPatch {
|
||||
private <fields>;
|
||||
}
|
||||
-dontwarn com.google.auto.value.AutoValue$Builder
|
||||
-dontwarn com.google.auto.value.AutoValue
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ object ManagerService : ILSPApplicationService.Stub() {
|
|||
|
||||
private const val TAG = "ManagerService"
|
||||
|
||||
override fun requestModuleBinder(name: String): IBinder {
|
||||
override fun getLegacyModulesList(): MutableList<Module> {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
|
|
@ -32,10 +32,6 @@ object ManagerService : ILSPApplicationService.Stub() {
|
|||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun requestRemotePreference(packageName: String, userId: Int, callback: IBinder?): Bundle {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun requestInjectedManagerBinder(binder: List<IBinder>?): ParcelFileDescriptor? {
|
||||
return null
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ import org.lsposed.lspatch.ui.util.LocalSnackbarHost
|
|||
|
||||
class MainActivity : ComponentActivity() {
|
||||
|
||||
@OptIn(ExperimentalMaterial3Api::class, ExperimentalAnimationApi::class)
|
||||
@OptIn(ExperimentalAnimationApi::class)
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContent {
|
||||
|
|
@ -55,7 +55,7 @@ private fun BottomBar(navController: NavHostController) {
|
|||
?: NavGraphs.root.startAppDestination
|
||||
var topDestination by rememberSaveable { mutableStateOf(currentDestination.route) }
|
||||
LaunchedEffect(currentDestination) {
|
||||
val queue = navController.backQueue
|
||||
val queue = navController.currentBackStack.value
|
||||
if (queue.size == 2) topDestination = queue[1].destination.route!!
|
||||
else if (queue.size > 2) topDestination = queue[2].destination.route!!
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
import java.util.Locale
|
||||
|
||||
plugins {
|
||||
id("com.android.application")
|
||||
alias(libs.plugins.agp.app)
|
||||
}
|
||||
|
||||
android {
|
||||
|
||||
defaultConfig {
|
||||
multiDexEnabled = false
|
||||
}
|
||||
|
|
@ -18,8 +19,8 @@ android {
|
|||
}
|
||||
|
||||
androidComponents.onVariants { variant ->
|
||||
val variantCapped = variant.name.capitalize()
|
||||
val variantLowered = variant.name.toLowerCase()
|
||||
val variantCapped = variant.name.replaceFirstChar { it.uppercase() }
|
||||
val variantLowered = variant.name.lowercase()
|
||||
|
||||
task<Copy>("copyDex$variantCapped") {
|
||||
dependsOn("assemble$variantCapped")
|
||||
|
|
@ -28,7 +29,7 @@ androidComponents.onVariants { variant ->
|
|||
"$buildDir/intermediates/dex/$variantLowered/mergeDex$variantCapped"
|
||||
from(dexOutPath)
|
||||
rename("classes.dex", "metaloader.dex")
|
||||
into("${rootProject.projectDir}/out/assets/lspatch")
|
||||
into("${rootProject.projectDir}/out/assets/${variant.name}/lspatch")
|
||||
}
|
||||
|
||||
task("copy$variantCapped") {
|
||||
|
|
@ -43,5 +44,5 @@ androidComponents.onVariants { variant ->
|
|||
dependencies {
|
||||
compileOnly(projects.hiddenapi.stubs)
|
||||
implementation(projects.share.java)
|
||||
implementation("org.lsposed.hiddenapibypass:hiddenapibypass:4.3")
|
||||
implementation(libs.hiddenapibypass)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,3 +2,6 @@
|
|||
public static byte[] dex;
|
||||
<init>();
|
||||
}
|
||||
-dontwarn androidx.annotation.NonNull
|
||||
-dontwarn androidx.annotation.Nullable
|
||||
-dontwarn androidx.annotation.VisibleForTesting
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
import java.util.Locale
|
||||
|
||||
plugins {
|
||||
id("com.android.application")
|
||||
alias(libs.plugins.agp.app)
|
||||
}
|
||||
|
||||
android {
|
||||
|
|
@ -7,6 +9,10 @@ android {
|
|||
multiDexEnabled = false
|
||||
}
|
||||
|
||||
buildFeatures {
|
||||
buildConfig = true
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
isMinifyEnabled = false
|
||||
|
|
@ -23,13 +29,13 @@ android {
|
|||
}
|
||||
|
||||
androidComponents.onVariants { variant ->
|
||||
val variantCapped = variant.name.capitalize()
|
||||
val variantCapped = variant.name.replaceFirstChar { it.uppercase() }
|
||||
|
||||
task<Copy>("copyDex$variantCapped") {
|
||||
dependsOn("assemble$variantCapped")
|
||||
from("$buildDir/intermediates/dex/${variant.name}/mergeDex$variantCapped/classes.dex")
|
||||
rename("classes.dex", "loader.dex")
|
||||
into("${rootProject.projectDir}/out/assets/lspatch")
|
||||
into("${rootProject.projectDir}/out/assets/${variant.name}/lspatch")
|
||||
}
|
||||
|
||||
task<Copy>("copySo$variantCapped") {
|
||||
|
|
@ -40,7 +46,7 @@ androidComponents.onVariants { variant ->
|
|||
"include" to listOf("**/liblspatch.so")
|
||||
)
|
||||
)
|
||||
into("${rootProject.projectDir}/out/assets/lspatch/so")
|
||||
into("${rootProject.projectDir}/out/assets/${variant.name}/lspatch/so")
|
||||
}
|
||||
|
||||
task("copy$variantCapped") {
|
||||
|
|
@ -61,5 +67,5 @@ dependencies {
|
|||
implementation(projects.share.android)
|
||||
implementation(projects.share.java)
|
||||
|
||||
implementation("com.google.code.gson:gson:2.10")
|
||||
implementation(libs.gson)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ public class LSPApplication {
|
|||
}
|
||||
|
||||
disableProfile(context);
|
||||
Startup.initXposed(false, ActivityThread.currentProcessName(), service);
|
||||
Startup.initXposed(false, ActivityThread.currentProcessName(), ActivityThread.currentApplication().getPackageCodePath(), service);
|
||||
Log.i(TAG, "Bootstrap Xposed");
|
||||
Startup.bootstrapXposed();
|
||||
// WARN: Since it uses `XResource`, the following class should not be initialized
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
package org.lsposed.lspatch.service;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
import android.os.IBinder;
|
||||
import android.os.ParcelFileDescriptor;
|
||||
import android.os.RemoteException;
|
||||
import android.util.Log;
|
||||
|
||||
import org.lsposed.lspatch.loader.util.FileUtils;
|
||||
|
|
@ -58,7 +58,7 @@ public class LocalApplicationService extends ILSPApplicationService.Stub {
|
|||
}
|
||||
|
||||
@Override
|
||||
public IBinder requestModuleBinder(String name) {
|
||||
public List<Module> getLegacyModulesList() throws RemoteException {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
@ -72,11 +72,6 @@ public class LocalApplicationService extends ILSPApplicationService.Stub {
|
|||
return new File(Environment.getDataDirectory(), "data/" + packageName + "/shared_prefs/").getAbsolutePath();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Bundle requestRemotePreference(String packageName, int userId, IBinder callback) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ParcelFileDescriptor requestInjectedManagerBinder(List<IBinder> binder) {
|
||||
return null;
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ import android.content.Context;
|
|||
import android.content.Intent;
|
||||
import android.content.ServiceConnection;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
import android.os.Handler;
|
||||
import android.os.HandlerThread;
|
||||
|
|
@ -75,7 +74,8 @@ public class RemoteApplicationService implements ILSPApplicationService {
|
|||
}
|
||||
boolean success = latch.await(1, TimeUnit.SECONDS);
|
||||
if (!success) throw new TimeoutException("Bind service timeout");
|
||||
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException | InterruptedException | TimeoutException e) {
|
||||
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException |
|
||||
InterruptedException | TimeoutException e) {
|
||||
Toast.makeText(context, "Manager died", Toast.LENGTH_SHORT).show();
|
||||
var r = new RemoteException("Failed to get manager binder");
|
||||
r.initCause(e);
|
||||
|
|
@ -84,8 +84,8 @@ public class RemoteApplicationService implements ILSPApplicationService {
|
|||
}
|
||||
|
||||
@Override
|
||||
public IBinder requestModuleBinder(String name) {
|
||||
return service == null ? null : service.asBinder();
|
||||
public List<Module> getLegacyModulesList() throws RemoteException {
|
||||
return service == null ? new ArrayList<>() : service.getLegacyModulesList();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -98,11 +98,6 @@ public class RemoteApplicationService implements ILSPApplicationService {
|
|||
return new File(Environment.getDataDirectory(), "data/" + packageName + "/shared_prefs/").getAbsolutePath();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Bundle requestRemotePreference(String packageName, int userId, IBinder callback) throws RemoteException {
|
||||
return service == null ? null : service.requestRemotePreference(packageName, userId, callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IBinder asBinder() {
|
||||
return service == null ? null : service.asBinder();
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ dependencies {
|
|||
implementation(projects.apkzlib)
|
||||
implementation(projects.share.java)
|
||||
|
||||
implementation("commons-io:commons-io:2.11.0")
|
||||
implementation("commons-io:commons-io:2.13.0")
|
||||
implementation("com.beust:jcommander:1.82")
|
||||
implementation("com.google.code.gson:gson:2.10")
|
||||
implementation("com.google.code.gson:gson:2.10.1")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,17 +1,14 @@
|
|||
enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
|
||||
|
||||
pluginManagement {
|
||||
val agpVersion: String by settings
|
||||
repositories {
|
||||
gradlePluginPortal()
|
||||
google()
|
||||
mavenCentral()
|
||||
}
|
||||
plugins {
|
||||
id("com.android.library") version agpVersion
|
||||
id("com.android.application") version agpVersion
|
||||
id("com.google.devtools.ksp") version "1.7.20-1.0.7"
|
||||
id("dev.rikka.tools.refine") version "3.1.1"
|
||||
id("com.google.devtools.ksp") version "1.8.21-1.0.11"
|
||||
id("dev.rikka.tools.refine") version "4.3.0"
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -20,6 +17,16 @@ dependencyResolutionManagement {
|
|||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
mavenLocal {
|
||||
content {
|
||||
includeGroup("io.github.libxposed")
|
||||
}
|
||||
}
|
||||
}
|
||||
versionCatalogs {
|
||||
create("libs") {
|
||||
from(files("core/gradle/libs.versions.toml"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
plugins {
|
||||
id("com.android.library")
|
||||
alias(libs.plugins.agp.lib)
|
||||
}
|
||||
|
||||
android {
|
||||
|
|
|
|||
Loading…
Reference in New Issue