readApkDexBlobs function

Future<Map<String, List<int>>> readApkDexBlobs(
  1. String apkPath
)

Read all multi-dex blobs from an APK zip.

Implementation

Future<Map<String, List<int>>> readApkDexBlobs(String apkPath) async {
  final bytes = await File(apkPath).readAsBytes();
  final archive = ZipDecoder().decodeBytes(bytes);
  final out = <String, List<int>>{};
  for (final f in archive) {
    if (!f.isFile) continue;
    final name = f.name.replaceAll(r'\', '/').split('/').last;
    if (name == 'classes.dex' || RegExp(r'^classes\d+\.dex$').hasMatch(name)) {
      out[name] = List<int>.from(f.content as List<int>);
    }
  }
  return out;
}