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 への変更を処理できます。