2017-08-14 3 views
13

Je cours une machine virtuelle dans Android Studio. Le problème est qu'il ne monte jamais la carte SD. Dans les paramètres, je l'ai aussi bien studio géré essayé (100Mo) en créant un moi-même:L'émulateur Android ne va pas monter la carte SD

$ ./mksdcard -l sdCard 100M sdcard.img 

Le fichier est dans mon dossier avec les droits de R/W.

C'est ma configuration:

avd.ini.encoding=UTF-8 
AvdId=DEVICEC_API_17 
PlayStore.enabled=false 
abi.type=x86 
avd.ini.displayname=DEVICEC API 17 
disk.dataPartition.size=800M 
hw.accelerometer=no 
hw.audioInput=yes 
hw.battery=yes 
hw.camera.back=emulated 
hw.camera.front=emulated 
hw.cpu.arch=x86 
hw.cpu.ncore=4 
hw.dPad=no 
hw.device.manufacturer=User 
hw.device.name=DEVICEC 
hw.gps=no 
hw.gpu.enabled=yes 
hw.gpu.mode=auto 
hw.initialOrientation=landscape 
hw.keyboard=yes 
hw.lcd.density=160 
hw.mainKeys=no 
hw.ramSize=1536 
hw.sdCard=yes 
hw.sensors.orientation=no 
hw.sensors.proximity=no 
hw.trackBall=no 
image.sysdir.1=system-images/android-17/google_apis/x86/ 
runtime.network.latency=none 
runtime.network.speed=full 
sdcard.path=/home/user/sdcard.img 
showDeviceFrame=no 
skin.dynamic=yes 
skin.name=800x600 
skin.path=_no_skin 
skin.path.backup=_no_skin 
tag.display=Google APIs 
tag.id=google_apis 
vm.heapSize=48 

Comme vous pouvez le voir, hw.sdCard est réglé sur YES.

Honnêtement, je ne sais pas quoi chercher dans Logcat. Filtrage MOUNT J'ai vu ceci:

08-14 17:45:55.544 1495-1508/system_process I/SystemServer: Mount Service 
08-14 17:45:55.544 1495-1508/system_process D/MountService: got storage path: /mnt/sdcard description: USB storage primary: true removable: false emulated: false mtpReserve: 0 allowMassStorage: false maxFileSize: 0 
08-14 17:45:55.544 1495-1508/system_process D/MountService: addVolumeLocked() StorageVolume [mStorageId=0 mPath=/mnt/sdcard mDescriptionId=17040615 mPrimary=true mRemovable=false mEmulated=false mMtpReserveSpace=0 mAllowMassStorage=false mMaxFileSize=0 mOwner=null] 
08-14 17:45:55.554 1495-1533/system_process D/MountService: volume state changed for /mnt/sdcard (null -> removed) 
08-14 17:45:55.554 1495-1533/system_process W/MountService: getSecureContainerList() called when storage not mounted 

J'ai aussi essayé de courir ceci dans la ligne de commande:

$ ./emulator -avd CASIO_API_17 -sdcard /home/mariano/sdcard.img 

Mais je ne vois pas d'erreur. La carte SD ne va tout simplement pas monter.

+0

vous devez ajouter d'abord l'écrire permision externe –

+0

changement étiquette de volume d'image de sdcard autre chose. –

+0

> vous devez ajouter d'abord l'écriture permision externe Pour quoi? > Modifier le nom du volume de l'image à partir de sdCard autre chose. quel volume d'image? –

Répondre

5

Cela semble être un problème avec la version récente de l'émulateur, peut-être en relation avec les anciennes versions d'Android (Jelly Bean, etc.). La mise à niveau des outils SDK vers une version précédente permet de résoudre le problème. Il fonctionne par exemple avec r25.2.5, que vous pouvez télécharger pour Windows, Linux ou Mac OS X. Si vous stockez les outils en dehors du répertoire SDK d'origine, vous devrez peut-être définir la variable d'environnement ANDROID_SDK_ROOT.

Utilisez ensuite l'exécutable de l'émulateur fourni avec ce package pour démarrer votre AVD:

$ ./emulator -avd CASIO_API_17 -sdcard /home/mariano/sdcard.img 
+1

Cela a résolu le problème pour moi. Extrayez l'archive d'outils 25.2.5 téléchargée pour votre système ci-dessus dans votre répertoire sdk - je mets la mienne sous 'C: \ Android \ sdk \ tools-25.2.5 \'. N'ayant pas besoin de jouer avec des variables d'environnement, lancez simplement l'émulateur via la ligne de commande. Si votre 'config.ini' pour l'émulateur est configuré correctement, vous n'avez pas besoin de fournir d'autres options que' -avd AVD_NAME'. J'espère que la version actuelle de l'émulateur sera bientôt corrigée. – InsanityOnABun

+0

cette réponse est très utile, aussi le commentaire par @InsanityOnABun est très utile et fonctionne sans aucun impact négatif. –