Androidのアプリ開発関連のブログ

Genymotionを利用する

Genymotionは、Virtualboxと連携して動作するx86ベースのAndroidエミュレーターです。
x86ベースですのでハードウェア仮想化支援が利用できれば快適な速度で動作します。
Android-x86と違いVirtualboxの「マウス統合」機能が利用できます。
また、デバイス回転や電源等のボタン類が表示されて便利です。
Google Playは入ってないので必要なら追加インストールが必要です。
ゲームなどのOpenGLを利用したアプリは動かないようです。

https://www.genymotion.com/
公式サイトは上記になり、フリーではないのでアカウントの登録が必要です。個人利用なら無料です。
Arch Linuxの場合はAURにパッケージがあるので、そちらからインストールできます。
Virtualboxと連携して動作するものなので、別途Virtualboxが必要です。
GUIアプリがインストールされますので、Genymotionを起動してデバイスを作成するとVirtualboxにゲストが作成されます。
VirtualboxのゲストはGenymotion上から起動できます。

Android-x86を利用する

Android-x86は、x86 PC上で動作するオープンソースのAndroid OSです。
http://www.android-x86.org/
上記が公式サイトのURLで無料でダウンロードして利用することができます。
インストーラーISOが用意されており、初期状態でGoogle Playも入っています。
x86 PC上で動作しますので、Virtualboxなどのx86 PCエミュレーター上にインストールすることもできます。
インストールの際に実機と同じでGoogleアカウントを作成できますので、アプリ内購入のテストアカウントの作成にもおすすめです。

x86なので、ハードウェア仮想化支援が利用できればエミュレーター上でも快適な速度で動作します。
残念な点としては、Virtualboxで利用する場合は「マウス統合」機能が利用できません。
また、OpenGL ESが実装されているようなのですが、手元ではOpenGLを利用したゲームなどはエラーが出て実行できません。


インストールはインストーラーが用意されているので簡単ですが、
インストールするデバイスの選択の箇所でデバイスに対して手動でパーティションを作成してからインストールしないとGRUBインストールの箇所でエラー表示もなしに止まってしまうので注意です。
インストール後はAndroidの初期設定となりますが、Wifi設定を飛ばそうとすると注意が出ますが、有線LANがあるならWifiはSKIPして問題ありません。


Virtualbox上にインストールしている場合のADBとの連携は、ADBのゲスト側はポート5555になりますので、
Virtualboxのポートフォワーディングで母艦のポート1つをゲストのポート5555に割り当てるか、ホストオンリーのネットワークアダプタを追加するなどし、
母艦上で、
$ adb connect ip:port
とゲストのポート5555に対応したアドレスを指定してconnectをするとdevicesで確認できるようになります。


logcatでのログ表示の際にサウンド・デバイスのエラーが大量に表示されてしまう場合は、
デバイス側のダイヤル音やタッチ音等の項目を全てOFFにすることで、たぶん出なくなります。

アプリ内購入の実装でハマってる

アプリ内購入の実装でハマってる。

販売アカウントの作成をしてアイテムを作ってテストしようとしたのだが、
出版社はこのアイテムを購入できません
とエラーが出てテストが出来ない。
どうも、開発に使用してるアカウントだと購入は出来ないらしい。
ベータテストなら実際には決済は生じないらしいのだが、それすらさせてくれない。
これ厳しすぎだろ・・・

というわけで、Android-x86をVirtualbox上に用意してインストールの際にアカウントを作ってテスターに登録したのだが、
サーバーからの情報の取得中にエラーが発生しました
で、ダメ・・・

大体はできてると思うんで、テストしないでアップしちゃおうか・・・


AdMob用の google-play-services_lib を更新したらGenymotionでエラー落ちするようになったのはAndroid-x86でも生じたのだが、
google-play-services_libを使うのに Support Library v4 ってのが必要になってるらしく、android-support-v4.jar を google-play-services_lib/libs に入れてビルドしたらGenymotionでもAndroid-x86でもAdMob表示できた。

Android 4.04の実機でAdMobがエラー落ちするのは、ログ見るとなんかのコーデック関連のバイナリがエラー吐いてるような。
中華タブのバグな気がする。
前はエラーにならなかったはずなんだが・・・