Skip to content

feat(koin): 重构Koin模块和依赖注入 #704

feat(koin): 重构Koin模块和依赖注入

feat(koin): 重构Koin模块和依赖注入 #704

Workflow file for this run

name: Dev Builds
on:
push:
branches:
- develop
- 'feature/**'
workflow_dispatch:
inputs:
name:
description: "Dev-Build"
default: "Generate dev build"
jobs:
android-foss:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v6
- name: Setup Java
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: 25
cache: 'gradle'
- name: Setup Android SDK
uses: android-actions/setup-android@v3
- name: Set up gradle
uses: gradle/actions/setup-gradle@v5
- name: Decode Keystore
env:
ENCODED_STRING: ${{ secrets.KEYSTORE_BASE_64 }}
run: |
echo $ENCODED_STRING > keystore-b64.txt
base64 -d keystore-b64.txt > pipixiv.jks
- name: Build Foss Release apk
env:
RELEASE_KEYSTORE_PASSWORD: ${{ secrets.RELEASE_KEYSTORE_PASSWORD }}
RELEASE_KEYSTORE_ALIAS: ${{ secrets.RELEASE_KEYSTORE_ALIAS }}
RELEASE_KEY_PASSWORD: ${{ secrets.RELEASE_KEY_PASSWORD }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
run: |
sed -i -e '/firebase/d' -e '/google.services/d' {.,app}/build.gradle.kts
sed -i '/foojay/d' settings.gradle.kts
./gradlew assembleRelease -PapplyFirebasePlugins=false -Pdebug=false --stacktrace
- name: Upload Android Artifacts
uses: actions/upload-artifact@v7
with:
name: android-foss-apk
path: |
app/release/foss/*.apk
android-default:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v6
- name: Setup Java
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: 25
cache: 'gradle'
- name: Setup Android SDK
uses: android-actions/setup-android@v3
- name: Set up gradle
uses: gradle/actions/setup-gradle@v5
- name: Decode Keystore
env:
ENCODED_STRING: ${{ secrets.KEYSTORE_BASE_64 }}
run: |
echo $ENCODED_STRING > keystore-b64.txt
base64 -d keystore-b64.txt > pipixiv.jks
- name: Add Google Services
env:
GOOGLE_SERVICE_JSON: ${{ secrets.GOOGLE_SERVICES_JSON }}
run: |
echo $GOOGLE_SERVICE_JSON > app/google-services.json
- name: Add Kotzilla Sdk
env:
KOTZILLA_SDK_JSON: ${{ secrets.KOTZILLA_SDK_JSON }}
KOTZILLA_SDK_API_KEY: ${{ secrets.KOTZILLA_SDK_API_KEY }}
run: |
echo $KOTZILLA_SDK_JSON > common/analytics-default/kotzilla.json
sed -i "s/setApiKey.*/setApiKey(\"$KOTZILLA_SDK_API_KEY\")/" common/analytics-default/src/commonMain/kotlin/com/mrl/pixiv/common/analytics/Kotzilla.kt
- name: Build Default Release apk
env:
RELEASE_KEYSTORE_PASSWORD: ${{ secrets.RELEASE_KEYSTORE_PASSWORD }}
RELEASE_KEYSTORE_ALIAS: ${{ secrets.RELEASE_KEYSTORE_ALIAS }}
RELEASE_KEY_PASSWORD: ${{ secrets.RELEASE_KEY_PASSWORD }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
run: |
./gradlew assembleRelease -PapplyFirebasePlugins=true -Pdebug=false --stacktrace
- name: Upload Android Artifacts
uses: actions/upload-artifact@v7
with:
name: android-default-apk
path: |
app/release/default/*.apk
desktop-linux:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v6
- name: Setup Java
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: 25
cache: 'gradle'
- name: Set up gradle
uses: gradle/actions/setup-gradle@v5
- name: Add Kotzilla Sdk
env:
KOTZILLA_SDK_JSON: ${{ secrets.KOTZILLA_SDK_JSON }}
KOTZILLA_SDK_API_KEY: ${{ secrets.KOTZILLA_SDK_API_KEY }}
run: |
echo $KOTZILLA_SDK_JSON > common/analytics-default/kotzilla.json
sed -i "s/setApiKey.*/setApiKey(\"$KOTZILLA_SDK_API_KEY\")/" common/analytics-default/src/commonMain/kotlin/com/mrl/pixiv/common/analytics/Kotzilla.kt
- name: Build Linux Distributions
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
run: ./gradlew packageReleaseAppImage -Pdebug=false
- name: Package Linux Distribution
run: |
cd composeApp/build/compose/binaries/main-release
tar -czf PiPixiv-linux-x86_64.tar.gz -C app .
- name: Upload Linux Artifacts
uses: actions/upload-artifact@v7
with:
name: linux-artifacts
path: composeApp/build/compose/binaries/main-release/PiPixiv-linux-x86_64.tar.gz
desktop-windows:
runs-on: windows-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v6
- name: Setup Java
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: 25
cache: 'gradle'
- name: Set up gradle
uses: gradle/actions/setup-gradle@v5
- name: Add Kotzilla Sdk
env:
KOTZILLA_SDK_JSON: ${{ secrets.KOTZILLA_SDK_JSON }}
KOTZILLA_SDK_API_KEY: ${{ secrets.KOTZILLA_SDK_API_KEY }}
run: |
$env:KOTZILLA_SDK_JSON | Out-File -FilePath common/analytics-default/kotzilla.json -Encoding utf8
$path = "common/analytics-default/src/commonMain/kotlin/com/mrl/pixiv/common/analytics/Kotzilla.kt"
(Get-Content $path) -replace 'setApiKey.*', "setApiKey(`"$env:KOTZILLA_SDK_API_KEY`")" | Set-Content $path
- name: Build Windows Distribution
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
run: ./gradlew packageReleaseMsi -Pdebug=false
- name: Upload Windows Artifacts
uses: actions/upload-artifact@v7
with:
name: windows-artifacts
path: composeApp/build/compose/binaries/main-release/msi/*.msi
desktop-macos:
runs-on: macos-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v6
- name: Setup Java
uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version: 25
cache: 'gradle'
- name: Set up gradle
uses: gradle/actions/setup-gradle@v5
- name: Add Kotzilla Sdk
env:
KOTZILLA_SDK_JSON: ${{ secrets.KOTZILLA_SDK_JSON }}
KOTZILLA_SDK_API_KEY: ${{ secrets.KOTZILLA_SDK_API_KEY }}
run: |
echo "$KOTZILLA_SDK_JSON" > common/analytics-default/kotzilla.json
sed -i '' "s/setApiKey.*/setApiKey(\"$KOTZILLA_SDK_API_KEY\")/" common/analytics-default/src/commonMain/kotlin/com/mrl/pixiv/common/analytics/Kotzilla.kt
- name: Build MacOS Distribution
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
run: ./gradlew packageReleaseDmg -Pdebug=false
- name: Upload MacOS Artifacts
uses: actions/upload-artifact@v7
with:
name: macos-artifacts
path: composeApp/build/compose/binaries/main-release/dmg/*.dmg
ios:
runs-on: macos-26
steps:
- name: Checkout Repository
uses: actions/checkout@v6
- name: Setup Java
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: 25
cache: 'gradle'
- name: Set up gradle
uses: gradle/actions/setup-gradle@v5
- name: Add Kotzilla Sdk
env:
KOTZILLA_SDK_JSON: ${{ secrets.KOTZILLA_SDK_JSON }}
KOTZILLA_SDK_API_KEY: ${{ secrets.KOTZILLA_SDK_API_KEY }}
run: |
echo "$KOTZILLA_SDK_JSON" > common/analytics-default/kotzilla.json
sed -i '' "s/setApiKey.*/setApiKey(\"$KOTZILLA_SDK_API_KEY\")/" common/analytics-default/src/commonMain/kotlin/com/mrl/pixiv/common/analytics/Kotzilla.kt
- name: Setup CocoaPods
uses: maxim-lobanov/setup-cocoapods@v1
with:
version: 1.16.1
- name: Link Dependencies
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
run: |
./gradlew :composeApp:generateDummyFramework
./gradlew :composeApp:podspec
- name: Build iOS IPA
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
run: |
cd iosApp
pod install --repo-update
cd ..
./gradlew :composeApp:buildReleaseIpa
echo "PiPixiv.ipa path: $(pwd)/PiPixiv.ipa"
- name: Upload iOS Artifacts
uses: actions/upload-artifact@v7
with:
name: ios-artifacts
path: composeApp/build/archives/release/PiPixiv.ipa
release:
needs: [ android-foss, android-default, desktop-linux, desktop-windows, desktop-macos, ios ]
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v6
- name: Download all artifacts
uses: actions/download-artifact@v8
with:
path: artifacts
- name: Get tag name
run: echo "VERSION_TAG=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV
- name: Rename release artifacts
run: |
mv artifacts/android-foss-apk/*.apk artifacts/android-foss-apk/PiPixiv-${VERSION_TAG}-android-foss.apk
mv artifacts/android-default-apk/*.apk artifacts/android-default-apk/PiPixiv-${VERSION_TAG}-android-default.apk
mv artifacts/linux-artifacts/PiPixiv-linux-x86_64.tar.gz artifacts/linux-artifacts/PiPixiv-${VERSION_TAG}-linux-x86_64.tar.gz
mv artifacts/windows-artifacts/*.msi artifacts/windows-artifacts/PiPixiv-${VERSION_TAG}-windows-x86_64.msi
mv artifacts/macos-artifacts/*.dmg artifacts/macos-artifacts/PiPixiv-${VERSION_TAG}-macos-arm64.dmg
mv artifacts/ios-artifacts/*.ipa artifacts/ios-artifacts/PiPixiv-${VERSION_TAG}-ios.ipa
- name: Create Release
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
with:
tag_name: ${{ env.VERSION_TAG }}
name: PiPixiv ${{ env.VERSION_TAG }}
body: |
Release ${{ env.VERSION_TAG }}
draft: true
prerelease: false
files: |
artifacts/android-foss-apk/**/*.apk
artifacts/android-default-apk/**/*.apk
artifacts/linux-artifacts/**/*.tar.gz
artifacts/windows-artifacts/**/*.msi
artifacts/macos-artifacts/**/*.dmg
artifacts/ios-artifacts/*.ipa