From 14f1d046ab53b0a3344c595293998bd78471f9d5 Mon Sep 17 00:00:00 2001 From: Nullptr <52071314+Dr-TSNG@users.noreply.github.com> Date: Sun, 13 Feb 2022 12:05:13 +0800 Subject: [PATCH] Fix manager import patch build --- app/build.gradle.kts | 16 ++++++------ appstub/build.gradle.kts | 5 ++-- build.gradle.kts | 3 ++- manager/build.gradle.kts | 32 +++++++++++++++++++++--- patch-jar/.gitignore | 1 + patch-jar/build.gradle.kts | 51 ++++++++++++++++++++++++++++++++++++++ patch/build.gradle.kts | 50 +++---------------------------------- settings.gradle.kts | 3 +++ 8 files changed, 101 insertions(+), 60 deletions(-) create mode 100644 patch-jar/.gitignore create mode 100644 patch-jar/build.gradle.kts diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 297946e..758ff76 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -69,13 +69,13 @@ androidComponents.onVariants { variant -> dependsOn("assemble$variantCapped") from("$buildDir/intermediates/dex/$variantLowered/mergeDex$variantCapped/classes.dex") rename("classes.dex", "lsp.dex") - into("${rootProject.projectDir}/out/dexes") + into("${rootProject.projectDir}/out/assets/dex") } task("copySo$variantCapped") { dependsOn("assemble$variantCapped") from("$buildDir/intermediates/merged_native_libs/$variantLowered/out/lib") - into("${rootProject.projectDir}/out/so") + into("${rootProject.projectDir}/out/assets/so") } task("copy$variantCapped") { @@ -89,12 +89,12 @@ androidComponents.onVariants { variant -> } dependencies { - implementation(project(":daemon-service")) - implementation(project(":lspcore")) - implementation(project(":hiddenapi-bridge")) - compileOnly(project(":hiddenapi-stubs")) - implementation(project(":share")) - implementation(project(":imanager")) + compileOnly(projects.hiddenapiStubs) + implementation(projects.daemonService) + implementation(projects.lspcore) + implementation(projects.hiddenapiBridge) + implementation(projects.share) + implementation(projects.imanager) implementation("com.google.code.gson:gson:2.8.9") } diff --git a/appstub/build.gradle.kts b/appstub/build.gradle.kts index 88dd430..c99fff3 100644 --- a/appstub/build.gradle.kts +++ b/appstub/build.gradle.kts @@ -42,7 +42,7 @@ androidComponents.onVariants { variant -> dependsOn("assemble$variantCapped") from("$buildDir/intermediates/dex/$variantLowered/mergeDex$variantCapped/classes.dex") rename("classes.dex", "loader.dex") - into("${rootProject.projectDir}/out/dexes") + into("${rootProject.projectDir}/out/assets/dex") } task("copy$variantCapped") { @@ -55,6 +55,7 @@ androidComponents.onVariants { variant -> } dependencies { + compileOnly(projects.hiddenapiStubs) + implementation("de.upb.cs.swt:axml:2.1.2") - compileOnly(project(":hiddenapi-stubs")) } diff --git a/build.gradle.kts b/build.gradle.kts index 2d47533..1466bdd 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -39,6 +39,7 @@ tasks.register("clean") { listOf("Debug", "Release").forEach { variant -> tasks.register("build$variant") { description = "Build LSPatch with $variant" - dependsOn(tasks.getByPath(":patch:build$variant")) + dependsOn(projects.patchJar.dependencyProject.tasks["build$variant"]) + dependsOn(projects.manager.dependencyProject.tasks["build$variant"]) } } diff --git a/manager/build.gradle.kts b/manager/build.gradle.kts index 23b3187..b593e63 100644 --- a/manager/build.gradle.kts +++ b/manager/build.gradle.kts @@ -50,11 +50,38 @@ android { composeOptions { kotlinCompilerExtensionVersion = composeVersion } + + sourceSets["main"].assets.srcDirs( + projects.patch.dependencyProject.projectDir.resolve("src/main/assets"), + rootProject.projectDir.resolve("out/assets") + ) +} + +afterEvaluate { + android.applicationVariants.forEach { variant -> + val variantLowered = variant.name.toLowerCase() + val variantCapped = variant.name.capitalize() + + task("copy${variantCapped}Assets") { + dependsOn(":appstub:copy$variantCapped") + dependsOn(":app:copyRiru$variantCapped") + tasks["merge${variantCapped}Assets"].dependsOn(this) + + into("$buildDir/intermediates/assets/$variantLowered/merge${variantCapped}Assets") + from("${rootProject.projectDir}/out/assets") + } + + task("build$variantCapped") { + dependsOn(tasks["assemble$variantCapped"]) + from(variant.outputs.map { it.outputFile }) + into("${rootProject.projectDir}/out") + } + } } dependencies { - compileOnly(project(":patch")) - implementation(project(":imanager")) + implementation(projects.imanager) + implementation(projects.patch) implementation("androidx.core:core-ktx:1.7.0") implementation("androidx.activity:activity-compose:1.5.0-alpha01") @@ -70,5 +97,4 @@ dependencies { implementation("com.google.accompanist:accompanist-navigation-animation:0.24.2-alpha") implementation("com.google.accompanist:accompanist-swiperefresh:0.24.2-alpha") implementation("com.google.android.material:material:1.5.0") - //implementation("dev.rikka.rikkax.material:material:2.1.0") } diff --git a/patch-jar/.gitignore b/patch-jar/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/patch-jar/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/patch-jar/build.gradle.kts b/patch-jar/build.gradle.kts new file mode 100644 index 0000000..c065ba9 --- /dev/null +++ b/patch-jar/build.gradle.kts @@ -0,0 +1,51 @@ +val androidSourceCompatibility: JavaVersion by rootProject.extra +val androidTargetCompatibility: JavaVersion by rootProject.extra + +plugins { + id("java-library") +} + +java { + sourceCompatibility = androidSourceCompatibility + targetCompatibility = androidTargetCompatibility +} + +dependencies { + implementation(projects.patch) +} + +tasks.jar { + archiveBaseName.set("lspatch") + destinationDirectory.set(file("${rootProject.projectDir}/out")) + manifest { + attributes("Main-Class" to "org.lsposed.patch.LSPatch") + } + dependsOn(configurations.runtimeClasspath) + from(configurations.runtimeClasspath.get().map { if (it.isDirectory) it else zipTree(it) }) + + into("assets") { + from(projects.patch.dependencyProject.projectDir.resolve("src/main/assets")) + from("${rootProject.projectDir}/out/assets") + } + + exclude("META-INF/*.SF", "META-INF/*.DSA", "META-INF/*.RSA", "META-INF/*.MF", "META-INF/*.txt", "META-INF/versions/**") +} + +val jar = tasks.jar.get() + +tasks.register("buildDebug") { + jar.dependsOn(":appstub:copyDebug") + jar.dependsOn(":app:copyRiruDebug") + dependsOn(tasks.build) +} + +tasks.register("buildRelease") { + jar.dependsOn(":appstub:copyRelease") + jar.dependsOn(":app:copyRiruRelease") + dependsOn(tasks.build) +} + +tasks["build"].doLast { + println("Build to " + jar.archiveFile) + println("Try \'java -jar " + jar.archiveFileName + "\' find more help") +} diff --git a/patch/build.gradle.kts b/patch/build.gradle.kts index 1e28c75..5ce6baa 100644 --- a/patch/build.gradle.kts +++ b/patch/build.gradle.kts @@ -12,57 +12,15 @@ java { dependencies { implementation(fileTree("dir" to "libs", "include" to listOf("*.jar"))) - implementation(project(":axmlprinter")) - implementation(project(":share")) - implementation(project(":apkzlib")) + implementation(projects.apkzlib) + implementation(projects.axmlprinter) + implementation(projects.share) + implementation("commons-io:commons-io:2.11.0") implementation("com.beust:jcommander:1.82") implementation("com.google.code.gson:gson:2.8.9") } -tasks.jar { - archiveBaseName.set("lspatch") - destinationDirectory.set(file("${rootProject.projectDir}/out")) - manifest { - attributes("Main-Class" to "org.lsposed.patch.LSPatch") - } - dependsOn(configurations.runtimeClasspath) - from(configurations.runtimeClasspath.get().map { if (it.isDirectory) it else zipTree(it) }) - - from("src/main") { - include("assets/**") - } - - into("assets/dex") { - from("${rootProject.projectDir}/out/dexes") - } - - into("assets/so") { - from("${rootProject.projectDir}/out/so") - } - - exclude("META-INF/*.SF", "META-INF/*.DSA", "META-INF/*.RSA", "META-INF/*.MF", "META-INF/*.txt", "META-INF/versions/**") -} - -val jar = tasks.jar.get() - -tasks.register("buildDebug") { - jar.dependsOn(":appstub:copyDebug") - jar.dependsOn(":app:copyRiruDebug") - dependsOn(tasks.build) -} - -tasks.register("buildRelease") { - jar.dependsOn(":appstub:copyRelease") - jar.dependsOn(":app:copyRiruRelease") - dependsOn(tasks.build) -} - -tasks["build"].doLast { - println("Build to " + jar.archiveFile) - println("Try \'java -jar " + jar.archiveFileName + "\' find more help") -} - sourceSets["main"].resources { srcDirs("src/main/java") include("**/*.*") diff --git a/settings.gradle.kts b/settings.gradle.kts index b63343a..e2cfb5a 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,5 +1,7 @@ rootProject.name = "LSPatch" +enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") + include(":daemon-service") include(":hiddenapi-bridge") include(":hiddenapi-stubs") @@ -21,4 +23,5 @@ include(":axmlprinter") include(":imanager") include(":manager") include(":patch") +include(":patch-jar") include(":share")