2

假设我已将我的 Android 应用程序的 AndroidManifest.xml 设置如下:

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

我对如何扫描我的源代码以查找不属于我指定的最低 SDK 版本(在本示例中为 API 级别 8)的一部分的 Android API 调用感兴趣。这样,我可以检查每个有问题的调用以确保它通过反射测试或其他向后兼容性的保证正确包装,这样它就不会使旧设备崩溃。理想情况下,我可以将此调用标记为“安全”,这样它就不会在后续扫描中触发。

例如,假设开发人员在不知情的情况下签入了一些使用 API 的代码DownloadManager,该 API 在 API 级别 9 及更高级别中可用。由于我上面的“uses-sdk”声明,MyApp 将在 Android 2.2(API 级别 8)设备上构建、安装和运行。但是一旦代码路径调用该DownloadManager2.2 设备上的方法,用户将遇到未解决的虚拟方法异常(崩溃)。这是我试图避免的。

理想情况下,扫描这些可能不兼容的 API 是我可以在构建期间从命令行执行的操作;并且,它将能够处理对 android:minSdkVersion 的更改,而无需进行太多的重组。

4

1 回答 1

1

我自己很难找到这个,所以我会很清楚地回答(即使这是一个 2 岁的问题)。

在 Eclipse 中,右键单击项目,单击“Android 工具”>“运行 lint:检查常见错误”。

这将为您提供 lint 可以在您的代码中找到的所有奇怪的列表,包括与您在清单中定义的 minSdkVersion 的不兼容性(可以在“正确性”类别的列表中找到)。

于 2014-07-27T12:44:06.540 回答