Androidエミュレーター(AVD)の不具合とアップデートについて

2019年8月30日

Androidエミュレーターを使っていて、以下のメッセージに良く遭遇します。

Emulator: glTexImage2D: got err pre 🙁 0x502 internal 0x1908 format 0x1908 type 0x1401

Emulator: android/android-emugl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp:glGetAttachedShaders:1631 error 0x501

これは、非力な開発環境だと良く起こる現象のようです。これを解消するには、仮想端末の設定を変えることと、アップデートを当てる方法の2つがあります。これらについてまとめてみました。

1.仮想端末の設定を変更する

アップデートをすると多大な時間と様々な問題が発生するので、とりあえずの応急措置として仮想端末の環境を変更します。

使いたい仮想端末を起動します。

そして、「設定」ボタンを押します。

さらに、「Settings」タブを選択します。

右側に表示された「Advanced」タブを選択します。

ここで、OpenGLの設定画面が出てきます。こちらの設定を変更して仮想端末を動かしてみてください。組み合わせてうまく動けば完了です。

私の場合はうまく動かないので、次の対策をしてみます。

2.AVDマネージャーで仮想端末の設定を変更する

AVDマネージャーを起動して、該当する仮想端末の設定を変更します。「修正」ボタンを押します。

「Show Advanced Settings」を選んで、詳細設定を行います。

仮想端末のメモリやストレージの設定がありますので、少なくして動作するか試してみましょう。

私はうまくいきませんでした。ここまでで駄目だった場合は、Android Studioのアップデートを遂行します。

3.Android Studioのアップデート

まずは、「ヘルプ」「Check for updates」を見てみます。

アップデートできる一覧が出てきます。しかし、6.18GBって?。アップデートでこれだけ必要なんてあり得ません。このアップデートをする前に、個別でアップデートすることにします。

4.SDKマネージャーで個別にアップデートする

SDKマネージャーを起動します。今回は、AndroAid 8.0と8.1をアップデートします。両者ともアップデートが用意されていることが分かります。

ここでチェックボタンをチェックしてアップデートしても良いのですが、イメージファイルについて考えてみます。よく見ると、イメージファイルが複数あることが分かります。

Intel x86 Atom Syste..
Google APIs Intel x86..
Google Play Intel x86..

エミュレーションには、これら3つのイメージのどれかを使えば良いことになっています。そして、上ほど軽くできていますが、すべての機能をエミュレーションできません。Google Play..は、Playストアからアプリがダウンロードできるほど完璧なエミュレーションができますが、重いです。

また、GoogleApiClientを利用する場合は、真ん中の「Google APIs Intel x86..」を使う必要があるかもしれません。これは、今テスト中です。「Intel x86 Atom Syste..」はとても軽いので使いたいのですが、位置情報などをエミュレーションできないのであれば意味がありません。⇒やっぱり、「Google APIs Intel x86..」でないと使えないようです。そろそろ開発機の更新が必要になりそう。

ちなみに64ビット版もありますが、32ビットが動けば64ビットも動くはずなので、インストールしなくても問題は少ないです。
※今は64ビット端末がほとんどなので、64ビットを選ぶのもありでしょう。

Android studioは奥深くて、私のレベルでは到底マスターし切れません。しかしAndroid開発を仕事としている人ならば、開発効率に大きな差が出ますから、面倒がらずにすべての機能を理解することが大事だと思います。