mirror of
				https://github.com/ImranR98/Obtainium.git
				synced 2025-10-30 21:13:28 +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 -> | ||||
|         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)) | ||||
|             } | ||||
| android.applicationVariants.configureEach { | ||||
|     val variant = this | ||||
|     variant.outputs.forEach { output -> | ||||
|         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