readApkDexBlobs function
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;
}