blob: 783e22ca2909928c58e5d745b12dc0b90d11ccfb [file] [log] [blame]
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import '../asset.dart';
import '../base/common.dart';
import '../base/file_system.dart';
import '../base/logger.dart';
import '../base/platform.dart';
import '../build_info.dart';
import '../cmake_project.dart';
/// Generate an install manifest that is required for CMAKE on UWP projects.
Future<void> createManifest({
required Logger logger,
required FileSystem fileSystem,
required Platform platform,
required WindowsUwpProject project,
required BuildInfo buildInfo,
required Directory buildDirectory,
}) async {
final List<File> outputs = <File>[];
final AssetBundle assetBundle = AssetBundleFactory.defaultInstance(
logger: logger,
fileSystem: fileSystem,
platform: platform,
).createBundle();
final int resultCode = await assetBundle.build(
packagesPath: buildInfo.packagesPath,
assetDirPath: buildDirectory.childDirectory('flutter_assets').path,
);
if (resultCode != 0) {
throwToolExit('Failed to build assets.');
}
if (buildInfo.mode.isPrecompiled) {
outputs.add(buildDirectory.childFile('app.so'));
} else {
outputs.add(buildDirectory.parent.childDirectory('flutter_assets').childFile('kernel_blob.bin'));
}
for (final String key in assetBundle.entries.keys) {
outputs.add(buildDirectory.parent.childDirectory('flutter_assets').childFile(key));
}
outputs.add(project.ephemeralDirectory.childFile('flutter_windows_winuwp.dll'));
outputs.add(project.ephemeralDirectory.childFile('flutter_windows_winuwp.dll.pdb'));
outputs.add(project.ephemeralDirectory.childFile('icudtl.dat'));
project.ephemeralDirectory.childFile('install_manifest')
..createSync(recursive: true)
..writeAsStringSync(outputs.map((File file) => file.absolute.uri.path.substring(1)).join('\n'));
}