Store symlinks in package archive (#77184) (#77194)

Co-authored-by: Jenn Magder <magder@google.com>
diff --git a/dev/bots/prepare_package.dart b/dev/bots/prepare_package.dart
index 0a25c48..5738c4a 100644
--- a/dev/bots/prepare_package.dart
+++ b/dev/bots/prepare_package.dart
@@ -443,6 +443,7 @@
         'zip',
         '-r',
         '-9',
+        '--symlinks',
         output.absolute.path,
         path.basename(source.path),
       ];
diff --git a/dev/bots/test/prepare_package_test.dart b/dev/bots/test/prepare_package_test.dart
index b41b434..8e072ce 100644
--- a/dev/bots/test/prepare_package_test.dart
+++ b/dev/bots/test/prepare_package_test.dart
@@ -124,7 +124,7 @@
           'git clean -f -X **/.dart_tool': null,
           if (platform.isWindows) 'attrib -h .git': null,
           if (platform.isWindows) '7za a -tzip -mx=9 $archiveName flutter': null
-          else if (platform.isMacOS) 'zip -r -9 $archiveName flutter': null
+          else if (platform.isMacOS) 'zip -r -9 --symlinks $archiveName flutter': null
           else if (platform.isLinux) 'tar cJf $archiveName flutter': null,
         };
         await creator.initializeRepo();
@@ -160,7 +160,7 @@
           'git clean -f -X **/.dart_tool': null,
           if (platform.isWindows) 'attrib -h .git': null,
           if (platform.isWindows) '7za a -tzip -mx=9 $archiveName flutter': null
-          else if (platform.isMacOS) 'zip -r -9 $archiveName flutter': null
+          else if (platform.isMacOS) 'zip -r -9 --symlinks $archiveName flutter': null
           else if (platform.isLinux) 'tar cJf $archiveName flutter': null,
         };
         processManager.fakeResults = calls;
@@ -210,7 +210,7 @@
           'git clean -f -X **/.dart_tool': null,
           if (platform.isWindows) 'attrib -h .git': null,
           if (platform.isWindows) '7za a -tzip -mx=9 $archiveName flutter': null
-          else if (platform.isMacOS) 'zip -r -9 $archiveName flutter': null
+          else if (platform.isMacOS) 'zip -r -9 --symlinks $archiveName flutter': null
           else if (platform.isLinux) 'tar cJf $archiveName flutter': null,
         };
         processManager.fakeResults = calls;