Prepare `devtools_shared` for publishing to version 12.1.0 (#9651)

diff --git a/packages/devtools_shared/CHANGELOG.md b/packages/devtools_shared/CHANGELOG.md
index dfa4e23..d0ac7b6 100644
--- a/packages/devtools_shared/CHANGELOG.md
+++ b/packages/devtools_shared/CHANGELOG.md
@@ -3,6 +3,13 @@
 Use of this source code is governed by a BSD-style license that can be
 found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd.
 -->
+# 12.1.0
+* Adds additional logging to `IntegrationTestRunner`.
+* Fixes assertion error when parsing Flutter channel versions using the format `X.XX.X-X.X.pre-XXX`.
+* Fixes breakage associated with ChromeDriver 138 when using `IntegrationTestRunner`.
+* Adds `sanitizeVersionStr` helper to `SemanticVersion`.
+* Fixes null error when parsing `bundleIdentifier` or `teamIndentifier` in `UniversalLinkSettings`.
+
 # 12.0.0
 * Update `dtd` dependency to `^4.0.0`.
 * Register and unregister VM service connections on DTD. This change only
diff --git a/packages/devtools_shared/lib/src/deeplink/universal_link_settings.dart b/packages/devtools_shared/lib/src/deeplink/universal_link_settings.dart
index 0cc78b5..4e3a7b0 100644
--- a/packages/devtools_shared/lib/src/deeplink/universal_link_settings.dart
+++ b/packages/devtools_shared/lib/src/deeplink/universal_link_settings.dart
@@ -21,10 +21,11 @@
   });
 
   /// The bundle identifier of the iOS build of this Flutter project.
-  String? get bundleIdentifier => _json[_kBundleIdentifierKey] as String?;
+  String get bundleIdentifier =>
+      (_json[_kBundleIdentifierKey] as String?) ?? '';
 
   /// The team identifier of the iOS build of this Flutter project.
-  String? get teamIdentifier => _json[_kTeamIdentifierKey] as String?;
+  String get teamIdentifier => (_json[_kTeamIdentifierKey] as String?) ?? '';
 
   /// The associated domains of the iOS build of this Flutter project.
   List<String> get associatedDomains =>
diff --git a/packages/devtools_shared/lib/src/test/io_utils.dart b/packages/devtools_shared/lib/src/test/io_utils.dart
index 65180fe..eb1b5c8 100644
--- a/packages/devtools_shared/lib/src/test/io_utils.dart
+++ b/packages/devtools_shared/lib/src/test/io_utils.dart
@@ -94,11 +94,11 @@
     Process.killPid(processId);
     return process.exitCode.timeout(
       killTimeout,
-      onTimeout: () => _killForcefully(process, debugLogging: debugLogging),
+      onTimeout: () => killForcefully(process, debugLogging: debugLogging),
     );
   }
 
-  Future<int> _killForcefully(
+  Future<int> killForcefully(
     Process process, {
     bool debugLogging = false,
   }) {
diff --git a/packages/devtools_shared/pubspec.yaml b/packages/devtools_shared/pubspec.yaml
index 7dad9cd..d9b5680 100644
--- a/packages/devtools_shared/pubspec.yaml
+++ b/packages/devtools_shared/pubspec.yaml
@@ -4,7 +4,7 @@
 name: devtools_shared
 description: Package of shared Dart structures between devtools_app, dds, and other tools.
 
-version: 12.0.0
+version: 12.1.0
 
 repository: https://github.com/flutter/devtools/tree/master/packages/devtools_shared
 
diff --git a/packages/devtools_shared/test/deeplink/universal_link_settings_test.dart b/packages/devtools_shared/test/deeplink/universal_link_settings_test.dart
index 15a56ad..ec15bcd 100644
--- a/packages/devtools_shared/test/deeplink/universal_link_settings_test.dart
+++ b/packages/devtools_shared/test/deeplink/universal_link_settings_test.dart
@@ -29,7 +29,7 @@
 }
 ''';
       final settings = UniversalLinkSettings.fromJson(json);
-      expect(settings.bundleIdentifier, isNull);
+      expect(settings.bundleIdentifier, isEmpty);
       expect(settings.teamIdentifier, 'TEAMID');
       expect(settings.associatedDomains, ['applinks:example.com']);
     });
@@ -43,7 +43,7 @@
 ''';
       final settings = UniversalLinkSettings.fromJson(json);
       expect(settings.bundleIdentifier, 'com.example.app');
-      expect(settings.teamIdentifier, isNull);
+      expect(settings.teamIdentifier, isEmpty);
       expect(settings.associatedDomains, ['applinks:example.com']);
     });
   });