[Mainfest.xmlで要求された]アクセス許可がAndroidアプリでそれらを削除する目的でどのように、どこで使用されたかを調査したい場合、これを行う簡単な方法はありますか?lintまたはfindbugsは、プロジェクトで使用/乱用された権限を追跡するためのある種のサポートを提供しますか?
私はあなたの命を救うために未来から来ました。
ここ(将来)では、 LINTチェック でわかるように、LINTは欠落しているアクセス許可をチェックします。
AndroidManifest.xml
に移動し、すべてのタグ<uses-permission>
を使用してAndroidパーミッション(つまり、UA_DATA
やC2D_MESSAGE
など、アプリに属する権限を削除しないでください。Analyze
をクリックしてからInspect Code...
をクリックしますAndroid -> Constant and Resource Type Mismatches
の下を見てくださいApply fix "Add Permission"
を選択します。このオプションを選択すると、Android Studioにはエラーごとに1つの権限が含まれるため、マニフェストファイルに同じ権限の複数のコピーが作成され、重複を削除するだけで済みます。手動でも行います。LINTルールの説明は次のとおりです。
ID ResourceType
説明
この検査では、さまざまなサポートアノテーション(RequiresPermissionやUiThreadなど)でアノテーションが付けられたAndroid API呼び出し)を調べ、アノテーションで指定されているようにAPIを正しく使用していない呼び出しにフラグを付けます。この検査によってフラグが立てられたエラー:
- 間違ったタイプのリソース整数(R.stringなど)を、別のタイプ(R.dimenなど)を予期するAPIに渡す。
- オーバーライドされたメソッドを必要とするメソッドで(スーパーを介して)呼び出すのを忘れている
- マニフェストでパーミッションを宣言せずにパーミッションを必要とするメソッドを呼び出す
- RGB整数値を期待するメソッドにリソースカラー参照を渡す。
...などなど。詳細については、 http://developer.Android.com/tools/debugging/annotations.html のドキュメントを参照してください。
Android Studio2.1.2を使用しています。
アプリのマニフェストファイルには、タブが必要です"Merged Manifest"そこに最終的なマニフェストが表示され、要求した権限をクリックして、それがどこから来たのかを確認できます。 (誰がそれを追加したか-ex ':sdkまたはそれがどのコードから来たのか)
マニフェストに追加して権限を削除する簡単な方法もあります。
<uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION"
tools:node="remove" />
また、上部にツールを追加することを忘れないでください。
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
package="...">
それらを1つずつ削除して、アプリが引き続き正常に機能するかどうかを確認する必要があります。これはlintによってチェックされません(チェックされるはずです)。
彼らが戻ってきたら(彼らは現在ダウンしています)、あなたはあなたのapkをこのウェブサイトにアップロードして(それがあなたに問題がなければ)そしてあなたが使用している許可を静的に分析させることができます: http://www.Android-permissions .org /
コードを記述しなかったアプリでこれを行う方法は、アクセス許可を1つずつ削除し、そのたびにアプリをエンドツーエンドでテストすることです。失敗した場合は絞り込みます。そうでない場合、その許可は使用されない可能性があります。
最善の方法は、が実際に何をする可能性があるかを理解することです。カメラを使用する場合は、カメラの許可が必要です。