mirror of
https://github.com/ImranR98/Obtainium.git
synced 2025-08-22 22:19:29 +02:00
Merge pull request #616 from 1xFF/Out-of-memory
Fix out of memory error for large xapk's
This commit is contained in:
@@ -27,7 +27,7 @@ import 'package:flutter_fgbg/flutter_fgbg.dart';
|
|||||||
import 'package:obtainium/providers/source_provider.dart';
|
import 'package:obtainium/providers/source_provider.dart';
|
||||||
import 'package:http/http.dart';
|
import 'package:http/http.dart';
|
||||||
import 'package:android_intent_plus/android_intent.dart';
|
import 'package:android_intent_plus/android_intent.dart';
|
||||||
import 'package:archive/archive.dart';
|
import 'package:archive/archive_io.dart';
|
||||||
|
|
||||||
class AppInMemory {
|
class AppInMemory {
|
||||||
late App app;
|
late App app;
|
||||||
@@ -333,20 +333,9 @@ class AppsProvider with ChangeNotifier {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void unzipFile(String filePath, String destinationPath) {
|
void unzipFile(String filePath, String destinationPath) {
|
||||||
final bytes = File(filePath).readAsBytesSync();
|
final inputStream = InputFileStream(filePath);
|
||||||
final archive = ZipDecoder().decodeBytes(bytes);
|
final archive = ZipDecoder().decodeBuffer(inputStream);
|
||||||
|
extractArchiveToDisk(archive, destinationPath);
|
||||||
for (final file in archive) {
|
|
||||||
final filename = '$destinationPath/${file.name}';
|
|
||||||
if (file.isFile) {
|
|
||||||
final data = file.content as List<int>;
|
|
||||||
File(filename)
|
|
||||||
..createSync(recursive: true)
|
|
||||||
..writeAsBytesSync(data);
|
|
||||||
} else {
|
|
||||||
Directory(filename).create(recursive: true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> installXApkDir(DownloadedXApkDir dir,
|
Future<void> installXApkDir(DownloadedXApkDir dir,
|
||||||
|
Reference in New Issue
Block a user