スポンサーリンク

2016年8月19日金曜日

Androidアプリのパーミッションを確認する方法

Android アプリの生命線とも言えるパーミッション。このパーミッションを確認しようと思ったら、意外にあちこちに情報が分散していて、まとまったものがありません。エンドユーザーの立場で確認する場合と、アプリ開発者の立場で確認する場合ではやり方が全く違います。色々なパーミッションの確認方法を自分なりに整理してみました。



Androidデバイス上で確認する

そのアプリが既にAndroidデバイスにインストールされていれば、設定メニューの「アプリ」から対象のアプリを選択すると、一番下に「許可」として、使用しているパーミッションが表示されます。これはお手軽ですが、プログラマーからするとほとんど役に立ちません。表示内容があまりにもエンドユーザー向き過ぎて、実際、AndroidManifest.xml の中で指定したどのパーミッションに該当するのかよく分からないからです。更に一般ユーザから見てもこれは中途半端なものです。これを見て何をどう判断しろと言うのでしょうか?


Developer Console 上で確認する

アプリが Developer Console 上にアップロードされていて、あなたがその Developer Console にアクセスする権限を持っていれば、そこでパーミッションを確認することができます。Developer Consoleで対象アプリを選択し、APKの項目を開きます。更に目的のバージョンを選択すると「必要な権限」を確認することができます。

aapt コマンドで確認する

apk が手元にあれば、aapt コマンドで確認することができます。aapt コマンドは Android SDK の Build Tools に含まれています。aapt を使った方法は色々なやり方があります。いくつか方法を示します。
aapt l -a hoge.apk | grep -i permission
aapt d xmltree hoge.apk AndroidManifest.xml | grep -i permission
aapt d permisssions hoge.apk
多分最後のやり方が一番確実ではないでしょうか。

Android Studio上で確認する

ソースコードが手元にあれば、Android Studio 上で確認することができます。ソースがあれば単にAndroidManifest.xml を見ればいいだけだと思うかもしれませんが、話はそんな単純ではありません。基本的にはパーミッションは、開発者が AndroidManifest.xml の中で明示的に指定しますが、それ以外にもライブラリが勝手に引き込んでしまうものがあったりします。なので最終的な apk が使用するパーミッションを知るには、マージされた後の AndroidManifest.xml を見なくてななりません。アプリをビルドすると、

app/build/intermediates/manifests/

の下に Flavor や Build Variants (debug/release) に対応するディレクトリができて、その下に最終的なマージされた AndroidManifest.xml が生成されます。これを見るとアプリのパーミッションが確認できます。



追記

Android Studio 2.2 では更に簡単に確認できるようになりました。プロジェクトの AndroidManifest.xml を開くと下部に Merged Manifest というタブがあり、これを選択するとマージされた Manifest とどのライブラリ由来のものかが確認できます。


更に、Build → Analyze APK... というメニューが追加され、任意の apk も解析できるようになりました。これを使っても確認できます。便利になったものです。




0 件のコメント :

コメントを投稿