diff --git a/lsplant/build.gradle.kts b/lsplant/build.gradle.kts index c5096f8..8cad70e 100644 --- a/lsplant/build.gradle.kts +++ b/lsplant/build.gradle.kts @@ -20,6 +20,7 @@ android { buildConfig = false prefabPublishing = true androidResources = false + prefab = true } packagingOptions { @@ -40,6 +41,14 @@ android { } buildTypes { + create("standalone") { + initWith(getByName("release")) + externalNativeBuild { + cmake { + arguments += "-DANDROID_STL=none" + } + } + } all { externalNativeBuild { cmake { @@ -70,13 +79,15 @@ android { "-DNDEBUG" ).joinToString(" ") arguments( - "-DANDROID_STL=c++_shared", "-DCMAKE_CXX_FLAGS_RELEASE=$configFlags", "-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$configFlags", "-DCMAKE_C_FLAGS_RELEASE=$configFlags", "-DCMAKE_C_FLAGS_RELWITHDEBINFO=$configFlags", "-DDEBUG_SYMBOLS_PATH=${project.buildDir.absolutePath}/symbols/$name", ) + if (name != "standalone") { + arguments += "-DANDROID_STL=c++_shared" + } } } } @@ -100,25 +111,30 @@ android { withSourcesJar() withJavadocJar() } + singleVariant("standalone") { + withSourcesJar() + withJavadocJar() + } } } -val symbolsTask = tasks.register("generateReleaseSymbolsJar") { +val symbolsReleaseTask = tasks.register("generateReleaseSymbolsJar") { from("${project.buildDir.absolutePath}/symbols/release") exclude("**/dex_builder") archiveClassifier.set("symbols") } +val symbolsStandaloneTask = tasks.register("generateStandaloneSymbolsJar") { + from("${project.buildDir.absolutePath}/symbols/standalone") + exclude("**/dex_builder") + archiveClassifier.set("symbols") +} + publishing { publications { - register("lsplant") { + fun MavenPublication.setup() { group = "org.lsposed.lsplant" - artifactId = "lsplant" version = "4.2" - afterEvaluate { - from(components.getByName("release")) - artifact(symbolsTask) - } pom { name.set("LSPlant") description.set("A hook framework for Android Runtime (ART)") @@ -141,6 +157,22 @@ publishing { } } } + register("lsplant") { + artifactId = "lsplant" + afterEvaluate { + from(components.getByName("release")) + artifact(symbolsReleaseTask) + } + setup() + } + register("lsplantStandalone") { + artifactId = "lsplant-standalone" + afterEvaluate { + from(components.getByName("standalone")) + artifact(symbolsStandaloneTask) + } + setup() + } } repositories { maven { @@ -157,6 +189,9 @@ publishing { } } } + dependencies { + "standaloneImplementation"("dev.rikka.ndk.thirdparty:cxx:1.2.0") + } } signing { diff --git a/lsplant/src/main/jni/CMakeLists.txt b/lsplant/src/main/jni/CMakeLists.txt index e6cbf5f..41b0d97 100644 --- a/lsplant/src/main/jni/CMakeLists.txt +++ b/lsplant/src/main/jni/CMakeLists.txt @@ -8,6 +8,11 @@ if (CCACHE) set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE}) endif () +if ("${ANDROID_STL}" STREQUAL "none") + find_package(cxx REQUIRED CONFIG) + link_libraries(cxx::cxx) +endif() + add_definitions(-std=c++20) set(SOURCES lsplant.cc) diff --git a/settings.gradle.kts b/settings.gradle.kts index 9204d51..b114dfc 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -5,8 +5,8 @@ pluginManagement { mavenCentral() } plugins { - id("com.android.application") version "7.2.2" - id("com.android.library") version "7.2.2" + id("com.android.application") version "7.3.0" + id("com.android.library") version "7.3.0" } } dependencyResolutionManagement {