mirror of
https://github.com/ImranR98/Obtainium.git
synced 2025-07-18 15:39:40 +02:00
Compare commits
5 Commits
v0.14.21-b
...
v0.14.22-b
Author | SHA1 | Date | |
---|---|---|---|
|
5fbb1c2e32 | ||
|
850dd53c69 | ||
|
e3baf91037 | ||
|
4c811c9c04 | ||
|
4bc9f5826e |
@@ -238,31 +238,31 @@
|
|||||||
"gitlabSourceNote": "未使用访问令牌时可能无法从 GitLab 获取 APK 文件。",
|
"gitlabSourceNote": "未使用访问令牌时可能无法从 GitLab 获取 APK 文件。",
|
||||||
"sortByFileNamesNotLinks": "使用文件名代替链接进行排序",
|
"sortByFileNamesNotLinks": "使用文件名代替链接进行排序",
|
||||||
"filterReleaseNotesByRegEx": "使用正则表达式筛选发行说明",
|
"filterReleaseNotesByRegEx": "使用正则表达式筛选发行说明",
|
||||||
"customLinkFilterRegex": "使用正则表达式自定义链接筛选(默认模式为“.apk$”)",
|
"customLinkFilterRegex": "使用正则表达式筛选自定义来源 APK 文件链接\n(未填写时,默认匹配模式为“.apk$”)",
|
||||||
"appsPossiblyUpdated": "已尝试更新应用",
|
"appsPossiblyUpdated": "已尝试更新应用",
|
||||||
"appsPossiblyUpdatedNotifDescription": "当应用已尝试在后台更新时发送通知",
|
"appsPossiblyUpdatedNotifDescription": "当应用已尝试在后台更新时发送通知",
|
||||||
"xWasPossiblyUpdatedToY": "已尝试将 {} 更新至 {}。",
|
"xWasPossiblyUpdatedToY": "已尝试将“{}”更新至 {}。",
|
||||||
"enableBackgroundUpdates": "启用后台更新",
|
"enableBackgroundUpdates": "启用后台更新",
|
||||||
"backgroundUpdateReqsExplanation": "后台更新未必适用于所有的应用。",
|
"backgroundUpdateReqsExplanation": "后台更新未必适用于所有的应用。",
|
||||||
"backgroundUpdateLimitsExplanation": "只有在启动 Obtainium 时才能确认安装是否成功。",
|
"backgroundUpdateLimitsExplanation": "只有在启动 Obtainium 时才能确认安装是否成功。",
|
||||||
"verifyLatestTag": "验证“Latest”标签",
|
"verifyLatestTag": "验证“Latest”标签",
|
||||||
"intermediateLinkRegex": "首先访问“中间”链接的过滤器",
|
"intermediateLinkRegex": "筛选一个首先访问的“中转”链接(正则表达式)",
|
||||||
"intermediateLinkNotFound": "中间链接未找到",
|
"intermediateLinkNotFound": "未找到“中转”链接",
|
||||||
"exemptFromBackgroundUpdates": "禁用后台更新(如果全局设置启用)",
|
"exemptFromBackgroundUpdates": "单独禁用后台更新(若已经全局启用)",
|
||||||
"bgUpdatesOnWiFiOnly": "不在连接 WiFi 时禁用后台更新",
|
"bgUpdatesOnWiFiOnly": "未连接 Wi-Fi 时禁用后台更新",
|
||||||
"autoSelectHighestVersionCode": "自动选择最高版本号 APK",
|
"autoSelectHighestVersionCode": "自动选择版本号最高的 APK 文件",
|
||||||
"versionExtractionRegEx": "版本提取正则表达式",
|
"versionExtractionRegEx": "获取版本号的正则表达式",
|
||||||
"matchGroupToUse": "匹配要使用的组",
|
"matchGroupToUse": "引用的捕获组",
|
||||||
"highlightTouchTargets": "突出显示不明显的触摸目标",
|
"highlightTouchTargets": "突出展示不明显的触摸区域",
|
||||||
"pickExportDir": "选择导出目录",
|
"pickExportDir": "选择导出文件夹",
|
||||||
"autoExportOnChanges": "修改时自动导出",
|
"autoExportOnChanges": "数据变更时自动导出",
|
||||||
"filterVersionsByRegEx": "使用正则表达式筛选版本",
|
"filterVersionsByRegEx": "使用正则表达式筛选版本号",
|
||||||
"trySelectingSuggestedVersionCode": "尝试选择推荐版本 APK",
|
"trySelectingSuggestedVersionCode": "尝试选择推荐版本的 APK 文件",
|
||||||
"dontSortReleasesList": "Retain release order from API",
|
"dontSortReleasesList": "保持来自 API 的发行顺序",
|
||||||
"reverseSort": "Reverse sorting",
|
"reverseSort": "反转排序",
|
||||||
"debugMenu": "Debug Menu",
|
"debugMenu": "调试选项",
|
||||||
"bgTaskStarted": "Background task started - check logs.",
|
"bgTaskStarted": "后台任务已启动 - 详见日志",
|
||||||
"runBgCheckNow": "Run Background Update Check Now",
|
"runBgCheckNow": "立即进行后台更新检查",
|
||||||
"removeAppQuestion": {
|
"removeAppQuestion": {
|
||||||
"one": "是否删除应用?",
|
"one": "是否删除应用?",
|
||||||
"other": "是否删除应用?"
|
"other": "是否删除应用?"
|
||||||
|
@@ -22,6 +22,7 @@ class APKPure extends AppSource {
|
|||||||
APKPure() {
|
APKPure() {
|
||||||
host = 'apkpure.com';
|
host = 'apkpure.com';
|
||||||
allowSubDomains = true;
|
allowSubDomains = true;
|
||||||
|
naiveStandardVersionDetection = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@@ -9,6 +9,7 @@ class Aptoide extends AppSource {
|
|||||||
host = 'aptoide.com';
|
host = 'aptoide.com';
|
||||||
name = tr('Aptoide');
|
name = tr('Aptoide');
|
||||||
allowSubDomains = true;
|
allowSubDomains = true;
|
||||||
|
naiveStandardVersionDetection = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@@ -8,6 +8,7 @@ class Uptodown extends AppSource {
|
|||||||
Uptodown() {
|
Uptodown() {
|
||||||
host = 'uptodown.com';
|
host = 'uptodown.com';
|
||||||
allowSubDomains = true;
|
allowSubDomains = true;
|
||||||
|
naiveStandardVersionDetection = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@@ -19,7 +19,7 @@ import 'package:easy_localization/src/easy_localization_controller.dart';
|
|||||||
// ignore: implementation_imports
|
// ignore: implementation_imports
|
||||||
import 'package:easy_localization/src/localization.dart';
|
import 'package:easy_localization/src/localization.dart';
|
||||||
|
|
||||||
const String currentVersion = '0.14.21';
|
const String currentVersion = '0.14.22';
|
||||||
const String currentReleaseTag =
|
const String currentReleaseTag =
|
||||||
'v$currentVersion-beta'; // KEEP THIS IN SYNC WITH GITHUB RELEASES
|
'v$currentVersion-beta'; // KEEP THIS IN SYNC WITH GITHUB RELEASES
|
||||||
|
|
||||||
|
@@ -709,14 +709,21 @@ class AppsProvider with ChangeNotifier {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool isVersionDetectionPossible(AppInMemory? app) {
|
bool isVersionDetectionPossible(AppInMemory? app) {
|
||||||
return app?.app.additionalSettings['trackOnly'] != true &&
|
if (app?.app == null) {
|
||||||
app?.app.additionalSettings['versionDetection'] !=
|
return false;
|
||||||
|
}
|
||||||
|
var naiveStandardVersionDetection = SourceProvider()
|
||||||
|
.getSource(app!.app.url, overrideSource: app.app.overrideSource)
|
||||||
|
.naiveStandardVersionDetection;
|
||||||
|
return app.app.additionalSettings['trackOnly'] != true &&
|
||||||
|
app.app.additionalSettings['versionDetection'] !=
|
||||||
'releaseDateAsVersion' &&
|
'releaseDateAsVersion' &&
|
||||||
app?.installedInfo?.versionName != null &&
|
app.installedInfo?.versionName != null &&
|
||||||
app?.app.installedVersion != null &&
|
app.app.installedVersion != null &&
|
||||||
reconcileVersionDifferences(
|
(reconcileVersionDifferences(app.installedInfo!.versionName!,
|
||||||
app!.installedInfo!.versionName!, app.app.installedVersion!) !=
|
app.app.installedVersion!) !=
|
||||||
null;
|
null ||
|
||||||
|
naiveStandardVersionDetection);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Given an App and it's on-device info...
|
// Given an App and it's on-device info...
|
||||||
@@ -725,8 +732,13 @@ class AppsProvider with ChangeNotifier {
|
|||||||
App app, PackageInfo? installedInfo) {
|
App app, PackageInfo? installedInfo) {
|
||||||
var modded = false;
|
var modded = false;
|
||||||
var trackOnly = app.additionalSettings['trackOnly'] == true;
|
var trackOnly = app.additionalSettings['trackOnly'] == true;
|
||||||
var noVersionDetection = app.additionalSettings['versionDetection'] !=
|
var versionDetectionIsStandard =
|
||||||
'standardVersionDetection';
|
app.additionalSettings['versionDetection'] ==
|
||||||
|
'standardVersionDetection';
|
||||||
|
var naiveStandardVersionDetection = SourceProvider()
|
||||||
|
.getSource(app.url, overrideSource: app.overrideSource)
|
||||||
|
.naiveStandardVersionDetection;
|
||||||
|
;
|
||||||
// FIRST, COMPARE THE APP'S REPORTED AND REAL INSTALLED VERSIONS, WHERE ONE IS NULL
|
// FIRST, COMPARE THE APP'S REPORTED AND REAL INSTALLED VERSIONS, WHERE ONE IS NULL
|
||||||
if (installedInfo == null && app.installedVersion != null && !trackOnly) {
|
if (installedInfo == null && app.installedVersion != null && !trackOnly) {
|
||||||
// App says it's installed but isn't really (and isn't track only) - set to not installed
|
// App says it's installed but isn't really (and isn't track only) - set to not installed
|
||||||
@@ -741,7 +753,7 @@ class AppsProvider with ChangeNotifier {
|
|||||||
// SECOND, RECONCILE DIFFERENCES BETWEEN THE APP'S REPORTED AND REAL INSTALLED VERSIONS, WHERE NEITHER IS NULL
|
// SECOND, RECONCILE DIFFERENCES BETWEEN THE APP'S REPORTED AND REAL INSTALLED VERSIONS, WHERE NEITHER IS NULL
|
||||||
if (installedInfo?.versionName != null &&
|
if (installedInfo?.versionName != null &&
|
||||||
installedInfo!.versionName != app.installedVersion &&
|
installedInfo!.versionName != app.installedVersion &&
|
||||||
!noVersionDetection) {
|
versionDetectionIsStandard) {
|
||||||
// App's reported version and real version don't match (and it uses standard version detection)
|
// App's reported version and real version don't match (and it uses standard version detection)
|
||||||
// If they share a standard format (and are still different under it), update the reported version accordingly
|
// If they share a standard format (and are still different under it), update the reported version accordingly
|
||||||
var correctedInstalledVersion = reconcileVersionDifferences(
|
var correctedInstalledVersion = reconcileVersionDifferences(
|
||||||
@@ -749,12 +761,15 @@ class AppsProvider with ChangeNotifier {
|
|||||||
if (correctedInstalledVersion?.key == false) {
|
if (correctedInstalledVersion?.key == false) {
|
||||||
app.installedVersion = correctedInstalledVersion!.value;
|
app.installedVersion = correctedInstalledVersion!.value;
|
||||||
modded = true;
|
modded = true;
|
||||||
|
} else if (naiveStandardVersionDetection) {
|
||||||
|
app.installedVersion = installedInfo.versionName;
|
||||||
|
modded = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// THIRD, RECONCILE THE APP'S REPORTED INSTALLED AND LATEST VERSIONS
|
// THIRD, RECONCILE THE APP'S REPORTED INSTALLED AND LATEST VERSIONS
|
||||||
if (app.installedVersion != null &&
|
if (app.installedVersion != null &&
|
||||||
app.installedVersion != app.latestVersion &&
|
app.installedVersion != app.latestVersion &&
|
||||||
!noVersionDetection) {
|
versionDetectionIsStandard) {
|
||||||
// App's reported installed and latest versions don't match (and it uses standard version detection)
|
// App's reported installed and latest versions don't match (and it uses standard version detection)
|
||||||
// If they share a standard format, make sure the App's reported installed version uses that format
|
// If they share a standard format, make sure the App's reported installed version uses that format
|
||||||
var correctedInstalledVersion =
|
var correctedInstalledVersion =
|
||||||
@@ -766,8 +781,7 @@ class AppsProvider with ChangeNotifier {
|
|||||||
}
|
}
|
||||||
// FOURTH, DISABLE VERSION DETECTION IF ENABLED AND THE REPORTED/REAL INSTALLED VERSIONS ARE NOT STANDARDIZED
|
// FOURTH, DISABLE VERSION DETECTION IF ENABLED AND THE REPORTED/REAL INSTALLED VERSIONS ARE NOT STANDARDIZED
|
||||||
if (installedInfo != null &&
|
if (installedInfo != null &&
|
||||||
app.additionalSettings['versionDetection'] ==
|
versionDetectionIsStandard &&
|
||||||
'standardVersionDetection' &&
|
|
||||||
!isVersionDetectionPossible(
|
!isVersionDetectionPossible(
|
||||||
AppInMemory(app, null, installedInfo, null))) {
|
AppInMemory(app, null, installedInfo, null))) {
|
||||||
app.additionalSettings['versionDetection'] = 'noVersionDetection';
|
app.additionalSettings['versionDetection'] = 'noVersionDetection';
|
||||||
|
@@ -328,6 +328,7 @@ abstract class AppSource {
|
|||||||
bool changeLogIfAnyIsMarkDown = true;
|
bool changeLogIfAnyIsMarkDown = true;
|
||||||
bool appIdInferIsOptional = false;
|
bool appIdInferIsOptional = false;
|
||||||
bool allowSubDomains = false;
|
bool allowSubDomains = false;
|
||||||
|
bool naiveStandardVersionDetection = false;
|
||||||
|
|
||||||
AppSource() {
|
AppSource() {
|
||||||
name = runtimeType.toString();
|
name = runtimeType.toString();
|
||||||
|
12
pubspec.lock
12
pubspec.lock
@@ -879,18 +879,18 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: webview_flutter
|
name: webview_flutter
|
||||||
sha256: "82f6787d5df55907aa01e49bd9644f4ed1cc82af7a8257dd9947815959d2e755"
|
sha256: "053d454c9475546b4382e9498601fb46293cdac9b3ca93f1a738375bc9a1eee4"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.2.4"
|
version: "4.3.0"
|
||||||
webview_flutter_android:
|
webview_flutter_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: webview_flutter_android
|
name: webview_flutter_android
|
||||||
sha256: ddc167c6676f57c8b367d19fcbee267d6dc6adf81bd6c3cb87981d30746e0a6d
|
sha256: b0cd33dd7d3dd8e5f664e11a19e17ba12c352647269921a3b568406b001f1dff
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.10.1"
|
version: "3.12.0"
|
||||||
webview_flutter_platform_interface:
|
webview_flutter_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -903,10 +903,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: webview_flutter_wkwebview
|
name: webview_flutter_wkwebview
|
||||||
sha256: "485af05f2c5f83c7f78c20e236b170ad02df7153b299ae9917345be43871d29f"
|
sha256: "3c7d56ca4b82654ad1f58aeefb8d593a59224f26d6b2bf8feed074361eb34c86"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.8.0"
|
version: "3.9.0"
|
||||||
win32:
|
win32:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
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
|
# 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
|
# 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.
|
# of the product and file versions while build-number is used as the build suffix.
|
||||||
version: 0.14.21+213 # When changing this, update the tag in main() accordingly
|
version: 0.14.22+214 # When changing this, update the tag in main() accordingly
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: '>=3.0.0 <4.0.0'
|
sdk: '>=3.0.0 <4.0.0'
|
||||||
|
Reference in New Issue
Block a user