Pour ceux qui utilisent la version Windows du SDK Android, la réponse donnée dans le document Android Market disparu après le redémarrage de l'émulateur est la chose correcte à faire. Mais le nom du fichier .img et l'emplacement du répertoire temporaire diffèrent de ceux donnés dans ce message.
Je ne peux pas dire la raison de cette différence, mais je soupçonne qu'elle est due à l'une des raisons suivantes.
- J'utilise Windows au lieu de Linux.
- J'utilise une révision différente du SDK, je ne peux pas vraiment le dire car il n'y avait aucune mention de la révision du SDK dans le message précédent.
- Ou cela pourrait être à la fois 1 et 2.
De toute façon, vous trouverez le répertoire temporaire .img à l'endroit suivant :
SystemDrive \Users\ [nom d'utilisateur] \AppData\Local\Temp\AndroidEmulator
Le nom du fichier sera similaire au suivant :
TMP19AD.tmp
Note : - Le nom du fichier changera à chaque fois que vous exécuterez l'émulateur. - La taille du fichier sera toujours de 0bytes lorsque l'émulateur est en marche. - Il est plus facile de travailler sur un seul dispositif virtuel à la fois lorsque vous accédez aux fichiers .img temporaires. Sinon, il est difficile de savoir quel fichier correspond à quel dispositif virtuel.
Pour rendre vos modifications permanentes, procédez comme suit :
- Travaillez sur un seul dispositif virtuel à la fois.
- Copiez le .tmp du répertoire AndroidEmulator vers un emplacement temporaire avant de quitter l'émulateur.
- Renommez le fichier *.tmp en system.img.
- Copiez le fichier system.img dans le répertoire AVD de votre dispositif virtuel. En écrasant tout fichier system.img précédent.
J'ai créé le fichier batch suivant pour effectuer la copie.
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
copiez et collez le code ci-dessus dans votre éditeur de texte préféré et enregistrez-le sous le nom de system_copy.bat.
Placez ce fichier batch dans le répertoire parent du répertoire avd du dispositif virtuel.
Pour l'exécuter, pendant que l'avd du dispositif virtuel est en cours d'exécution :
- Faites apparaître une invite cmd
- Aller au répertoire dans lequel se trouve le fichier batch
- Exécutez le fichier batch avec la syntaxe de commande suivante :
système_copie [drive_letter] [nom d'utilisateur du compte] [nom_du_dispositif_virtuel]
exemple :
system_copy C "The WABBIT" Nexus_7
C'est ça. J'espère que cela aidera d'autres personnes.