Compare commits

...

4 Commits

Author SHA1 Message Date
Aunali321
007b518503 build: Bump version to v0.0.32 2022-10-12 02:07:23 +05:30
Aunali321
c6edc620c8 feat: cronet lib for non gms device. 2022-10-12 01:52:57 +05:30
Aunali321
3f9d7c9cc0 fix: add back saving patched apps after clearing data. 2022-10-11 20:27:29 +05:30
Aunali321
6c1845e246 feat: add fallback for cronet. 2022-10-11 20:19:50 +05:30
8 changed files with 79 additions and 21 deletions

View File

@@ -76,4 +76,9 @@ dependencies {
// Signing & aligning
implementation("org.bouncycastle:bcpkix-jdk15on:1.70")
implementation("com.android.tools.build:apksig:7.2.2")
// MicroG cronet
implementation("org.microg:cronet-common:$cronetVersion")
implementation("org.microg:cronet-native:$cronetVersion")
}

View File

@@ -1,4 +1,5 @@
buildscript {
ext.cronetVersion = '102.5005.125'
ext.kotlin_version = '1.7.10'
repositories {
google()

View File

@@ -2,23 +2,16 @@ import 'dart:convert';
import 'dart:io';
import 'package:collection/collection.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:flutter_cache_manager/flutter_cache_manager.dart';
import 'package:injectable/injectable.dart';
import 'package:native_dio_client/native_dio_client.dart';
import 'package:revanced_manager/models/patch.dart';
import 'package:revanced_manager/utils/check_for_gms.dart';
@lazySingleton
class GithubAPI {
final Dio _dio = Dio(
BaseOptions(
baseUrl: 'https://api.github.com',
headers: {
'accept-encoding': 'br',
},
),
)..httpClientAdapter = NativeAdapter();
late Dio _dio = Dio();
final DioCacheManager _dioCacheManager = DioCacheManager(CacheConfig());
final Options _cacheOptions = buildCacheOptions(
const Duration(hours: 6),
@@ -35,9 +28,22 @@ class GithubAPI {
'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.transformer = DioBrotliTransformer(transformer: DefaultTransformer());
}
Future<void> clearAllCache() async {

View File

@@ -256,6 +256,35 @@ class ManagerAPI {
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 {
bool existsRoot = false;
bool existsNonRoot = await DeviceApps.isAppInstalled(app.packageName);

View File

@@ -1,12 +1,12 @@
import 'dart:io';
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:dio/dio.dart';
import 'package:dio_http_cache_lts/dio_http_cache_lts.dart';
import 'package:flutter_cache_manager/flutter_cache_manager.dart';
import 'package:injectable/injectable.dart';
import 'package:revanced_manager/models/patch.dart';
import 'package:revanced_manager/utils/check_for_gms.dart';
import 'package:timeago/timeago.dart';
@lazySingleton
@@ -19,15 +19,21 @@ class RevancedAPI {
);
Future<void> initialize(String apiUrl) async {
_dio = Dio(BaseOptions(
baseUrl: apiUrl,
headers: {
'accept-encoding': 'br',
},
))
..httpClientAdapter = NativeAdapter();
bool isGMSInstalled = await checkForGMS();
if (!isGMSInstalled) {
_dio = Dio(BaseOptions(
baseUrl: apiUrl,
));
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.transformer = DioBrotliTransformer(transformer: DefaultTransformer());
}
Future<void> clearAllCache() async {

View File

@@ -49,6 +49,7 @@ class HomeViewModel extends BaseViewModel {
_toast.show('homeView.noConnection');
}
_getPatchedApps();
_managerAPI.reAssessSavedApps().then((_) => _getPatchedApps());
}
void navigateToAppInfo(PatchedApplication app) {

View 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;
}

View File

@@ -4,7 +4,7 @@ homepage: https://github.com/revanced/revanced-manager
publish_to: 'none'
version: 0.0.31+31
version: 0.0.32+32
environment:
sdk: ">=2.17.5 <3.0.0"