mirror of
				https://github.com/ImranR98/Obtainium.git
				synced 2025-11-03 23:03:29 +01:00 
			
		
		
		
	Compare commits
	
		
			14 Commits
		
	
	
		
			2fc8dafc9e
			...
			v1.2.4
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					a56069e881 | ||
| 
						 | 
					a34e45363b | ||
| 
						 | 
					e1a89f5f67 | ||
| 
						 | 
					f7f6e0cde7 | ||
| 
						 | 
					5a58522bf6 | ||
| 
						 | 
					9347af2090 | ||
| 
						 | 
					b294e57367 | ||
| 
						 | 
					4234e16432 | ||
| 
						 | 
					a64f2e1af7 | ||
| 
						 | 
					926462407c | ||
| 
						 | 
					1b499700fd | ||
| 
						 | 
					930a4b411e | ||
| 
						 | 
					b9931e00e7 | ||
| 
						 | 
					2337e04ee1 | 
							
								
								
									
										2
									
								
								.flutter
									
									
									
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								.flutter
									
									
									
									
									
								
							 Submodule .flutter updated: 05db968908...a402d9a437
									
								
							@@ -1,6 +1,7 @@
 | 
			
		||||
import java.io.FileInputStream
 | 
			
		||||
import java.util.Properties
 | 
			
		||||
import com.android.build.api.variant.FilterConfiguration.FilterType.*
 | 
			
		||||
import com.android.build.gradle.internal.api.ApkVariantOutputImpl
 | 
			
		||||
 | 
			
		||||
