読者です 読者をやめる 読者になる 読者になる

tumblr

tumblr(タンブラー)は、メディアミックスブログサービス。ブログとミニブログ、そしてソーシャルブックマークを統合したマイクロブログサービスである。アメリカのDavidville.inc(現: Tumblr, Inc.)により2007年3月1日にサービスが開始された。

android studioのエミュレータ(ADB)でSDカードを挿す

その昔、eclipseなどのプラグインとしてandroid開発するときについてきたAVD(Android Virtual Device、仮想デバイス、エミュレータ)は死ぬほど起動が遅かった。とんでもなく遅かった。エミュレータの起動が遅すぎて、1回エミュレータを起動している間にアプリを作り上げることができちゃったよHAHAHAなどというジョークも出てきたり出てこなかったりするほどだった。いやまぁ僕がたった今考えたジョークだから出てこなかったんだろうけど。それからGenyMotionというエミュレータが出てきた。virtualboxを利用してエミュレータを起動するのである。それまでのエミュレータに比べると爆速というレベルだった。

そして今、android studioが普及して、AVD周りのサポートがよくなった。GenyMotionを入れなくとも、そこそこ速いエミュレータを利用することが出来る。今後android studio側でスピードアップを含めたエミュレータ周りの改善がなされていくだろう、と考えているので、今はGenyMotionはつかわずandroid studioのAVDマネージャーを通して純正のエミュレータを利用している。

環境: mac OSX10.9
android studio: 1.4.1

で、その中で出会ったエラーというか変な現象。ギャラリーから画像を読み込みたいときは外部ストレージのパーミッションが必要になることがある。アプリ側でパーミッションの許可ダイアログを出して、設定からアプリのパーミッションをいじっても外部ストレージ、つまりはSDカードが読み込まれない。どういうわけか、SDカード自体がAVD側で認識されていないっぽいAVDマネージャーでSDカードを読み込むように設定しても、うまくいかない。 後述のstackoverflowの質問者はこういう感じで挿さってるかどうか確認してる。

//This prints: External: removed
Log.d(TAG, "External: " + Environment.getExternalStorageState() );

で、色々探してたらstackoverflowでそれに関することが出てきた。どうやら手動でSDカードを挿さないといけないらしい。手動で、と言ってもAVDマネージャ経由でなくコンフィグを自分で書き換えるという意味。

以下のディレクトリにADVのコンフィグファイルが配置されている。

~/.android/avd/Nexus_5_API_23_x86.avd/config.ini

Nexus5...の部分のディレクトリ名は自分でつくったAVDの名前になるので変わることがある。で、とにかくこのconfig.iniの中にsdカードに関する以下の行が含まれているので、それをyesに書き換える。

hw.sdCard=yes

で、これでADVを再起動すればOK。無事にSDカードが認識された状態になる。 参考:

stackoverflow.com