diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml new file mode 100644 index 0000000..9ccee7f --- /dev/null +++ b/.github/workflows/android.yml @@ -0,0 +1,56 @@ +name: android + +on: + workflow_dispatch: + push: + branches: + - main + +jobs: + build: + runs-on: ubuntu-latest + + steps: + + - uses: actions/checkout@v3 + + - uses: subosito/flutter-action@v2 + + - name: Build APKs + run: | + sed -i 's/signingConfig signingConfigs.release//g' android/app/build.gradle + flutter build apk && flutter build apk --split-per-abi + + - name: Sign APKs + env: + KEYSTORE_BASE64: ${{ secrets.KEYSTORE_BASE64 }} + KEYSTORE_PASS: ${{ secrets.KEYSTORE_PASS }} + run: | + echo "${KEYSTORE_BASE64}" | base64 -d > apksign.keystore + for apk in ./build/app/outputs/flutter-apk/*-release*.apk; do + out=${apk/-release/-release-signed} + ${ANDROID_HOME}/build-tools/30.0.2/apksigner sign --ks apksign.keystore --ks-pass env:KEYSTORE_PASS --out "${out}" "${apk}" + echo "$(sha256sum ${out})" + done + rm apksign.keystore + + - name: Extract Version + id: extract_version + run: | + VERSION=$(grep -oP "currentVersion = '\K[^']+" lib/main.dart) + echo "::set-output name=version::$VERSION" + + - name: Create Release And Upload APKs + uses: ncipollo/release-action@v1 + with: + token: ${{ secrets.GAT }} + tag: "v${{ steps.extract_version.outputs.version }}-beta" + prerelease: true + artifacts: ./build/app/outputs/flutter-apk/*-signed*.apk + + - name: Archive Reports For Job + uses: actions/upload-artifact@v3 + with: + name: reports + path: '*/build/reports' + if: ${{ always() }} diff --git a/assets/translations/de.json b/assets/translations/de.json index 462f3a4..bf8198f 100644 --- a/assets/translations/de.json +++ b/assets/translations/de.json @@ -122,15 +122,15 @@ "ascending": "Aufsteigend", "descending": "Absteigend", "bgUpdateCheckInterval": "Prüfintervall für Hintergrundaktualisierung", - "neverManualOnly": "Nie - nur manuell", + "neverManualOnly": "Nie – nur manuell", "appearance": "Aussehen", "showWebInAppView": "Quellwebseite in der App-Ansicht anzeigen", "pinUpdates": "Apps mit Aktualisierungen oben anheften", "updates": "Aktualisierungen", "sourceSpecific": "Quellenspezifisch", "appSource": "App-Quelle", - "noLogs": "Keine Protokolle", - "appLogs": "App Protokolle", + "noLogs": "Keine Logs", + "appLogs": "App-Logs", "close": "Schließen", "share": "Teilen", "appNotFound": "App nicht gefunden", @@ -256,25 +256,25 @@ "filterVersionsByRegEx": "Versionen nach regulären Ausdrücken filtern", "trySelectingSuggestedVersionCode": "Versuchen, die vorgeschlagene APK-Code-Version auszuwählen", "dontSortReleasesList": "Retain release order from API", - "reverseSort": "Reverse sorting", - "debugMenu": "Debug Menu", - "bgTaskStarted": "Background task started - check logs.", - "runBgCheckNow": "Run Background Update Check Now", + "reverseSort": "Umgekehrtes Sortieren", + "debugMenu": "Debug Menü", + "bgTaskStarted": "Hintergrundaufgabe gestartet – Logs prüfen.", + "runBgCheckNow": "Hintergrundaktualisierungsprüfung jetzt durchführen", "removeAppQuestion": { "one": "App entfernen?", "other": "Apps entfernen?" }, "tooManyRequestsTryAgainInMinutes": { - "one": "Zu viele Anfragen (Rate begrenzt) - versuchen Sie es in {} Minute erneut", - "other": "Zu viele Anfragen (Rate begrenzt) - versuchen Sie es in {} Minuten erneut" + "one": "Zu viele Anfragen (Rate begrenzt) – versuchen Sie es in {} Minute erneut", + "other": "Zu viele Anfragen (Rate begrenzt) – versuchen Sie es in {} Minuten erneut" }, "bgUpdateGotErrorRetryInMinutes": { "one": "Bei der Aktualisierungsprüfung im Hintergrund wurde ein {} festgestellt, eine erneute Prüfung wird in {} Minute geplant", "other": "Bei der Aktualisierungsprüfung im Hintergrund wurde ein {} festgestellt, eine erneute Prüfung wird in {} Minuten geplant" }, "bgCheckFoundUpdatesWillNotifyIfNeeded": { - "one": "Hintergrundaktualisierungsprüfung fand {} Aktualisierung - benachrichtigt den Benutzer, falls erforderlich", - "other": "Hintergrundaktualisierungsprüfung fand {} Aktualisierungen - benachrichtigt den Benutzer, falls erforderlich" + "one": "Die Hintergrundaktualisierungsprüfung fand {} Aktualisierung – benachrichtigt den Benutzer, falls erforderlich", + "other": "Die Hintergrundaktualisierungsprüfung fand {} Aktualisierungen – benachrichtigt den Benutzer, falls erforderlich" }, "apps": { "one": "{} App", @@ -297,8 +297,8 @@ "other": "{} Tage" }, "clearedNLogsBeforeXAfterY": { - "one": "{n} Protokoll gelöscht (vorher = {vorher}, nachher = {nachher})", - "other": "{n} Protokolle gelöscht (vorher = {vorher}, nachher = {nachher})" + "one": "{n} Log gelöscht (vorher = {vorher}, nachher = {nachher})", + "other": "{n} Logs gelöscht (vorher = {vorher}, nachher = {nachher})" }, "xAndNMoreUpdatesAvailable": { "one": "{} und 1 weitere App haben Aktualisierungen.",