« 2012年5月 | トップページ | 2012年10月 »

2012年6月の記事

2012年6月 3日 (日)

はちゅねまわしバージョンアップ

先日紹介したAndroidアプリ「はちゅねまわし」をバージョンアップしました。

一本指で操作できるようにボタンを追加したのが主な変更内容なんですが、実はマニフェストの設定を失敗しちゃって、いろいろ大変だったのです。

以下、アンドロイドの開発したことない人には意味不明と思います。気にしないでください。

発端はAndroid Features Reference というドキュメントのandroid.hardware.faketouchとandroid.hardware.touchscreenのところを見て、「はちゅねまわしは、別に本物のタッチパネルでなくてもいいよなぁ」なんて思って、このドキュメントの指示に従って次の指定をマニフェストに追加したことです。

    <uses-feature android:name="android.hardware.touchscreen" android:required="false" />
    <uses-feature android:name="android.hardware.faketouch" android:required="true" />

そしたら、これが大失敗で、利用可能デバイスが、この設定をする前は1200だったのが、いきなり130に減ってしまって。その上、当初はそのことに気づいてなかったんです。ちゃんと見てなくて。

翌日になって、以前のバージョンをGoogle Play Storeからダウンロードしてインストールしたあったスマフォで、「バージョンアップのお知らせ」が来ているかどうか確認しようと思ったら、バージョンアップ通知どころか、「マイアプリ」の一覧から消えていたんです。その原因を調べているうちに気づいたという。

調べる過程で、touchscreenとfaketouchというフィーチャーは、わけがわからないことが良くわかりました。具体的には、次のような状況みたいです。

  • 上で紹介したFeatures Referenceには、「Google Playでは、デフォルトですべてのアプリがtouchscreenを必要としているとみなします」って書いてあるけど、touchscreen/faketouch関連の use-feature を一切含まないアプリをアップロードしてデベロッパーコンソールで内容を確認すると、「faketouch featureを必要とする」と表示される。(touchscreen featureではなくて。)
  • そこに、上の touchscreen required=false と faketouch required=true という二つの use-feature を追加したアプリを(新しいバージョンとして)アップロードすると、「利用できるデバイスが以前のバージョンと全く同じです(APK version XXX supports all the same devices as other APKs)」と言われる。
  • でも、実際には、フィルターの挙動が変化して、ほんの少しのデバイスでしかダウンロードできなくなる。

こんなの絶対おかしいよ! と思うものの、私がどう思おうとも事実は事実。ドキュメントと、デベロッパーコンソールと、実際のGoogle Play Storeの挙動が全部違う。とりあえず教訓は、「Features Referenceに、わざわざ色付きで目立つように何回も繰り返し書いてあるtouchscreenとfaketouchの関係はウソだから信じちゃダメ。」「デベロッパーコンソールでrequired featureを確認しても真実はわからない。」という辺りでしょうか。

あーあ。

« 2012年5月 | トップページ | 2012年10月 »