From 5fa0b245c48e1c2e766f53c7955be9fa03b43e4f Mon Sep 17 00:00:00 2001 From: "kexuan.yang" Date: Mon, 27 Nov 2023 21:25:38 +0800 Subject: [PATCH] update Android CI & Add Android publish action Change-Id: I683e617b673bb4f243de6cafa46360cfefb506a5 --- .github/workflows/android.yml | 11 +++++---- .github/workflows/release.yml | 18 ++++++++++++++- android/app/build.gradle.kts | 16 +++++++++++-- android/app/src/main/AndroidManifest.xml | 5 ++-- .../main/java/net/yangkx/mmkv/MainActivity.kt | 2 +- .../buildSrc/src/main/java/Configuration.kt | 23 ++++++++++++------- android/buildSrc/src/main/java/Version.kt | 1 + android/library-encrypt/build.gradle.kts | 2 +- .../src/main/AndroidManifest.xml | 3 +-- android/library/build.gradle.kts | 3 +-- android/library/src/main/AndroidManifest.xml | 3 +-- 11 files changed, 60 insertions(+), 27 deletions(-) create mode 100644 android/buildSrc/src/main/java/Version.kt diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index cfc24fd..5e588a7 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -26,13 +26,14 @@ jobs: ENCODED_STRING: ${{ secrets.KEYSTORE }} run: echo $ENCODED_STRING | base64 -di > ./android/app/keystore.jks - - name: Grant execute permission for gradlew - run: cd ./android; chmod +x gradlew - - name: Build with Gradle - run: cd ./android; ./gradlew build + run: | + cd ./android + chmod +x gradlew + ./gradlew clean + ./gradlew --info assembleDebug env: SIGN_KEY_STORE_PATH: keystore.jks SIGN_KEY_ALIAS: ${{ secrets.SIGN_KEY_ALIAS }} SIGN_KEY_PASSWORD: ${{ secrets.SIGN_KEY_PASSWORD }} - SIGN_STORE_PASSWORD: ${{ secrets.SIGN_STORE_PASSWORD }} \ No newline at end of file + SIGN_STORE_PASSWORD: ${{ secrets.SIGN_STORE_PASSWORD }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 85a5693..b7d86ff 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,4 +14,20 @@ jobs: - name: Cargo publish run: cargo publish --token ${CARGO_REGISTRY_TOKEN} env: - CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} \ No newline at end of file + CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} + - name: Android publish + env: + sonatypeUsername: ${{ secrets.SONATYPEUSERNAME }} + sonatypePassword: ${{ secrets.SONATYPEPASSWORD }} + signingKeyId: ${{ secrets.GPG_KEY_ID }} + signingPwd: ${{ secrets.GPG_PWD }} + signingSecret: ${{ secrets.GPG_SECRET }} + run: | + cd ./android + echo ${signingSecret} | gpg --dearmor > secret.gpg + echo sonatypeUsername=${sonatypeUsername} >> local.properties + echo sonatypePassword=${sonatypePassword} >> local.properties + echo signing.keyId=${signingKeyId} >> local.properties + echo signing.secretKeyRingFile=secret.gpg >> local.properties + chmod +x gradlew + ./gradlew --info publish \ No newline at end of file diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 6041f0d..7f70497 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -25,11 +25,11 @@ if (propFile.exists()) { } android { - namespace = "net.yangkx.mmkv" + namespace = "net.yangkx.mmkv.demo" compileSdk = 33 defaultConfig { - applicationId = "net.yangkx.mmkv" + applicationId = "net.yangkx.mmkv.demo" minSdk = 21 targetSdk = 33 versionCode = 1 @@ -54,6 +54,14 @@ android { ) signingConfig = signingConfigs.getByName("release") } + create("staging") { + isMinifyEnabled = true + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + signingConfig = signingConfigs.getByName("release") + } debug { signingConfig = signingConfigs.getByName("release") } @@ -81,6 +89,8 @@ android { val defaultDebugImplementation: Configuration by configurations.creating val encryptionDebugImplementation: Configuration by configurations.creating +val defaultStagingImplementation: Configuration by configurations.creating +val encryptionStagingImplementation: Configuration by configurations.creating val defaultReleaseImplementation: Configuration by configurations.creating val encryptionReleaseImplementation: Configuration by configurations.creating @@ -89,6 +99,8 @@ dependencies { implementation("androidx.appcompat:appcompat:1.6.1") defaultDebugImplementation(project(":library")) encryptionDebugImplementation(project(":library-encrypt")) + defaultStagingImplementation(Deps.mmkv_snapshot) + encryptionStagingImplementation(Deps.mmkv_encrypt_snapshot) defaultReleaseImplementation(Deps.mmkv) encryptionReleaseImplementation(Deps.mmkv_encrypt) } \ No newline at end of file diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index db08333..c413e06 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -3,8 +3,7 @@ xmlns:tools="http://schemas.android.com/tools"> diff --git a/android/app/src/main/java/net/yangkx/mmkv/MainActivity.kt b/android/app/src/main/java/net/yangkx/mmkv/MainActivity.kt index 827f49c..94f5344 100644 --- a/android/app/src/main/java/net/yangkx/mmkv/MainActivity.kt +++ b/android/app/src/main/java/net/yangkx/mmkv/MainActivity.kt @@ -5,7 +5,7 @@ import android.os.Bundle import android.text.method.ScrollingMovementMethod import android.util.Log import androidx.appcompat.app.AppCompatActivity -import net.yangkx.mmkv.databinding.ActivityMainBinding +import net.yangkx.mmkv.demo.databinding.ActivityMainBinding import net.yangkx.mmkv.log.LogLevel import net.yangkx.mmkv.log.Logger import kotlin.random.Random diff --git a/android/buildSrc/src/main/java/Configuration.kt b/android/buildSrc/src/main/java/Configuration.kt index 52bb68a..d79d737 100644 --- a/android/buildSrc/src/main/java/Configuration.kt +++ b/android/buildSrc/src/main/java/Configuration.kt @@ -1,15 +1,20 @@ object Configuration { - const val versionStr = "0.2.8" -// const val libVersion = versionStr + "-SNAPSHOT" - const val libVersion = versionStr + val snapshotVersion = version + "-SNAPSHOT" + val releaseVersion = version + val libVersion: String + get() = if (System.getenv("CI")?.toBoolean() ?: false){ + releaseVersion + } else { + snapshotVersion + } const val groupId = "net.yangkx" const val description = "Library uses file-based mmap to store key-values" private const val releasesRepoUrl = "https://s01.oss.sonatype.org/content/repositories/releases/" private const val snapshotsRepoUrl = "https://s01.oss.sonatype.org/content/repositories/snapshots/" - val publishUrl = if (libVersion.endsWith("-SNAPSHOT")) { - snapshotsRepoUrl - } else { + val publishUrl = if (System.getenv("CI")?.toBoolean() ?: false) { releasesRepoUrl + } else { + snapshotsRepoUrl } val licenceApache = "The Apache License, Version 2.0" to "http://www.apache.org/licenses/LICENSE-2.0.txt" val licenceMit = "The MIT License" to "https://opensource.org/licenses/MIT" @@ -19,6 +24,8 @@ object Configuration { object Deps { val kotlin = "androidx.core:core-ktx:1.10.1" - val mmkv = "net.yangkx:mmkv:${Configuration.libVersion}" - val mmkv_encrypt = "net.yangkx:mmkv-encrypt:${Configuration.libVersion}" + val mmkv_snapshot = "net.yangkx:mmkv:${Configuration.snapshotVersion}" + val mmkv_encrypt_snapshot = "net.yangkx:mmkv-encrypt:${Configuration.snapshotVersion}" + val mmkv = "net.yangkx:mmkv:${Configuration.releaseVersion}" + val mmkv_encrypt = "net.yangkx:mmkv-encrypt:${Configuration.releaseVersion}" } \ No newline at end of file diff --git a/android/buildSrc/src/main/java/Version.kt b/android/buildSrc/src/main/java/Version.kt new file mode 100644 index 0000000..7036460 --- /dev/null +++ b/android/buildSrc/src/main/java/Version.kt @@ -0,0 +1 @@ +const val version = "0.2.8" \ No newline at end of file diff --git a/android/library-encrypt/build.gradle.kts b/android/library-encrypt/build.gradle.kts index 395125e..ad8d469 100644 --- a/android/library-encrypt/build.gradle.kts +++ b/android/library-encrypt/build.gradle.kts @@ -61,7 +61,7 @@ publishing { val artifactId = "mmkv-encrypt" publications { register("release") { - groupId = "net.yangkx" + groupId = Configuration.groupId this.artifactId = artifactId this.version = Configuration.libVersion diff --git a/android/library-encrypt/src/main/AndroidManifest.xml b/android/library-encrypt/src/main/AndroidManifest.xml index c683550..69fc412 100644 --- a/android/library-encrypt/src/main/AndroidManifest.xml +++ b/android/library-encrypt/src/main/AndroidManifest.xml @@ -1,4 +1,3 @@ - + \ No newline at end of file diff --git a/android/library/build.gradle.kts b/android/library/build.gradle.kts index 2597b98..e221364 100644 --- a/android/library/build.gradle.kts +++ b/android/library/build.gradle.kts @@ -59,12 +59,11 @@ dependencies { publishing { val artifactId = "mmkv" - val version = Configuration.libVersion publications { register("release") { groupId = Configuration.groupId this.artifactId = artifactId - this.version = version + this.version = Configuration.libVersion afterEvaluate { from(components["release"]) diff --git a/android/library/src/main/AndroidManifest.xml b/android/library/src/main/AndroidManifest.xml index c683550..69fc412 100644 --- a/android/library/src/main/AndroidManifest.xml +++ b/android/library/src/main/AndroidManifest.xml @@ -1,4 +1,3 @@ - + \ No newline at end of file