Compare commits
32 Commits
v0.16.1-be
...
v1.0.0
Author | SHA1 | Date | |
---|---|---|---|
b239f9bd05 | |||
1acc923ec2 | |||
8d6edfb91f | |||
491b62bb0d | |||
d1413fc478 | |||
761f7039e9 | |||
59783a341d | |||
0100fa4236 | |||
f6f9ed68dc | |||
8adb5e84d1 | |||
3940b65156 | |||
98e7f27eab | |||
7cf5cafd75 | |||
d750e35273 | |||
1f12e12130 | |||
4a4fb4716e | |||
efe6ec0d43 | |||
00d605e195 | |||
f06de8d19f | |||
fac335c849 | |||
5bef546ae4 | |||
b690cd6a67 | |||
dbee4a2657 | |||
67420f293b | |||
d1d6b0792b | |||
2ec039ba0f | |||
4b9b9a10ad | |||
4193d8ada1 | |||
4701b090b0 | |||
8b0c85827c | |||
57e02d1c80 | |||
7987083555 |
1
.flutter
Submodule
25
.github/workflows/release.yml
vendored
@ -23,16 +23,27 @@ jobs:
|
||||
gpg_private_key: ${{ secrets.PGP_KEY_BASE64 }}
|
||||
passphrase: ${{ secrets.PGP_PASSPHRASE }}
|
||||
|
||||
- name: Check submodule
|
||||
id: check_submodule
|
||||
run: |
|
||||
SUBMODULE_COMMIT_LONG="$(git submodule status | head -1 | tail -c +2 | awk '{print $1}')"
|
||||
FLUTTER_COMMIT_SHORT="$(flutter --version | head -2 | tail -1 | awk '{print $4}')"
|
||||
echo "SUBMODULE_COMMIT_LONG=$SUBMODULE_COMMIT_LONG, FLUTTER_COMMIT_SHORT=$FLUTTER_COMMIT_SHORT"
|
||||
if ! [[ "$SUBMODULE_COMMIT_LONG" =~ ^$FLUTTER_COMMIT_SHORT ]]; then
|
||||
echo "Your submodule has not been updated!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Extract Version
|
||||
id: extract_version
|
||||
run: |
|
||||
VERSION=$(grep -oP "^version: [^\+]+" pubspec.yaml | tail -c +10)
|
||||
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
||||
if [ ${{ inputs.beta }} == true ]; then BETA=true; else BETA=false; fi
|
||||
echo "beta=$BETA" >> $GITHUB_OUTPUT
|
||||
TAG="v$VERSION"
|
||||
if [ $BETA == true ]; then TAG="$TAG"-beta; fi
|
||||
echo "tag=$TAG" >> $GITHUB_OUTPUT
|
||||
VERSION=$(grep -oP "^version: [^\+]+" pubspec.yaml | tail -c +10)
|
||||
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
||||
if [ ${{ inputs.beta }} == true ]; then BETA=true; else BETA=false; fi
|
||||
echo "beta=$BETA" >> $GITHUB_OUTPUT
|
||||
TAG="v$VERSION"
|
||||
if [ $BETA == true ]; then TAG="$TAG"-beta; fi
|
||||
echo "tag=$TAG" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Build APKs
|
||||
run: |
|
||||
|
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
[submodule ".flutter"]
|
||||
path = .flutter
|
||||
url = https://github.com/flutter/flutter/
|
@ -86,7 +86,7 @@
|
||||
"author": "Autor",
|
||||
"upToDateApps": "Apps mit aktueller Version",
|
||||
"nonInstalledApps": "Nicht installierte Apps",
|
||||
"importExport": "Import Export",
|
||||
"importExport": "Import/Export",
|
||||
"settings": "Einstellungen",
|
||||
"exportedTo": "Exportiert zu {}",
|
||||
"obtainiumExport": "Obtainium-Export",
|
||||
@ -107,7 +107,7 @@
|
||||
"selectURL": "URL auswählen",
|
||||
"selectURLs": "URLs auswählen",
|
||||
"pick": "Auswählen",
|
||||
"theme": "Thema",
|
||||
"theme": "Theme",
|
||||
"dark": "Dunkel",
|
||||
"light": "Hell",
|
||||
"followSystem": "System folgen",
|
||||
@ -170,7 +170,7 @@
|
||||
"yesMarkUpdated": "Ja, als aktualisiert markieren",
|
||||
"fdroid": "offizielles F-Droid-Repo",
|
||||
"appIdOrName": "App ID oder Name",
|
||||
"appId": "App-ID",
|
||||
"appId": "App ID",
|
||||
"appWithIdOrNameNotFound": "Es wurde keine App mit dieser ID oder diesem Namen gefunden",
|
||||
"reposHaveMultipleApps": "Repos können mehrere Apps enthalten",
|
||||
"fdroidThirdPartyRepo": "F-Droid Drittparteienrepo",
|
||||
@ -209,7 +209,7 @@
|
||||
"changes": "Änderungen",
|
||||
"releaseDate": "Veröffentlichungsdatum",
|
||||
"importFromURLsInFile": "Importieren von URLs aus Datei (z. B. OPML)",
|
||||
"versionDetectionExplanation": "Versionszeichenfolge mit der vom Betriebssystem erkannten Version abgleichen",
|
||||
"versionDetectionExplanation": "Abgleich der Versionsnummer mit der vom Betriebssystem erkannten Version",
|
||||
"versionDetection": "Versionserkennung",
|
||||
"standardVersionDetection": "Standardversionserkennung",
|
||||
"groupByCategory": "Nach Kategorie gruppieren",
|
||||
@ -283,28 +283,28 @@
|
||||
"parallelDownloads": "Erlaube parallele Downloads",
|
||||
"installMethod": "Installationsmethode",
|
||||
"normal": "Normal",
|
||||
"root": "Wurzel",
|
||||
"root": "Root",
|
||||
"shizukuBinderNotFound": "Kompatibler Shizukudienst wurde nicht gefunden",
|
||||
"useSystemFont": "Verwende die Systemschriftart",
|
||||
"systemFontError": "Fehler beim Laden der Systemschriftart: {}",
|
||||
"useVersionCodeAsOSVersion": "Verwende die Appversion als erkannte Version vom Betriebssystem",
|
||||
"requestHeader": "Request Header",
|
||||
"useLatestAssetDateAsReleaseDate": "Den letzten Asset-Upload als Veröffentlichungsdatum verwenden",
|
||||
"defaultPseudoVersioningMethod": "Standard-Pseudoversionierungsmethode",
|
||||
"partialAPKHash": "Teilweiser APK-Hash",
|
||||
"defaultPseudoVersioningMethod": "Standardmäßiges Verfahren zur Pseudo-Versionierung",
|
||||
"partialAPKHash": "partieller APK-Hash",
|
||||
"APKLinkHash": "APK-Link-Hash",
|
||||
"directAPKLink": "Direkter APK-Link",
|
||||
"pseudoVersionInUse": "Eine Pseudoversion ist im Einsatz",
|
||||
"installed": "Eingerichtet",
|
||||
"latest": "Neueste",
|
||||
"invertRegEx": "Regulären Ausdruck umkehren",
|
||||
"pseudoVersionInUse": "Pseudoversionen sind in Benutzung",
|
||||
"installed": "Installiert",
|
||||
"latest": "Neueste(r)",
|
||||
"invertRegEx": "Regulären Ausdruck invertieren",
|
||||
"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) – 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",
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"invalidURLForSource": "URL de la aplicación {} no válida",
|
||||
"invalidURLForSource": "URL de la aplicación {} no es válida",
|
||||
"noReleaseFound": "No se ha podido encontrar una versión válida",
|
||||
"noVersionFound": "No se ha podido determinar la versión de la publicación",
|
||||
"noVersionFound": "No se ha podido determinar la versión",
|
||||
"urlMatchesNoSource": "La URL no coincide con ninguna fuente conocida",
|
||||
"cantInstallOlderVersion": "No se puede instalar una versión previa de la aplicación",
|
||||
"appIdMismatch": "La ID del paquete descargado no coincide con la ID de la aplicación instalada",
|
||||
@ -11,7 +11,7 @@
|
||||
"unexpectedError": "Error inesperado",
|
||||
"ok": "OK",
|
||||
"and": "y",
|
||||
"githubPATLabel": "Token GitHub de acceso personal\n(reduce tiempos de espera)",
|
||||
"githubPATLabel": "Token de acceso personal a GitHub\n(reduce tiempos de espera)",
|
||||
"includePrereleases": "Incluir versiones preliminares",
|
||||
"fallbackToOlderReleases": "Retroceder a versiones previas",
|
||||
"filterReleaseTitlesByRegEx": "Filtrar por título de versión",
|
||||
@ -22,20 +22,20 @@
|
||||
"requiredInBrackets": "(Requerido)",
|
||||
"dropdownNoOptsError": "ERROR: EL DESPLEGABLE DEBE TENER AL MENOS UNA OPCIÓN",
|
||||
"colour": "Color",
|
||||
"githubStarredRepos": "Repositorios favoritos GitHub",
|
||||
"githubStarredRepos": "Repositorios favoritos en GitHub",
|
||||
"uname": "Nombre de usuario",
|
||||
"wrongArgNum": "Número de argumentos provistos inválido",
|
||||
"xIsTrackOnly": "{} es de 'Sólo seguimiento'",
|
||||
"xIsTrackOnly": "{} es de 'sólo seguimiento'",
|
||||
"source": "Origen",
|
||||
"app": "Aplicación",
|
||||
"appsFromSourceAreTrackOnly": "Las aplicaciones de este origen son de 'solo seguimiento'.",
|
||||
"youPickedTrackOnly": "Debe seleccionar la opción de 'solo seguimiento'.",
|
||||
"trackOnlyAppDescription": "Se hará el seguimiento de actualizaciones para la aplicación, pero Obtainium no será capaz de descargarla o actalizarla.",
|
||||
"trackOnlyAppDescription": "Se hará el seguimiento de actualizaciones para la aplicación, pero Obtainium no será capaz de descargar o actualizarla.",
|
||||
"cancelled": "Cancelado",
|
||||
"appAlreadyAdded": "Aplicación ya añadida",
|
||||
"alreadyUpToDateQuestion": "¿Aplicación ya actualizada?",
|
||||
"appAlreadyAdded": "Aplicación añadida anteriormente",
|
||||
"alreadyUpToDateQuestion": "¿Aplicación actualizada previamente?",
|
||||
"addApp": "Añadir Aplicación",
|
||||
"appSourceURL": "URL de Origen de la Aplicación",
|
||||
"appSourceURL": "URL de origen de la aplicación",
|
||||
"error": "Error",
|
||||
"add": "Añadir",
|
||||
"searchSomeSourcesLabel": "Buscar (solo algunas fuentes)",
|
||||
@ -71,11 +71,11 @@
|
||||
"pinToTop": "Fijar arriba",
|
||||
"unpinFromTop": "Desfijar de arriba",
|
||||
"resetInstallStatusForSelectedAppsQuestion": "¿Restuarar estado de instalación para las aplicaciones seleccionadas?",
|
||||
"installStatusOfXWillBeResetExplanation": "El estado de instalación de las aplicaciones seleccionadas será restaurado.\n\nEsto puede ser de útil cuando la versión de la aplicación mostrada en Obtainium es incorrecta por actualizaciones fallidas u otros motivos.",
|
||||
"installStatusOfXWillBeResetExplanation": "Se restaurará el estado de instalación de las aplicaciones seleccionadas.\n\nEsto puede ser de útil cuando la versión de la aplicación mostrada en Obtainium es incorrecta por actualizaciones fallidas u otros motivos.",
|
||||
"customLinkMessage": "Estos enlaces funcionan en dispositivos con Obtainium instalado",
|
||||
"shareAppConfigLinks": "Compartir la configuración de la aplicación como enlace HTML",
|
||||
"shareSelectedAppURLs": "Compartir URLs de las aplicaciones seleccionadas",
|
||||
"resetInstallStatus": "Restaurar Estado de Instalación",
|
||||
"resetInstallStatus": "Restaurar estado de instalación",
|
||||
"more": "Más",
|
||||
"removeOutdatedFilter": "Elimiar filtro de aplicaciones desactualizado",
|
||||
"showOutdatedOnly": "Mostrar solo aplicaciones desactualizadas",
|
||||
@ -123,7 +123,7 @@
|
||||
"neverManualOnly": "Nunca, solo manual",
|
||||
"appearance": "Apariencia",
|
||||
"showWebInAppView": "Mostrar vista de la web de origen",
|
||||
"pinUpdates": "Fijar Actualizaciones al principio",
|
||||
"pinUpdates": "Fijar actualizaciones al principio",
|
||||
"updates": "Actualizaciones",
|
||||
"sourceSpecific": "Fuente Específica",
|
||||
"appSource": "Obtainium en GitHub",
|
||||
@ -140,77 +140,77 @@
|
||||
"warning": "Aviso",
|
||||
"sourceIsXButPackageFromYPrompt": "La fuente de la aplicación es '{}' pero el paquete de la actualización viene de '{}'. ¿Desea continuar?",
|
||||
"updatesAvailable": "Actualizaciones Disponibles",
|
||||
"updatesAvailableNotifDescription": "Notifica al usuario de que hay actualizaciones para una o más aplicaciones monitorizadas por Obtainium",
|
||||
"updatesAvailableNotifDescription": "Notifica al usuario de que hay actualizaciones para una o más aplicaciones monitoreadas por Obtainium",
|
||||
"noNewUpdates": "No hay nuevas actualizaciones.",
|
||||
"xHasAnUpdate": "{} tiene una actualización.",
|
||||
"appsUpdated": "Aplicaciones Actualizadas",
|
||||
"appsUpdated": "Aplicaciones actualizadas",
|
||||
"appsUpdatedNotifDescription": "Notifica al usuario de que una o más aplicaciones han sido actualizadas en segundo plano",
|
||||
"xWasUpdatedToY": "{} ha sido actualizada a {}.",
|
||||
"errorCheckingUpdates": "Error Buscando Actualizaciones",
|
||||
"errorCheckingUpdates": "Error buscando ectualizaciones",
|
||||
"errorCheckingUpdatesNotifDescription": "Una notificación que muestra cuándo la comprobación de actualizaciones en segundo plano falla",
|
||||
"appsRemoved": "Aplicaciones Eliminadas",
|
||||
"appsRemoved": "Aplicaciones eliminadas",
|
||||
"appsRemovedNotifDescription": "Notifica al usuario que una o más aplicaciones fueron eliminadas por problemas al cargarlas",
|
||||
"xWasRemovedDueToErrorY": "{} ha sido eliminada por: {}",
|
||||
"completeAppInstallation": "Instalación Completa de la Aplicación",
|
||||
"completeAppInstallation": "Instalación completa de la aplicación",
|
||||
"obtainiumMustBeOpenToInstallApps": "Obtainium debe estar abierto para instalar aplicaciones",
|
||||
"completeAppInstallationNotifDescription": "Pide al usuario volver a Obtainium para terminar de instalar una aplicación",
|
||||
"checkingForUpdates": "Buscando Actualizaciones",
|
||||
"checkingForUpdates": "Buscando actualizaciones...",
|
||||
"checkingForUpdatesNotifDescription": "Notificación temporal que aparece al buscar actualizaciones",
|
||||
"pleaseAllowInstallPerm": "Por favor, permita que Obtainium instale aplicaciones",
|
||||
"trackOnly": "Solo Seguimiento",
|
||||
"trackOnly": "Solo para seguimiento",
|
||||
"errorWithHttpStatusCode": "Error {}",
|
||||
"versionCorrectionDisabled": "Corrección de versiones desactivada (el plugin parece no funcionar)",
|
||||
"unknown": "Desconocido",
|
||||
"none": "Ninguno",
|
||||
"never": "Nunca",
|
||||
"latestVersionX": "Última Versión: {}",
|
||||
"installedVersionX": "Versión Instalada: {}",
|
||||
"lastUpdateCheckX": "Última Comprobación: {}",
|
||||
"latestVersionX": "Última versión: {}",
|
||||
"installedVersionX": "Versión instalada: {}",
|
||||
"lastUpdateCheckX": "Última comprobación: {}",
|
||||
"remove": "Eliminar",
|
||||
"yesMarkUpdated": "Sí, Marcar como Actualizada",
|
||||
"yesMarkUpdated": "Sí, marcar como actualizada",
|
||||
"fdroid": "Repositorio oficial F-Droid",
|
||||
"appIdOrName": "ID o Nombre de la Aplicación",
|
||||
"appId": "ID de la Aplicación",
|
||||
"appWithIdOrNameNotFound": "No se han encontrado aplicaciones con esa ID o nombre",
|
||||
"reposHaveMultipleApps": "Los repositorios pueden contener varias aplicaciones",
|
||||
"fdroidThirdPartyRepo": "Rpositorios de terceros F-Droid",
|
||||
"fdroidThirdPartyRepo": "Repositorio de tercera parte F-Droid",
|
||||
"steamMobile": "Móvil de vapor",
|
||||
"steamChat": "Chat de vapor",
|
||||
"install": "Instalar",
|
||||
"markInstalled": "Marcar como Instalada",
|
||||
"markInstalled": "Marcar como instalada",
|
||||
"update": "Actualizar",
|
||||
"markUpdated": "Marcar como Actualizada",
|
||||
"additionalOptions": "Opciones Adicionales",
|
||||
"disableVersionDetection": "Descativar Detección de Versiones",
|
||||
"noVersionDetectionExplanation": "Esta opción solo se debe usar en aplicaciones en las que la deteción de versiones pueda no funcionar correctamente.",
|
||||
"markUpdated": "Marcar como actualizada",
|
||||
"additionalOptions": "Opciones adicionales",
|
||||
"disableVersionDetection": "Desactivar la detección de versiones",
|
||||
"noVersionDetectionExplanation": "Esta opción solo se debe usar en aplicaciones en las que la deteción de versiones pueda que no funcionar correctamente.",
|
||||
"downloadingX": "Descargando {}",
|
||||
"downloadNotifDescription": "Notifica al usuario del progreso de descarga de una aplicación",
|
||||
"noAPKFound": "APK no encontrada",
|
||||
"noAPKFound": "No se encontró el paquete de instalación APK",
|
||||
"noVersionDetection": "Sin detección de versiones",
|
||||
"categorize": "Catogorizar",
|
||||
"categories": "Categorías",
|
||||
"category": "Categoría",
|
||||
"noCategory": "Sin Categoría",
|
||||
"noCategories": "Sin Categorías",
|
||||
"deleteCategoriesQuestion": "¿Eliminar Categorías?",
|
||||
"categoryDeleteWarning": "Todas las aplicaciones en las categorías eliminadas serán marcadas como 'Sin Categoría'.",
|
||||
"addCategory": "Añadir Categoría",
|
||||
"noCategory": "Sin categoría",
|
||||
"noCategories": "Sin categorías",
|
||||
"deleteCategoriesQuestion": "¿Eliminar categorías?",
|
||||
"categoryDeleteWarning": "Todas las aplicaciones en las categorías eliminadas serán marcadas como 'Sin categoría'.",
|
||||
"addCategory": "Añadir categoría",
|
||||
"label": "Nombre",
|
||||
"language": "Idioma",
|
||||
"copiedToClipboard": "Copiado al Portapapeles",
|
||||
"storagePermissionDenied": "Permiso de Almacenamiento rechazado",
|
||||
"copiedToClipboard": "Copiado al portapapeles",
|
||||
"storagePermissionDenied": "Permiso de almacenamiento rechazado",
|
||||
"selectedCategorizeWarning": "Esto reemplazará cualquier ajuste de categoría para las aplicaciones seleccionadas.",
|
||||
"filterAPKsByRegEx": "Filtrar por APKs",
|
||||
"removeFromObtainium": "Eliminar de Obtainium",
|
||||
"uninstallFromDevice": "Desinstalar del Dispositivo",
|
||||
"uninstallFromDevice": "Desinstalar del dispositivo",
|
||||
"onlyWorksWithNonVersionDetectApps": "Solo funciona para aplicaciones con la detección de versiones desactivada.",
|
||||
"releaseDateAsVersion": "Por fecha de publicación",
|
||||
"releaseDateAsVersionExplanation": "Esta opción solo se debería usar con aplicaciones en las que la detección de versiones no funciona pero hay disponible una fecha de publicación.",
|
||||
"changes": "Cambios",
|
||||
"releaseDate": "Fecha de Publicación",
|
||||
"releaseDate": "Fecha de publicación",
|
||||
"importFromURLsInFile": "Importar URLs desde archivo (como OPML)",
|
||||
"versionDetectionExplanation": "Conciliar la cadena de versión con la versión detectada desde el sistema operativo",
|
||||
"versionDetection": "Detección de Versiones",
|
||||
"versionDetection": "Detección de versiones",
|
||||
"standardVersionDetection": "Por versión",
|
||||
"groupByCategory": "Agrupar por categoría",
|
||||
"autoApkFilterByArch": "Filtrar APKs por arquitectura del procesador (si es posible)",
|
||||
@ -219,25 +219,25 @@
|
||||
"dontShowTrackOnlyWarnings": "No mostrar avisos sobre apps en 'solo seguimiento'",
|
||||
"dontShowAPKOriginWarnings": "No mostrar avisos sobre las fuentes de las APKs",
|
||||
"moveNonInstalledAppsToBottom": "Mover Apps no instaladas al final",
|
||||
"gitlabPATLabel": "Token GitLab de acceso personal\n(habilita la búsqueda y mejor detección de APKs)",
|
||||
"gitlabPATLabel": "Token de acceso personal a GitLab\n(habilita la búsqueda y mejor detección de APKs)",
|
||||
"about": "Acerca",
|
||||
"requiresCredentialsInSettings": "{}: Esto requiere credenciales adicionales (en ajustes)",
|
||||
"checkOnStart": "Comprobar actualizaciones al inicio",
|
||||
"tryInferAppIdFromCode": "Intentar deducir la ID de la app por el código fuente",
|
||||
"removeOnExternalUninstall": "Auto eliminar apps desinstaladas externamente",
|
||||
"pickHighestVersionCode": "Auto selección versión superior del código APK",
|
||||
"pickHighestVersionCode": "Auto selección de versión superior del paquete APK",
|
||||
"checkUpdateOnDetailPage": "Comprobar actualizaciones al abrir detalles de la app",
|
||||
"disablePageTransitions": "Deshabilitar animaciones de transición",
|
||||
"reversePageTransitions": "Invertir animaciones de transición",
|
||||
"minStarCount": "Número Mínimo de Estrellas",
|
||||
"addInfoBelow": "Añadir esta información debajo.",
|
||||
"addInfoInSettings": "Puede añadir esta información en Ajustes.",
|
||||
"githubSourceNote": "La limitación de velocidad de GitHub puede evitarse con una clave API.",
|
||||
"gitlabSourceNote": "La extracción de APK de GitLab podría no funcionar sin una clave API.",
|
||||
"githubSourceNote": "La limitación de velocidad de GitHub puede evitarse con un 'token de acceso personal'.",
|
||||
"gitlabSourceNote": "La extracción de APK de GitLab podría no funcionar sin un 'token de acceso personal'.",
|
||||
"sortByLastLinkSegment": "Ordenar sólo por el último segmento del enlace",
|
||||
"filterReleaseNotesByRegEx": "Filtrar por notas de versión (release notes)",
|
||||
"customLinkFilterRegex": "Filtro personalizado de Enlace APK (por defecto '.apk$')",
|
||||
"appsPossiblyUpdated": "Actualización de Apps intentada",
|
||||
"customLinkFilterRegex": "Filtro personalizado de enlace APK (por defecto '.apk$')",
|
||||
"appsPossiblyUpdated": "Actualización de apps intentada",
|
||||
"appsPossiblyUpdatedNotifDescription": "Notifica al usuario que las actualizaciones en segundo plano podrían haberse realizado para una o más aplicaciones",
|
||||
"xWasPossiblyUpdatedToY": "{} podría estar actualizada a {}.",
|
||||
"enableBackgroundUpdates": "Habilitar actualizaciones en segundo plano",
|
||||
@ -250,16 +250,16 @@
|
||||
"intermediateLink": "Enlace intermedio",
|
||||
"exemptFromBackgroundUpdates": "Exenta de actualizciones en segundo plano (si están habilitadas)",
|
||||
"bgUpdatesOnWiFiOnly": "Deshabilitar las actualizaciones en segundo plano sin WiFi",
|
||||
"autoSelectHighestVersionCode": "Auto Selección de la versionCode APK superior",
|
||||
"autoSelectHighestVersionCode": "Auto selección del paquete APK con versión más reciente",
|
||||
"versionExtractionRegEx": "Versión de extracción regex",
|
||||
"matchGroupToUse": "Grupo a usar para versión de extracción regex",
|
||||
"highlightTouchTargets": "Resaltar objetivos menos obvios",
|
||||
"pickExportDir": "Directorio para Exportar",
|
||||
"autoExportOnChanges": "Auto Exportar cuando haya cambios",
|
||||
"pickExportDir": "Directorio para exportar",
|
||||
"autoExportOnChanges": "Auto exportar cuando haya cambios",
|
||||
"includeSettings": "Incluir ajustes",
|
||||
"filterVersionsByRegEx": "Filtrar por Versiones",
|
||||
"trySelectingSuggestedVersionCode": "Pruebe seleccionando la versionCode APK sugerida",
|
||||
"dontSortReleasesList": "Mantener el order de publicación desde API",
|
||||
"filterVersionsByRegEx": "Filtrar por versiones",
|
||||
"trySelectingSuggestedVersionCode": "Pruebe seleccionando la versión del paquete APK sugerida",
|
||||
"dontSortReleasesList": "Mantener el order de publicación de la fuente original",
|
||||
"reverseSort": "Orden inverso",
|
||||
"takeFirstLink": "Usar primer enlace",
|
||||
"skipSort": "Omitir orden",
|
||||
@ -284,10 +284,10 @@
|
||||
"installMethod": "Método de instalación",
|
||||
"normal": "Normal",
|
||||
"root": "Raíz",
|
||||
"shizukuBinderNotFound": "Shizuku no está operativo",
|
||||
"useSystemFont": "Usar la fuente del sistema",
|
||||
"systemFontError": "Error al cargar la fuente del sistema: {}",
|
||||
"useVersionCodeAsOSVersion": "Usar el código de versión de la aplicación como versión detectada por el sistema operativo",
|
||||
"shizukuBinderNotFound": "Shizuku no funciona",
|
||||
"useSystemFont": "Usar la fuente de impresión del sistema",
|
||||
"systemFontError": "Error al cargar la fuente de impresión del sistema: {}",
|
||||
"useVersionCodeAsOSVersion": "Usar la versión de la aplicación como versión detectada por el sistema operativo",
|
||||
"requestHeader": "Encabezado de solicitud",
|
||||
"useLatestAssetDateAsReleaseDate": "Usar la última carga de recursos como fecha de lanzamiento",
|
||||
"defaultPseudoVersioningMethod": "Método de pseudoversionado predeterminado",
|
||||
@ -296,7 +296,7 @@
|
||||
"directAPKLink": "Enlace APK directo",
|
||||
"pseudoVersionInUse": "Se está utilizando una pseudoversión",
|
||||
"installed": "Instalado",
|
||||
"latest": "El último",
|
||||
"latest": "Versión más reciente",
|
||||
"invertRegEx": "Invertir expresión regular",
|
||||
"removeAppQuestion": {
|
||||
"one": "¿Eliminar Aplicación?",
|
||||
|
@ -168,14 +168,14 @@
|
||||
"lastUpdateCheckX": "最終アップデート確認: {}",
|
||||
"remove": "削除",
|
||||
"yesMarkUpdated": "はい、アップデート済みとしてマークします",
|
||||
"fdroid": "F-ドロイドオフィシャル",
|
||||
"fdroid": "F-Droid公式",
|
||||
"appIdOrName": "アプリのIDまたは名前",
|
||||
"appId": "アプリID",
|
||||
"appWithIdOrNameNotFound": "そのIDや名前を持つアプリは見つかりませんでした",
|
||||
"reposHaveMultipleApps": "リポジトリには複数のアプリが含まれることがあります",
|
||||
"fdroidThirdPartyRepo": "F-Droid サードパーティリポジトリ",
|
||||
"steamMobile": "スチームモバイル",
|
||||
"steamChat": "スチームチャット",
|
||||
"steamMobile": "Steamモバイル",
|
||||
"steamChat": "Steamチャット",
|
||||
"install": "インストール",
|
||||
"markInstalled": "インストール済みとしてマークする",
|
||||
"update": "アップデート",
|
||||
@ -209,7 +209,7 @@
|
||||
"changes": "変更点",
|
||||
"releaseDate": "リリース日",
|
||||
"importFromURLsInFile": "ファイル(OPMLなど)内のURLからインポート",
|
||||
"versionDetectionExplanation": "バージョン文字列とOSから検出されたバージョンを一致させます",
|
||||
"versionDetectionExplanation": "バージョン文字列とOSから検出されたバージョンを照合する",
|
||||
"versionDetection": "バージョン検出",
|
||||
"standardVersionDetection": "標準のバージョン検出",
|
||||
"groupByCategory": "カテゴリ別にグループ化する",
|
||||
@ -283,19 +283,19 @@
|
||||
"parallelDownloads": "並行ダウンロードを許可する",
|
||||
"installMethod": "インストール方法",
|
||||
"normal": "通常",
|
||||
"root": "根",
|
||||
"root": "Root",
|
||||
"shizukuBinderNotFound": "Shizukuが起動していません",
|
||||
"useSystemFont": "システムフォントを使用する",
|
||||
"systemFontError": "システムフォントの読み込みエラー: {}",
|
||||
"useVersionCodeAsOSVersion": "アプリの versionCode を OS で検出されたバージョンとして使用する",
|
||||
"useVersionCodeAsOSVersion": "アプリのバージョンコードをOSで検出されたバージョンとして使用する",
|
||||
"requestHeader": "リクエストヘッダー",
|
||||
"useLatestAssetDateAsReleaseDate": "最新のアセットアップロードをリリース日として使用",
|
||||
"useLatestAssetDateAsReleaseDate": "最新のアセットアップロードをリリース日として使用する",
|
||||
"defaultPseudoVersioningMethod": "デフォルトの疑似バージョン管理方法",
|
||||
"partialAPKHash": "部分的なAPKハッシュ",
|
||||
"APKLinkHash": "APKリンクハッシュ",
|
||||
"directAPKLink": "APK ダイレクトリンク",
|
||||
"partialAPKHash": "部分的なAPKのハッシュ",
|
||||
"APKLinkHash": "APKリンクのハッシュ",
|
||||
"directAPKLink": "APKのダイレクトリンク",
|
||||
"pseudoVersionInUse": "疑似バージョンが使用されています",
|
||||
"installed": "インストールされました",
|
||||
"installed": "インストール済み",
|
||||
"latest": "最新",
|
||||
"invertRegEx": "正規表現を反転",
|
||||
"removeAppQuestion": {
|
||||
|
@ -157,7 +157,7 @@
|
||||
"checkingForUpdates": "Đang kiểm tra cập nhật",
|
||||
"checkingForUpdatesNotifDescription": "Thông báo tạm thời xuất hiện khi kiểm tra bản cập nhật",
|
||||
"pleaseAllowInstallPerm": "Vui lòng cho phép Obtainium cài đặt Ứng dụng",
|
||||
"trackOnly": "Chỉ-Theo dõi",
|
||||
"trackOnly": "Chỉ theo dõi",
|
||||
"errorWithHttpStatusCode": "Lỗi {}",
|
||||
"versionCorrectionDisabled": "Tính năng sửa phiên bản bị vô hiệu hóa (plugin dường như không hoạt động)",
|
||||
"unknown": "Không xác định",
|
||||
@ -216,7 +216,7 @@
|
||||
"autoApkFilterByArch": "Cố gắng lọc APK theo kiến trúc CPU nếu có thể",
|
||||
"overrideSource": "Ghi đè nguồn",
|
||||
"dontShowAgain": "Đừng hiển thị thông tin này nữa",
|
||||
"dontShowTrackOnlyWarnings": "Không hiển thị cảnh báo 'Chỉ-Theo dõi'",
|
||||
"dontShowTrackOnlyWarnings": "Không hiển thị cảnh báo 'Chỉ theo dõi'",
|
||||
"dontShowAPKOriginWarnings": "Không hiển thị cảnh báo nguồn gốc APK",
|
||||
"moveNonInstalledAppsToBottom": "Chuyển Ứng dụng chưa được cài đặt xuống cuối danh sách",
|
||||
"gitlabPATLabel": "GitLab Token\n(Cho phép tìm kiếm và lọc APK tốt hơn)",
|
||||
@ -283,7 +283,7 @@
|
||||
"parallelDownloads": "Cho phép tải đa luồng",
|
||||
"installMethod": "Phương thức cài đặt",
|
||||
"normal": "Mặc định",
|
||||
"root": "Nguồn gốc",
|
||||
"root": "Root",
|
||||
"shizukuBinderNotFound": "Shizuku chưa khởi động",
|
||||
"useSystemFont": "Sử dụng phông chữ hệ thống",
|
||||
"systemFontError": "Lỗi tải phông chữ hệ thống: {}",
|
||||
@ -296,7 +296,7 @@
|
||||
"directAPKLink": "Liên kết APK trực tiếp",
|
||||
"pseudoVersionInUse": "Phiên bản giả đang được sử dụng",
|
||||
"installed": "Cài đặt",
|
||||
"latest": "Muộn nhất",
|
||||
"latest": "Mới nhất",
|
||||
"invertRegEx": "Đảo ngược biểu thức chính quy",
|
||||
"removeAppQuestion": {
|
||||
"one": "Gỡ ứng dụng?",
|
||||
|
@ -283,7 +283,7 @@
|
||||
"parallelDownloads": "启用并行下载",
|
||||
"installMethod": "安装方式",
|
||||
"normal": "常规",
|
||||
"root": "根",
|
||||
"root": "root",
|
||||
"shizukuBinderNotFound": "未发现兼容的 Shizuku 服务",
|
||||
"useSystemFont": "使用系统字体",
|
||||
"systemFontError": "加载系统字体出错:{}",
|
||||
|
3
build.sh
@ -7,6 +7,9 @@ trap "cd "$CURR_DIR"" EXIT
|
||||
if [ -z "$1" ]; then
|
||||
git fetch && git merge origin/main && git push # Typically run after a PR to main, so bring dev up to date
|
||||
fi
|
||||
cd .flutter
|
||||
git checkout "$(flutter --version | head -2 | tail -1 | awk '{print $4}')" # Ensure included Flutter submodule version equals my environment
|
||||
cd ..
|
||||
rm ./build/app/outputs/flutter-apk/* 2>/dev/null # Get rid of older builds if any
|
||||
flutter build apk --flavor normal && flutter build apk --split-per-abi --flavor normal # Build (both split and combined APKs)
|
||||
for file in ./build/app/outputs/flutter-apk/app-*normal*.apk*; do mv "$file" "${file//-normal/}"; done
|
||||
|
54
fastlane/metadata/android/en-US/full_description.txt
Normal file
@ -0,0 +1,54 @@
|
||||
<p>Obtainium allows you to install and update Apps directly from their releases pages, and receive notifications when new releases are made available.</p>
|
||||
<p>Read the <a href="https://github.com/ImranR98/Obtainium/wiki">Wiki</a></p>
|
||||
<p>
|
||||
<b>Currently supported App sources:</b>
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
<p>Open Source - General:</p>
|
||||
<ul>
|
||||
<li>GitHub</li>
|
||||
<li>GitLab</li>
|
||||
<li>Codeberg</li>
|
||||
<li>F-Droid</li>
|
||||
<li>Third Party F-Droid Repos</li>
|
||||
<li>IzzyOnDroid</li>
|
||||
<li>SourceForge</li>
|
||||
<li>SourceHut</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>Other - General:</p>
|
||||
<ul>
|
||||
<li>APKPure</li>
|
||||
<li>Aptoide</li>
|
||||
<li>Uptodowng</li>
|
||||
<li>APKMirror (Track-Only)</li>
|
||||
<li>Huawei AppGallery</li>
|
||||
<li>Jenkins Jobs</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>Open Source - App-Specific:</p>
|
||||
<ul>
|
||||
<li>Mullvad</li>
|
||||
<li>Signal</li>
|
||||
<li>VLC</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>Other - App-Specific:</p>
|
||||
<ul>
|
||||
<li>WhatsApp</li>
|
||||
<li>Telegram App</li>
|
||||
<li>Neutron Code</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><p>"HTML" (Fallback): Any other URL that returns an HTML page with links to APK files</p></li>
|
||||
</ul>
|
||||
<p>
|
||||
<b>Limitations:</b>
|
||||
</p>
|
||||
<p>
|
||||
For some sources, data is gathered using Web scraping and can easily break due to changes in website design. In such cases, more reliable methods may be unavailable.
|
||||
</p>
|
BIN
fastlane/metadata/android/en-US/images/featureGraphic.png
Executable file
After Width: | Height: | Size: 66 KiB |
BIN
fastlane/metadata/android/en-US/images/icon.png
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
fastlane/metadata/android/en-US/images/phoneScreenshots/1.png
Normal file
After Width: | Height: | Size: 234 KiB |
BIN
fastlane/metadata/android/en-US/images/phoneScreenshots/2.png
Normal file
After Width: | Height: | Size: 238 KiB |
BIN
fastlane/metadata/android/en-US/images/phoneScreenshots/3.png
Normal file
After Width: | Height: | Size: 140 KiB |
BIN
fastlane/metadata/android/en-US/images/phoneScreenshots/4.png
Normal file
After Width: | Height: | Size: 139 KiB |
BIN
fastlane/metadata/android/en-US/images/phoneScreenshots/5.png
Normal file
After Width: | Height: | Size: 118 KiB |
BIN
fastlane/metadata/android/en-US/images/phoneScreenshots/6.png
Normal file
After Width: | Height: | Size: 262 KiB |
1
fastlane/metadata/android/en-US/short_description.txt
Normal file
@ -0,0 +1 @@
|
||||
Get android app updates directly from the source
|
1
fastlane/metadata/android/en-US/title.txt
Normal file
@ -0,0 +1 @@
|
||||
Obtainium
|
@ -184,7 +184,6 @@ class _ObtainiumState extends State<Obtainium> {
|
||||
[],
|
||||
0,
|
||||
{
|
||||
'includePrereleases': true,
|
||||
'versionDetection': true,
|
||||
'apkFilterRegEx': 'fdroid',
|
||||
'invertAPKFilter': true
|
||||
|
@ -347,18 +347,6 @@ class _AppPageState extends State<AppPage> {
|
||||
}
|
||||
}
|
||||
|
||||
getResetInstallStatusButton() => TextButton(
|
||||
onPressed: app?.app == null || updating
|
||||
? null
|
||||
: () {
|
||||
app!.app.installedVersion = null;
|
||||
appsProvider.saveApps([app.app]);
|
||||
},
|
||||
child: Text(
|
||||
tr('resetInstallStatus'),
|
||||
textAlign: TextAlign.center,
|
||||
));
|
||||
|
||||
getInstallOrUpdateButton() => TextButton(
|
||||
onPressed: !updating &&
|
||||
(app?.app.installedVersion == null ||
|
||||
@ -403,16 +391,6 @@ class _AppPageState extends State<AppPage> {
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
children: [
|
||||
if (app?.app.installedVersion != null &&
|
||||
app?.app.installedVersion != app?.app.latestVersion &&
|
||||
!isVersionDetectionStandard &&
|
||||
!trackOnly)
|
||||
IconButton(
|
||||
onPressed: app?.downloadProgress != null || updating
|
||||
? null
|
||||
: showMarkUpdatedDialog,
|
||||
tooltip: tr('markUpdated'),
|
||||
icon: const Icon(Icons.done)),
|
||||
if (source != null &&
|
||||
source.combinedAppSpecificSettingFormItems.isNotEmpty)
|
||||
IconButton(
|
||||
@ -458,14 +436,30 @@ class _AppPageState extends State<AppPage> {
|
||||
},
|
||||
icon: const Icon(Icons.more_horiz),
|
||||
tooltip: tr('more')),
|
||||
if (app?.app.installedVersion != null &&
|
||||
app?.app.installedVersion != app?.app.latestVersion &&
|
||||
!isVersionDetectionStandard &&
|
||||
!trackOnly)
|
||||
IconButton(
|
||||
onPressed: app?.downloadProgress != null || updating
|
||||
? null
|
||||
: showMarkUpdatedDialog,
|
||||
tooltip: tr('markUpdated'),
|
||||
icon: const Icon(Icons.done)),
|
||||
if ((!isVersionDetectionStandard || trackOnly) &&
|
||||
app?.app.installedVersion != null &&
|
||||
app?.app.installedVersion == app?.app.latestVersion)
|
||||
IconButton(
|
||||
onPressed: app?.app == null || updating
|
||||
? null
|
||||
: () {
|
||||
app!.app.installedVersion = null;
|
||||
appsProvider.saveApps([app.app]);
|
||||
},
|
||||
icon: const Icon(Icons.restore_rounded),
|
||||
tooltip: tr('resetInstallStatus')),
|
||||
const SizedBox(width: 16.0),
|
||||
Expanded(
|
||||
child: (!isVersionDetectionStandard || trackOnly) &&
|
||||
app?.app.installedVersion != null &&
|
||||
app?.app.installedVersion ==
|
||||
app?.app.latestVersion
|
||||
? getResetInstallStatusButton()
|
||||
: getInstallOrUpdateButton()),
|
||||
Expanded(child: getInstallOrUpdateButton()),
|
||||
const SizedBox(width: 16.0),
|
||||
IconButton(
|
||||
onPressed: app?.downloadProgress != null || updating
|
||||
|
@ -243,7 +243,9 @@ Future<File> downloadFile(
|
||||
tempDownloadedFile.deleteSync(recursive: true);
|
||||
throw response.reasonPhrase ?? tr('unexpectedError');
|
||||
}
|
||||
tempDownloadedFile.renameSync(downloadedFile.path);
|
||||
if (tempDownloadedFile.existsSync()) {
|
||||
tempDownloadedFile.renameSync(downloadedFile.path);
|
||||
}
|
||||
} else {
|
||||
client.close();
|
||||
}
|
||||
|
24
pubspec.lock
@ -307,10 +307,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_local_notifications
|
||||
sha256: "66cc2fe16bf4bca71d795939763ad3f1830ad85772dc3b1561613c501859826d"
|
||||
sha256: c18f1de98fe0bb9dd5ba91e1330d4febc8b6a7de6aae3ffe475ef423723e72f3
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "16.3.1+1"
|
||||
version: "16.3.2"
|
||||
flutter_local_notifications_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -482,10 +482,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: mime
|
||||
sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e
|
||||
sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.4"
|
||||
version: "1.0.5"
|
||||
nested:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -751,10 +751,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: sqflite
|
||||
sha256: "591f1602816e9c31377d5f008c2d9ef7b8aca8941c3f89cc5fd9d84da0c38a9a"
|
||||
sha256: c2c32eb0c74021d987336522acc3b6bf0082fbd0c540c36a9cf4ddb8ba891ddc
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.0"
|
||||
version: "2.3.1"
|
||||
sqflite_common:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -831,10 +831,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: url_launcher
|
||||
sha256: d25bb0ca00432a5e1ee40e69c36c85863addf7cc45e433769d61bed3fe81fd96
|
||||
sha256: c512655380d241a337521703af62d2c122bf7b77a46ff7dd750092aa9433499c
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.2.3"
|
||||
version: "6.2.4"
|
||||
url_launcher_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -927,18 +927,18 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: webview_flutter_android
|
||||
sha256: "161af93c2abaf94ef2192bffb53a3658b2d721a3bf99b69aa1e47814ee18cc96"
|
||||
sha256: "4ea3c4e1b8ed590162b15b8a61b41b1ef3ff179a314627c16ce40c086d94b8af"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.13.2"
|
||||
version: "3.14.0"
|
||||
webview_flutter_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: webview_flutter_platform_interface
|
||||
sha256: "80b40ae4fb959957eef9fa8970b6c9accda9f49fc45c2b75154696a8e8996cfe"
|
||||
sha256: d937581d6e558908d7ae3dc1989c4f87b786891ab47bb9df7de548a151779d8d
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.9.1"
|
||||
version: "2.10.0"
|
||||
webview_flutter_wkwebview:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -17,7 +17,7 @@ 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: 0.16.1+249 # When changing this, update the tag in main() accordingly
|
||||
version: 1.0.0+250 # When changing this, update the tag in main() accordingly
|
||||
|
||||
environment:
|
||||
sdk: '>=3.0.0 <4.0.0'
|
||||
|