2012-07-02 23 views
5

私は、巨大なソースコードベースでアンドロイドアプリケーションに取り組んでいます。 私のアプリケーションには少数のパーミッションが必要ではないことが気に入らず、非難され、もはや必要とされないものがいくつかあると思われ始めました。推奨されていないアクセス許可を確認するにはどうすればよいですか?

質問があります - どうすれば、本当に推奨されていませんか?

は、私は(Eclipseのジュノを使用して)オフに不審な権限を削除し、それを再コンパイルしようとした、 およびエラーまたは警告としてそれをマークするためにコンパイルを望んだが、それはしませんでした。

コード上でLintを明示的に実行しようとしましたが、それも検出されませんでした。

アプリケーションはコンパイルされ、デバイス上で実行され、関連するAPIがいくつかのコードフローで呼び出されると、AccessDeniedでランタイム例外がスローされます。

すべてのソースコードを参照したり、複数のシナリオでアプリケーションを実行することなく、そのAPIを検出する効果的な方法はありますか?

ありがとうございます!

答えて

0

残念ながら、短い答えはいいえです。それを検出する自動化された方法はありません。唯一の試みられた真の方法は、パーミッションを1つずつ削除してテストすること、または検査のためにコードをステップ実行することです。

しかし、あるはずです。私はあなたのプロジェクトコードを読んで必要な権限を決定するスクリプトを書くのは難しくないと思う。最も難しいのは、APIの変更で最新の状態に保つことです。

1

-Djava.security.debug = access、failureを指定してコードを実行します。実際に使用されているすべての権限が表示されます。

+0

興味深いですね。しかし、実際に私はどのように私のデバイスでそれを行うのですか?その旗を誰に与えるか? apkをインストールするとき? – Dekel

+0

これはMavenソリューションですか? – TacB0sS

0

私はあなたが間違った方向にこれについて行くと主張したいと思います。

削除できるアクセス許可を尋ねる代わりに、リストを参照して、各アクセス許可が必要な理由と、そのアクセス許可が削除された場合に無効にする必要がある理由について調査された正当な理由を生成します。

権限が何であるかを理解していれば、少なくともJavaコードで使用されている可能性の高い箇所を探すために検索クエリを生成することは難しくありません。しかし、多くのマニフェスト(そしてたまにはSO答え)でも必要ないパーミッションがあります。プラットフォームが非システムアプリにも許可しないパーミッションの要求を見るのは珍しいことではありません。

0

UCバークレーの研究者の中には、Androidアプリをスキャンして使用する権限を示すプロジェクトに取り組んでいるような人もいます。さらに詳しい情報はhttp://www.android-permissions.org/

関連する問題