ゲレの工房

ゲーム好きの中の人が、自分が作りたいアプリを作る記録です

備忘録 : android.hardware.camera2問題 : この端末モデルはアプリの APK マニフェストでサポートされていないため、この端末モデルのユーザーはアプリをインストールできません。


スポンサーリンク


Android版自作アプリ「言語を超える力」を作成した時に生じた問題です。
Google Play Developer (AndroidMarket) に自作アプリのapkをアップロードしたところ、対応端末が0台になった問題です。(この画面はGoogle Play Developerのアプリ選択>リソース管理>アーティファクトライブラリ>アクティブなアーティファクトの中から該当するapkの 「i」ボタンを押すと出ます。)

f:id:gelehrtecrest:20180228125818p:plain

いくつか既に記事に上がっている症状ですが、今回私が直面した問題・対応は別のものだったので備忘録として残そうと思います。

2018/03/01 追記
コメントをいただいて、修正した内容を記事にしました。
そちらも参考にしてください。
blog.gelehrte.com


参考になった別事例

試行錯誤した時に見つけた記事をメモしておきます。

実行環境が制限されていた問題

ネイティブプラットフォームの指定が行われ、commons-io-2.4.jarが含まれていることが原因だった事例。
ただ、私が直面した問題とは違いました。
正常なAndroidアプリをビルドできない問題とその対策 - クックパッド開発者ブログ

android.hardware.screen.portrait による制限

自作アプリ「言語を超える力」でも下記記事と同じように端末向きを縦方向に固定しているのですが、この問題だけでは解決しませんでした。
Androidでデバイスがどのハードウェア機能を持っているか確認する - Qiita

対応

まず、私が行った対応について結論

動いたアプリの例
  • APIレベル23+
  • 端末の機能

android.hardware.camera
android.hardware.camera.autofocus
android.hardware.faketouch
android.hardware.screen.portrait

  • 端末の必要な権限

android.permission.ACCESS_NETWORK_STATE
android.permission.CAMERA
android.permission.INTERNET

f:id:gelehrtecrest:20180228130918p:plain

これで対応端末が端末数 3608 台(執筆時)になりました。

f:id:gelehrtecrest:20180228131000p:plain

動かなかったアプリの例
  • APIレベル23+
  • 端末の機能

android.hardware.camera
android.hardware.camera.autofocus
android.hardware.camera2
android.hardware.camera2.full
android.hardware.faketouch
android.hardware.screen.portrait

  • 端末の必要な権限

android.permission.ACCESS_NETWORK_STATE
android.permission.CAMERA
android.permission.INTERNET

f:id:gelehrtecrest:20180228130439p:plain

AndroidアプリのマニフェストXMLに記述するuses-feature

上記の、動いた例と動かなかった例の大きな違いは、android.hardware.camera2の記述です。AndroidManifest.xml ファイルに以下の記述を書いていたのが動かなかった原因でした。


では user-feature とは何か

以下の記事が参考になりました。
android.roof-balcony.com

記事によると、

部分的に抜粋ですが、要は、
このAndroidアプリが使っている機能はコレだよと、宣言するという意味合いだそうです。
例えば、カメラを非搭載のAndroid端末で、Android Marketで、この宣言を持ったAndroidアプリをダウンロードしようとした場合は、ダウンロードが許可されないそうです。

だそうです。私の場合、android.hardware.camera2の記述のために対応端末が制限されて、0台になってしまった様子です。自動的にGoogle側で対応端末が制限されるんですね。せめて、どの原因で端末が制限されたのが理由を教えてくれれば対応が早くなるのに・・・・・そこのところは何とかしていただけないでしょうか、Googleさん。

じゃぁcamera2は必要ないの?

私のアプリ、「言語を超える力」ではAPIレベルを23+とし、Camera2 APIを使用しています。
ただ、user-feature ではandroid.hardware.camera2を書く必要がなかったのかもしれません。

そもそもAPIレベル23+が動く端末ではCamera2 APIが動くだろうという保証から、そもそも制約が不要だったのかもしれません。
また、ほかの制約と被ってしまったことも原因だったのかもしれません。

申し訳ありません、私もまだはっきりとした対応策が分かっていない状態です。ただ、この対応策で対応端末が増えたという事例としてメモを残します。

camera2を書いている記事もある

以下の記事ではAndroidManifest.xmlにcamera2を書いてあります。このような記事があるということは、別のところに私のアプリの対応アプリが0台になったという原因があるのかも。
【Android】カメラ機能に触れてみる(Android5.0〜) - vaguely

終わりに

ひとまず、対応端末が0台という問題は解決しました。
まだまだ分からないところがありますが、一番の問題は、意味も分からずに user-feature を書いていた私に原因があるということでしょうか。
備忘録、備忘録っと、、、、


今回はここまで
それでは


スポンサーリンク