From fc2187ddc86d91f173c1c6fe6944b0a48e9b2218 Mon Sep 17 00:00:00 2001 From: fankesyooni Date: Thu, 21 Sep 2023 03:13:14 +0800 Subject: [PATCH] chore: migrate build script from groovy to kts - using SweetDependency, SweetProperty - using new maven publish function - update gradle and dependencies --- build.gradle | 67 ---------- build.gradle.kts | 7 + demo-app/build.gradle | 57 -------- demo-module/build.gradle | 66 --------- gradle.properties | 56 ++++---- .../sweet-dependency-config.yaml | 82 ++++++++++++ gradle/wrapper/gradle-wrapper.properties | 5 +- samples/demo-app/build.gradle.kts | 52 ++++++++ samples/demo-module/build.gradle.kts | 58 ++++++++ settings.gradle | 21 --- settings.gradle.kts | 30 +++++ yukihookapi-core/build.gradle.kts | 85 ++++++++++++ yukihookapi-ksp-xposed/build.gradle | 81 ------------ yukihookapi-ksp-xposed/build.gradle.kts | 60 +++++++++ yukihookapi-stub/build.gradle | 42 ------ yukihookapi-stub/build.gradle.kts | 37 ++++++ yukihookapi/build.gradle | 125 ------------------ 17 files changed, 446 insertions(+), 485 deletions(-) delete mode 100644 build.gradle create mode 100644 build.gradle.kts delete mode 100644 demo-app/build.gradle delete mode 100644 demo-module/build.gradle create mode 100644 gradle/sweet-dependency/sweet-dependency-config.yaml create mode 100644 samples/demo-app/build.gradle.kts create mode 100644 samples/demo-module/build.gradle.kts delete mode 100644 settings.gradle create mode 100644 settings.gradle.kts create mode 100644 yukihookapi-core/build.gradle.kts delete mode 100644 yukihookapi-ksp-xposed/build.gradle create mode 100644 yukihookapi-ksp-xposed/build.gradle.kts delete mode 100644 yukihookapi-stub/build.gradle create mode 100644 yukihookapi-stub/build.gradle.kts delete mode 100644 yukihookapi/build.gradle diff --git a/build.gradle b/build.gradle deleted file mode 100644 index 816d0e5f..00000000 --- a/build.gradle +++ /dev/null @@ -1,67 +0,0 @@ -import groovy.json.JsonSlurper - -plugins { - id 'com.android.application' version '7.4.1' apply false - id 'com.android.library' version '7.4.1' apply false - id 'org.jetbrains.kotlin.android' version '1.8.20' apply false - id 'com.google.devtools.ksp' version '1.8.20-1.0.10' apply false -} - -ext { - android = [ - compileSdk: 33, - minSdk : 21, - targetSdk : 33 - ] - app = [ - versionName: 'universal', - versionCode: 1 - ] - maven = [ - developer : [ - id : '0', - user : 'fankesyooni', - email: 'qzmmcn@163.com' - ], - repository : [ - groupId : 'com.highcapable.yukihookapi', - apiVersion : [ - name: '1.1.11', - code: 44 - ], - name : 'YukiHookAPI', - description: 'An efficient Hook API and Xposed Module solution built in Kotlin.', - website : 'https://github.com/fankes/YukiHookAPI', - licence : [ - name: 'MIT License', - url : 'https://github.com/fankes/YukiHookAPI/blob/master/LICENSE' - ] - ], - configurations: [ - githubConnection : 'scm:git:git://github.com/path/to/repo.git', - githubDeveloperConnection: 'scm:git:ssh://github.com/path/to/repo.git', - githubUrl : 'https://github.com/path/to/repo', - ossName : 'OSSRH', - ossUrl : 'https://s01.oss.sonatype.org/service/local/staging/deploy/maven2' - ] - ] -} - -/** - * 获取 Maven 授权信息 - 用于 Maven 的提交 - * @param childProjectDir 子项目的目录 - * @return [Object] - */ -@SuppressWarnings('unused') -static Object getMavenCredentials(File childProjectDir) { - def slurper = new JsonSlurper() - try { - return slurper.parse(new File("${childProjectDir.getParent()}/.maven/credentials.json")) - } catch (Throwable ignored) { - return slurper.parseText('{"username":"-NEEDED-","password":"-NEEDED-"}') - } -} - -task clean(type: Delete) { - delete rootProject.buildDir -} \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 00000000..08b6c78e --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,7 @@ +plugins { + autowire(libs.plugins.android.application) apply false + autowire(libs.plugins.android.library) apply false + autowire(libs.plugins.kotlin.jvm) apply false + autowire(libs.plugins.kotlin.android) apply false + autowire(libs.plugins.kotlin.ksp) apply false +} \ No newline at end of file diff --git a/demo-app/build.gradle b/demo-app/build.gradle deleted file mode 100644 index 709d83ce..00000000 --- a/demo-app/build.gradle +++ /dev/null @@ -1,57 +0,0 @@ -plugins { - id 'com.android.application' - id 'org.jetbrains.kotlin.android' -} - -android { - namespace 'com.highcapable.yukihookapi.demo_app' - compileSdk rootProject.ext.android.compileSdk - - defaultConfig { - applicationId 'com.highcapable.yukihookapi.demo_app' - - minSdk rootProject.ext.android.minSdk - targetSdk rootProject.ext.android.targetSdk - - versionCode rootProject.ext.app.versionCode - versionName rootProject.ext.app.versionName - - testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } - compileOptions { - sourceCompatibility JavaVersion.VERSION_11 - targetCompatibility JavaVersion.VERSION_11 - } - kotlinOptions { - jvmTarget = '11' - freeCompilerArgs = [ - '-Xno-param-assertions', - '-Xno-call-assertions', - '-Xno-receiver-assertions' - ] - } - lintOptions { - checkReleaseBuilds false - } - buildFeatures { - viewBinding true - } -} - -dependencies { - implementation 'androidx.core:core-ktx:1.10.0' - implementation 'androidx.appcompat:appcompat:1.6.1' - implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1' - implementation 'com.google.android.material:material:1.8.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.4' - testImplementation 'junit:junit:4.13.2' - androidTestImplementation 'androidx.test.ext:junit:1.1.5' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' -} \ No newline at end of file diff --git a/demo-module/build.gradle b/demo-module/build.gradle deleted file mode 100644 index 1be4a93e..00000000 --- a/demo-module/build.gradle +++ /dev/null @@ -1,66 +0,0 @@ -plugins { - id 'com.android.application' - id 'org.jetbrains.kotlin.android' - id 'com.google.devtools.ksp' -} - -android { - namespace 'com.highcapable.yukihookapi.demo_module' - compileSdk rootProject.ext.android.compileSdk - - defaultConfig { - applicationId 'com.highcapable.yukihookapi.demo_module' - - minSdk rootProject.ext.android.minSdk - targetSdk rootProject.ext.android.targetSdk - - versionCode rootProject.ext.app.versionCode - versionName rootProject.ext.app.versionName - - testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } - compileOptions { - sourceCompatibility JavaVersion.VERSION_11 - targetCompatibility JavaVersion.VERSION_11 - } - kotlinOptions { - jvmTarget = '11' - freeCompilerArgs = [ - '-Xno-param-assertions', - '-Xno-call-assertions', - '-Xno-receiver-assertions' - ] - } - lintOptions { - checkReleaseBuilds false - } - buildFeatures { - viewBinding true - } - aaptOptions.additionalParameters '--allow-reserved-package-id', '--package-id', '0x64' -} - -dependencies { - // Used 82 API Version - compileOnly 'de.robv.android.xposed:api:82' - // Implementation API - implementation project(':yukihookapi') - // Implementation Processor - ksp project(':yukihookapi-ksp-xposed') - implementation 'androidx.preference:preference-ktx:1.2.0' - implementation 'androidx.core:core-ktx:1.10.0' - implementation 'androidx.appcompat:appcompat:1.6.1' - implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1' - implementation 'com.google.android.material:material:1.8.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.4' - testImplementation 'junit:junit:4.13.2' - androidTestImplementation 'androidx.test.ext:junit:1.1.5' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' -} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 453b5ca5..1f623a5a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,25 +1,35 @@ -# Project-wide Gradle settings. -# IDE (e.g. Android Studio) users: -# Gradle settings configured through the IDE *will override* -# any settings specified in this file. -# For more details on how to configure your build environment visit -# http://www.gradle.org/docs/current/userguide/build_environment.html -# Specifies the JVM arguments used for the daemon process. -# The setting is particularly useful for tweaking memory settings. -org.gradle.jvmargs=-XX:+UseParallelGC -# When configured, Gradle will run in incubating parallel mode. -# This option should only be used with decoupled projects. More details, visit -# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects -# org.gradle.parallel=true -# AndroidX package structure to make it clearer which packages are bundled with the -# Android operating system, and which are packaged with your app"s APK -# https://developer.android.com/topic/libraries/support-library/androidx-rn +# Compiler Configuration +org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 android.useAndroidX=true -# Kotlin code style for this project: "official" or "obsolete": -kotlin.code.style=official -# Enables namespacing of each library's R class so that its R class includes only the -# resources declared in the library itself and none from the library's dependencies, -# thereby reducing the size of the R class for that library android.nonTransitiveRClass=true -# Incremental -kotlin.incremental.useClasspathSnapshot=true \ No newline at end of file +kotlin.code.style=official +kotlin.incremental.useClasspathSnapshot=true +# Project Configuration +project.name=YukiHookAPI +project.description=An efficient Hook API and Xposed Module solution built in Kotlin. +project.url=https://github.com/fankes/YukiHookAPI +project.groupName=com.highcapable.yukihookapi +project.yukihookapi-core.moduleName=api +project.yukihookapi-core.version="1.0.11" +project.yukihookapi-core.kotlin-optIn.YukiPrivateApi=${project.groupName}.annotation.YukiPrivateApi +project.yukihookapi-core.kotlin-optIn.YukiGenerateApi=${project.groupName}.annotation.YukiGenerateApi +project.yukihookapi-ksp-xposed.moduleName=ksp-xposed +project.yukihookapi-ksp-xposed.version=${project.yukihookapi-core.version} +project.licence.name=MIT +project.licence.url=https://github.com/fankes/YukiHookAPI/blob/master/LICENSE +project.developer.id="0" +project.developer.name=fankes +project.developer.email=qzmmcn@163.com +project.android.compileSdk=34 +project.android.minSdk=21 +project.android.targetSdk=34 +project.samples-demo-app.packageName=${project.groupName}.demo_app +project.samples-demo-app.versionName=universal +project.samples-demo-app.versionCode=1 +project.samples-demo-module.packageName=${project.groupName}.demo_module +project.samples-demo-module.versionName=universal +project.samples-demo-module.versionCode=1 +# Maven Publish Configuration +maven.publish.scm.connection=scm:git:git://github.com/fankes/YukiHookAPI.git +maven.publish.scm.developerConnection=scm:git:ssh://github.com/fankes/YukiHookAPI.git +maven.publish.scm.url=https://github.com/fankes/YukiHookAPI \ No newline at end of file diff --git a/gradle/sweet-dependency/sweet-dependency-config.yaml b/gradle/sweet-dependency/sweet-dependency-config.yaml new file mode 100644 index 00000000..2d5caf98 --- /dev/null +++ b/gradle/sweet-dependency/sweet-dependency-config.yaml @@ -0,0 +1,82 @@ +preferences: + autowire-on-sync-mode: UPDATE_OPTIONAL_DEPENDENCIES + repositories-mode: FAIL_ON_PROJECT_REPOS + +repositories: + gradle-plugin-portal: + scope: PLUGINS + google: + maven-central: + rovo89-xposed-api: + scope: LIBRARIES + url: https://api.xposed.info/ + content: + include: + group: + de.robv.android.xposed + +plugins: + org.jetbrains.kotlin.jvm: + alias: kotlin-jvm + version: 1.9.10 + org.jetbrains.kotlin.android: + alias: kotlin-android + version-ref: kotlin-jvm + com.google.devtools.ksp: + alias: kotlin-ksp + version: 1.9.10-1.0.13 + com.android.application: + alias: android-application + version: 8.1.1 + com.android.library: + alias: android-library + version-ref: android-application + com.vanniktech.maven.publish: + alias: maven-publish + version: 0.25.3 + +libraries: + de.robv.android.xposed: + api: + version: 82 + repositories: + rovo89-xposed-api + com.google.devtools.ksp: + symbol-processing-api: + version: 1.9.10-1.0.13 + com.google.auto.service: + auto-service-annotations: + version: 1.0.1 + dev.zacsweers.autoservice: + auto-service-ksp: + version: 1.0.0 + androidx.annotation: + annotation: + version: 1.6.0 + androidx.preference: + preference-ktx: + version: 1.2.0 + androidx.core: + core-ktx: + version: 1.10.0 + androidx.appcompat: + appcompat: + version: 1.6.1 + androidx.lifecycle: + lifecycle-viewmodel-ktx: + version: 2.6.1 + com.google.android.material: + material: + version: 1.8.0 + androidx.constraintlayout: + constraintlayout: + version: 2.1.4 + androidx.test.ext: + junit: + version: 1.1.5 + androidx.test.espresso: + espresso-core: + version: 3.5.1 + junit: + junit: + version: 4.13.2 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c860dc05..692fc5cf 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Sat Jan 29 22:55:22 CST 2022 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME +zipStoreBase=GRADLE_USER_HOME \ No newline at end of file diff --git a/samples/demo-app/build.gradle.kts b/samples/demo-app/build.gradle.kts new file mode 100644 index 00000000..ec946e5b --- /dev/null +++ b/samples/demo-app/build.gradle.kts @@ -0,0 +1,52 @@ +plugins { + autowire(libs.plugins.android.application) + autowire(libs.plugins.kotlin.android) +} + +android { + namespace = property.project.samples.demo.app.packageName + compileSdk = property.project.android.compileSdk + + defaultConfig { + applicationId = property.project.samples.demo.app.packageName + minSdk = property.project.android.minSdk + targetSdk = property.project.android.targetSdk + versionName = property.project.samples.demo.app.versionName + versionCode = property.project.samples.demo.app.versionCode + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + buildTypes { + release { + isMinifyEnabled = false + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + kotlinOptions { + jvmTarget = "17" + freeCompilerArgs = listOf( + "-Xno-param-assertions", + "-Xno-call-assertions", + "-Xno-receiver-assertions" + ) + } + buildFeatures { + buildConfig = true + viewBinding = true + } + lint { checkReleaseBuilds = false } +} + +dependencies { + implementation(androidx.core.core.ktx) + implementation(androidx.appcompat.appcompat) + implementation(androidx.lifecycle.lifecycle.viewmodel.ktx) + implementation(com.google.android.material.material) + implementation(androidx.constraintlayout.constraintlayout) + testImplementation(junit.junit) + androidTestImplementation(androidx.test.ext.junit) + androidTestImplementation(androidx.test.espresso.espresso.core) +} \ No newline at end of file diff --git a/samples/demo-module/build.gradle.kts b/samples/demo-module/build.gradle.kts new file mode 100644 index 00000000..e69bfd80 --- /dev/null +++ b/samples/demo-module/build.gradle.kts @@ -0,0 +1,58 @@ +plugins { + autowire(libs.plugins.android.application) + autowire(libs.plugins.kotlin.android) + autowire(libs.plugins.kotlin.ksp) +} + +android { + namespace = property.project.samples.demo.module.packageName + compileSdk = property.project.android.compileSdk + + defaultConfig { + applicationId = property.project.samples.demo.module.packageName + minSdk = property.project.android.minSdk + targetSdk = property.project.android.targetSdk + versionName = property.project.samples.demo.module.versionName + versionCode = property.project.samples.demo.module.versionCode + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + buildTypes { + release { + isMinifyEnabled = false + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + kotlinOptions { + jvmTarget = "17" + freeCompilerArgs = listOf( + "-Xno-param-assertions", + "-Xno-call-assertions", + "-Xno-receiver-assertions" + ) + } + buildFeatures { + buildConfig = true + viewBinding = true + } + lint { checkReleaseBuilds = false } + androidResources.additionalParameters += listOf("--allow-reserved-package-id", "--package-id", "0x64") +} + +dependencies { + compileOnly(de.robv.android.xposed.api) + implementation(projects.yukihookapiCore) + ksp(projects.yukihookapiKspXposed) + implementation(androidx.preference.preference.ktx) + implementation(androidx.core.core.ktx) + implementation(androidx.appcompat.appcompat) + implementation(androidx.lifecycle.lifecycle.viewmodel.ktx) + implementation(com.google.android.material.material) + implementation(androidx.constraintlayout.constraintlayout) + testImplementation(junit.junit) + androidTestImplementation(androidx.test.ext.junit) + androidTestImplementation(androidx.test.espresso.espresso.core) +} \ No newline at end of file diff --git a/settings.gradle b/settings.gradle deleted file mode 100644 index dbf796cd..00000000 --- a/settings.gradle +++ /dev/null @@ -1,21 +0,0 @@ -pluginManagement { - repositories { - gradlePluginPortal() - google() - mavenCentral() - } -} -dependencyResolutionManagement { - repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) - repositories { - google() - maven { url "https://api.xposed.info/" } - mavenCentral() - } -} -rootProject.name = "YukiHookAPI" -include ':demo-app' -include ':demo-module' -include ':yukihookapi' -include ':yukihookapi-ksp-xposed' -include ':yukihookapi-stub' diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 00000000..5deadf18 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,30 @@ +enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") +pluginManagement { + repositories { + gradlePluginPortal() + google() + mavenCentral() + } +} +plugins { + id("com.highcapable.sweetdependency") version "1.0.1" + id("com.highcapable.sweetproperty") version "1.0.2" +} +sweetProperty { + global { + sourcesCode { + includeKeys("^project\\..*\$".toRegex()) + isEnableRestrictedAccess = true + } + } + rootProject { all { isEnable = false } } + project("samples") { all { isEnable = false } } + project("samples:demo-app") { sourcesCode { isEnable = false } } + project("samples:demo-module") { sourcesCode { isEnable = false } } + project("yukihookapi-core") { sourcesCode { className = rootProject.name } } + project("yukihookapi-ksp-xposed") { sourcesCode { className = rootProject.name } } + project("yukihookapi-stub") { sourcesCode { isEnable = false } } +} +rootProject.name = "YukiHookAPI" +include(":samples:demo-app", ":samples:demo-module") +include(":yukihookapi-core", ":yukihookapi-ksp-xposed", ":yukihookapi-stub") \ No newline at end of file diff --git a/yukihookapi-core/build.gradle.kts b/yukihookapi-core/build.gradle.kts new file mode 100644 index 00000000..d1825604 --- /dev/null +++ b/yukihookapi-core/build.gradle.kts @@ -0,0 +1,85 @@ +plugins { + autowire(libs.plugins.android.library) + autowire(libs.plugins.kotlin.android) + autowire(libs.plugins.maven.publish) +} + +android { + namespace = property.project.groupName + compileSdk = property.project.android.compileSdk + + defaultConfig { + minSdk = property.project.android.minSdk + consumerProguardFiles("consumer-rules.pro") + } + buildTypes { + release { + isMinifyEnabled = false + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + kotlinOptions { + jvmTarget = "17" + freeCompilerArgs = listOf( + "-opt-in=${property.project.yukihookapi.core.kotlin.optIn.yukiPrivateApi}", + "-opt-in=${property.project.yukihookapi.core.kotlin.optIn.yukiGenerateApi}", + "-Xno-param-assertions", + "-Xno-call-assertions", + "-Xno-receiver-assertions" + ) + } + lint { checkReleaseBuilds = false } +} + +kotlin { + sourceSets { + all { + languageSettings { + optIn(property.project.yukihookapi.core.kotlin.optIn.yukiPrivateApi) + optIn(property.project.yukihookapi.core.kotlin.optIn.yukiGenerateApi) + } + } + } +} + +dependencies { + compileOnly(de.robv.android.xposed.api) + compileOnly(projects.yukihookapiStub) + implementation(androidx.core.core.ktx) + implementation(androidx.appcompat.appcompat) + implementation(androidx.preference.preference.ktx) +} + +mavenPublishing { + coordinates(property.project.groupName, property.project.yukihookapi.core.moduleName, property.project.yukihookapi.core.version) + pom { + name = property.project.name + description = property.project.description + url = property.project.url + licenses { + license { + name = property.project.licence.name + url = property.project.licence.url + distribution = property.project.licence.url + } + } + developers { + developer { + id = property.project.developer.id + name = property.project.developer.name + email = property.project.developer.email + } + } + scm { + url = property.maven.publish.scm.url + connection = property.maven.publish.scm.connection + developerConnection = property.maven.publish.scm.developerConnection + } + } + publishToMavenCentral(com.vanniktech.maven.publish.SonatypeHost.S01) + signAllPublications() +} \ No newline at end of file diff --git a/yukihookapi-ksp-xposed/build.gradle b/yukihookapi-ksp-xposed/build.gradle deleted file mode 100644 index 24a40b04..00000000 --- a/yukihookapi-ksp-xposed/build.gradle +++ /dev/null @@ -1,81 +0,0 @@ -plugins { - id 'java-library' - id 'org.jetbrains.kotlin.jvm' - id 'com.google.devtools.ksp' - id 'maven-publish' - id 'signing' -} - -java { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 - withJavadocJar() - withSourcesJar() -} - -javadoc { - options.addStringOption("charset", "UTF-8") - if (JavaVersion.current().isJava9Compatible()) options.addBooleanOption('html5', true) -} - -kotlin { sourceSets.main { kotlin.srcDir("src/api/kotlin") } } - -tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { - kotlinOptions { - jvmTarget = 11 - } -} - -dependencies { - implementation 'com.google.auto.service:auto-service-annotations:1.0.1' - compileOnly 'com.google.devtools.ksp:symbol-processing-api:1.8.20-1.0.10' - ksp 'dev.zacsweers.autoservice:auto-service-ksp:1.0.0' -} - -group = rootProject.ext.maven.repository.groupId -version = rootProject.ext.maven.repository.apiVersion.name - -publishing { - publications { - mavenJava(MavenPublication) { - artifactId = 'ksp-xposed' - from components.java - pom { - name = rootProject.ext.maven.repository.name - description = rootProject.ext.maven.repository.description - url = rootProject.ext.maven.repository.website - licenses { - license { - name = rootProject.ext.maven.repository.licence.name - url = rootProject.ext.maven.repository.licence.url - } - } - developers { - developer { - id = rootProject.ext.maven.developer.id - name = rootProject.ext.maven.developer.user - email = rootProject.ext.maven.developer.email - } - } - scm { - connection = rootProject.ext.maven.configurations.githubConnection - developerConnection = rootProject.ext.maven.configurations.githubDeveloperConnection - url = rootProject.ext.maven.configurations.githubUrl - } - } - } - } - repositories { - maven { - name = rootProject.ext.maven.configurations.ossName - url = rootProject.ext.maven.configurations.ossUrl - credentials { - def configs = getMavenCredentials(projectDir) - username = configs.username - password = configs.password - } - } - } -} - -signing { sign(publishing.publications.mavenJava) } \ No newline at end of file diff --git a/yukihookapi-ksp-xposed/build.gradle.kts b/yukihookapi-ksp-xposed/build.gradle.kts new file mode 100644 index 00000000..88612042 --- /dev/null +++ b/yukihookapi-ksp-xposed/build.gradle.kts @@ -0,0 +1,60 @@ +plugins { + autowire(libs.plugins.kotlin.jvm) + autowire(libs.plugins.kotlin.ksp) + autowire(libs.plugins.maven.publish) +} + +group = property.project.groupName + +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} + +kotlin { + sourceSets.getByName("main") { + kotlin.srcDir("src/api/kotlin") + } +} + +tasks.withType().configureEach { + kotlinOptions { + jvmTarget = "17" + } +} + +dependencies { + implementation(com.google.auto.service.auto.service.annotations) + compileOnly(com.google.devtools.ksp.symbol.processing.api) + ksp(dev.zacsweers.autoservice.auto.service.ksp) +} + +mavenPublishing { + coordinates(property.project.groupName, property.project.yukihookapi.ksp.xposed.moduleName, property.project.yukihookapi.ksp.xposed.version) + pom { + name = property.project.name + description = property.project.description + url = property.project.url + licenses { + license { + name = property.project.licence.name + url = property.project.licence.url + distribution = property.project.licence.url + } + } + developers { + developer { + id = property.project.developer.id + name = property.project.developer.name + email = property.project.developer.email + } + } + scm { + url = property.maven.publish.scm.url + connection = property.maven.publish.scm.connection + developerConnection = property.maven.publish.scm.developerConnection + } + } + publishToMavenCentral(com.vanniktech.maven.publish.SonatypeHost.S01) + signAllPublications() +} \ No newline at end of file diff --git a/yukihookapi-stub/build.gradle b/yukihookapi-stub/build.gradle deleted file mode 100644 index ae931930..00000000 --- a/yukihookapi-stub/build.gradle +++ /dev/null @@ -1,42 +0,0 @@ -plugins { - id 'com.android.library' - id 'org.jetbrains.kotlin.android' -} - -android { - namespace 'com.highcapable.yukihookapi.stub' - compileSdk rootProject.ext.android.compileSdk - - defaultConfig { - minSdk rootProject.ext.android.minSdk - targetSdk rootProject.ext.android.targetSdk - - consumerProguardFiles 'consumer-rules.pro' - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } - compileOptions { - sourceCompatibility JavaVersion.VERSION_11 - targetCompatibility JavaVersion.VERSION_11 - } - kotlinOptions { - jvmTarget = '11' - freeCompilerArgs = [ - '-Xno-param-assertions', - '-Xno-call-assertions', - '-Xno-receiver-assertions' - ] - } - lintOptions { - checkReleaseBuilds false - } -} - -dependencies { - implementation 'androidx.annotation:annotation:1.6.0' -} \ No newline at end of file diff --git a/yukihookapi-stub/build.gradle.kts b/yukihookapi-stub/build.gradle.kts new file mode 100644 index 00000000..47698edb --- /dev/null +++ b/yukihookapi-stub/build.gradle.kts @@ -0,0 +1,37 @@ +plugins { + autowire(libs.plugins.android.library) + autowire(libs.plugins.kotlin.android) +} + +android { + namespace = property.project.groupName + compileSdk = property.project.android.compileSdk + + defaultConfig { + minSdk = property.project.android.minSdk + consumerProguardFiles("consumer-rules.pro") + } + buildTypes { + release { + isMinifyEnabled = false + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + kotlinOptions { + jvmTarget = "17" + freeCompilerArgs = listOf( + "-Xno-param-assertions", + "-Xno-call-assertions", + "-Xno-receiver-assertions" + ) + } + lint { checkReleaseBuilds = false } +} + +dependencies { + implementation(androidx.annotation.annotation) +} \ No newline at end of file diff --git a/yukihookapi/build.gradle b/yukihookapi/build.gradle deleted file mode 100644 index 032af781..00000000 --- a/yukihookapi/build.gradle +++ /dev/null @@ -1,125 +0,0 @@ -plugins { - id 'com.android.library' - id 'org.jetbrains.kotlin.android' - id 'maven-publish' - id 'signing' -} - -android { - namespace 'com.highcapable.yukihookapi' - compileSdk rootProject.ext.android.compileSdk - - defaultConfig { - minSdk rootProject.ext.android.minSdk - targetSdk rootProject.ext.android.targetSdk - - buildConfigField('String', 'API_VERSION_NAME', "\"${rootProject.ext.maven.repository.apiVersion.name}\"") - buildConfigField('int', 'API_VERSION_CODE', "${rootProject.ext.maven.repository.apiVersion.code}") - - consumerProguardFiles 'consumer-rules.pro' - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } - compileOptions { - sourceCompatibility JavaVersion.VERSION_11 - targetCompatibility JavaVersion.VERSION_11 - } - kotlinOptions { - jvmTarget = '11' - freeCompilerArgs = [ - '-opt-in=com.highcapable.yukihookapi.annotation.YukiPrivateApi', - '-opt-in=com.highcapable.yukihookapi.annotation.YukiGenerateApi', - '-Xno-param-assertions', - '-Xno-call-assertions', - '-Xno-receiver-assertions' - ] - } - lintOptions { - checkReleaseBuilds false - } - publishing { - singleVariant('release') { - withSourcesJar() - withJavadocJar() - } - } -} - -kotlin { - sourceSets { - all { - languageSettings { - optIn('com.highcapable.yukihookapi.annotation.YukiPrivateApi') - optIn('com.highcapable.yukihookapi.annotation.YukiGenerateApi') - } - } - } -} - -dependencies { - // Used 82 API Version - compileOnly 'de.robv.android.xposed:api:82' - compileOnly project(':yukihookapi-stub') - implementation 'androidx.core:core-ktx:1.10.0' - implementation 'androidx.appcompat:appcompat:1.6.1' - implementation 'androidx.preference:preference-ktx:1.2.0' -} - -tasks.register('androidSourcesJar', Jar) { - archiveClassifier.set('sources') - from android.sourceSets.main.java.srcDirs -} - -group = rootProject.ext.maven.repository.groupId -version = rootProject.ext.maven.repository.apiVersion.name - -publishing { - publications { - release(MavenPublication) { - artifactId = 'api' - artifact "$buildDir/outputs/aar/${project.name}-release.aar" - artifact androidSourcesJar - pom { - name = rootProject.ext.maven.repository.name - description = rootProject.ext.maven.repository.description - url = rootProject.ext.maven.repository.website - licenses { - license { - name = rootProject.ext.maven.repository.licence.name - url = rootProject.ext.maven.repository.licence.url - } - } - developers { - developer { - id = rootProject.ext.maven.developer.id - name = rootProject.ext.maven.developer.user - email = rootProject.ext.maven.developer.email - } - } - scm { - connection = rootProject.ext.maven.configurations.githubConnection - developerConnection = rootProject.ext.maven.configurations.githubDeveloperConnection - url = rootProject.ext.maven.configurations.githubUrl - } - } - } - } - repositories { - maven { - name = rootProject.ext.maven.configurations.ossName - url = rootProject.ext.maven.configurations.ossUrl - credentials { - def configs = getMavenCredentials(projectDir) - username = configs.username - password = configs.password - } - } - } -} - -signing { sign publishing.publications } \ No newline at end of file