2017-08-14 29 views
13

Używam wirtualnej maszyny w Androidzie Studio. Problem polega na tym, że nigdy nie montuje się karty SD. W ustawieniach, próbowałem studio zarządzane (100MB), jak również stworzenie jednego po sobie:Emulator Androida nie zainstaluje karty SD

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

Plik znajduje się w katalogu domowym z R/praw czarno-białych.

To jest moja konfiguracja:

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 

Jak widać, hw.sdCard jest ustawiony na YES.

Szczerze mówiąc nie wiem, czego szukać w Logcat. Filtrowanie MOUNT Widziałem to:

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 

Próbowałem zostały również działa to w wierszu poleceń:

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

Ale nie widzę żadnego błędu. Karta SD po prostu się nie zamontuje.

+0

należy dodać po pierwsze napisać zewnętrznego permision –

+0

zmiana obrazu etykiety woluminu z sdcard coś innego. –

+0

> powinieneś najpierw dodać zewnętrzne zezwolenie na zapis Do czego? > Zmień etykietę woluminu obrazu z sdCard coś innego. jaka objętość obrazu? –

Odpowiedz

5

To wydaje się być problem z ostatnią wersją emulatora, prawdopodobnie w związku ze starszymi wersjami Androida (Jelly Bean itp.).

Obniżenie wersji narzędzi SDK do poprzedniej wersji rozwiązuje problem.

Działa na przykład z r25.2.5, który można pobrać dla Windows, Linux lub Mac OS X. Przechowywanie narzędzi poza oryginalnym katalogiem SDK może wymagać ustawienia zmiennej środowiskowej ANDROID_SDK_ROOT.

Następnie użyj emulatora wykonywalny dostarczonymi z tym pakietem na rozpoczęcie AVD:

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

Rozwiązało to problem dla mnie. Wyodrębnij pobrane archiwum narzędzi 25.2.5 dla swojego systemu powyżej do katalogu sdk - umieściłem moje w katalogu 'C: \ Android \ sdk \ tools-25.2.5 \'. Nie musiałem mieszać zmiennych środowiskowych, wystarczy uruchomić emulator za pomocą wiersza poleceń. Jeśli twoje 'config.ini' dla emulatora jest poprawnie skonfigurowane, nie powinieneś podawać żadnych opcji poza' -avd AVD_NAME'. Mam nadzieję, że wkrótce zostaną naprawione aktualne wersje emulatora. – InsanityOnABun

+0

ta odpowiedź jest bardzo przydatna, również komentarz @InsanityOnABun jest bardzo przydatny i działa bez żadnych negatywnych wpływów. –