mirror of
https://github.com/ReVanced/revanced-manager.git
synced 2026-01-24 03:31:03 +00:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
007b518503 | ||
|
|
c6edc620c8 | ||
|
|
3f9d7c9cc0 | ||
|
|
6c1845e246 |
@@ -76,4 +76,9 @@ dependencies {
|
|||||||
// Signing & aligning
|
// Signing & aligning
|
||||||
implementation("org.bouncycastle:bcpkix-jdk15on:1.70")
|
implementation("org.bouncycastle:bcpkix-jdk15on:1.70")
|
||||||
implementation("com.android.tools.build:apksig:7.2.2")
|
implementation("com.android.tools.build:apksig:7.2.2")
|
||||||
|
|
||||||
|
// MicroG cronet
|
||||||
|
implementation("org.microg:cronet-common:$cronetVersion")
|
||||||
|
implementation("org.microg:cronet-native:$cronetVersion")
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
buildscript {
|
buildscript {
|
||||||
|
ext.cronetVersion = '102.5005.125'
|
||||||
ext.kotlin_version = '1.7.10'
|
ext.kotlin_version = '1.7.10'
|
||||||
repositories {
|
repositories {
|
||||||
google()
|
google()
|
||||||
|
|||||||
@@ -2,23 +2,16 @@ import 'dart:convert';
|
|||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
import 'package:collection/collection.dart';
|
import 'package:collection/collection.dart';
|
||||||
import 'package:dio/dio.dart';
|
import 'package:dio/dio.dart';
|
||||||
import 'package:dio_brotli_transformer/dio_brotli_transformer.dart';
|
|
||||||
import 'package:dio_http_cache_lts/dio_http_cache_lts.dart';
|
import 'package:dio_http_cache_lts/dio_http_cache_lts.dart';
|
||||||
import 'package:flutter_cache_manager/flutter_cache_manager.dart';
|
import 'package:flutter_cache_manager/flutter_cache_manager.dart';
|
||||||
import 'package:injectable/injectable.dart';
|
import 'package:injectable/injectable.dart';
|
||||||
import 'package:native_dio_client/native_dio_client.dart';
|
import 'package:native_dio_client/native_dio_client.dart';
|
||||||
import 'package:revanced_manager/models/patch.dart';
|
import 'package:revanced_manager/models/patch.dart';
|
||||||
|
import 'package:revanced_manager/utils/check_for_gms.dart';
|
||||||
|
|
||||||
@lazySingleton
|
@lazySingleton
|
||||||
class GithubAPI {
|
class GithubAPI {
|
||||||
final Dio _dio = Dio(
|
late Dio _dio = Dio();
|
||||||
BaseOptions(
|
|
||||||
baseUrl: 'https://api.github.com',
|
|
||||||
headers: {
|
|
||||||
'accept-encoding': 'br',
|
|
||||||
},
|
|
||||||
),
|
|
||||||
)..httpClientAdapter = NativeAdapter();
|
|
||||||
final DioCacheManager _dioCacheManager = DioCacheManager(CacheConfig());
|
final DioCacheManager _dioCacheManager = DioCacheManager(CacheConfig());
|
||||||
final Options _cacheOptions = buildCacheOptions(
|
final Options _cacheOptions = buildCacheOptions(
|
||||||
const Duration(hours: 6),
|
const Duration(hours: 6),
|
||||||
@@ -35,9 +28,22 @@ class GithubAPI {
|
|||||||
'com.spotify.music': 'spotify',
|
'com.spotify.music': 'spotify',
|
||||||
};
|
};
|
||||||
|
|
||||||
void initialize() {
|
void initialize() async {
|
||||||
|
bool isGMSInstalled = await checkForGMS();
|
||||||
|
|
||||||
|
if (!isGMSInstalled) {
|
||||||
|
_dio = Dio(BaseOptions(
|
||||||
|
baseUrl: 'https://api.github.com',
|
||||||
|
));
|
||||||
|
print('GitHub API: Using default engine + $isGMSInstalled');
|
||||||
|
} else {
|
||||||
|
_dio = Dio(BaseOptions(
|
||||||
|
baseUrl: 'https://api.github.com',
|
||||||
|
))
|
||||||
|
..httpClientAdapter = NativeAdapter();
|
||||||
|
print('ReVanced API: Using CronetEngine + $isGMSInstalled');
|
||||||
|
}
|
||||||
_dio.interceptors.add(_dioCacheManager.interceptor);
|
_dio.interceptors.add(_dioCacheManager.interceptor);
|
||||||
_dio.transformer = DioBrotliTransformer(transformer: DefaultTransformer());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> clearAllCache() async {
|
Future<void> clearAllCache() async {
|
||||||
|
|||||||
@@ -256,6 +256,35 @@ class ManagerAPI {
|
|||||||
return unsavedApps;
|
return unsavedApps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<void> reAssessSavedApps() async {
|
||||||
|
List<PatchedApplication> patchedApps = getPatchedApps();
|
||||||
|
List<PatchedApplication> unsavedApps = await getUnsavedApps(patchedApps);
|
||||||
|
patchedApps.addAll(unsavedApps);
|
||||||
|
List<PatchedApplication> toRemove = await getAppsToRemove(patchedApps);
|
||||||
|
patchedApps.removeWhere((a) => toRemove.contains(a));
|
||||||
|
for (PatchedApplication app in patchedApps) {
|
||||||
|
app.hasUpdates =
|
||||||
|
await hasAppUpdates(app.originalPackageName, app.patchDate);
|
||||||
|
app.changelog =
|
||||||
|
await getAppChangelog(app.originalPackageName, app.patchDate);
|
||||||
|
if (!app.hasUpdates) {
|
||||||
|
String? currentInstalledVersion =
|
||||||
|
(await DeviceApps.getApp(app.packageName))?.versionName;
|
||||||
|
if (currentInstalledVersion != null) {
|
||||||
|
String currentSavedVersion = app.version;
|
||||||
|
int currentInstalledVersionInt = int.parse(
|
||||||
|
currentInstalledVersion.replaceAll(RegExp('[^0-9]'), ''));
|
||||||
|
int currentSavedVersionInt =
|
||||||
|
int.parse(currentSavedVersion.replaceAll(RegExp('[^0-9]'), ''));
|
||||||
|
if (currentInstalledVersionInt > currentSavedVersionInt) {
|
||||||
|
app.hasUpdates = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
await setPatchedApps(patchedApps);
|
||||||
|
}
|
||||||
|
|
||||||
Future<bool> isAppUninstalled(PatchedApplication app) async {
|
Future<bool> isAppUninstalled(PatchedApplication app) async {
|
||||||
bool existsRoot = false;
|
bool existsRoot = false;
|
||||||
bool existsNonRoot = await DeviceApps.isAppInstalled(app.packageName);
|
bool existsNonRoot = await DeviceApps.isAppInstalled(app.packageName);
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
import 'package:collection/collection.dart';
|
import 'package:collection/collection.dart';
|
||||||
import 'package:dio_brotli_transformer/dio_brotli_transformer.dart';
|
|
||||||
import 'package:native_dio_client/native_dio_client.dart';
|
import 'package:native_dio_client/native_dio_client.dart';
|
||||||
import 'package:dio/dio.dart';
|
import 'package:dio/dio.dart';
|
||||||
import 'package:dio_http_cache_lts/dio_http_cache_lts.dart';
|
import 'package:dio_http_cache_lts/dio_http_cache_lts.dart';
|
||||||
import 'package:flutter_cache_manager/flutter_cache_manager.dart';
|
import 'package:flutter_cache_manager/flutter_cache_manager.dart';
|
||||||
import 'package:injectable/injectable.dart';
|
import 'package:injectable/injectable.dart';
|
||||||
import 'package:revanced_manager/models/patch.dart';
|
import 'package:revanced_manager/models/patch.dart';
|
||||||
|
import 'package:revanced_manager/utils/check_for_gms.dart';
|
||||||
import 'package:timeago/timeago.dart';
|
import 'package:timeago/timeago.dart';
|
||||||
|
|
||||||
@lazySingleton
|
@lazySingleton
|
||||||
@@ -19,15 +19,21 @@ class RevancedAPI {
|
|||||||
);
|
);
|
||||||
|
|
||||||
Future<void> initialize(String apiUrl) async {
|
Future<void> initialize(String apiUrl) async {
|
||||||
_dio = Dio(BaseOptions(
|
bool isGMSInstalled = await checkForGMS();
|
||||||
baseUrl: apiUrl,
|
|
||||||
headers: {
|
if (!isGMSInstalled) {
|
||||||
'accept-encoding': 'br',
|
_dio = Dio(BaseOptions(
|
||||||
},
|
baseUrl: apiUrl,
|
||||||
))
|
));
|
||||||
..httpClientAdapter = NativeAdapter();
|
print('ReVanced API: Using default engine + $isGMSInstalled');
|
||||||
|
} else {
|
||||||
|
_dio = Dio(BaseOptions(
|
||||||
|
baseUrl: apiUrl,
|
||||||
|
))
|
||||||
|
..httpClientAdapter = NativeAdapter();
|
||||||
|
print('ReVanced API: Using CronetEngine + $isGMSInstalled');
|
||||||
|
}
|
||||||
_dio.interceptors.add(_dioCacheManager.interceptor);
|
_dio.interceptors.add(_dioCacheManager.interceptor);
|
||||||
_dio.transformer = DioBrotliTransformer(transformer: DefaultTransformer());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> clearAllCache() async {
|
Future<void> clearAllCache() async {
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ class HomeViewModel extends BaseViewModel {
|
|||||||
_toast.show('homeView.noConnection');
|
_toast.show('homeView.noConnection');
|
||||||
}
|
}
|
||||||
_getPatchedApps();
|
_getPatchedApps();
|
||||||
|
_managerAPI.reAssessSavedApps().then((_) => _getPatchedApps());
|
||||||
}
|
}
|
||||||
|
|
||||||
void navigateToAppInfo(PatchedApplication app) {
|
void navigateToAppInfo(PatchedApplication app) {
|
||||||
|
|||||||
10
lib/utils/check_for_gms.dart
Normal file
10
lib/utils/check_for_gms.dart
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
// Check for google mobile services on device
|
||||||
|
|
||||||
|
import 'package:device_apps/device_apps.dart';
|
||||||
|
|
||||||
|
Future<bool> checkForGMS() async {
|
||||||
|
bool isGMSInstalled = true;
|
||||||
|
isGMSInstalled = await DeviceApps.isAppInstalled('com.google.android.gms') ||
|
||||||
|
await DeviceApps.isAppInstalled('com.android.vending');
|
||||||
|
return isGMSInstalled;
|
||||||
|
}
|
||||||
@@ -4,7 +4,7 @@ homepage: https://github.com/revanced/revanced-manager
|
|||||||
|
|
||||||
publish_to: 'none'
|
publish_to: 'none'
|
||||||
|
|
||||||
version: 0.0.31+31
|
version: 0.0.32+32
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=2.17.5 <3.0.0"
|
sdk: ">=2.17.5 <3.0.0"
|
||||||
|
|||||||
Reference in New Issue
Block a user