From b4f0b652641c8b619924b70bd1b327edb5e3a413 Mon Sep 17 00:00:00 2001 From: fankesyooni Date: Mon, 18 Sep 2023 00:10:08 +0800 Subject: [PATCH] chore: migrate build script from groovy to kts - using SweetDependency, SweetProperty - merge singing key file configs to properties - update gradle and dependencies --- .secret/key_store_secret.json | 6 -- app/build.gradle | 88 ------------------- app/build.gradle.kts | 84 ++++++++++++++++++ build.gradle | 26 ------ build.gradle.kts | 5 ++ gradle.properties | 39 ++++---- .../sweet-dependency-config.yaml | 78 ++++++++++++++++ gradle/wrapper/gradle-wrapper.properties | 5 +- settings.gradle | 19 ---- settings.gradle.kts | 23 +++++ 10 files changed, 208 insertions(+), 165 deletions(-) delete mode 100644 .secret/key_store_secret.json delete mode 100644 app/build.gradle create mode 100644 app/build.gradle.kts delete mode 100644 build.gradle create mode 100644 build.gradle.kts create mode 100644 gradle/sweet-dependency/sweet-dependency-config.yaml delete mode 100644 settings.gradle create mode 100644 settings.gradle.kts diff --git a/.secret/key_store_secret.json b/.secret/key_store_secret.json deleted file mode 100644 index 8fd7367..0000000 --- a/.secret/key_store_secret.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "keyAlias": "public", - "keyPassword": "123456", - "storeFileName": "universal.p12", - "storePassword": "123456" -} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle deleted file mode 100644 index 19e1369..0000000 --- a/app/build.gradle +++ /dev/null @@ -1,88 +0,0 @@ -import groovy.json.JsonSlurper - -plugins { - id 'com.android.application' - id 'org.jetbrains.kotlin.android' - id 'com.google.devtools.ksp' -} - -android { - signingConfigs { - universal { - def dirPath = rootProject.ext.app.signingConfigs.secretConfigsDirPath - def fileName = rootProject.ext.app.signingConfigs.secretConfigsFileName - def configs = new JsonSlurper().parse(file("${dirPath}/${fileName}")) - keyAlias configs.keyAlias - keyPassword configs.keyPassword - storeFile file("${dirPath}/${configs.storeFileName}") - storePassword configs.storePassword - v1SigningEnabled true - v2SigningEnabled true - } - } - - namespace 'com.fankes.coloros.notify' - compileSdk rootProject.ext.android.compileSdk - - defaultConfig { - applicationId 'com.fankes.coloros.notify' - - 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 { - debug { - minifyEnabled false - signingConfig signingConfigs.universal - } - release { - minifyEnabled true - shrinkResources true - zipAlignEnabled true - signingConfig signingConfigs.universal - 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' - ] - } - buildFeatures { - viewBinding true - } - lintOptions { - checkReleaseBuilds false - } - aaptOptions.additionalParameters '--allow-reserved-package-id', '--package-id', '0x64' -} - -dependencies { - compileOnly 'de.robv.android.xposed:api:82' - implementation 'com.highcapable.yukihookapi:api:1.1.11' - ksp 'com.highcapable.yukihookapi:ksp-xposed:1.1.11' - implementation 'com.github.duanhong169:drawabletoolbox:1.0.7' - implementation "com.github.topjohnwu.libsu:core:5.0.4" - implementation 'androidx.annotation:annotation:1.6.0' - implementation 'com.squareup.okhttp3:okhttp:5.0.0-alpha.7' - implementation 'androidx.core:core-ktx:1.10.0' - implementation 'androidx.appcompat:appcompat:1.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/app/build.gradle.kts b/app/build.gradle.kts new file mode 100644 index 0000000..f0666c7 --- /dev/null +++ b/app/build.gradle.kts @@ -0,0 +1,84 @@ +plugins { + autowire(libs.plugins.android.application) + autowire(libs.plugins.kotlin.android) + autowire(libs.plugins.kotlin.ksp) +} + +android { + namespace = property.project.app.packageName + compileSdk = property.project.android.compileSdk + + signingConfigs { + create("universal") { + keyAlias = property.project.app.signing.keyAlias + keyPassword = property.project.app.signing.keyPassword + storeFile = rootProject.file(property.project.app.signing.storeFilePath) + storePassword = property.project.app.signing.storePassword + enableV1Signing = true + enableV2Signing = true + } + } + defaultConfig { + applicationId = property.project.app.packageName + minSdk = property.project.android.minSdk + targetSdk = property.project.android.targetSdk + versionName = property.project.app.versionName + versionCode = property.project.app.versionCode + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + buildTypes { + all { signingConfig = signingConfigs.getByName("universal") } + release { + isMinifyEnabled = true + isShrinkResources = true + 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", "0x37") +} + +androidComponents { + onVariants(selector().all()) { + it.outputs.forEach { output -> + val currentType = it.buildType + val currentSuffix = property.github.ci.commit.id.let { suffix -> if (suffix.isNotBlank()) "-$suffix" else "" } + val currentVersion = "${output.versionName.get()}$currentSuffix(${output.versionCode.get()})" + if (output is com.android.build.api.variant.impl.VariantOutputImpl) + output.outputFileName.set("${property.project.name}-v$currentVersion-$currentType.apk") + } + } +} + +dependencies { + compileOnly(de.robv.android.xposed.api) + implementation(com.highcapable.yukihookapi.api) + ksp(com.highcapable.yukihookapi.ksp.xposed) + implementation(com.fankes.projectpromote.project.promote) + implementation(com.github.topjohnwu.libsu.core) + implementation(com.github.duanhong169.drawabletoolbox) + implementation(com.squareup.okhttp3.okhttp) + implementation(androidx.core.core.ktx) + implementation(androidx.appcompat.appcompat) + 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/build.gradle b/build.gradle deleted file mode 100644 index 85d4fd6..0000000 --- a/build.gradle +++ /dev/null @@ -1,26 +0,0 @@ -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 : 29, - targetSdk : 33 - ] - app = [ - versionName : '1.100', - versionCode : 23, - signingConfigs: [ - secretConfigsDirPath : "${projectDir.getAbsolutePath()}/.secret", - secretConfigsFileName: "key_store_secret.json" - ] - ] -} - -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 0000000..a895ba5 --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,5 @@ +plugins { + autowire(libs.plugins.android.application) 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/gradle.properties b/gradle.properties index 453b5ca..5069a56 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,25 +1,18 @@ -# 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=ColorOSNotifyIcon +project.android.compileSdk=34 +project.android.minSdk=29 +project.android.targetSdk=33 +project.app.packageName=com.fankes.coloros.notify +project.app.versionName="1.100" +project.app.versionCode=23 +project.app.signing.keyAlias=public +project.app.signing.keyPassword="123456" +project.app.signing.storePassword="123456" +project.app.signing.storeFilePath=.secret/universal.p12 \ 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 0000000..14628a5 --- /dev/null +++ b/gradle/sweet-dependency/sweet-dependency-config.yaml @@ -0,0 +1,78 @@ +preferences: + autowire-on-sync-mode: UPDATE_OPTIONAL_DEPENDENCIES + repositories-mode: FAIL_ON_PROJECT_REPOS + +repositories: + gradle-plugin-portal: + scope: PLUGINS + google: + maven-central: + jit-pack: + sonatype-oss-releases: + rovo89-xposed-api: + scope: LIBRARIES + url: https://api.xposed.info/ + content: + include: + group: + de.robv.android.xposed + fankes-maven-releases: + url: https://raw.githubusercontent.com/fankes/maven-repository/main/repository/releases + +plugins: + com.android.application: + alias: android-application + version: 8.1.1 + org.jetbrains.kotlin.android: + alias: kotlin-android + version: 1.9.10 + com.google.devtools.ksp: + alias: kotlin-ksp + version: 1.9.10-1.0.13 + +libraries: + com.fankes.projectpromote: + project-promote: + version: 1.0.0 + repositories: + fankes-maven-releases + de.robv.android.xposed: + api: + version: 82 + repositories: + rovo89-xposed-api + com.highcapable.yukihookapi: + api: + version: 1.1.11 + ksp-xposed: + version-ref: ::api + com.github.topjohnwu.libsu: + core: + version: 5.0.5 + com.github.duanhong169: + drawabletoolbox: + version: 1.0.7 + com.squareup.okhttp3: + okhttp: + version: 5.0.0-alpha.11 + androidx.core: + core-ktx: + version: 1.12.0 + androidx.appcompat: + appcompat: + version: 1.6.1 + com.google.android.material: + material: + version: 1.9.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 630327b..692fc5c 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Wed May 25 04:24:55 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/settings.gradle b/settings.gradle deleted file mode 100644 index 3fff5f0..0000000 --- a/settings.gradle +++ /dev/null @@ -1,19 +0,0 @@ -pluginManagement { - repositories { - gradlePluginPortal() - google() - mavenCentral() - } -} -dependencyResolutionManagement { - repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) - repositories { - google() - maven { url "https://api.xposed.info/" } - maven { url "https://www.jitpack.io" } - maven { url "https://s01.oss.sonatype.org/content/repositories/releases" } - mavenCentral() - } -} -rootProject.name = "ColorOSNotifyIcon" -include ':app' diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..ff157d7 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,23 @@ +pluginManagement { + repositories { + gradlePluginPortal() + google() + mavenCentral() + } +} +plugins { + id("com.highcapable.sweetdependency") version "1.0.1" + id("com.highcapable.sweetproperty") version "1.0.2" +} +sweetProperty { + global { + all { + permanentKeyValues("GITHUB_CI_COMMIT_ID" to "") + generateFrom(ROOT_PROJECT, SYSTEM_ENV) + } + sourcesCode { includeKeys("GITHUB_CI_COMMIT_ID") } + } + rootProject { all { isEnable = false } } +} +rootProject.name = "ColorOSNotifyIcon" +include(":app") \ No newline at end of file