diff --git a/create/goldfish_local_image_local_instance.py b/create/goldfish_local_image_local_instance.py
index c066b3c..4141bd8 100644
--- a/create/goldfish_local_image_local_instance.py
+++ b/create/goldfish_local_image_local_instance.py
@@ -238,13 +238,7 @@
         emulator_path = self._FindEmulatorBinary(avd_spec.local_tool_dirs)
         emulator_path = os.path.abspath(emulator_path)
 
-        image_dir = os.path.abspath(avd_spec.local_image_dir)
-
-        if not (os.path.isfile(os.path.join(image_dir, _SYSTEM_IMAGE_NAME)) or
-                os.path.isfile(os.path.join(image_dir,
-                                            _SYSTEM_QEMU_IMAGE_NAME))):
-            raise errors.GetLocalImageError("No system image in %s." %
-                                            image_dir)
+        image_dir = self._FindImageDir(avd_spec.local_image_dir)
 
         # TODO(b/141898893): In Android build environment, emulator gets build
         # information from $ANDROID_PRODUCT_OUT/system/build.prop.
@@ -343,6 +337,35 @@
         raise errors.GetSdkRepoPackageError(_MISSING_EMULATOR_MSG)
 
     @staticmethod
+    def _FindImageDir(image_dir):
+        """Find emulator images in the directory.
+
+        In build environment, the images are in $ANDROID_PRODUCT_OUT.
+        In an extracted SDK repository, the images are in the subdirectory
+        named after the CPU architecture.
+
+        Args:
+            image_dir: The path given by the environment variable or the user.
+
+        Returns:
+            The directory containing the emulator images.
+
+        Raises:
+            errors.GetLocalImageError if the images are not found.
+        """
+        entries = os.listdir(image_dir)
+        if len(entries) == 1:
+            first_entry = os.path.join(image_dir, entries[0])
+            if os.path.isdir(first_entry):
+                image_dir = first_entry
+
+        if (os.path.isfile(os.path.join(image_dir, _SYSTEM_QEMU_IMAGE_NAME)) or
+                os.path.isfile(os.path.join(image_dir, _SYSTEM_IMAGE_NAME))):
+            return image_dir
+
+        raise errors.GetLocalImageError("No system image in %s." % image_dir)
+
+    @staticmethod
     def _IsEmulatorRunning(adb):
         """Check existence of an emulator by sending an empty command.
 
diff --git a/create/goldfish_local_image_local_instance_test.py b/create/goldfish_local_image_local_instance_test.py
index 54b5944..98690a1 100644
--- a/create/goldfish_local_image_local_instance_test.py
+++ b/create/goldfish_local_image_local_instance_test.py
@@ -180,8 +180,10 @@
         """Test _CreateAVD with SDK repository files."""
         self._SetUpMocks(mock_popen, mock_utils, mock_instance)
 
-        self._CreateEmptyFile(os.path.join(self._image_dir, "system.img"))
-        self._CreateEmptyFile(os.path.join(self._image_dir, "build.prop"))
+        self._CreateEmptyFile(os.path.join(self._image_dir, "x86",
+                                           "system.img"))
+        self._CreateEmptyFile(os.path.join(self._image_dir, "x86",
+                                           "build.prop"))
 
         mock_avd_spec = mock.Mock(flavor="phone",
                                   boot_timeout_secs=None,
@@ -214,7 +216,7 @@
         self._mock_proc.poll.assert_called()
 
         self.assertTrue(os.path.isfile(
-            os.path.join(self._image_dir, "system", "build.prop")))
+            os.path.join(self._image_dir, "x86", "system", "build.prop")))
 
     # pylint: disable=protected-access
     @mock.patch("acloud.create.goldfish_local_image_local_instance.instance."
