diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2692a13..22362c2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,7 +17,6 @@ jobs: - uses: subosito/flutter-action@v2 with: channel: stable - flutter-version: 3.24.5 - uses: actions/setup-java@v4 with: distribution: 'temurin' # See 'Supported distributions' for available options diff --git a/.gitignore b/.gitignore index 15aa17f..4c8ac57 100644 --- a/.gitignore +++ b/.gitignore @@ -5,9 +5,11 @@ *.swp .DS_Store .atom/ +.build/ .buildlog/ .history .svn/ +.swiftpm/ migrate_working_dir/ .vscode/ diff --git a/.metadata b/.metadata index e185b94..b02a7e4 100644 --- a/.metadata +++ b/.metadata @@ -1,11 +1,11 @@ # This file tracks properties of this Flutter project. # Used by Flutter tool to assess capabilities and perform upgrades etc. # -# This file should be version controlled. +# This file should be version controlled and should not be manually edited. version: - revision: 543dac2f35de563fcb6905e9146bdce712c44000 - channel: master + revision: "17025dd88227cd9532c33fa78f5250d548d87e9a" + channel: "stable" project_type: app @@ -13,14 +13,26 @@ project_type: app migration: platforms: - platform: root - create_revision: 543dac2f35de563fcb6905e9146bdce712c44000 - base_revision: 543dac2f35de563fcb6905e9146bdce712c44000 + create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a + base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a - platform: android - create_revision: 543dac2f35de563fcb6905e9146bdce712c44000 - base_revision: 543dac2f35de563fcb6905e9146bdce712c44000 + create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a + base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a - platform: ios - create_revision: 543dac2f35de563fcb6905e9146bdce712c44000 - base_revision: 543dac2f35de563fcb6905e9146bdce712c44000 + create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a + base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a + - platform: linux + create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a + base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a + - platform: macos + create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a + base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a + - platform: web + create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a + base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a + - platform: windows + create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a + base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a # User provided section diff --git a/analysis_options.yaml b/analysis_options.yaml index 61b6c4d..0d29021 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -13,8 +13,7 @@ linter: # The lint rules applied to this project can be customized in the # section below to disable rules from the `package:flutter_lints/flutter.yaml` # included above or to enable additional rules. A list of all available lints - # and their documentation is published at - # https://dart-lang.github.io/linter/lints/index.html. + # and their documentation is published at https://dart.dev/lints. # # Instead of disabling a lint rule for the entire project in the # section below, it can also be suppressed for a single line of code diff --git a/android/.gitignore b/android/.gitignore index 6f56801..55afd91 100644 --- a/android/.gitignore +++ b/android/.gitignore @@ -7,7 +7,7 @@ gradle-wrapper.jar GeneratedPluginRegistrant.java # Remember to never publicly share your keystore. -# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app +# See https://flutter.dev/to/reference-keystore key.properties **/*.keystore **/*.jks diff --git a/android/app/build.gradle b/android/app/build.gradle index c5a7cdd..d6c5d7b 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -1,6 +1,7 @@ plugins { id "com.android.application" id "kotlin-android" + // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. id "dev.flutter.flutter-gradle-plugin" } @@ -29,33 +30,30 @@ if (keystorePropertiesFile.exists()) { } android { - namespace "dev.imranr.obtainium" - compileSdk flutter.compileSdkVersion - ndkVersion flutter.ndkVersion + namespace = "dev.imranr.obtainium" + compileSdk = flutter.compileSdkVersion + ndkVersion = flutter.ndkVersion compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 } kotlinOptions { - jvmTarget = '1.8' - } - - sourceSets { - main.java.srcDirs += 'src/main/kotlin' + jvmTarget = JavaVersion.VERSION_1_8 } defaultConfig { - applicationId "dev.imranr.obtainium" + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId = "dev.imranr.obtainium" // You can update the following values to match your application needs. - // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration. - minSdkVersion 24 - targetSdkVersion flutter.targetSdkVersion - versionCode flutterVersionCode.toInteger() - versionName flutterVersionName + // For more information, see: https://flutter.dev/to/review-gradle-config. + minSdk = 24 + targetSdk = flutter.targetSdkVersion + versionCode = flutter.versionCode + versionName = flutter.versionName } - + flavorDimensions "flavor" productFlavors { @@ -77,6 +75,7 @@ android { storePassword keystoreProperties['storePassword'] } } + buildTypes { release { signingConfig signingConfigs.release @@ -89,11 +88,7 @@ android { } flutter { - source '../..' -} - -repositories { - maven { url 'https://jitpack.io' } + source = "../.." } ext.abiCodes = ["x86_64": 1, "armeabi-v7a": 2, "arm64-v8a": 3] diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 6ce6efa..d461e3b 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -12,6 +12,7 @@ android:name=".MainActivity" android:exported="true" android:launchMode="singleTop" + android:taskAffinity="" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" @@ -21,12 +22,12 @@ while the Flutter UI initializes. After that, this theme continues to determine the Window background behind the Flutter UI. --> + android:name="io.flutter.embedding.android.NormalTheme" + android:resource="@style/NormalTheme" + /> - - + + - @@ -71,6 +71,17 @@ \ + android:maxSdkVersion="29" /> + + + + + + + diff --git a/android/build.gradle b/android/build.gradle index 89b0d75..b3f11e5 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -9,12 +9,12 @@ allprojects { } } -rootProject.buildDir = '../build' +rootProject.buildDir = "../build" subprojects { project.buildDir = "${rootProject.buildDir}/${project.name}" } subprojects { - project.evaluationDependsOn(':app') + project.evaluationDependsOn(":app") } tasks.register("clean", Delete) { diff --git a/android/gradle.properties b/android/gradle.properties index f622fd8..2597170 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,3 +1,3 @@ -org.gradle.jvmargs=-Xmx2048M +org.gradle.jvmargs=-Xmx4G -XX:MaxMetaspaceSize=2G -XX:+HeapDumpOnOutOfMemoryError android.useAndroidX=true android.enableJetifier=true diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 3c472b9..7bb2df6 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip diff --git a/android/settings.gradle b/android/settings.gradle index 5fd7f48..b9e43bd 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -18,8 +18,8 @@ pluginManagement { plugins { id "dev.flutter.flutter-plugin-loader" version "1.0.0" - id "com.android.application" version "7.4.2" apply false - id "org.jetbrains.kotlin.android" version "1.8.10" apply false + id "com.android.application" version "8.1.0" apply false + id "org.jetbrains.kotlin.android" version "1.8.22" apply false } include ":app" diff --git a/assets/translations/de.json b/assets/translations/de.json index 9025562..aa50346 100644 --- a/assets/translations/de.json +++ b/assets/translations/de.json @@ -31,9 +31,9 @@ "xIsTrackOnly": "{} ist nur zur Nachverfolgung", "source": "Quelle", "app": "App", - "appsFromSourceAreTrackOnly": "Apps aus dieser Quelle sind nur zur Nachverfolgung.", - "youPickedTrackOnly": "Sie haben die Option „Nur nachverfolgen“ gewählt.", - "trackOnlyAppDescription": "Die App wird auf Aktualisierungen überwacht, aber Obtainium wird sie nicht herunterladen oder installieren.", + "appsFromSourceAreTrackOnly": "Apps aus dieser Quelle sind nur zur Versionsüberwachung.", + "youPickedTrackOnly": "Du hast die Option „Nur nachverfolgen“ gewählt.", + "trackOnlyAppDescription": "Die App wird auf neue verfügbare Versionen überwacht, aber Obtainium wird sie nicht herunterladen oder installieren.", "cancelled": "Abgebrochen", "appAlreadyAdded": "App bereits hinzugefügt", "alreadyUpToDateQuestion": "App bereits auf dem neuesten Stand?", @@ -85,8 +85,8 @@ "filter": "Filter", "filterApps": "Apps filtern", "appName": "App-Name", - "author": "Autor", - "upToDateApps": "Apps mit aktueller Version", + "author": "Autor:in", + "upToDateApps": "Apps mit aktuellster Version", "nonInstalledApps": "Nicht installierte Apps", "importExport": "Import/Export", "settings": "Einstellungen", @@ -102,7 +102,7 @@ "searchX": "{} suchen", "noResults": "Keine Ergebnisse gefunden", "importX": "{} importieren", - "importedAppsIdDisclaimer": "Importierte Apps werden manchmal fälschlicherweise als „Nicht installiert“ angezeigt. Um dies zu beheben, installieren Sie sie erneut über Obtainium. Dies hat keine Auswirkungen auf App-Daten. Es betrifft nur URL- und Drittanbieter-Importmethoden.", + "importedAppsIdDisclaimer": "Importierte Apps werden manchmal fälschlicherweise als „Nicht installiert“ angezeigt. Um dies zu beheben, installiere sie erneut über Obtainium. Dies hat keine Auswirkungen auf App-Daten. Es betrifft nur URL- und Drittanbieter-Importmethoden.", "importErrors": "Importfehler", "importedXOfYApps": "{} von {} Apps importiert.", "followingURLsHadErrors": "Bei folgenden URLs traten Fehler auf:", @@ -112,12 +112,12 @@ "theme": "Theme", "dark": "Dunkel", "light": "Hell", - "followSystem": "System folgen", - "followSystemThemeExplanation": "Das Folgen des Systemthemes ist unter Android < 10 nur mit Hilfe von Drittanbieterapps möglich", + "followSystem": "Systemstandard", + "followSystemThemeExplanation": "Das Abrufen des Systemdesigns ist unter Android < 10 nur mit Hilfe von Drittanbieterapps möglich", "useBlackTheme": "Rein schwarzen Hintergrund verwenden", "appSortBy": "App sortieren nach", - "authorName": "Autor/Name", - "nameAuthor": "Name/Autor", + "authorName": "Autor:in/Name", + "nameAuthor": "Name/Autor:in", "asAdded": "Wie hinzugefügt", "appSortOrder": "App sortieren nach", "ascending": "Aufsteigend", @@ -138,30 +138,30 @@ "obtainiumExportHyphenatedLowercase": "Obtainium-Export", "pickAnAPK": "APK auswählen", "appHasMoreThanOnePackage": "{} verfügt über mehr als ein Paket:", - "deviceSupportsXArch": "Ihr Gerät unterstützt die CPU-Architektur {}.", - "deviceSupportsFollowingArchs": "Ihr Gerät unterstützt die folgenden CPU-Architekturen:", + "deviceSupportsXArch": "Dein Gerät unterstützt die CPU-Architektur {}.", + "deviceSupportsFollowingArchs": "Dein Gerät unterstützt die folgenden CPU-Architekturen:", "warning": "Warnung", "sourceIsXButPackageFromYPrompt": "Die App-Quelle ist '{}', aber das Release-Paket stammt von '{}'. Fortfahren?", "updatesAvailable": "Aktualisierungen verfügbar", - "updatesAvailableNotifDescription": "Benachrichtigt den Nutzer, dass Aktualisierungen für eine oder mehrere von Obtainium verfolgte Apps verfügbar sind", + "updatesAvailableNotifDescription": "Benachrichtigt, wenn Aktualisierungen für eine oder mehrere von Obtainium verfolgte Apps verfügbar sind", "noNewUpdates": "Keine neuen Aktualisierungen.", "xHasAnUpdate": "{} hat eine Aktualisierung.", "appsUpdated": "App wurde aktualisiert", "appsNotUpdated": "Aktualisierung der Apps fehlgeschlagen", - "appsUpdatedNotifDescription": "Benachrichtigt den Benutzer, dass Aktualisierungen für eine oder mehrere Apps im Hintergrund durchgeführt wurden", + "appsUpdatedNotifDescription": "Benachrichtigt, wenn Aktualisierungen für eine oder mehrere Apps im Hintergrund durchgeführt wurden", "xWasUpdatedToY": "{} wurde auf {} aktualisiert.", "xWasNotUpdatedToY": "Die Aktualisierung von {} auf {} ist fehlgeschlagen.", "errorCheckingUpdates": "Fehler beim Prüfen auf Aktualisierungen", - "errorCheckingUpdatesNotifDescription": "Eine Benachrichtigung, die angezeigt wird, wenn die Prüfung der Hintergrundaktualisierung fehlschlägt", + "errorCheckingUpdatesNotifDescription": "Weist darauf hin, dass die Prüfung der Hintergrundaktualisierung fehlgeschlagen ist", "appsRemoved": "Apps entfernt", - "appsRemovedNotifDescription": "Benachrichtigt den Benutzer, dass eine oder mehrere Apps aufgrund von Fehlern beim Laden entfernt wurden", + "appsRemovedNotifDescription": "Weist darauf hin, dass eine oder mehrere Apps aufgrund von Fehlern beim Laden entfernt wurden", "xWasRemovedDueToErrorY": "{} wurde aufgrund des folgenden Fehlers entfernt: {}", "completeAppInstallation": "App-Installation abschließen", "obtainiumMustBeOpenToInstallApps": "Obtainium muss geöffnet sein, um Apps zu installieren", - "completeAppInstallationNotifDescription": "Aufforderung an den Benutzer, zu Obtainium zurückzukehren, um die Installation einer App abzuschließen", + "completeAppInstallationNotifDescription": "Aufforderung zu Obtainium zurückzukehren, um die Installation einer App abzuschließen", "checkingForUpdates": "Nach Aktualisierungen suchen", "checkingForUpdatesNotifDescription": "Vorübergehende Benachrichtigung, die bei der Suche nach Aktualisierungen angezeigt wird", - "pleaseAllowInstallPerm": "Bitte erlauben Sie Obtainium die Installation von Apps", + "pleaseAllowInstallPerm": "Bitte erlaube Obtainium die Installation von Apps", "trackOnly": "Nur nachverfolgen", "errorWithHttpStatusCode": "Fehler {}", "versionCorrectionDisabled": "Versionskorrektur deaktiviert (Plugin scheint nicht zu funktionieren)", @@ -190,7 +190,7 @@ "downloadX": "{} herunterladen", "downloadedX": "{} heruntergeladen", "releaseAsset": "Release-Asset", - "downloadNotifDescription": "Benachrichtigt den Nutzer über den Fortschritt beim Herunterladen einer App", + "downloadNotifDescription": "Zeigt den Fortschritt beim Herunterladen einer App", "noAPKFound": "Keine APK gefunden", "noVersionDetection": "Keine Versionserkennung", "categorize": "Kategorisieren", @@ -223,7 +223,7 @@ "autoApkFilterByArch": "Nach Möglichkeit versuchen, APKs nach CPU-Architektur zu filtern", "overrideSource": "Quelle überschreiben", "dontShowAgain": "Nicht noch einmal anzeigen", - "dontShowTrackOnlyWarnings": "Warnung für 'Nur nachverfolgen' nicht anzeigen", + "dontShowTrackOnlyWarnings": "Warnung für „Nur nachverfolgen“ nicht anzeigen", "dontShowAPKOriginWarnings": "Warnung für APK-Herkunft nicht anzeigen", "moveNonInstalledAppsToBottom": "Nicht installierte Apps ans Ende der App-Ansicht verschieben", "gitlabPATLabel": "Persönlicher Zugangstoken für GitLab", @@ -231,7 +231,7 @@ "requiresCredentialsInSettings": "{}: Benötigt zusätzliche Anmeldedaten (in den Einstellungen)", "checkOnStart": "Einmalig beim Start überprüfen", "tryInferAppIdFromCode": "Versuchen, die App-ID aus dem Quellcode zu ermitteln", - "removeOnExternalUninstall": "Automatisches Entfernen von extern deinstallierten Apps", + "removeOnExternalUninstall": "Extern deinstallierte Apps automatische entfernen", "pickHighestVersionCode": "Automatische Auswahl des APK mit höchstem Versionscode", "checkUpdateOnDetailPage": "Nach Aktualisierungen suchen, wenn eine App-Detailseite geöffnet wird", "disablePageTransitions": "Animationen für Seitenübergänge deaktivieren", @@ -241,10 +241,10 @@ "addInfoInSettings": "Diese Information in den Einstellungen hinzufügen.", "githubSourceNote": "Die GitHub-Ratenbegrenzung kann mit einem API-Schlüssel umgangen werden.", "sortByLastLinkSegment": "Nur nach dem letzten Teil des Links sortieren", - "filterReleaseNotesByRegEx": "Versionshinweise nach regulärem Ausdruck filtern", + "filterReleaseNotesByRegEx": "Versionshinweise nach regulärem Ausdruck\nfiltern", "customLinkFilterRegex": "Benutzerdefinierter APK-Linkfilter durch regulären Ausdruck (Standard '.apk$')", "appsPossiblyUpdated": "App-Aktualisierungen wurden versucht", - "appsPossiblyUpdatedNotifDescription": "Benachrichtigt den Benutzer, dass Aktualisierungen für eine oder mehrere Apps möglicherweise im Hintergrund durchgeführt wurden", + "appsPossiblyUpdatedNotifDescription": "Benachrichtigt, dass Aktualisierungen für eine oder mehrere Apps möglicherweise im Hintergrund durchgeführt wurden", "xWasPossiblyUpdatedToY": "{} wurde möglicherweise aktualisiert auf {}.", "enableBackgroundUpdates": "Hintergrundaktualisierungen aktivieren", "backgroundUpdateReqsExplanation": "Die Hintergrundaktualisierung ist möglicherweise nicht für alle Apps möglich.", @@ -254,13 +254,13 @@ "filterByLinkText": "Links durch Linktext filtern", "intermediateLinkNotFound": "„Zwischen“-Link nicht gefunden", "intermediateLink": "„Zwischen“-Link", - "exemptFromBackgroundUpdates": "Ausschluss von Hintergrundaktualisierungen (falls aktiviert)", - "bgUpdatesOnWiFiOnly": "Hintergrundaktualisierungen deaktivieren, wenn kein WLAN vorhanden ist", - "bgUpdatesWhileChargingOnly": "Hintergrundaktualisierungen deaktivieren, wenn nicht geladen wird", + "exemptFromBackgroundUpdates": "Von Hintergrundaktualisierungen (falls aktiviert) ausschließen", + "bgUpdatesOnWiFiOnly": "Hintergrundaktualisierungen nur im WLAN ausführen", + "bgUpdatesWhileChargingOnly": "Hintergrundaktualisierungen nur ausführen, während das Gerät geladen wird", "autoSelectHighestVersionCode": "Automatisch höchste APK-Version auswählen", "versionExtractionRegEx": "Versionsextraktion per RegEx", "trimVersionString": "Versionszeichenfolge mit RegEx kürzen", - "matchGroupToUseForX": "Zu verwendende Abgleichsgruppe für „{}“", + "matchGroupToUseForX": "Zu verwendende Abgleichsgruppe für\n„{}“", "matchGroupToUse": "Zu verwendende Gruppe abgleichen", "highlightTouchTargets": "Weniger offensichtliche Touch-Ziele hervorheben", "pickExportDir": "Export-Verzeichnis wählen", @@ -268,7 +268,7 @@ "includeSettings": "Einstellungen einbeziehen", "filterVersionsByRegEx": "Versionen nach regulären Ausdrücken filtern", "trySelectingSuggestedVersionCode": "Versuchen, den vorgeschlagenen APK-Versionscode auszuwählen", - "dontSortReleasesList": "Freigaberelease von der API ordern", + "dontSortReleasesList": "Releases-Sortierung der API beibehalten", "reverseSort": "Umgekehrtes Sortieren", "takeFirstLink": "Ersten Link verwenden", "skipSort": "Sortieren überspringen", @@ -296,8 +296,8 @@ "shizukuOldAndroidWithADB": "Shizuku läuft auf Android < 8.1 mit ADB - aktualisieren Sie Android oder verwenden Sie stattdessen Sui", "shizukuPretendToBeGooglePlay": "(Mittels Shizuku) Google Play als Installationsquelle registrieren", "useSystemFont": "Systemschriftart verwenden", - "useVersionCodeAsOSVersion": "App-Version als erkannte Version vom Betriebssystem verwenden", - "requestHeader": "Kopfzeile anfordern", + "useVersionCodeAsOSVersion": "Versionscode (versionCode) als erkannte Version vom Betriebssystem verwenden", + "requestHeader": "Kopfzeile („Header“) anfordern", "useLatestAssetDateAsReleaseDate": "Letzten Asset-Upload als Veröffentlichungsdatum verwenden", "defaultPseudoVersioningMethod": "Standardmäßiges Verfahren zur Pseudo-Versionierung", "partialAPKHash": "Partieller APK-Hash", @@ -309,9 +309,9 @@ "invertRegEx": "Regulären Ausdruck invertieren", "note": "Hinweis", "selfHostedNote": "Das „{}“-Drop-down-Menü kann verwendet werden, um selbst gehostete/angepasste Instanzen einer beliebigen Quelle zu erreichen.", - "badDownload": "Die APK konnte nicht geparst werden (inkompatibler oder teilweiser Download)", + "badDownload": "Die APK konnte nicht gelesen werden (inkompatibler oder unfertiger Download)", "beforeNewInstallsShareToAppVerifier": "Neue Apps mit AppVerifier teilen (falls verfügbar)", - "appVerifierInstructionToast": "Geben Sie die Daten an AppVerifier weiter und kehren Sie dann hierher zurück, wenn Sie fertig sind.", + "appVerifierInstructionToast": "Teile die Daten mit AppVerifier und kehre im Anschluss hierher zurück.", "wiki": "Hilfe/Wiki", "crowdsourcedConfigsLabel": "Crowdsourced App-Konfigurationen (Verwendung auf eigene Gefahr)", "crowdsourcedConfigsShort": "Crowdsourced App-Konfigurationen", @@ -323,16 +323,16 @@ "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) – versuche es in {} Minute erneut", + "other": "Zu viele Anfragen (Rate begrenzt) – versuche 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": "Die Hintergrundaktualisierungsprüfung fand {} Aktualisierung – benachrichtigt den Benutzer, falls erforderlich", - "other": "Die Hintergrundaktualisierungsprüfung fand {} Aktualisierungen – benachrichtigt den Benutzer, falls erforderlich" + "one": "Die Aktualisierungsprüfung fand {} Aktualisierung – benachrichtigt, falls erforderlich", + "other": "Die Aktualisierungsprüfung fand {} Aktualisierungen – benachrichtigt, falls erforderlich" }, "apps": { "one": "{} App", @@ -359,8 +359,8 @@ "other": "{n} Logs gelöscht (vorher = {before}, nachher = {after})" }, "xAndNMoreUpdatesAvailable": { - "one": "{} und 1 weitere App haben Aktualisierungen.", - "other": "{} und {} weitere Apps haben Aktualisierungen." + "one": "{} und 1 weitere App können aktualisiert werden.", + "other": "{} und {} weitere Apps können aktualisiert werden." }, "xAndNMoreUpdatesInstalled": { "one": "{} und 1 weitere App wurden aktualisiert.", diff --git a/lib/pages/app.dart b/lib/pages/app.dart index dc735e9..d369d04 100644 --- a/lib/pages/app.dart +++ b/lib/pages/app.dart @@ -182,7 +182,10 @@ class _AppPageState extends State { Brightness.light ? Theme.of(context).primaryColor : Theme.of(context).primaryColorLight) - .withAlpha(20) + .withAlpha(Theme.of(context).brightness == + Brightness.light + ? 20 + : 40) : null), padding: settingsProvider.highlightTouchTargets ? const EdgeInsetsDirectional.fromSTEB(12, 6, 12, 6) diff --git a/lib/pages/apps.dart b/lib/pages/apps.dart index 4279677..09dde14 100644 --- a/lib/pages/apps.dart +++ b/lib/pages/apps.dart @@ -481,7 +481,10 @@ class AppsPageState extends State { ? (Theme.of(context).brightness == Brightness.light ? Theme.of(context).primaryColor : Theme.of(context).primaryColorLight) - .withAlpha(20) + .withAlpha(Theme.of(context).brightness == + Brightness.light + ? 20 + : 40) : null), padding: settingsProvider.highlightTouchTargets ? const EdgeInsetsDirectional.fromSTEB(12, 0, 12, 0) diff --git a/pubspec.lock b/pubspec.lock index 513057a..a866402 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -14,17 +14,18 @@ packages: description: path: "." ref: main - resolved-ref: bcad19e964d377da8816718032e5dbf6dd16ba3a + resolved-ref: "6109d0b1dc015c016e113ded3dd80ac823f790ab" url: "https://github.com/ImranR98/android_package_installer" source: git version: "0.0.1" android_package_manager: dependency: "direct main" description: - name: android_package_manager - sha256: "2de859fae7226a7de1c1ff9a2308f1967599408800330501a1ce97927c051153" - url: "https://pub.dev" - source: hosted + path: "." + ref: master + resolved-ref: "18231a8a2343747440b0bfe90f7d56ef7f586099" + url: "https://github.com/ImranR98/android_package_manager" + source: git version: "0.7.1" android_system_font: dependency: "direct main" @@ -167,10 +168,10 @@ packages: dependency: transitive description: name: collection - sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf url: "https://pub.dev" source: hosted - version: "1.18.0" + version: "1.19.0" connectivity_plus: dependency: "direct main" description: @@ -303,10 +304,10 @@ packages: dependency: "direct main" description: name: file_picker - sha256: c2376a6aae82358a9f9ccdd7d1f4006d08faa39a2767cce01031d9f593a8bd3b + sha256: c904b4ab56d53385563c7c39d8e9fa9af086f91495dfc48717ad84a42c3cf204 url: "https://pub.dev" source: hosted - version: "8.1.6" + version: "8.1.7" fixnum: dependency: transitive description: @@ -319,18 +320,18 @@ packages: dependency: "direct main" description: name: flex_color_picker - sha256: "12dc855ae8ef5491f529b1fc52c655f06dcdf4114f1f7fdecafa41eec2ec8d79" + sha256: c083b79f1c57eaeed9f464368be376951230b3cb1876323b784626152a86e480 url: "https://pub.dev" source: hosted - version: "3.6.0" + version: "3.7.0" flex_seed_scheme: dependency: transitive description: name: flex_seed_scheme - sha256: "7639d2c86268eff84a909026eb169f008064af0fb3696a651b24b0fa24a40334" + sha256: d3ba3c5c92d2d79d45e94b4c6c71d01fac3c15017da1545880c53864da5dfeb0 url: "https://pub.dev" source: hosted - version: "3.4.1" + version: "3.5.0" flutter: dependency: "direct main" description: flutter @@ -449,10 +450,10 @@ packages: dependency: "direct main" description: name: flutter_markdown - sha256: "255b00afa1a7bad19727da6a7780cf3db6c3c12e68d302d85e0ff1fdf173db9e" + sha256: e37f4c69a07b07bb92622ef6b131a53c9aae48f64b176340af9e8e5238718487 url: "https://pub.dev" source: hosted - version: "0.7.4+3" + version: "0.7.5" flutter_plugin_android_lifecycle: dependency: transitive description: @@ -491,10 +492,10 @@ packages: dependency: transitive description: name: fraction - sha256: ac0d9904bb8211eb28606bdf623ff9f222c53240d8e9b927a07c149d356eddc2 + sha256: "7804c9a73d26bd3d5ccf52b7225eecd0af4e33b310729726dc8f8bb14c217716" url: "https://pub.dev" source: hosted - version: "5.0.3" + version: "5.0.4" gtk: dependency: transitive description: @@ -531,10 +532,10 @@ packages: dependency: transitive description: name: http_parser - sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" url: "https://pub.dev" source: hosted - version: "4.0.2" + version: "4.1.2" image: dependency: transitive description: @@ -563,18 +564,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05" + sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06" url: "https://pub.dev" source: hosted - version: "10.0.5" + version: "10.0.7" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806" + sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379" url: "https://pub.dev" source: hosted - version: "3.0.5" + version: "3.0.8" leak_tracker_testing: dependency: transitive description: @@ -587,10 +588,10 @@ packages: dependency: transitive description: name: lints - sha256: "3315600f3fb3b135be672bf4a178c55f274bebe368325ae18462c89ac1e3b413" + sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 url: "https://pub.dev" source: hosted - version: "5.0.0" + version: "5.1.1" markdown: dependency: "direct main" description: @@ -843,18 +844,18 @@ packages: dependency: "direct main" description: name: shared_preferences - sha256: "3c7e73920c694a436afaf65ab60ce3453d91f84208d761fbd83fc21182134d93" + sha256: a752ce92ea7540fc35a0d19722816e04d0e72828a4200e83a98cf1a1eb524c9a url: "https://pub.dev" source: hosted - version: "2.3.4" + version: "2.3.5" shared_preferences_android: dependency: transitive description: name: shared_preferences_android - sha256: "02a7d8a9ef346c9af715811b01fbd8e27845ad2c41148eefd31321471b41863d" + sha256: bf808be89fe9dc467475e982c1db6c2faf3d2acf54d526cd5ec37d86c99dbd84 url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.1" shared_preferences_foundation: dependency: transitive description: @@ -898,11 +899,12 @@ packages: shared_storage: dependency: "direct main" description: - name: shared_storage - sha256: cf20428d06af065311b71e09cbfbbfe431e979a3bf9180001c1952129b7c708f - url: "https://pub.dev" - source: hosted - version: "0.8.1" + path: "." + ref: master + resolved-ref: "8784c39b909324df8913dd30fa416b8a50d55f49" + url: "https://github.com/AlexBacich/shared-storage" + source: git + version: "0.7.0" shizuku_apk_installer: dependency: "direct main" description: @@ -916,7 +918,7 @@ packages: dependency: transitive description: flutter source: sdk - version: "0.0.99" + version: "0.0.0" source_span: dependency: transitive description: @@ -961,10 +963,10 @@ packages: dependency: transitive description: name: sqflite_darwin - sha256: "96a698e2bc82bd770a4d6aab00b42396a7c63d9e33513a56945cbccb594c2474" + sha256: "22adfd9a2c7d634041e96d6241e6e1c8138ca6817018afc5d443fef91dcefa9c" url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.1+1" sqflite_platform_interface: dependency: transitive description: @@ -977,10 +979,10 @@ packages: dependency: transitive description: name: stack_trace - sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" url: "https://pub.dev" source: hosted - version: "1.11.1" + version: "1.12.0" stream_channel: dependency: transitive description: @@ -993,10 +995,10 @@ packages: dependency: transitive description: name: string_scanner - sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.0" synchronized: dependency: transitive description: @@ -1017,10 +1019,10 @@ packages: dependency: transitive description: name: test_api - sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" + sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" url: "https://pub.dev" source: hosted - version: "0.7.2" + version: "0.7.3" timezone: dependency: transitive description: @@ -1097,18 +1099,18 @@ packages: dependency: transitive description: name: url_launcher_web - sha256: "772638d3b34c779ede05ba3d38af34657a05ac55b06279ea6edd409e323dca8e" + sha256: "3ba963161bd0fe395917ba881d320b9c4f6dd3c4a233da62ab18a5025c85f1e9" url: "https://pub.dev" source: hosted - version: "2.3.3" + version: "2.4.0" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - sha256: "44cf3aabcedde30f2dba119a9dea3b0f2672fbe6fa96e85536251d678216b3c4" + sha256: "3284b6d2ac454cf34f114e1d3319866fdd1e19cdc329999057e44ffe936cfa77" url: "https://pub.dev" source: hosted - version: "3.1.3" + version: "3.1.4" uuid: dependency: transitive description: @@ -1129,10 +1131,10 @@ packages: dependency: transitive description: name: vm_service - sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d" + sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b url: "https://pub.dev" source: hosted - version: "14.2.5" + version: "14.3.0" web: dependency: transitive description: @@ -1169,18 +1171,18 @@ packages: dependency: transitive description: name: webview_flutter_wkwebview - sha256: b7e92f129482460951d96ef9a46b49db34bd2e1621685de26e9eaafd9674e7eb + sha256: "4adc14ea9a770cc9e2c8f1ac734536bd40e82615bd0fa6b94be10982de656cc7" url: "https://pub.dev" source: hosted - version: "3.16.3" + version: "3.17.0" win32: dependency: transitive description: name: win32 - sha256: "8b338d4486ab3fbc0ba0db9f9b4f5239b6697fcee427939a40e720cbb9ee0a69" + sha256: "154360849a56b7b67331c21f09a386562d88903f90a1099c5987afc1912e1f29" url: "https://pub.dev" source: hosted - version: "5.9.0" + version: "5.10.0" win32_registry: dependency: transitive description: @@ -1214,5 +1216,5 @@ packages: source: hosted version: "3.1.3" sdks: - dart: ">=3.5.0 <4.0.0" - flutter: ">=3.24.0" + dart: ">=3.6.0 <4.0.0" + flutter: ">=3.27.0" diff --git a/pubspec.yaml b/pubspec.yaml index 06f66c5..4c38ce1 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,5 @@ name: obtainium description: Get Android app updates straight from the source. - # The following line prevents the package from being accidentally published to # pub.dev using `flutter pub publish`. This is preferred for private packages. publish_to: 'none' # Remove this line if you wish to publish to pub.dev @@ -17,10 +16,10 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 1.1.37+2294 +version: 1.1.38+2295 environment: - sdk: '>=3.0.0 <4.0.0' + sdk: ^3.6.0 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -32,7 +31,6 @@ dependencies: flutter: sdk: flutter - # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.5 @@ -51,11 +49,14 @@ dependencies: device_info_plus: ^11.0.0 file_picker: ^8.0.0+1 animations: ^2.0.4 - android_package_installer: + android_package_installer: # TODO: See if PR will be accepted (dev may not be active), else remove this comment git: url: https://github.com/ImranR98/android_package_installer ref: main - android_package_manager: ^0.7.0 + android_package_manager: # TODO: Make PR and switch to upstream + git: + url: https://github.com/ImranR98/android_package_manager + ref: master share_plus: ^10.0.0 sqflite: ^2.2.0+3 easy_localization: ^3.0.1 @@ -64,7 +65,10 @@ dependencies: flutter_archive: ^6.0.0 hsluv: ^1.1.3 connectivity_plus: ^6.0.1 - shared_storage: ^0.8.0 + shared_storage: # TODO: Is this maintained? + git: + url: https://github.com/AlexBacich/shared-storage + ref: master crypto: ^3.0.3 app_links: ^6.0.1 background_fetch: ^1.2.1 @@ -110,20 +114,20 @@ flutter: uses-material-design: true # To add assets to your application, add an assets section, like this: - # - assets: + # assets: # - images/a_dot_burr.jpeg # - images/a_dot_ham.jpeg - + assets: - assets/translations/ - assets/graphics/ - assets/ca/ # An image asset can refer to one or more resolution-specific "variants", see - # https://flutter.dev/assets-and-images/#resolution-aware + # https://flutter.dev/to/resolution-aware-images # For details regarding adding assets from package dependencies, see - # https://flutter.dev/assets-and-images/#from-packages + # https://flutter.dev/to/asset-from-package # To add custom fonts to your application, add a fonts section here, # in this "flutter" section. Each entry in this list should have a @@ -143,7 +147,7 @@ flutter: # weight: 700 # # For details regarding fonts from package dependencies, - # see https://flutter.dev/custom-fonts/#from-packages + # see https://flutter.dev/to/font-from-package fonts: - family: Wix-Madefor-Display