From 2c6216057ff9694ea99fabbcd9ea5e5d6be63567 Mon Sep 17 00:00:00 2001 From: FooIbar <118464521+FooIbar@users.noreply.github.com> Date: Fri, 15 Mar 2024 18:42:14 +0800 Subject: [PATCH] Revert "Merge default and marshmallow flavors" This reverts commit 5676de24da0cc8d77cdb98f0faf3bd9a810fb9d3. Reason for revert: Desugaring causes regression on API 26+ --- .github/workflows/ci.yml | 138 +++++++++++++++--- .github/workflows/releases.yml | 44 ++++-- README.md | 5 + app/build.gradle.kts | 14 +- .../com/hippo/ehviewer/updater/AppUpdater.kt | 2 +- .../com/hippo/ehviewer/util/AppConfig.kt | 5 +- .../tachiyomi/data/release/GithubRelease.kt | 2 +- .../tachiyomi/data/release/GithubWorkflow.kt | 2 +- docs/README/zh-cn.md | 5 + docs/README/zh-tw.md | 5 + 10 files changed, 185 insertions(+), 37 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2bdd544dc..bd43a06fa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,7 +8,7 @@ on: workflow_dispatch: jobs: - build: + check: runs-on: ubuntu-latest steps: - name: Checkout @@ -27,6 +27,7 @@ jobs: uses: Swatinem/rust-cache@v2 with: workspaces: "./app/src/main/rust" + shared-key: ${{ runner.os }} - name: Rustfmt Check working-directory: ./app/src/main/rust @@ -39,54 +40,155 @@ jobs: - name: Setup Gradle uses: gradle/actions/setup-gradle@v3 with: - cache-encryption-key: ${{ secrets.GradleEncryptionKey }} - gradle-home-cache-cleanup: true + cache-read-only: true - name: Spotless Check run: ./gradlew spotlessCheck + default: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Java + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: 21 + + - name: Install Rust Toolchain + run: rustup update && rustup target add armv7-linux-androideabi aarch64-linux-android i686-linux-android x86_64-linux-android && rustup component add rustfmt clippy + + - name: Rust Cache + uses: Swatinem/rust-cache@v2 + with: + workspaces: "./app/src/main/rust" + shared-key: ${{ runner.os }} + save-if: "false" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v3 + with: + cache-encryption-key: ${{ secrets.GradleEncryptionKey }} + gradle-home-cache-cleanup: true + - name: CMake Cache uses: actions/cache@v4 with: path: app/.cxx - key: cmake-${{ hashFiles('gradle/libs.versions.toml', 'app/build.gradle.kts', 'app/src/main/cpp/CMakeLists.txt') }} - restore-keys: cmake- + key: cmake-default-${{ hashFiles('gradle/libs.versions.toml', 'app/build.gradle.kts', 'app/src/main/cpp/CMakeLists.txt') }} + restore-keys: cmake-default- - name: Build - run: ./gradlew assembleRelease + run: ./gradlew assembleDefaultRelease - name: Upload ARM64 uses: actions/upload-artifact@v4 with: - name: arm64-v8a-${{ github.sha }} - path: app/build/outputs/apk/release/app-arm64-v8a-release.apk + name: default-arm64-v8a-${{ github.sha }} + path: app/build/outputs/apk/default/release/app-default-arm64-v8a-release.apk - name: Upload x86_64 uses: actions/upload-artifact@v4 with: - name: x86_64-${{ github.sha }} - path: app/build/outputs/apk/release/app-x86_64-release.apk + name: default-x86_64-${{ github.sha }} + path: app/build/outputs/apk/default/release/app-default-x86_64-release.apk - name: Upload ARM32 uses: actions/upload-artifact@v4 with: - name: armeabi-v7a-${{ github.sha }} - path: app/build/outputs/apk/release/app-armeabi-v7a-release.apk + name: default-armeabi-v7a-${{ github.sha }} + path: app/build/outputs/apk/default/release/app-default-armeabi-v7a-release.apk - name: Upload x86 uses: actions/upload-artifact@v4 with: - name: x86-${{ github.sha }} - path: app/build/outputs/apk/release/app-x86-release.apk + name: default-x86-${{ github.sha }} + path: app/build/outputs/apk/default/release/app-default-x86-release.apk - name: Upload mapping uses: actions/upload-artifact@v4 with: - name: mapping-${{ github.sha }} - path: app/build/outputs/mapping/release/mapping.txt + name: default-mapping-${{ github.sha }} + path: app/build/outputs/mapping/defaultRelease/mapping.txt - name: Upload native debug symbols uses: actions/upload-artifact@v4 with: - name: native-debug-symbols-${{ github.sha }} - path: app/build/outputs/native-debug-symbols/release/native-debug-symbols.zip + name: default-native-debug-symbols-${{ github.sha }} + path: app/build/outputs/native-debug-symbols/defaultRelease/native-debug-symbols.zip + + marshmallow: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Java + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: 21 + + - name: Install Rust Toolchain + run: rustup update && rustup target add armv7-linux-androideabi aarch64-linux-android i686-linux-android x86_64-linux-android && rustup component add rustfmt clippy + + - name: Rust Cache + uses: Swatinem/rust-cache@v2 + with: + workspaces: "./app/src/main/rust" + shared-key: ${{ runner.os }} + save-if: "false" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v3 + with: + cache-encryption-key: ${{ secrets.GradleEncryptionKey }} + gradle-home-cache-cleanup: true + + - name: CMake Cache + uses: actions/cache@v4 + with: + path: app/.cxx + key: cmake-marshmallow-${{ hashFiles('gradle/libs.versions.toml', 'app/build.gradle.kts', 'app/src/main/cpp/CMakeLists.txt') }} + restore-keys: cmake-marshmallow- + + - name: Build + run: ./gradlew assembleMarshmallowRelease + + - name: Upload ARM64 + uses: actions/upload-artifact@v4 + with: + name: marshmallow-arm64-v8a-${{ github.sha }} + path: app/build/outputs/apk/marshmallow/release/app-marshmallow-arm64-v8a-release.apk + + - name: Upload x86_64 + uses: actions/upload-artifact@v4 + with: + name: marshmallow-x86_64-${{ github.sha }} + path: app/build/outputs/apk/marshmallow/release/app-marshmallow-x86_64-release.apk + + - name: Upload ARM32 + uses: actions/upload-artifact@v4 + with: + name: marshmallow-armeabi-v7a-${{ github.sha }} + path: app/build/outputs/apk/marshmallow/release/app-marshmallow-armeabi-v7a-release.apk + + - name: Upload x86 + uses: actions/upload-artifact@v4 + with: + name: marshmallow-x86-${{ github.sha }} + path: app/build/outputs/apk/marshmallow/release/app-marshmallow-x86-release.apk + + - name: Upload mapping + uses: actions/upload-artifact@v4 + with: + name: marshmallow-mapping-${{ github.sha }} + path: app/build/outputs/mapping/marshmallowRelease/mapping.txt + + - name: Upload native debug symbols + uses: actions/upload-artifact@v4 + with: + name: marshmallow-native-debug-symbols-${{ github.sha }} + path: app/build/outputs/native-debug-symbols/marshmallowRelease/native-debug-symbols.zip diff --git a/.github/workflows/releases.yml b/.github/workflows/releases.yml index de0daec29..fcfca5787 100644 --- a/.github/workflows/releases.yml +++ b/.github/workflows/releases.yml @@ -40,23 +40,39 @@ jobs: - name: Rename Apks run: | - mv app/build/outputs/apk/release/app-universal-release.apk EhViewer-${{ github.ref_name }}-universal.apk - mv app/build/outputs/apk/release/app-arm64-v8a-release.apk EhViewer-${{ github.ref_name }}-arm64-v8a.apk - mv app/build/outputs/apk/release/app-x86_64-release.apk EhViewer-${{ github.ref_name }}-x86_64.apk - mv app/build/outputs/apk/release/app-x86-release.apk EhViewer-${{ github.ref_name }}-x86.apk - mv app/build/outputs/apk/release/app-armeabi-v7a-release.apk EhViewer-${{ github.ref_name }}-armeabi-v7a.apk - mv app/build/outputs/mapping/release/mapping.txt EhViewer-${{ github.ref_name }}-mapping.txt - mv app/build/outputs/native-debug-symbols/release/native-debug-symbols.zip EhViewer-${{ github.ref_name }}-native-debug-symbols.zip + mv app/build/outputs/apk/default/release/app-default-universal-release.apk EhViewer-${{ github.ref_name }}-default-universal.apk + mv app/build/outputs/apk/default/release/app-default-arm64-v8a-release.apk EhViewer-${{ github.ref_name }}-default-arm64-v8a.apk + mv app/build/outputs/apk/default/release/app-default-x86_64-release.apk EhViewer-${{ github.ref_name }}-default-x86_64.apk + mv app/build/outputs/apk/default/release/app-default-x86-release.apk EhViewer-${{ github.ref_name }}-default-x86.apk + mv app/build/outputs/apk/default/release/app-default-armeabi-v7a-release.apk EhViewer-${{ github.ref_name }}-default-armeabi-v7a.apk + mv app/build/outputs/mapping/defaultRelease/mapping.txt EhViewer-${{ github.ref_name }}-default-mapping.txt + mv app/build/outputs/native-debug-symbols/defaultRelease/native-debug-symbols.zip EhViewer-${{ github.ref_name }}-default-native-debug-symbols.zip + + mv app/build/outputs/apk/marshmallow/release/app-marshmallow-universal-release.apk EhViewer-${{ github.ref_name }}-marshmallow-universal.apk + mv app/build/outputs/apk/marshmallow/release/app-marshmallow-arm64-v8a-release.apk EhViewer-${{ github.ref_name }}-marshmallow-arm64-v8a.apk + mv app/build/outputs/apk/marshmallow/release/app-marshmallow-x86_64-release.apk EhViewer-${{ github.ref_name }}-marshmallow-x86_64.apk + mv app/build/outputs/apk/marshmallow/release/app-marshmallow-x86-release.apk EhViewer-${{ github.ref_name }}-marshmallow-x86.apk + mv app/build/outputs/apk/marshmallow/release/app-marshmallow-armeabi-v7a-release.apk EhViewer-${{ github.ref_name }}-marshmallow-armeabi-v7a.apk + mv app/build/outputs/mapping/marshmallowRelease/mapping.txt EhViewer-${{ github.ref_name }}-marshmallow-mapping.txt + mv app/build/outputs/native-debug-symbols/marshmallowRelease/native-debug-symbols.zip EhViewer-${{ github.ref_name }}-marshmallow-native-debug-symbols.zip - name: Releases uses: softprops/action-gh-release@v2 with: body: Bump Version files: | - EhViewer-${{ github.ref_name }}-universal.apk - EhViewer-${{ github.ref_name }}-arm64-v8a.apk - EhViewer-${{ github.ref_name }}-x86_64.apk - EhViewer-${{ github.ref_name }}-x86.apk - EhViewer-${{ github.ref_name }}-armeabi-v7a.apk - EhViewer-${{ github.ref_name }}-mapping.txt - EhViewer-${{ github.ref_name }}-native-debug-symbols.zip + EhViewer-${{ github.ref_name }}-default-universal.apk + EhViewer-${{ github.ref_name }}-default-arm64-v8a.apk + EhViewer-${{ github.ref_name }}-default-x86_64.apk + EhViewer-${{ github.ref_name }}-default-x86.apk + EhViewer-${{ github.ref_name }}-default-armeabi-v7a.apk + EhViewer-${{ github.ref_name }}-default-mapping.txt + EhViewer-${{ github.ref_name }}-default-native-debug-symbols.zip + + EhViewer-${{ github.ref_name }}-marshmallow-universal.apk + EhViewer-${{ github.ref_name }}-marshmallow-arm64-v8a.apk + EhViewer-${{ github.ref_name }}-marshmallow-x86_64.apk + EhViewer-${{ github.ref_name }}-marshmallow-x86.apk + EhViewer-${{ github.ref_name }}-marshmallow-armeabi-v7a.apk + EhViewer-${{ github.ref_name }}-marshmallow-mapping.txt + EhViewer-${{ github.ref_name }}-marshmallow-native-debug-symbols.zip diff --git a/README.md b/README.md index ad75d6e2e..7808e1986 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,11 @@ and [Dynamic Color](https://m3.material.io/styles/color/dynamic-color/overview) # Download +| Flavor | Feature | +|-------------|----------------------------------| +| Default | Android 8.0+, full support | +| Marshmallow | Android 6.0-7.1, limited support | + Get it on GitHub diff --git a/app/build.gradle.kts b/app/build.gradle.kts index df09ba0b7..cef5a2cf3 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -60,7 +60,7 @@ android { defaultConfig { applicationId = "moe.tarsin.ehviewer" - minSdk = 23 + minSdk = 26 targetSdk = 34 versionCode = 180052 versionName = "1.12.0" @@ -81,6 +81,7 @@ android { "nb-rNO", ), ) + buildConfigField("String", "RAW_VERSION_NAME", "\"$versionName$versionNameSuffix\"") buildConfigField("String", "COMMIT_SHA", "\"$commitSha\"") buildConfigField("String", "REPO_NAME", "\"$repoName\"") ndk { @@ -88,6 +89,17 @@ android { } } + flavorDimensions += "api" + + productFlavors { + create("default") + create("marshmallow") { + minSdk = 23 + applicationIdSuffix = ".m" + versionNameSuffix = "-M" + } + } + externalNativeBuild { cmake { path = File("src/main/cpp/CMakeLists.txt") diff --git a/app/src/main/kotlin/com/hippo/ehviewer/updater/AppUpdater.kt b/app/src/main/kotlin/com/hippo/ehviewer/updater/AppUpdater.kt index a1b2a82e8..9fd7c6044 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/updater/AppUpdater.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/updater/AppUpdater.kt @@ -54,7 +54,7 @@ object AppUpdater { return Release(shortSha, changelog, archiveUrl) } } else { - val curVersion = BuildConfig.VERSION_NAME + val curVersion = BuildConfig.RAW_VERSION_NAME val release = ghStatement(LATEST_RELEASE_URL).executeAndParseAs() val latestVersion = release.version val description = release.info diff --git a/app/src/main/kotlin/com/hippo/ehviewer/util/AppConfig.kt b/app/src/main/kotlin/com/hippo/ehviewer/util/AppConfig.kt index 02ced6abc..1e6f4ce75 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/util/AppConfig.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/util/AppConfig.kt @@ -17,6 +17,7 @@ package com.hippo.ehviewer.util import android.os.Build import android.os.Environment +import com.hippo.ehviewer.BuildConfig import com.hippo.unifile.UniFile import com.hippo.unifile.asUniFile import java.io.File @@ -31,10 +32,12 @@ object AppConfig { private const val PARSE_ERROR = "parse_error" private const val CRASH = "crash" - val abi = Build.SUPPORTED_ABIS[0].takeIf { + private val abi = Build.SUPPORTED_ABIS[0].takeIf { it in setOf("arm64-v8a", "x86_64", "armeabi-v7a", "x86") } ?: "universal" + fun matchVariant(name: String) = name.contains(BuildConfig.FLAVOR) && name.contains(abi) + private val externalAppDir: File? get() { if (Environment.MEDIA_MOUNTED == Environment.getExternalStorageState()) { diff --git a/app/src/main/kotlin/tachiyomi/data/release/GithubRelease.kt b/app/src/main/kotlin/tachiyomi/data/release/GithubRelease.kt index 0c1929d2d..7aaba7cdb 100644 --- a/app/src/main/kotlin/tachiyomi/data/release/GithubRelease.kt +++ b/app/src/main/kotlin/tachiyomi/data/release/GithubRelease.kt @@ -15,7 +15,7 @@ data class GithubRelease( @SerialName("assets") val assets: List, ) { fun getDownloadLink(): String { - val asset = assets.find { it.downloadLink.contains(AppConfig.abi) } ?: assets[0] + val asset = assets.find { AppConfig.matchVariant(it.downloadLink) } ?: assets[0] return asset.downloadLink } } diff --git a/app/src/main/kotlin/tachiyomi/data/release/GithubWorkflow.kt b/app/src/main/kotlin/tachiyomi/data/release/GithubWorkflow.kt index 3e444c982..870bcf731 100644 --- a/app/src/main/kotlin/tachiyomi/data/release/GithubWorkflow.kt +++ b/app/src/main/kotlin/tachiyomi/data/release/GithubWorkflow.kt @@ -21,7 +21,7 @@ data class GithubArtifacts( @SerialName("artifacts") val artifacts: List, ) { fun getDownloadLink(): String { - return (artifacts.find { it.name.contains(AppConfig.abi) } ?: artifacts[0]).downloadLink + return (artifacts.find { AppConfig.matchVariant(it.name) } ?: artifacts[0]).downloadLink } } diff --git a/docs/README/zh-cn.md b/docs/README/zh-cn.md index a9bf7a112..2c58d0aa5 100644 --- a/docs/README/zh-cn.md +++ b/docs/README/zh-cn.md @@ -65,6 +65,11 @@ # 下载 +| 变种 | 功能 | +|-------------|-----------------------| +| Default | Android 8.0+, 完全支持 | +| Marshmallow | Android 6.0-7.1, 有限支持 | + Get it on GitHub diff --git a/docs/README/zh-tw.md b/docs/README/zh-tw.md index 537d1c70a..206f8f60f 100644 --- a/docs/README/zh-tw.md +++ b/docs/README/zh-tw.md @@ -65,6 +65,11 @@ # 下載 +| 變種 | 功能 | +|-------------|-----------------------| +| Default | Android 8.0+, 完全支援 | +| Marshmallow | Android 6.0-7.1, 有限支援 | + Get it on GitHub