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 |
+
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, 有限支持 |
+
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, 有限支援 |
+