unpackAndroidAssets function
Extract assets from *.apk file
Implementation
Future<String> unpackAndroidAssets() async {
AssetManifest assetManifest = await AssetManifest.loadFromAssetBundle(rootBundle);
List<String> assets = assetManifest.listAssets();
Directory documentsDirectory = await getApplicationDocumentsDirectory();
for (String asset in assets) {
String filePath = "${documentsDirectory.path}/$asset";
ByteData data = await rootBundle.load(asset);
List<int> bytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
File file = File(filePath);
FileSystemEntityType type = FileSystemEntity.typeSync(filePath);
if (type == FileSystemEntityType.notFound) {
file.createSync(recursive: true);
await file.writeAsBytes(bytes);
} else if (type == FileSystemEntityType.file) {
if (md5.convert(bytes) != md5.convert(file.readAsBytesSync())) {
file.deleteSync();
file.createSync();
await file.writeAsBytes(bytes);
}
}
}
return "${documentsDirectory.path}/assets";
}