Rework build variants and add FOSS variant (mihonapp/mihon#1775)
(cherry picked from commit fe22f5aa37d3613d4464e18153f183994fa45b7a)
This commit is contained in:
parent
9c25e3dede
commit
73719f2f1b
25 changed files with 206 additions and 189 deletions
10
.github/workflows/build_benchmark.yml
vendored
10
.github/workflows/build_benchmark.yml
vendored
|
|
@ -1,5 +1,5 @@
|
|||
name: Benchmark Builder
|
||||
# Manually build a dev benchmark on a tag
|
||||
# Manually build a benchmark on a tag
|
||||
|
||||
on:
|
||||
# Dispatch or Manual triggers
|
||||
|
|
@ -18,7 +18,7 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
VERSION_TAG: ${{ steps.get_tag.outputs.VERSION_TAG }}
|
||||
ARTIFACTS_PREFIX: dev/benchmark/app-dev
|
||||
ARTIFACTS_PREFIX: benchmark/app
|
||||
TAG_NAME: benchmark-${{ steps.tag_name.outputs.TAG_NAME }}
|
||||
steps:
|
||||
- name: Get tag name (${{ github.ref }})
|
||||
|
|
@ -83,15 +83,15 @@ jobs:
|
|||
run: ./gradlew spotlessCheck
|
||||
|
||||
- name: Build app
|
||||
run: ./gradlew assembleDevBenchmark -Pandroid.signingConfig=debug
|
||||
run: ./gradlew assembleBenchmark
|
||||
|
||||
- name: Run unit tests
|
||||
run: ./gradlew testReleaseUnitTest testDevBenchmarkUnitTest
|
||||
run: ./gradlew testReleaseUnitTest
|
||||
|
||||
- name: Sign APK
|
||||
uses: r0adkll/sign-android-release@349ebdef58775b1e0d8099458af0816dc79b6407 # v1
|
||||
with:
|
||||
releaseDirectory: app/build/outputs/apk/dev/benchmark
|
||||
releaseDirectory: app/build/outputs/apk/benchmark
|
||||
signingKeyBase64: ${{ secrets.SIGNING_KEY }}
|
||||
alias: ${{ secrets.ALIAS }}
|
||||
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
|
||||
|
|
|
|||
2
.github/workflows/build_dispatch_preview.yml
vendored
2
.github/workflows/build_dispatch_preview.yml
vendored
|
|
@ -1,5 +1,5 @@
|
|||
name: Remote Dispatch Preview Build
|
||||
# Manually send a dispatch to build standard preview (master) or dev preview (other refs)
|
||||
# Manually send a dispatch to build preview
|
||||
|
||||
on:
|
||||
# Dispatch or Manual triggers
|
||||
|
|
|
|||
20
.github/workflows/build_preview.yml
vendored
20
.github/workflows/build_preview.yml
vendored
|
|
@ -1,5 +1,5 @@
|
|||
name: Preview Builder
|
||||
# Manually build a standard preview on master
|
||||
# Manually build a preview on master
|
||||
|
||||
on:
|
||||
# Dispatch or Manual triggers
|
||||
|
|
@ -89,7 +89,7 @@ jobs:
|
|||
set -e
|
||||
|
||||
tag_prefix=r
|
||||
artifacts_prefix=standard/preview/app-standard
|
||||
artifacts_prefix=preview/app
|
||||
build_type_name=Preview
|
||||
|
||||
echo "TAG_NAME=${tag_prefix}${{ steps.current_commit.outputs.COMMIT_COUNT }}"
|
||||
|
|
@ -152,10 +152,10 @@ jobs:
|
|||
run: ./gradlew spotlessCheck
|
||||
|
||||
- name: Build app
|
||||
run: ./gradlew assembleStandardPreview
|
||||
run: ./gradlew assemblePreview
|
||||
|
||||
- name: Run unit tests
|
||||
run: ./gradlew testReleaseUnitTest testStandardPreviewUnitTest
|
||||
run: ./gradlew testReleaseUnitTest
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
|
||||
|
|
@ -181,7 +181,7 @@ jobs:
|
|||
- name: Sign APK
|
||||
uses: r0adkll/sign-android-release@349ebdef58775b1e0d8099458af0816dc79b6407 # v1
|
||||
with:
|
||||
releaseDirectory: app/build/outputs/apk/standard/preview
|
||||
releaseDirectory: app/build/outputs/apk/preview
|
||||
signingKeyBase64: ${{ secrets.SIGNING_KEY }}
|
||||
alias: ${{ secrets.ALIAS }}
|
||||
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
|
||||
|
|
@ -192,23 +192,23 @@ jobs:
|
|||
run: |
|
||||
set -e
|
||||
|
||||
mv app/build/outputs/apk/${{ needs.prepare-build.outputs.ARTIFACTS_PREFIX }}-universal-preview-unsigned-signed.apk Komikku-${{ needs.prepare-build.outputs.TAG_NAME }}.apk
|
||||
mv app/build/outputs/apk/${{ needs.prepare-build.outputs.ARTIFACTS_PREFIX }}-universal-preview-signed.apk Komikku-${{ needs.prepare-build.outputs.TAG_NAME }}.apk
|
||||
sha=`sha256sum Komikku-${{ needs.prepare-build.outputs.TAG_NAME }}.apk | awk '{ print $1 }'`
|
||||
echo "APK_UNIVERSAL_SHA=$sha" >> $GITHUB_OUTPUT
|
||||
|
||||
mv app/build/outputs/apk/${{ needs.prepare-build.outputs.ARTIFACTS_PREFIX }}-arm64-v8a-preview-unsigned-signed.apk Komikku-arm64-v8a-${{ needs.prepare-build.outputs.TAG_NAME }}.apk
|
||||
mv app/build/outputs/apk/${{ needs.prepare-build.outputs.ARTIFACTS_PREFIX }}-arm64-v8a-preview-signed.apk Komikku-arm64-v8a-${{ needs.prepare-build.outputs.TAG_NAME }}.apk
|
||||
sha=`sha256sum Komikku-arm64-v8a-${{ needs.prepare-build.outputs.TAG_NAME }}.apk | awk '{ print $1 }'`
|
||||
echo "APK_ARM64_V8A_SHA=$sha" >> $GITHUB_OUTPUT
|
||||
|
||||
mv app/build/outputs/apk/${{ needs.prepare-build.outputs.ARTIFACTS_PREFIX }}-armeabi-v7a-preview-unsigned-signed.apk Komikku-armeabi-v7a-${{ needs.prepare-build.outputs.TAG_NAME }}.apk
|
||||
mv app/build/outputs/apk/${{ needs.prepare-build.outputs.ARTIFACTS_PREFIX }}-armeabi-v7a-preview-signed.apk Komikku-armeabi-v7a-${{ needs.prepare-build.outputs.TAG_NAME }}.apk
|
||||
sha=`sha256sum Komikku-armeabi-v7a-${{ needs.prepare-build.outputs.TAG_NAME }}.apk | awk '{ print $1 }'`
|
||||
echo "APK_ARMEABI_V7A_SHA=$sha" >> $GITHUB_OUTPUT
|
||||
|
||||
mv app/build/outputs/apk/${{ needs.prepare-build.outputs.ARTIFACTS_PREFIX }}-x86-preview-unsigned-signed.apk Komikku-x86-${{ needs.prepare-build.outputs.TAG_NAME }}.apk
|
||||
mv app/build/outputs/apk/${{ needs.prepare-build.outputs.ARTIFACTS_PREFIX }}-x86-preview-signed.apk Komikku-x86-${{ needs.prepare-build.outputs.TAG_NAME }}.apk
|
||||
sha=`sha256sum Komikku-x86-${{ needs.prepare-build.outputs.TAG_NAME }}.apk | awk '{ print $1 }'`
|
||||
echo "APK_X86_SHA=$sha" >> $GITHUB_OUTPUT
|
||||
|
||||
mv app/build/outputs/apk/${{ needs.prepare-build.outputs.ARTIFACTS_PREFIX }}-x86_64-preview-unsigned-signed.apk Komikku-x86_64-${{ needs.prepare-build.outputs.TAG_NAME }}.apk
|
||||
mv app/build/outputs/apk/${{ needs.prepare-build.outputs.ARTIFACTS_PREFIX }}-x86_64-preview-signed.apk Komikku-x86_64-${{ needs.prepare-build.outputs.TAG_NAME }}.apk
|
||||
sha=`sha256sum Komikku-x86_64-${{ needs.prepare-build.outputs.TAG_NAME }}.apk | awk '{ print $1 }'`
|
||||
echo "APK_X86_64_SHA=$sha" >> $GITHUB_OUTPUT
|
||||
|
||||
|
|
|
|||
36
.github/workflows/build_pull_request.yml
vendored
36
.github/workflows/build_pull_request.yml
vendored
|
|
@ -50,6 +50,20 @@ jobs:
|
|||
java-version: 17
|
||||
distribution: temurin
|
||||
|
||||
- name: Write google-services.json
|
||||
uses: DamianReeves/write-file-action@6929a9a6d1807689191dcc8bbe62b54d70a32b42 # v1.3
|
||||
with:
|
||||
path: app/google-services.json
|
||||
contents: ${{ secrets.GOOGLE_SERVICES_JSON }}
|
||||
write-mode: overwrite
|
||||
|
||||
- name: Write client_secrets.json
|
||||
uses: DamianReeves/write-file-action@6929a9a6d1807689191dcc8bbe62b54d70a32b42 # v1.3
|
||||
with:
|
||||
path: app/src/main/assets/client_secrets.json
|
||||
contents: ${{ secrets.GOOGLE_CLIENT_SECRETS_JSON }}
|
||||
write-mode: overwrite
|
||||
|
||||
- name: Set up gradle
|
||||
uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4
|
||||
|
||||
|
|
@ -57,10 +71,19 @@ jobs:
|
|||
run: ./gradlew spotlessCheck
|
||||
|
||||
- name: Build app
|
||||
run: ./gradlew assembleDevRelease
|
||||
run: ./gradlew assembleRelease
|
||||
|
||||
- name: Run unit tests
|
||||
run: ./gradlew testReleaseUnitTest testDevReleaseUnitTest
|
||||
run: ./gradlew testReleaseUnitTest
|
||||
|
||||
- name: Sign APK
|
||||
uses: r0adkll/sign-android-release@349ebdef58775b1e0d8099458af0816dc79b6407 # v1
|
||||
with:
|
||||
releaseDirectory: app/build/outputs/apk/release
|
||||
signingKeyBase64: ${{ secrets.SIGNING_KEY }}
|
||||
alias: ${{ secrets.ALIAS }}
|
||||
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
|
||||
keyPassword: ${{ secrets.KEY_PASSWORD }}
|
||||
|
||||
- name: Rename apk
|
||||
id: current_commit
|
||||
|
|
@ -73,11 +96,16 @@ jobs:
|
|||
echo "VERSION_TAG=$version_tag" >> $GITHUB_OUTPUT
|
||||
echo "COMMIT_COUNT=$commit_count"
|
||||
echo "COMMIT_COUNT=$commit_count" >> $GITHUB_OUTPUT
|
||||
mv app/build/outputs/apk/dev/release/app-dev-universal-release-unsigned.apk Komikku-$version_tag-r$commit_count.apk
|
||||
mv app/build/outputs/apk/release/app-universal-release-unsigned-signed.apk Komikku-$version_tag-r$commit_count.apk
|
||||
|
||||
- name: Upload APK
|
||||
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
|
||||
with:
|
||||
name: Komikku-${{ steps.current_commit.outputs.VERSION_TAG }}-r${{ steps.current_commit.outputs.COMMIT_COUNT }}.apk
|
||||
path: ./*.apk
|
||||
retention-days: 1
|
||||
|
||||
- name: Upload mapping
|
||||
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
|
||||
with:
|
||||
name: mapping-${{ github.sha }}
|
||||
path: app/build/outputs/mapping/release
|
||||
|
|
|
|||
|
|
@ -69,15 +69,15 @@ jobs:
|
|||
run: ./gradlew spotlessCheck
|
||||
|
||||
- name: Build app
|
||||
run: ./gradlew assembleStandardRelease
|
||||
run: ./gradlew assembleRelease -Pwith-analytics -Pwith-updater
|
||||
|
||||
- name: Run unit tests
|
||||
run: ./gradlew testReleaseUnitTest testStandardReleaseUnitTest
|
||||
run: ./gradlew testReleaseUnitTest
|
||||
|
||||
- name: Sign APK
|
||||
uses: r0adkll/sign-android-release@349ebdef58775b1e0d8099458af0816dc79b6407 # v1
|
||||
with:
|
||||
releaseDirectory: app/build/outputs/apk/standard/release
|
||||
releaseDirectory: app/build/outputs/apk/release
|
||||
signingKeyBase64: ${{ secrets.SIGNING_KEY }}
|
||||
alias: ${{ secrets.ALIAS }}
|
||||
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
|
||||
|
|
@ -93,11 +93,16 @@ jobs:
|
|||
echo "VERSION_TAG=$version_tag" >> $GITHUB_OUTPUT
|
||||
echo "COMMIT_COUNT=$commit_count"
|
||||
echo "COMMIT_COUNT=$commit_count" >> $GITHUB_OUTPUT
|
||||
mv app/build/outputs/apk/standard/release/app-standard-universal-release-unsigned-signed.apk Komikku-$version_tag-r$commit_count.apk
|
||||
mv app/build/outputs/apk/release/app-universal-release-unsigned-signed.apk Komikku-$version_tag-r$commit_count.apk
|
||||
|
||||
- name: Upload APK
|
||||
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
|
||||
with:
|
||||
name: Komikku-${{ steps.current_commit.outputs.VERSION_TAG }}-r${{ steps.current_commit.outputs.COMMIT_COUNT }}.apk
|
||||
path: ./*.apk
|
||||
retention-days: 1
|
||||
|
||||
- name: Upload mapping
|
||||
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
|
||||
with:
|
||||
name: mapping-${{ github.sha }}
|
||||
path: app/build/outputs/mapping/release
|
||||
24
.github/workflows/build_release.yml
vendored
24
.github/workflows/build_release.yml
vendored
|
|
@ -125,10 +125,10 @@ jobs:
|
|||
run: ./gradlew spotlessCheck
|
||||
|
||||
- name: Build app
|
||||
run: ./gradlew assembleStandardRelease
|
||||
run: ./gradlew assembleRelease -Pwith-analytics -Pwith-updater
|
||||
|
||||
- name: Run unit tests
|
||||
run: ./gradlew testReleaseUnitTest testStandardReleaseUnitTest
|
||||
run: ./gradlew testReleaseUnitTest
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
|
||||
|
|
@ -136,6 +136,12 @@ jobs:
|
|||
path: "**/*.apk"
|
||||
retention-days: 1
|
||||
|
||||
- name: Upload mapping
|
||||
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
|
||||
with:
|
||||
name: mapping-${{ github.sha }}
|
||||
path: app/build/outputs/mapping/release
|
||||
|
||||
release-app:
|
||||
runs-on: ubuntu-latest
|
||||
needs:
|
||||
|
|
@ -154,7 +160,7 @@ jobs:
|
|||
- name: Sign APK
|
||||
uses: r0adkll/sign-android-release@349ebdef58775b1e0d8099458af0816dc79b6407 # v1
|
||||
with:
|
||||
releaseDirectory: app/build/outputs/apk/standard/release
|
||||
releaseDirectory: app/build/outputs/apk/release
|
||||
signingKeyBase64: ${{ secrets.SIGNING_KEY }}
|
||||
alias: ${{ secrets.ALIAS }}
|
||||
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
|
||||
|
|
@ -165,23 +171,23 @@ jobs:
|
|||
run: |
|
||||
set -e
|
||||
|
||||
mv app/build/outputs/apk/standard/release/app-standard-universal-release-unsigned-signed.apk Komikku-${{ needs.prepare-build.outputs.VERSION_TAG }}.apk
|
||||
mv app/build/outputs/apk/release/app-universal-release-unsigned-signed.apk Komikku-${{ needs.prepare-build.outputs.VERSION_TAG }}.apk
|
||||
sha=`sha256sum Komikku-${{ needs.prepare-build.outputs.VERSION_TAG }}.apk | awk '{ print $1 }'`
|
||||
echo "APK_UNIVERSAL_SHA=$sha" >> $GITHUB_OUTPUT
|
||||
|
||||
mv app/build/outputs/apk/standard/release/app-standard-arm64-v8a-release-unsigned-signed.apk Komikku-arm64-v8a-${{ needs.prepare-build.outputs.VERSION_TAG }}.apk
|
||||
mv app/build/outputs/apk/release/app-arm64-v8a-release-unsigned-signed.apk Komikku-arm64-v8a-${{ needs.prepare-build.outputs.VERSION_TAG }}.apk
|
||||
sha=`sha256sum Komikku-arm64-v8a-${{ needs.prepare-build.outputs.VERSION_TAG }}.apk | awk '{ print $1 }'`
|
||||
echo "APK_ARM64_V8A_SHA=$sha" >> $GITHUB_OUTPUT
|
||||
|
||||
mv app/build/outputs/apk/standard/release/app-standard-armeabi-v7a-release-unsigned-signed.apk Komikku-armeabi-v7a-${{ needs.prepare-build.outputs.VERSION_TAG }}.apk
|
||||
mv app/build/outputs/apk/release/app-armeabi-v7a-release-unsigned-signed.apk Komikku-armeabi-v7a-${{ needs.prepare-build.outputs.VERSION_TAG }}.apk
|
||||
sha=`sha256sum Komikku-armeabi-v7a-${{ needs.prepare-build.outputs.VERSION_TAG }}.apk | awk '{ print $1 }'`
|
||||
echo "APK_ARMEABI_V7A_SHA=$sha" >> $GITHUB_OUTPUT
|
||||
|
||||
mv app/build/outputs/apk/standard/release/app-standard-x86-release-unsigned-signed.apk Komikku-x86-${{ needs.prepare-build.outputs.VERSION_TAG }}.apk
|
||||
mv app/build/outputs/apk/release/app-x86-release-unsigned-signed.apk Komikku-x86-${{ needs.prepare-build.outputs.VERSION_TAG }}.apk
|
||||
sha=`sha256sum Komikku-x86-${{ needs.prepare-build.outputs.VERSION_TAG }}.apk | awk '{ print $1 }'`
|
||||
echo "APK_X86_SHA=$sha" >> $GITHUB_OUTPUT
|
||||
|
||||
mv app/build/outputs/apk/standard/release/app-standard-x86_64-release-unsigned-signed.apk Komikku-x86_64-${{ needs.prepare-build.outputs.VERSION_TAG }}.apk
|
||||
mv app/build/outputs/apk/release/app-x86_64-release-unsigned-signed.apk Komikku-x86_64-${{ needs.prepare-build.outputs.VERSION_TAG }}.apk
|
||||
sha=`sha256sum Komikku-x86_64-${{ needs.prepare-build.outputs.VERSION_TAG }}.apk | awk '{ print $1 }'`
|
||||
echo "APK_X86_64_SHA=$sha" >> $GITHUB_OUTPUT
|
||||
|
||||
|
|
@ -201,7 +207,7 @@ jobs:
|
|||
${{ needs.prepare-build.outputs.COMMIT_LOGS }}
|
||||
|
||||
##### Based on
|
||||
|
||||
|
||||
**Full Changelog**: [komikku-app/komikku@${{ needs.prepare-build.outputs.PREV_TAG_NAME }}...${{ needs.prepare-build.outputs.VERSION_TAG }}](https://github.com/komikku-app/komikku/compare/${{ needs.prepare-build.outputs.PREV_TAG_NAME }}...${{ needs.prepare-build.outputs.VERSION_TAG }})
|
||||
|
||||
---
|
||||
|
|
|
|||
|
|
@ -1,10 +1,6 @@
|
|||
@file:Suppress("ChromeOsAbiSupport")
|
||||
|
||||
import mihon.buildlogic.getBuildTime
|
||||
import mihon.buildlogic.getCommitCount
|
||||
import mihon.buildlogic.getGitSha
|
||||
import java.io.FileInputStream
|
||||
import java.util.Properties
|
||||
|
||||
plugins {
|
||||
id("mihon.android.application")
|
||||
|
|
@ -15,15 +11,16 @@ plugins {
|
|||
id("com.github.ben-manes.versions")
|
||||
}
|
||||
|
||||
if (gradle.startParameter.taskRequests.toString().contains("Standard")) {
|
||||
val includeAnalytics = project.hasProperty("with-analytics")
|
||||
val includeUpdater = project.hasProperty("with-updater")
|
||||
|
||||
if (includeAnalytics) {
|
||||
pluginManager.apply {
|
||||
apply(libs.plugins.google.services.get().pluginId)
|
||||
apply(libs.plugins.firebase.crashlytics.get().pluginId)
|
||||
}
|
||||
}
|
||||
|
||||
val supportedAbis = setOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64")
|
||||
|
||||
android {
|
||||
namespace = "eu.kanade.tachiyomi"
|
||||
|
||||
|
|
@ -36,110 +33,110 @@ android {
|
|||
buildConfigField("String", "COMMIT_COUNT", "\"${getCommitCount()}\"")
|
||||
buildConfigField("String", "COMMIT_SHA", "\"${getGitSha()}\"")
|
||||
buildConfigField("String", "BUILD_TIME", "\"${getBuildTime()}\"")
|
||||
buildConfigField("boolean", "INCLUDE_UPDATER", "false")
|
||||
buildConfigField("boolean", "INCLUDE_ANALYTICS", "$includeAnalytics")
|
||||
buildConfigField("boolean", "INCLUDE_UPDATER", "$includeUpdater")
|
||||
buildConfigField("boolean", "PREVIEW", "false")
|
||||
|
||||
ndk {
|
||||
abiFilters += supportedAbis
|
||||
}
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
val debug by getting {
|
||||
applicationIdSuffix = ".dev"
|
||||
versionNameSuffix = "-${getCommitCount()}"
|
||||
isPseudoLocalesEnabled = true
|
||||
}
|
||||
val release by getting {
|
||||
isMinifyEnabled = true
|
||||
isShrinkResources = true
|
||||
|
||||
proguardFiles("proguard-android-optimize.txt", "proguard-rules.pro")
|
||||
}
|
||||
create("releaseTest") {
|
||||
initWith(release)
|
||||
|
||||
applicationIdSuffix = ".rt"
|
||||
isMinifyEnabled = false
|
||||
isShrinkResources = false
|
||||
|
||||
matchingFallbacks.add(release.name)
|
||||
}
|
||||
create("foss") {
|
||||
initWith(release)
|
||||
|
||||
applicationIdSuffix = ".t-foss"
|
||||
|
||||
matchingFallbacks.add(release.name)
|
||||
}
|
||||
create("preview") {
|
||||
initWith(release)
|
||||
|
||||
applicationIdSuffix = ".beta"
|
||||
|
||||
versionNameSuffix = debug.versionNameSuffix
|
||||
signingConfig = debug.signingConfig
|
||||
|
||||
matchingFallbacks.add(release.name)
|
||||
|
||||
buildConfigField("boolean", "PREVIEW", "true")
|
||||
}
|
||||
create("benchmark") {
|
||||
initWith(release)
|
||||
|
||||
isDebuggable = false
|
||||
isProfileable = true
|
||||
versionNameSuffix = "${debug.versionNameSuffix}-benchmark"
|
||||
applicationIdSuffix = ".benchmark"
|
||||
|
||||
signingConfig = debug.signingConfig
|
||||
|
||||
matchingFallbacks.add(release.name)
|
||||
}
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
val analyticsDir = if (includeAnalytics) "analytics-firebase" else "analytics-firebase-noop"
|
||||
getByName("main").kotlin.srcDirs("src/$analyticsDir/kotlin")
|
||||
getByName("preview").res.srcDirs("src/beta/res")
|
||||
getByName("benchmark").res.srcDirs("src/debug/res")
|
||||
}
|
||||
|
||||
splits {
|
||||
abi {
|
||||
isEnable = true
|
||||
reset()
|
||||
include(*supportedAbis.toTypedArray())
|
||||
isUniversalApk = true
|
||||
}
|
||||
}
|
||||
|
||||
signingConfigs {
|
||||
create("preview") {
|
||||
storeFile = rootProject.file(readPropertyFromLocalProperties("keystore") ?: "keystore.jks")
|
||||
storePassword = readPropertyFromLocalProperties("storePassword")
|
||||
keyAlias = readPropertyFromLocalProperties("keyAlias")
|
||||
keyPassword = readPropertyFromLocalProperties("keyPassword")
|
||||
}
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
named("debug") {
|
||||
versionNameSuffix = "-${getCommitCount()}"
|
||||
applicationIdSuffix = ".debug"
|
||||
isPseudoLocalesEnabled = true
|
||||
}
|
||||
create("releaseTest") {
|
||||
applicationIdSuffix = ".rt"
|
||||
// isMinifyEnabled = true
|
||||
// isShrinkResources = true
|
||||
setProguardFiles(listOf(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro"))
|
||||
matchingFallbacks.add("release")
|
||||
}
|
||||
named("release") {
|
||||
isShrinkResources = true
|
||||
isMinifyEnabled = true
|
||||
setProguardFiles(listOf(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro"))
|
||||
}
|
||||
create("preview") {
|
||||
initWith(getByName("release"))
|
||||
buildConfigField("boolean", "PREVIEW", "true")
|
||||
|
||||
matchingFallbacks.add("release")
|
||||
versionNameSuffix = "-${getCommitCount()}"
|
||||
applicationIdSuffix = ".beta"
|
||||
}
|
||||
// Profilers build, overwrite dev's signing configuration by 'debug' key then re-sign with GitHub's workflow
|
||||
create("benchmark") {
|
||||
initWith(getByName("release"))
|
||||
|
||||
signingConfig = signingConfigs.getByName("debug")
|
||||
matchingFallbacks.add("release")
|
||||
isDebuggable = false
|
||||
isProfileable = true
|
||||
versionNameSuffix = "-${getCommitCount()}-benchmark"
|
||||
applicationIdSuffix = ".benchmark"
|
||||
}
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
getByName("preview").res.srcDirs("src/beta/res")
|
||||
getByName("benchmark").res.srcDirs("src/debug/res")
|
||||
}
|
||||
|
||||
flavorDimensions.add("default")
|
||||
|
||||
productFlavors {
|
||||
// Include Google service & build unsigned, for GitHub workflow build
|
||||
create("standard") {
|
||||
buildConfigField("boolean", "INCLUDE_UPDATER", "true")
|
||||
dimension = "default"
|
||||
}
|
||||
create("fdroid") {
|
||||
dimension = "default"
|
||||
}
|
||||
// Signed, dev build with Android Studio if it's not a debug build
|
||||
create("dev") {
|
||||
dimension = "default"
|
||||
reset()
|
||||
include("armeabi-v7a", "arm64-v8a", "x86", "x86_64")
|
||||
}
|
||||
}
|
||||
|
||||
packaging {
|
||||
resources.excludes.addAll(
|
||||
listOf(
|
||||
jniLibs {
|
||||
keepDebugSymbols += listOf(
|
||||
"libandroidx.graphics.path",
|
||||
"libarchive-jni",
|
||||
"libconscrypt_jni",
|
||||
"libimagedecoder",
|
||||
"libquickjs",
|
||||
"libsqlite3x",
|
||||
)
|
||||
.map { "**/$it.so" }
|
||||
}
|
||||
resources {
|
||||
excludes += setOf(
|
||||
"kotlin-tooling-metadata.json",
|
||||
"META-INF/DEPENDENCIES",
|
||||
"LICENSE.txt",
|
||||
"META-INF/LICENSE",
|
||||
"META-INF/**/*.properties",
|
||||
"META-INF/**/LICENSE.txt",
|
||||
"META-INF/*.properties",
|
||||
"META-INF/**/*.properties",
|
||||
"META-INF/README.md",
|
||||
"META-INF/NOTICE",
|
||||
"META-INF/INDEX.LIST",
|
||||
"META-INF/*.version",
|
||||
),
|
||||
)
|
||||
"META-INF/INDEX.LIST",
|
||||
"META-INF/DEPENDENCIES",
|
||||
"META-INF/LICENSE",
|
||||
"META-INF/NOTICE",
|
||||
"META-INF/README.md",
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
dependenciesInfo {
|
||||
|
|
@ -303,9 +300,11 @@ dependencies {
|
|||
implementation(libs.logcat)
|
||||
|
||||
// Crash reports/analytics
|
||||
"standardImplementation"(platform(libs.firebase.bom))
|
||||
"standardImplementation"(libs.firebase.analytics)
|
||||
"standardImplementation"(libs.firebase.crashlytics)
|
||||
if (includeAnalytics) {
|
||||
implementation(platform(libs.firebase.bom))
|
||||
implementation(libs.firebase.analytics)
|
||||
implementation(libs.firebase.crashlytics)
|
||||
}
|
||||
|
||||
// Shizuku
|
||||
implementation(libs.bundles.shizuku)
|
||||
|
|
@ -355,16 +354,3 @@ buildscript {
|
|||
classpath(kotlinx.gradle)
|
||||
}
|
||||
}
|
||||
|
||||
// Config local store's signing key
|
||||
fun readPropertyFromLocalProperties(propertyName: String): String? {
|
||||
val localPropertiesFile = rootProject.file("local.properties")
|
||||
if (localPropertiesFile.exists()) {
|
||||
val properties = Properties()
|
||||
FileInputStream(localPropertiesFile).use { inputStream ->
|
||||
properties.load(inputStream)
|
||||
}
|
||||
return properties.getProperty(propertyName)
|
||||
}
|
||||
return null // Property not found
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,7 @@
|
|||
package eu.kanade.domain.ui.model
|
||||
|
||||
import dev.icerock.moko.resources.StringResource
|
||||
import eu.kanade.tachiyomi.util.system.isDevFlavor
|
||||
import eu.kanade.tachiyomi.util.system.isPreviewBuildType
|
||||
import eu.kanade.tachiyomi.util.system.isReleaseBuildType
|
||||
import tachiyomi.i18n.MR
|
||||
import tachiyomi.i18n.kmk.KMR
|
||||
|
||||
|
|
@ -22,7 +21,7 @@ enum class AppTheme(val titleRes: StringResource?) {
|
|||
MIDNIGHT_DUSK(MR.strings.theme_midnightdusk),
|
||||
|
||||
// TODO: re-enable for preview
|
||||
NORD(MR.strings.theme_nord.takeIf { isDevFlavor || isPreviewBuildType }),
|
||||
NORD(MR.strings.theme_nord.takeUnless { isReleaseBuildType }),
|
||||
STRAWBERRY_DAIQUIRI(MR.strings.theme_strawberrydaiquiri),
|
||||
TAKO(MR.strings.theme_tako),
|
||||
TEALTURQUOISE(MR.strings.theme_tealturquoise),
|
||||
|
|
|
|||
|
|
@ -24,8 +24,7 @@ import eu.kanade.presentation.components.TabbedDialog
|
|||
import eu.kanade.presentation.components.TabbedDialogPaddings
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.ui.library.LibrarySettingsScreenModel
|
||||
import eu.kanade.tachiyomi.util.system.isDevFlavor
|
||||
import eu.kanade.tachiyomi.util.system.isPreviewBuildType
|
||||
import eu.kanade.tachiyomi.util.system.isReleaseBuildType
|
||||
import kotlinx.collections.immutable.persistentListOf
|
||||
import kotlinx.collections.immutable.toImmutableList
|
||||
import kotlinx.coroutines.flow.map
|
||||
|
|
@ -141,10 +140,7 @@ private fun ColumnScope.FilterPage(
|
|||
onClick = { screenModel.toggleFilter(LibraryPreferences::filterCompleted) },
|
||||
)
|
||||
// TODO: re-enable when custom intervals are ready for stable
|
||||
if (
|
||||
(isDevFlavor || isPreviewBuildType) &&
|
||||
LibraryPreferences.MANGA_OUTSIDE_RELEASE_PERIOD in autoUpdateMangaRestrictions
|
||||
) {
|
||||
if ((!isReleaseBuildType) && LibraryPreferences.MANGA_OUTSIDE_RELEASE_PERIOD in autoUpdateMangaRestrictions) {
|
||||
val filterIntervalCustom by screenModel.libraryPreferences.filterIntervalCustom().collectAsState()
|
||||
TriStateItem(
|
||||
label = stringResource(MR.strings.action_filter_interval_custom),
|
||||
|
|
|
|||
|
|
@ -19,8 +19,7 @@ import androidx.compose.ui.Alignment
|
|||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.unit.DpSize
|
||||
import androidx.compose.ui.unit.dp
|
||||
import eu.kanade.tachiyomi.util.system.isDevFlavor
|
||||
import eu.kanade.tachiyomi.util.system.isPreviewBuildType
|
||||
import eu.kanade.tachiyomi.util.system.isReleaseBuildType
|
||||
import kotlinx.collections.immutable.toImmutableList
|
||||
import tachiyomi.domain.manga.interactor.FetchInterval
|
||||
import tachiyomi.i18n.MR
|
||||
|
|
@ -109,7 +108,7 @@ fun SetIntervalDialog(
|
|||
}
|
||||
Spacer(Modifier.height(MaterialTheme.padding.small))
|
||||
|
||||
if (onValueChanged != null && (isDevFlavor || isPreviewBuildType)) {
|
||||
if (onValueChanged != null && (!isReleaseBuildType)) {
|
||||
Text(stringResource(MR.strings.manga_interval_custom_amount))
|
||||
|
||||
BoxWithConstraints(
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ import eu.kanade.presentation.manga.DownloadAction
|
|||
import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceScreen
|
||||
import eu.kanade.tachiyomi.ui.browse.source.feed.SourceFeedScreen
|
||||
import eu.kanade.tachiyomi.ui.manga.MangaScreen
|
||||
import eu.kanade.tachiyomi.util.system.isDevFlavor
|
||||
import eu.kanade.tachiyomi.util.system.isDebugBuildType
|
||||
import kotlinx.collections.immutable.persistentListOf
|
||||
import tachiyomi.i18n.MR
|
||||
import tachiyomi.i18n.kmk.KMR
|
||||
|
|
@ -226,7 +226,7 @@ fun MangaToolbar(
|
|||
}
|
||||
// SY <--
|
||||
// KMK -->
|
||||
if (isDevFlavor) {
|
||||
if (isDebugBuildType) {
|
||||
add(
|
||||
AppBar.OverflowAction(
|
||||
title = "Colors Palette",
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ import androidx.lifecycle.LifecycleOwner
|
|||
import androidx.lifecycle.compose.LocalLifecycleOwner
|
||||
import eu.kanade.presentation.util.rememberRequestPackageInstallsPermissionState
|
||||
import eu.kanade.tachiyomi.core.security.PrivacyPreferences
|
||||
import eu.kanade.tachiyomi.util.system.analyticsIncluded
|
||||
import eu.kanade.tachiyomi.util.system.launchRequestPackageInstallsPermission
|
||||
import tachiyomi.i18n.MR
|
||||
import tachiyomi.i18n.kmk.KMR
|
||||
|
|
@ -182,6 +183,8 @@ internal class PermissionStep : OnboardingStep {
|
|||
color = MaterialTheme.colorScheme.onPrimaryContainer,
|
||||
)
|
||||
|
||||
if (!analyticsIncluded) return@Column
|
||||
|
||||
val crashlyticsPref = privacyPreferences.crashlytics()
|
||||
val crashlytics by crashlyticsPref.collectAsState()
|
||||
PermissionSwitch(
|
||||
|
|
|
|||
|
|
@ -63,8 +63,7 @@ import eu.kanade.tachiyomi.ui.more.OnboardingScreen
|
|||
import eu.kanade.tachiyomi.util.CrashLogUtil
|
||||
import eu.kanade.tachiyomi.util.storage.DiskUtil
|
||||
import eu.kanade.tachiyomi.util.system.GLUtil
|
||||
import eu.kanade.tachiyomi.util.system.isDevFlavor
|
||||
import eu.kanade.tachiyomi.util.system.isPreviewBuildType
|
||||
import eu.kanade.tachiyomi.util.system.isReleaseBuildType
|
||||
import eu.kanade.tachiyomi.util.system.isShizukuInstalled
|
||||
import eu.kanade.tachiyomi.util.system.powerManager
|
||||
import eu.kanade.tachiyomi.util.system.setDefaultSettings
|
||||
|
|
@ -479,10 +478,10 @@ object SettingsAdvancedScreen : SearchableSettings {
|
|||
entries = extensionInstallerPref.entries
|
||||
.filter {
|
||||
// TODO: allow private option in stable versions once URL handling is more fleshed out
|
||||
if (isPreviewBuildType || isDevFlavor) {
|
||||
true
|
||||
} else {
|
||||
if (isReleaseBuildType) {
|
||||
it != BasePreferences.ExtensionInstaller.PRIVATE
|
||||
} else {
|
||||
true
|
||||
}
|
||||
}
|
||||
.associateWith { stringResource(it.titleRes) }
|
||||
|
|
|
|||
|
|
@ -51,6 +51,7 @@ import eu.kanade.tachiyomi.ui.base.delegate.SecureActivityDelegate
|
|||
import eu.kanade.tachiyomi.ui.category.biometric.BiometricTimesScreen
|
||||
import eu.kanade.tachiyomi.util.system.AuthenticatorUtil.authenticate
|
||||
import eu.kanade.tachiyomi.util.system.AuthenticatorUtil.isAuthenticationSupported
|
||||
import eu.kanade.tachiyomi.util.system.analyticsIncluded
|
||||
import kotlinx.collections.immutable.persistentListOf
|
||||
import kotlinx.collections.immutable.toImmutableMap
|
||||
import mihon.core.archive.CbzCrypto
|
||||
|
|
@ -74,10 +75,11 @@ object SettingsSecurityScreen : SearchableSettings {
|
|||
override fun getPreferences(): List<Preference> {
|
||||
val securityPreferences = remember { Injekt.get<SecurityPreferences>() }
|
||||
val privacyPreferences = remember { Injekt.get<PrivacyPreferences>() }
|
||||
return listOf(
|
||||
getSecurityGroup(securityPreferences),
|
||||
getFirebaseGroup(privacyPreferences),
|
||||
)
|
||||
return buildList(2) {
|
||||
add(getSecurityGroup(securityPreferences))
|
||||
if (!analyticsIncluded) return@buildList
|
||||
add(getFirebaseGroup(privacyPreferences))
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ import eu.kanade.tachiyomi.ui.more.WhatsNewScreen
|
|||
import eu.kanade.tachiyomi.util.CrashLogUtil
|
||||
import eu.kanade.tachiyomi.util.lang.toDateTimestampString
|
||||
import eu.kanade.tachiyomi.util.system.copyToClipboard
|
||||
import eu.kanade.tachiyomi.util.system.isDevFlavor
|
||||
import eu.kanade.tachiyomi.util.system.isDebugBuildType
|
||||
import eu.kanade.tachiyomi.util.system.isReleaseBuildType
|
||||
import eu.kanade.tachiyomi.util.system.toast
|
||||
import kotlinx.coroutines.launch
|
||||
|
|
@ -185,7 +185,7 @@ object AboutScreen : Screen() {
|
|||
)
|
||||
}
|
||||
|
||||
if (isReleaseBuildType || isDevFlavor) {
|
||||
if (isReleaseBuildType || isDebugBuildType) {
|
||||
item {
|
||||
TextPreferenceWidget(
|
||||
title = stringResource(KMR.strings.whats_coming),
|
||||
|
|
|
|||
|
|
@ -58,6 +58,7 @@ import eu.kanade.tachiyomi.di.SYPreferenceModule
|
|||
import eu.kanade.tachiyomi.network.NetworkHelper
|
||||
import eu.kanade.tachiyomi.network.NetworkPreferences
|
||||
import eu.kanade.tachiyomi.ui.base.delegate.SecureActivityDelegate
|
||||
import eu.kanade.tachiyomi.util.CrashLogUtil
|
||||
import eu.kanade.tachiyomi.util.system.DeviceUtil
|
||||
import eu.kanade.tachiyomi.util.system.GLUtil
|
||||
import eu.kanade.tachiyomi.util.system.WebViewUtil
|
||||
|
|
@ -357,19 +358,7 @@ class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.Factor
|
|||
)
|
||||
|
||||
xLogD("Application booting...")
|
||||
xLogD(
|
||||
"""
|
||||
App version: ${BuildConfig.VERSION_NAME} (${BuildConfig.FLAVOR}, ${BuildConfig.COMMIT_SHA}, ${BuildConfig.VERSION_CODE})
|
||||
Build version: ${BuildConfig.COMMIT_COUNT}
|
||||
Android version: ${Build.VERSION.RELEASE} (SDK ${Build.VERSION.SDK_INT})
|
||||
Android build ID: ${Build.DISPLAY}
|
||||
Device brand: ${Build.BRAND}
|
||||
Device manufacturer: ${Build.MANUFACTURER}
|
||||
Device name: ${Build.DEVICE}
|
||||
Device model: ${Build.MODEL}
|
||||
Device product name: ${Build.PRODUCT}
|
||||
""".trimIndent(),
|
||||
)
|
||||
xLogD(CrashLogUtil(applicationContext).getDebugInfo())
|
||||
}
|
||||
|
||||
private inner class DisableIncognitoReceiver : BroadcastReceiver() {
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import eu.kanade.tachiyomi.core.security.PrivacyPreferences
|
|||
import eu.kanade.tachiyomi.core.security.SecurityPreferences
|
||||
import eu.kanade.tachiyomi.network.NetworkPreferences
|
||||
import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences
|
||||
import eu.kanade.tachiyomi.util.system.isDevFlavor
|
||||
import eu.kanade.tachiyomi.util.system.isDebugBuildType
|
||||
import tachiyomi.core.common.preference.AndroidPreferenceStore
|
||||
import tachiyomi.core.common.preference.PreferenceStore
|
||||
import tachiyomi.core.common.storage.AndroidStorageFolderProvider
|
||||
|
|
@ -32,7 +32,7 @@ class PreferenceModule(val app: Application) : InjektModule {
|
|||
addSingletonFactory {
|
||||
NetworkPreferences(
|
||||
preferenceStore = get(),
|
||||
verboseLogging = isDevFlavor,
|
||||
verboseLogging = isDebugBuildType,
|
||||
)
|
||||
}
|
||||
addSingletonFactory {
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ class CrashLogUtil(
|
|||
|
||||
fun getDebugInfo(): String {
|
||||
return """
|
||||
App version: ${BuildConfig.VERSION_NAME} (${BuildConfig.FLAVOR}, ${BuildConfig.COMMIT_SHA}, ${BuildConfig.VERSION_CODE}, ${BuildConfig.BUILD_TIME})
|
||||
App version: ${BuildConfig.VERSION_NAME} (${BuildConfig.COMMIT_SHA}, ${BuildConfig.VERSION_CODE}, ${BuildConfig.BUILD_TIME})
|
||||
Build version: ${BuildConfig.COMMIT_COUNT}
|
||||
Android version: ${Build.VERSION.RELEASE} (SDK ${Build.VERSION.SDK_INT}; build ${Build.DISPLAY})
|
||||
Device brand: ${Build.BRAND}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,17 @@
|
|||
@file:Suppress("UNUSED", "KotlinConstantConditions")
|
||||
|
||||
package eu.kanade.tachiyomi.util.system
|
||||
|
||||
import eu.kanade.tachiyomi.BuildConfig
|
||||
|
||||
val isDevFlavor: Boolean
|
||||
get() = BuildConfig.FLAVOR == "dev"
|
||||
val analyticsIncluded: Boolean
|
||||
inline get() = BuildConfig.INCLUDE_ANALYTICS
|
||||
|
||||
val isDebugBuildType: Boolean
|
||||
inline get() = BuildConfig.BUILD_TYPE == "debug"
|
||||
|
||||
val isPreviewBuildType: Boolean
|
||||
get() = BuildConfig.BUILD_TYPE == "preview"
|
||||
inline get() = BuildConfig.BUILD_TYPE == "preview"
|
||||
|
||||
val isReleaseBuildType: Boolean
|
||||
get() = BuildConfig.BUILD_TYPE == "release"
|
||||
inline get() = BuildConfig.BUILD_TYPE == "release"
|
||||
|
|
|
|||
|
|
@ -171,7 +171,7 @@ fun Context.isInstalledFromFDroid(): Boolean {
|
|||
|
||||
return installerPackageName == "org.fdroid.fdroid" ||
|
||||
// F-Droid builds typically disable the updater
|
||||
(!BuildConfig.INCLUDE_UPDATER && !isDevFlavor)
|
||||
(!BuildConfig.INCLUDE_UPDATER && !isDebugBuildType)
|
||||
}
|
||||
|
||||
fun Context.launchRequestPackageInstallsPermission() {
|
||||
|
|
|
|||
Loading…
Reference in a new issue