plugins {
 | 
			
		||||
    id("com.android.application")
 | 
			
		||||
@@ -86,18 +87,17 @@ android {
 | 
			
		||||
 | 
			
		||||
val abiCodes = mapOf("x86_64" to 1, "armeabi-v7a" to 2, "arm64-v8a" to 3)
 | 
			
		||||
 | 
			
		||||
androidComponents {
 | 
			
		||||
    onVariants { variant ->
 | 
			
		||||
android.applicationVariants.configureEach {
 | 
			
		||||
    val variant = this
 | 
			
		||||
    variant.outputs.forEach { output ->
 | 
			
		||||
            val name = output.filters.find { it.filterType == ABI }?.identifier
 | 
			
		||||
            val baseAbiCode = abiCodes[name] ?: 0
 | 
			
		||||
            if (baseAbiCode != null) {
 | 
			
		||||
                output.versionCode.set(baseAbiCode + ((output.versionCode.get() ?: 0) * 10))
 | 
			
		||||
            }
 | 
			
		||||
        val abiVersionCode = abiCodes[output.filters.find { it.filterType == "ABI" }?.identifier]
 | 
			
		||||
        if (abiVersionCode != null) {
 | 
			
		||||
            (output as ApkVariantOutputImpl).versionCodeOverride = variant.versionCode * 10 + abiVersionCode
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
dependencies {
 | 
			
		||||
    coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.5")
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -254,8 +254,8 @@
 | 
			
		||||
    "verifyLatestTag": "Ellenőrizze a „legújabb” címkét",
 | 
			
		||||
    "intermediateLinkRegex": "Szűrő egy „köztes” hivatkozás felkereséséhez",
 | 
			
		||||
    "filterByLinkText": "Hivatkozások szűrése hivatkozásszöveg alapján",
 | 
			
		||||
    "matchLinksOutsideATags": "<a> címkéken kívüli linkek megfeleltetése",
 | 
			
		||||
    "intermediateLinkNotFound": "Köztes hivatkozás nem található",
 | 
			
		||||
    "matchLinksOutsideATags": "Hivatkozások keresése az <a> címkéken kívül is",
 | 
			
		||||
    "intermediateLinkNotFound": "Nem található köztes hivatkozás",
 | 
			
		||||
    "intermediateLink": "Köztes hivatkozás",
 | 
			
		||||
    "exemptFromBackgroundUpdates": "Mentes a háttérben történő frissítések alól (ha engedélyezett)",
 | 
			
		||||
    "bgUpdatesOnWiFiOnly": "Háttérfrissítések letiltása, amikor az eszköz nem csatlakozik a Wi-Fi-hez",
 | 
			
		||||
 
 | 
			
		||||
@@ -335,7 +335,7 @@
 | 
			
		||||
    "foregroundService": "Obtainium フォアグラウンドサービス",
 | 
			
		||||
    "foregroundServiceExplanation": "アップデート確認にフォアグラウンドサービスを使用する(より信頼性が高いが、より電力を消費する)",
 | 
			
		||||
    "fgServiceNotice": "この通知は、バックグラウンドでアップデートを確認するために必要です(OSの設定で非表示にできます)。",
 | 
			
		||||
    "excludeSecrets": "秘密を除く",
 | 
			
		||||
    "excludeSecrets": "シークレットを除く",
 | 
			
		||||
    "removeAppQuestion": {
 | 
			
		||||
        "one": "アプリを削除しますか?",
 | 
			
		||||
        "other": "アプリを削除しますか?"
 | 
			
		||||
 
 | 
			
		||||
@@ -253,8 +253,8 @@
 | 
			
		||||
    "backgroundUpdateLimitsExplanation": "Успешность фоновой установки можно определить только после открытия Obtainium",
 | 
			
		||||
    "verifyLatestTag": "Проверять метку «latest»",
 | 
			
		||||
    "intermediateLinkRegex": "Фильтр для «промежуточной» ссылки для посещения",
 | 
			
		||||
    "filterByLinkText": "Фильтрация ссылок по тексту ссылки",
 | 
			
		||||
    "matchLinksOutsideATags": "Сопоставляйте ссылки вне тегов <a>",
 | 
			
		||||
    "filterByLinkText": "Фильтровать ссылки по тексту ссылки",
 | 
			
		||||
    "matchLinksOutsideATags": "Сопоставлять ссылки вне тегов <a>",
 | 
			
		||||
    "intermediateLinkNotFound": "Промежуточная ссылка не найдена",
 | 
			
		||||
    "intermediateLink": "Промежуточная ссылка",
 | 
			
		||||
    "exemptFromBackgroundUpdates": "Исключить из фоновых обновлений (если включено)",
 | 
			
		||||
 
 | 
			
		||||
@@ -32,6 +32,7 @@ class FDroid extends AppSource {
 | 
			
		||||
        GeneratedFormSwitch(
 | 
			
		||||
          'trySelectingSuggestedVersionCode',
 | 
			
		||||
          label: tr('trySelectingSuggestedVersionCode'),
 | 
			
		||||
          defaultValue: true,
 | 
			
		||||
        ),
 | 
			
		||||
      ],
 | 
			
		||||
      [
 | 
			
		||||
 
 | 
			
		||||
@@ -29,6 +29,13 @@ class FDroidRepo extends AppSource {
 | 
			
		||||
          defaultValue: false,
 | 
			
		||||
        ),
 | 
			
		||||
      ],
 | 
			
		||||
      [
 | 
			
		||||
        GeneratedFormSwitch(
 | 
			
		||||
          'trySelectingSuggestedVersionCode',
 | 
			
		||||
          label: tr('trySelectingSuggestedVersionCode'),
 | 
			
		||||
          defaultValue: true,
 | 
			
		||||
        ),
 | 
			
		||||
      ],
 | 
			
		||||
    ];
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@@ -170,6 +177,7 @@ class FDroidRepo extends AppSource {
 | 
			
		||||
    }
 | 
			
		||||
    standardUrl = removeQueryParamsFromUrl(standardUrl);
 | 
			
		||||
    bool pickHighestVersionCode = additionalSettings['pickHighestVersionCode'];
 | 
			
		||||
    bool trySelectingSuggestedVersionCode = additionalSettings['trySelectingSuggestedVersionCode'];
 | 
			
		||||
    if (appIdOrName == null) {
 | 
			
		||||
      throw NoReleasesError();
 | 
			
		||||
    }
 | 
			
		||||
@@ -207,38 +215,58 @@ class FDroidRepo extends AppSource {
 | 
			
		||||
      foundApps[0].querySelector('name')?.innerHtml ?? appId;
 | 
			
		||||
      var appName = foundApps[0].querySelector('name')?.innerHtml ?? appId;
 | 
			
		||||
      var releases = foundApps[0].querySelectorAll('package');
 | 
			
		||||
      if (releases.isEmpty) {
 | 
			
		||||
        throw NoReleasesError();
 | 
			
		||||
      }
 | 
			
		||||
      String? changeLog = foundApps[0].querySelector('changelog')?.innerHtml;
 | 
			
		||||
      String? latestVersion = releases[0].querySelector('version')?.innerHtml;
 | 
			
		||||
      String? added = releases[0].querySelector('added')?.innerHtml;
 | 
			
		||||
      DateTime? releaseDate = added != null ? DateTime.parse(added) : null;
 | 
			
		||||
      if (latestVersion == null) {
 | 
			
		||||
        throw NoVersionError();
 | 
			
		||||
      }
 | 
			
		||||
      var latestVersionReleases = releases
 | 
			
		||||
          .where(
 | 
			
		||||
            (element) =>
 | 
			
		||||
                element.querySelector('version')?.innerHtml == latestVersion &&
 | 
			
		||||
                element.querySelector('apkname') != null,
 | 
			
		||||
          )
 | 
			
		||||
          .toList();
 | 
			
		||||
      if (latestVersionReleases.length > 1 && pickHighestVersionCode) {
 | 
			
		||||
        latestVersionReleases.sort((e1, e2) {
 | 
			
		||||
          return int.parse(
 | 
			
		||||
            e2.querySelector('versioncode')!.innerHtml,
 | 
			
		||||
          ).compareTo(int.parse(e1.querySelector('versioncode')!.innerHtml));
 | 
			
		||||
        });
 | 
			
		||||
        latestVersionReleases = [latestVersionReleases[0]];
 | 
			
		||||
      String? marketvercodeStr = foundApps[0].querySelector('marketvercode')?.innerHtml;
 | 
			
		||||
      int? marketvercode = int.tryParse(marketvercodeStr ?? '');
 | 
			
		||||
      List selectedReleases = [];
 | 
			
		||||
      if (trySelectingSuggestedVersionCode && marketvercode != null) {
 | 
			
		||||
        selectedReleases = releases.where((e) =>
 | 
			
		||||
          int.tryParse(e.querySelector('versioncode')?.innerHtml ?? '') == marketvercode &&
 | 
			
		||||
          e.querySelector('apkname') != null
 | 
			
		||||
        ).toList();
 | 
			
		||||
      }
 | 
			
		||||
      List<String> apkUrls = latestVersionReleases
 | 
			
		||||
      String? appAuthorName = foundApps[0].querySelector('author')?.innerHtml;
 | 
			
		||||
      if (appAuthorName != null) {
 | 
			
		||||
        authorName = appAuthorName;
 | 
			
		||||
      }
 | 
			
		||||
      if (selectedReleases.isEmpty) {
 | 
			
		||||
        selectedReleases = releases.where((e) =>
 | 
			
		||||
          e.querySelector('version')?.innerHtml == latestVersion &&
 | 
			
		||||
          e.querySelector('apkname') != null
 | 
			
		||||
        ).toList();
 | 
			
		||||
        if (selectedReleases.length > 1 && pickHighestVersionCode) {
 | 
			
		||||
          selectedReleases.sort((e1, e2) {
 | 
			
		||||
            return int.parse(e2.querySelector('versioncode')!.innerHtml)
 | 
			
		||||
              .compareTo(int.parse(e1.querySelector('versioncode')!.innerHtml));
 | 
			
		||||
        });
 | 
			
		||||
          selectedReleases = [selectedReleases[0]];
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      String? selectedVersion = selectedReleases[0].querySelector('version')?.innerHtml;
 | 
			
		||||
      if (selectedVersion == null) {
 | 
			
		||||
        throw NoVersionError();
 | 
			
		||||
      }
 | 
			
		||||
      String? added = selectedReleases[0].querySelector('added')?.innerHtml;
 | 
			
		||||
      DateTime? releaseDate = added != null ? DateTime.parse(added) : null;
 | 
			
		||||
      List<String> apkUrls = selectedReleases
 | 
			
		||||
          .map(
 | 
			
		||||
            (e) =>
 | 
			
		||||
                '${res.request!.url.toString().split('/').reversed.toList().sublist(1).reversed.join('/')}/${e.querySelector('apkname')!.innerHtml}',
 | 
			
		||||
          )
 | 
			
		||||
          .toList();
 | 
			
		||||
      return APKDetails(
 | 
			
		||||
        latestVersion,
 | 
			
		||||
        selectedVersion,
 | 
			
		||||
        getApkUrlsFromUrls(apkUrls),
 | 
			
		||||
        AppNames(authorName, appName),
 | 
			
		||||
        releaseDate: releaseDate,
 | 
			
		||||
        changeLog: changeLog,
 | 
			
		||||
      );
 | 
			
		||||
    } else {
 | 
			
		||||
      throw getObtainiumHttpError(res);
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										22
									
								
								pubspec.lock
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								pubspec.lock
									
									
									
									
									
								
							@@ -232,10 +232,10 @@ packages:
 | 
			
		||||
    dependency: "direct main"
 | 
			
		||||
    description:
 | 
			
		||||
      name: dynamic_color
 | 
			
		||||
      sha256: eae98052fa6e2826bdac3dd2e921c6ce2903be15c6b7f8b6d8a5d49b5086298d
 | 
			
		||||
      sha256: "43a5a6679649a7731ab860334a5812f2067c2d9ce6452cf069c5e0c25336c17c"
 | 
			
		||||
      url: "https://pub.dev"
 | 
			
		||||
    source: hosted
 | 
			
		||||
    version: "1.7.0"
 | 
			
		||||
    version: "1.8.1"
 | 
			
		||||
  easy_localization:
 | 
			
		||||
    dependency: "direct main"
 | 
			
		||||
    description:
 | 
			
		||||
@@ -288,10 +288,10 @@ packages:
 | 
			
		||||
    dependency: "direct main"
 | 
			
		||||
    description:
 | 
			
		||||
      name: file_picker
 | 
			
		||||
      sha256: e7e16c9d15c36330b94ca0e2ad8cb61f93cd5282d0158c09805aed13b5452f22
 | 
			
		||||
      sha256: f2d9f173c2c14635cc0e9b14c143c49ef30b4934e8d1d274d6206fcb0086a06f
 | 
			
		||||
      url: "https://pub.dev"
 | 
			
		||||
    source: hosted
 | 
			
		||||
    version: "10.3.2"
 | 
			
		||||
    version: "10.3.3"
 | 
			
		||||
  fixnum:
 | 
			
		||||
    dependency: transitive
 | 
			
		||||
    description:
 | 
			
		||||
@@ -572,10 +572,10 @@ packages:
 | 
			
		||||
    dependency: transitive
 | 
			
		||||
    description:
 | 
			
		||||
      name: leak_tracker
 | 
			
		||||
      sha256: "8dcda04c3fc16c14f48a7bb586d4be1f0d1572731b6d81d51772ef47c02081e0"
 | 
			
		||||
      sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de"
 | 
			
		||||
      url: "https://pub.dev"
 | 
			
		||||
    source: hosted
 | 
			
		||||
    version: "11.0.1"
 | 
			
		||||
    version: "11.0.2"
 | 
			
		||||
  leak_tracker_flutter_testing:
 | 
			
		||||
    dependency: transitive
 | 
			
		||||
    description:
 | 
			
		||||
@@ -1059,10 +1059,10 @@ packages:
 | 
			
		||||
    dependency: transitive
 | 
			
		||||
    description:
 | 
			
		||||
      name: url_launcher_android
 | 
			
		||||
      sha256: "69ee86740f2847b9a4ba6cffa74ed12ce500bbe2b07f3dc1e643439da60637b7"
 | 
			
		||||
      sha256: "07cffecb7d68cbc6437cd803d5f11a86fe06736735c3dfe46ff73bcb0f958eed"
 | 
			
		||||
      url: "https://pub.dev"
 | 
			
		||||
    source: hosted
 | 
			
		||||
    version: "6.3.18"
 | 
			
		||||
    version: "6.3.21"
 | 
			
		||||
  url_launcher_ios:
 | 
			
		||||
    dependency: transitive
 | 
			
		||||
    description:
 | 
			
		||||
@@ -1155,10 +1155,10 @@ packages:
 | 
			
		||||
    dependency: transitive
 | 
			
		||||
    description:
 | 
			
		||||
      name: webview_flutter_android
 | 
			
		||||
      sha256: "9a25f6b4313978ba1c2cda03a242eea17848174912cfb4d2d8ee84a556f248e3"
 | 
			
		||||
      sha256: "3c4eb4fcc252b40c2b5ce7be20d0481428b70f3ff589b0a8b8aaeb64c6bed701"
 | 
			
		||||
      url: "https://pub.dev"
 | 
			
		||||
    source: hosted
 | 
			
		||||
    version: "4.10.1"
 | 
			
		||||
    version: "4.10.2"
 | 
			
		||||
  webview_flutter_platform_interface:
 | 
			
		||||
    dependency: transitive
 | 
			
		||||
    description:
 | 
			
		||||
@@ -1209,4 +1209,4 @@ packages:
 | 
			
		||||
    version: "6.3.0"
 | 
			
		||||
sdks:
 | 
			
		||||
  dart: ">=3.9.0 <4.0.0"
 | 
			
		||||
  flutter: ">=3.29.0"
 | 
			
		||||
  flutter: ">=3.35.0"
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user