2

Android アプリケーションの AndroidManifest.xml を次のように設定したとします。

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17"/>

ソース コードをスキャンして、指定した最小限の SDK バージョン (この例では API レベル 8) に含まれていない Android API の呼び出しを見つける方法に興味があります。古いデバイスがクラッシュしないように、リフレクション テストまたは下位互換性を保証するその他の方法で適切にラップされています。理想的には、この呼び出しを「安全」とマークして、後続のスキャンでトリガーされないようにすることができます。

たとえば、開発者がDownloadManager、API レベル 9 以降で使用可能な API を使用するコードを無意識のうちにチェックインしたとします。上記の「uses-sdk」ステートメントにより、MyApp は Android 2.2 (API レベル 8) デバイスでビルド、インストール、および実行されます。ただし、コード パスがDownloadManagerその 2.2 デバイスでメソッドを呼び出すと、未解決の仮想メソッド例外 (クラッシュ) が発生します。これは私が避けようとしているものです。

理想的には、これらの潜在的に互換性のない API をスキャンすることは、ビルド中にコマンド ラインから実行できることです。また、あまりツールを変更しなくても android:minSdkVersion への変更を処理できます。

4

1 に答える 1

1

私はこれを見つけるのに苦労したので、はっきりと答えます(これは2年前の質問ですが)。

Eclipse で、プロジェクトを右クリックし、[Android tools] > [Run lint: check for common error] をクリックします。

これにより、マニフェストで定義した minSdkVersion との非互換性を含め、lint がコード内で見つけることができるすべての奇妙な点のリストが得られます (カテゴリ「正確性」のリストで見つけることができます)。

于 2014-07-27T12:44:06.540 に答える