diff --git a/ui_automator/android/app/new_snippet.apk b/ui_automator/android/app/new_snippet.apk
new file mode 100755
index 0000000..cf27667
--- /dev/null
+++ b/ui_automator/android/app/new_snippet.apk
Binary files differ
diff --git a/ui_automator/ui_automator.py b/ui_automator/ui_automator.py
index 8402af3..96d9222 100644
--- a/ui_automator/ui_automator.py
+++ b/ui_automator/ui_automator.py
@@ -31,7 +31,6 @@
 
 from absl import app
 from absl import flags
-import inflection
 from mobly.controllers import android_device
 from mobly.controllers.android_device_lib import adb
 from mobly.snippet import errors as snippet_errors
@@ -43,14 +42,11 @@
 from ui_automator import version
 
 
-_GOOGLE_HOME_APP = {
-    'id': 'gha',
-    'name': 'Google Home Application (GHA)',
-    'minVersion': '3.1.18.1',
-    'minMatter': '231456000',
-    'minThread': '231456000',
-}
-_MOBLY_SNIPPET_APK: str = 'com.chip.interop.moblysnippet'
+_MOBLY_SNIPPET_APK: str = (
+    'com.google.assistant.verticals.homeautomation.partners.androidchiptool'
+)
+_APK_VERSION_SUFFIX = '-userdebug'
+_G3_VERSION_INDICATOR = 'cl'
 _MOBLY_SNIPPET_APK_NAME: str = 'mbs'
 _REGRESSION_TESTS_TIMEOUT_IN_SECS = 1
 _COMMISSION_FLAG_USAGE_GUIDE = (
@@ -272,7 +268,9 @@
     if not is_apk_installed or not ad.is_apk_version_correct(
         self._connected_device,
         _MOBLY_SNIPPET_APK,
-        version.VERSION,
+        version.VERSION
+        if _G3_VERSION_INDICATOR in version.VERSION
+        else f'{version.VERSION}{_APK_VERSION_SUFFIX}',
     ):
       if is_apk_installed:
         ad.uninstall_apk(self._connected_device, _MOBLY_SNIPPET_APK)
@@ -323,24 +321,22 @@
 
     Raises:
         ValueError: When any of passed arguments is invalid.
-        MoblySnippetError: When running `commissionDevice` method in snippet apk
-        encountered an error.
+        MoblySnippetError: When running `commissionDeviceInGha` method in
+        snippet apk encountered an error.
     """
     self._logger.info('Start commissioning the device.')
 
     _validate_commission_arg(device_name, pairing_code, gha_room)
 
-    device_name_snake_case = f'_{inflection.underscore(device_name)}'
     matter_device = {
-        'id': device_name_snake_case,
         'name': device_name,
         'pairingCode': pairing_code,
         'roomName': gha_room,
     }
 
     try:
-      self._connected_device.mbs.commissionDevice(
-          _GOOGLE_HOME_APP, matter_device, _GOOGLE_ACCOUNT.value
+      self._connected_device.mbs.commissionDeviceInGha(
+          matter_device, _GOOGLE_ACCOUNT.value
       )
       self._logger.info('Successfully commission the device on GHA.')
     # TODO(google-home-testsuite-dev+ui-automator): Narrow exception type.
@@ -359,8 +355,8 @@
 
     Raises:
         ValueError: When passed argument is invalid.
-        MoblySnippetError: When running `removeDevice` method in snippet apk
-        encountered an error.
+        MoblySnippetError: When running `removeDeviceFromGha` method in snippet
+        apk encountered an error.
     """
     if not re.fullmatch(r'\S{1,24}', device_name):
       raise ValueError(
@@ -370,7 +366,7 @@
 
     self._logger.info('Start removing the device.')
     try:
-      self._connected_device.mbs.removeDevice(
+      self._connected_device.mbs.removeDeviceFromGha(
           device_name, _GOOGLE_ACCOUNT.value
       )
       self._logger.info('Successfully remove the device on GHA.')
@@ -389,14 +385,14 @@
         device_name: Display name of commissioned device on GHA.
 
     Raises:
-        MoblySnippetError: When running `isDeviceExist` method in snippet apk
-        encountered an error.
+        MoblySnippetError: When running `isDeviceExistInGha` method in snippet
+        apk encountered an error.
 
     Returns:
         True if the device exists on GHA.
     """
     try:
-      return self._connected_device.mbs.isDeviceExist(
+      return self._connected_device.mbs.isDeviceExistInGha(
           device_name, _GOOGLE_ACCOUNT.value
       )
     except Exception as e:
@@ -500,7 +496,7 @@
         os.path.dirname(os.path.abspath(__file__)),
         'android',
         'app',
-        'snippet.apk',
+        'new_snippet.apk',
     )
 
   def _add_test_to_commission_test_suite(
diff --git a/ui_automator/ui_automator_test.py b/ui_automator/ui_automator_test.py
index 5663b10..f01b0f4 100644
--- a/ui_automator/ui_automator_test.py
+++ b/ui_automator/ui_automator_test.py
@@ -39,13 +39,6 @@
 _FAKE_MATTER_DEVICE_NAME = 'fake-matter-device-name'
 _FAKE_GHA_ROOM = 'Office'
 _FAKE_PAIRING_CODE = '34970112332'
-_GOOGLE_HOME_APP = {
-    'id': 'gha',
-    'name': 'Google Home Application (GHA)',
-    'minVersion': '3.1.18.1',
-    'minMatter': '231456000',
-    'minThread': '231456000',
-}
 _PYTHON_PATH = subprocess.check_output(['which', 'python']).decode('utf-8')
 _PYTHON_BIN_PATH = _PYTHON_PATH.removesuffix('python')
 _FAKE_VALID_SYS_ARGV_FOR_COMMISSION = [
@@ -82,7 +75,7 @@
     '--commission',
 ]
 _FAKE_PROJECT_FOLDER = '/path/to/'
-_EXPECTED_APK_PATH = f'{_FAKE_PROJECT_FOLDER}android/app/snippet.apk'
+_EXPECTED_APK_PATH = f'{_FAKE_PROJECT_FOLDER}android/app/new_snippet.apk'
 _FAKE_GOOGLE_ACCOUNT = 'fake_google_account'
 
 
@@ -313,8 +306,9 @@
       self, mock_dirname, mock_get_all_instances
   ):
     self.mock_android_device.adb.shell.side_effect = [
-        b'package:com.chip.interop.moblysnippet\n',
-        f'versionName={version.VERSION}'.encode('utf-8'),
+        f'package:{ui_automator._MOBLY_SNIPPET_APK}\n'.encode('utf-8'),
+        f'versionName={version.VERSION}{ui_automator._APK_VERSION_SUFFIX}'
+        .encode('utf-8'),
     ]
     mock_get_all_instances.return_value = [self.mock_android_device]
     self.ui_automator.load_device()
@@ -333,7 +327,7 @@
       self, mock_dirname, mock_get_all_instances
   ):
     self.mock_android_device.adb.shell.side_effect = [
-        b'package:com.chip.interop.moblysnippet\n',
+        f'package:{ui_automator._MOBLY_SNIPPET_APK}\n'.encode('utf-8'),
         b'versionName=fake.version',
     ]
     mock_get_all_instances.return_value = [self.mock_android_device]
@@ -342,7 +336,7 @@
     self.ui_automator.load_snippet()
 
     self.mock_android_device.adb.uninstall.assert_called_with(
-        'com.chip.interop.moblysnippet'
+        'com.google.assistant.verticals.homeautomation.partners.androidchiptool'
     )
     self.mock_android_device.adb.install.assert_called_once_with(
         ['-r', '-g', _EXPECTED_APK_PATH]
@@ -468,7 +462,6 @@
   ):
     mock_get_all_instances.return_value = [self.mock_android_device]
     expected_matter_device = {
-        'id': '_fake_matter_device_name',
         'name': _FAKE_MATTER_DEVICE_NAME,
         'pairingCode': _FAKE_PAIRING_CODE,
         'roomName': _FAKE_GHA_ROOM,
@@ -483,8 +476,8 @@
           _FAKE_GHA_ROOM,
       )
 
-    self.mock_android_device.mbs.commissionDevice.assert_called_once_with(
-        _GOOGLE_HOME_APP, expected_matter_device, _FAKE_GOOGLE_ACCOUNT
+    self.mock_android_device.mbs.commissionDeviceInGha.assert_called_once_with(
+        expected_matter_device, _FAKE_GOOGLE_ACCOUNT
     )
 
   @mock.patch.object(android_device, 'get_all_instances', autospec=True)
@@ -496,7 +489,7 @@
         'Unable to continue automated commissioning process on'
         f' device({self.mock_android_device.device_info["serial"]}).'
     )
-    self.mock_android_device.mbs.commissionDevice.side_effect = Exception(
+    self.mock_android_device.mbs.commissionDeviceInGha.side_effect = Exception(
         'Can not find next button in the page.'
     )
 
@@ -594,7 +587,7 @@
       with self.assertRaises(flags.IllegalFlagValueError):
         ui_automator.run()
 
-    self.mock_android_device.mbs.commissionDevice.assert_not_called()
+    self.mock_android_device.mbs.commissionDeviceInGha.assert_not_called()
 
   @mock.patch.object(sys.stderr, 'write', autospec=True)
   @mock.patch.object(sys, 'exit', autospec=True)
@@ -617,7 +610,7 @@
         second_call_args,
         'Pass --helpshort or --helpfull to see help on flags.\n',
     )
-    self.mock_android_device.mbs.commissionDevice.assert_not_called()
+    self.mock_android_device.mbs.commissionDeviceInGha.assert_not_called()
     mock_exit.assert_called()
 
   @flagsaver.flagsaver((ui_automator._DECOMMISSION, 'm5stack'))
@@ -659,7 +652,7 @@
         f'Unable to remove {_FAKE_MATTER_DEVICE_NAME} from GHA'
         f' on device({self.mock_android_device.device_info["serial"]}).'
     )
-    self.mock_android_device.mbs.removeDevice.side_effect = Exception(
+    self.mock_android_device.mbs.removeDeviceFromGha.side_effect = Exception(
         'Can not remove the device.'
     )
 
@@ -678,7 +671,7 @@
     with self.assertLogs() as cm:
       self.ui_automator.decommission_device(_FAKE_MATTER_DEVICE_NAME)
 
-    self.mock_android_device.mbs.removeDevice.assert_called_once_with(
+    self.mock_android_device.mbs.removeDeviceFromGha.assert_called_once_with(
         _FAKE_MATTER_DEVICE_NAME, _FAKE_GOOGLE_ACCOUNT
     )
     self.assertEqual(
@@ -1295,10 +1288,10 @@
       self, mock_get_all_instances
   ):
     mock_get_all_instances.return_value = [self.mock_android_device]
-    self.mock_android_device.mbs.isDeviceExist.return_value = True
+    self.mock_android_device.mbs.isDeviceExistInGha.return_value = True
 
     self.assertTrue(self.ui_automator.is_device_exist(_FAKE_MATTER_DEVICE_NAME))
-    self.mock_android_device.mbs.isDeviceExist.assert_called_once_with(
+    self.mock_android_device.mbs.isDeviceExistInGha.assert_called_once_with(
         _FAKE_MATTER_DEVICE_NAME, _FAKE_GOOGLE_ACCOUNT
     )
 
@@ -1307,7 +1300,7 @@
       self, mock_get_all_instances
   ):
     mock_get_all_instances.return_value = [self.mock_android_device]
-    self.mock_android_device.mbs.isDeviceExist.return_value = False
+    self.mock_android_device.mbs.isDeviceExistInGha.return_value = False
 
     self.assertFalse(
         self.ui_automator.is_device_exist(_FAKE_MATTER_DEVICE_NAME)
@@ -1318,7 +1311,7 @@
       self, mock_get_all_instances
   ):
     mock_get_all_instances.return_value = [self.mock_android_device]
-    self.mock_android_device.mbs.isDeviceExist.side_effect = Exception(
+    self.mock_android_device.mbs.isDeviceExistInGha.side_effect = Exception(
         'fake-error'
     )
 
diff --git a/ui_automator/version.py b/ui_automator/version.py
index ba7f496..b281ce0 100644
--- a/ui_automator/version.py
+++ b/ui_automator/version.py
@@ -17,6 +17,8 @@
 from typing import Optional
 
 
-_SEMANTIC_VERSION = "1.0.5"
+# The full version name is "2025.09.02.801969437-userdebug", and -userdebug
+# is removed since it's not valid.
+_SEMANTIC_VERSION = "2025.09.02.801969437"
 
 VERSION = _SEMANTIC_VERSION
