Skip to content

Commit 2165ec7

Browse files
committed
Parse package metadata
1 parent b08f2e1 commit 2165ec7

File tree

3 files changed

+24
-9
lines changed

3 files changed

+24
-9
lines changed

lib/pages/main/package_list.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ class _PackageListState extends ConsumerState<PackageList> {
5151
return packageMetadataFuture.when(
5252
data: (packageMetadata) => ListTile(
5353
title: Text(packageMetadata.packageName),
54-
subtitle: Text(packageMetadata.packageId),
54+
Text("${packageMetadata.packageId} - ${packageMetadata.version}"),
5555
leading: const Icon(Icons.apps),
5656
dense: true,
5757
onTap: () {},

lib/riverpod/package_list.dart

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,5 @@ class PackageList extends _$PackageList {
3838
Future<PackageMetadata> packageInfo(PackageInfoRef ref, String id) async {
3939
final device = ref.watch(selectedDeviceProvider);
4040

41-
return PackageMetadata(
42-
packageId: id,
43-
groupId: "",
44-
packageName: "",
45-
version: "",
46-
);
41+
return Adb.getPackageInfo(device?.serialName, id);
4742
}

lib/utils/adb.dart

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import 'dart:io';
33

44
import 'package:archive/archive_io.dart';
55
import 'package:async/async.dart';
6+
import 'package:desktop_adb_file_browser/riverpod/package_list.dart';
67
import 'package:desktop_adb_file_browser/utils/platform.dart';
78
import 'package:dio/dio.dart';
89
import 'package:flutter/cupertino.dart';
@@ -22,6 +23,8 @@ abstract class Adb {
2223
static final _fileListingRegex =
2324
RegExp(r"([\w-]+) *(\d+) *(\w+) *(\w+) *(\d+) *([\d-]+) *([\d:]+) *(.*)");
2425

26+
static final _packageVersion = RegExp(r"versionName=(.*)\n");
27+
2528
static final Context adbPathContext = Context(style: Style.posix);
2629

2730
static const String adbDownloadURL =
@@ -283,8 +286,7 @@ drwxrwx--x 2 u0_a140 sdcard_rw 3488 2023-11-01 10:45 mods_old
283286
fixPath(path, addQuotes: false), false, serialName);
284287
}
285288

286-
static Future<List<String>> getPackageList(
287-
String? serialName) async {
289+
static Future<List<String>> getPackageList(String? serialName) async {
288290
var result = await runAdbCommand(serialName, ["shell", "pm list packages"]);
289291

290292
var listed = (result.stdout as String)
@@ -297,6 +299,24 @@ drwxrwx--x 2 u0_a140 sdcard_rw 3488 2023-11-01 10:45 mods_old
297299
return listed;
298300
}
299301

302+
static Future<PackageMetadata> getPackageInfo(
303+
String? serialName, String packageId) async {
304+
var result = await runAdbCommand(
305+
serialName, ["shell", "dumpsys package $packageId"]);
306+
307+
String str = result.stdout;
308+
str = str.replaceAll("\r\n", "\n");
309+
310+
final version = _packageVersion.firstMatch(str)?[1] ?? "version n/a";
311+
312+
return PackageMetadata(
313+
packageName: "",
314+
packageId: packageId,
315+
version: version,
316+
groupId: "",
317+
);
318+
}
319+
300320
static Future<List<String>?> getDevicesSerial() async {
301321
const requiredString = "List of devices attached\n";
302322

0 commit comments

Comments
 (0)