Flutter tool support for building dynamic updates (#25576)

diff --git a/packages/flutter_tools/lib/src/build_info.dart b/packages/flutter_tools/lib/src/build_info.dart
index f731aec..ac12851 100644
--- a/packages/flutter_tools/lib/src/build_info.dart
+++ b/packages/flutter_tools/lib/src/build_info.dart
@@ -13,7 +13,11 @@
   const BuildInfo(this.mode, this.flavor, {
     this.trackWidgetCreation = false,
     this.compilationTraceFilePath,
-    this.buildHotUpdate,
+    this.createBaseline,
+    this.createPatch,
+    this.patchNumber,
+    this.patchDir,
+    this.baselineDir,
     this.extraFrontEndOptions,
     this.extraGenSnapshotOptions,
     this.buildSharedLibrary,
@@ -43,8 +47,24 @@
   /// Dart compilation trace file to use for JIT VM snapshot.
   final String compilationTraceFilePath;
 
+  /// Save baseline package.
+  final bool createBaseline;
+
   /// Build differential snapshot.
-  final bool buildHotUpdate;
+  final bool createPatch;
+
+  /// Internal version number of dynamic patch (not displayed to users).
+  /// Each patch should have a unique number to differentiate from previous
+  /// patches for the same versionCode on Android or CFBundleVersion on iOS.
+  final int patchNumber;
+
+  /// The directory where to store generated dynamic patches.
+  final String patchDir;
+
+  /// The directory where to store generated baseline packages.
+  /// Built packages, such as APK files on Android, are saved and can be used
+  /// to generate dynamic patches in later builds.
+  final String baselineDir;
 
   /// Extra command-line options for front-end.
   final String extraFrontEndOptions;
@@ -92,6 +112,9 @@
   /// Exactly one of [isDebug], [isProfile], or [isRelease] is true.
   bool get isRelease => mode == BuildMode.release || mode == BuildMode.dynamicRelease;
 
+  /// Returns whether a dynamic build is requested.
+  bool get isDynamic => mode == BuildMode.dynamicProfile || mode == BuildMode.dynamicRelease;
+
   bool get usesAot => isAotBuildMode(mode);
   bool get supportsEmulator => isEmulatorBuildMode(mode);
   bool get supportsSimulator => isEmulatorBuildMode(mode);
@@ -101,7 +124,7 @@
       BuildInfo(mode, flavor,
           trackWidgetCreation: trackWidgetCreation,
           compilationTraceFilePath: compilationTraceFilePath,
-          buildHotUpdate: buildHotUpdate,
+          createPatch: createPatch,
           extraFrontEndOptions: extraFrontEndOptions,
           extraGenSnapshotOptions: extraGenSnapshotOptions,
           buildSharedLibrary: buildSharedLibrary,