Para aquellos que están utilizando la versión de Windows del SDK de Android la respuesta dada en Android Market desaparece tras el reinicio del emulador es lo correcto. Pero el nombre del archivo .img y la ubicación del directorio temporal difieren de los indicados en ese post.
La razón de la diferencia no puedo decirla, pero sospecho que se debe a una de las siguientes razones.
- Estoy usando Windows en lugar de Linux.
- Estoy usando una revisión diferente del SDK, no puedo decirlo realmente ya que no se mencionó la revisión del SDK en el post anterior.
- O podría ser tanto la 1 como la 2.
En cualquier caso, encontrará el directorio temporal .img en la siguiente ubicación:
SystemDrive \Users\ [nombre de usuario] \AppData\Local\Temp\AndroidEmulator
El nombre del archivo será similar al siguiente:
TMP19AD.tmp
Nota: - El nombre del archivo cambiará cada vez que ejecute el emulador. - Que el tamaño del archivo siempre será de 0bytes mientras el emulador esté funcionando. - Es más fácil trabajar en un dispositivo virtual a la vez cuando se accede a los archivos temporales .img. De lo contrario, se confunde qué archivo es para cada dispositivo virtual.
Para que los cambios sean permanentes, haga lo siguiente:
- Trabaja en un dispositivo virtual a la vez.
- Copiar el .tmp del directorio de AndroidEmulator a una ubicación temporal antes de salir del emulador.
- Cambia el nombre del archivo *.tmp por system.img.
- Copiar el archivo system.img en el directorio AVD de tu dispositivo virtual. Sobrescribiendo cualquier archivo system.img anterior.
He creado el siguiente archivo por lotes para hacer la copia.
system_copy.bat
@echo off
rem
rem system_copy.bat
rem
rem Command-line reference:
rem system_copy [drive_letter] [account_username] [virtual_device's_name]
rem
rem
rem check to see if the user entered the parameters needed
rem
rem check for the drive letter
if [%1] == [] goto :error1
rem check for the account username
if [%2] == [] goto error2
rem check for the virtual device's name
if [%3] == [] goto error3
rem
rem set the paths for the tmp_path and main_avd_path
rem to use in the copying process
rem
:SetPaths
rem Grab current directory before we change it
rem this will be directory outside of the virtual device's directory
set main_avd_path="%cd%"
rem set the current location for the temp AVD .img files
set tmp_path=%1:\Users\%2\AppData\Local\Temp\AndroidEmulator
rem now we need to verify a few things
rem verify that the temp_path exist
if not exist %tmp_path% goto error4
rem verify that the temporary .img file exist
if not exist %tmp_path%\*.tmp goto error5
rem now we begin the copying of the system.img file
echo.
echo Copying the *.tmp file to the virtual device's avd directory as system.img.
echo.
copy %tmp_path%\*.tmp %main_avd_path%\%3%.avd\system.img /y >nul
rem check for any errors in copying the file
for %%e in (5 4 3 2 1) do if errorlevel %%e goto copyerror-%%e
if not errorlevel == 0 goto copyerror-0
rem show copy succes message
echo.
echo Copying is complete.
echo.
goto :EOF
rem beginning of the error messages
:error1
echo.
echo ERROR: System drive letter not specified.
echo Please rerun this batch file and specify the system drive letter.
echo.
echo Command-line reference:
echo system_copy [drive_letter] [account_username] [virtual_device's_name]
goto :EOF
:error2
echo.
echo ERROR: User account name not specified.
echo Please rerun this batch file and specify the User account name.
echo.
echo Command-line reference:
echo system_copy [drive_letter] [account_username] [virtual_device's_name]
goto :EOF
:error3
echo.
echo ERROR: Virtual device's name not specified.
echo Please rerun this batch file and specify the AVD name.
echo.
echo Command-line reference:
echo system_copy [drive_letter] [account_username] [virtual_device's_name]
goto :EOF
:error4
echo.
echo ERROR: AndroidEmulator folder '%tmp_path%' does not exist.
echo Please verify that the AndroidEmulator folder has been created at '%tmp_path%' then restart this batch file.
goto :EOF
:error5
echo.
echo ERROR: Temporary .img file does not exist.
echo Check to see if the virtual device is running, then rerun this batch file.
echo.
echo Command-line reference:
echo system_copy [drive_letter] [account_username] [virtual_device's_name]
goto :EOF
:copyerror-0
echo.
echo COPY ERROR: There was an unknown copy error.
echo.
goto :EOF
:copyerror-1
echo.
echo COPY ERROR: No files were found to copy.
echo.
goto :EOF
:copyerror-2
echo.
echo COPY ERROR: The user pressed CTRL+C to terminate xcopy.
echo.
goto :EOF
:copyerror-3
echo.
echo COPY ERROR: Initialization error occurred. There is not enough memory or disk space.
echo.
goto :EOF
:copyerror-4
echo.
echo COPY ERROR: Disk write error occurred.
echo.
goto :EOF
:copyerror-5
echo.
echo COPY ERROR: No files were found to copy.
echo.
goto :EOF
rem EOF
copie y pegue el código anterior en su editor de texto favorito y guárdelo como system_copy.bat.
Coloque este archivo por lotes en el directorio principal para el directorio avd del dispositivo virtual.
Para ejecutarlo, mientras se ejecuta el avd del dispositivo virtual:
- Abre un aviso de cmd
- Ir al directorio en el que se encuentra el archivo por lotes
- Ejecute el archivo por lotes con la siguiente sintaxis de comando:
sistema_copia [drive_letter] [nombre_de_cuenta] [nombre_del_dispositivo_virtual]
ejemplo:
system_copy C "The WABBIT" Nexus_7
Eso es todo. Espero que esto ayude a otros.