// 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 createManifest({ required Logger logger, required FileSystem fileSystem, required Platform platform, required WindowsUwpProject project, required BuildInfo buildInfo, required Directory buildDirectory, }) async { final List outputs = []; 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')); }