“API Level Analyzer”工具如何工作?

时间:2010-11-25 13:20:03

标签: java android

我在一个在所有Android版本上运行的高端应用程序上工作。对我来说不幸的是,市场上的最后一次更新包括绝对最后一分钟补丁< sigh>它引入了对2.0中引入的API的依赖。每个升级迅速的1.x客户都会崩溃,导致我们(非常合理地)被市场反馈所扼杀。

显然这里存在程序问题......在任何情况下我们都不应该发布未在所有4个主要平台版本上测试的代码......但这不是我在这里的原因。

我觉得这些工具应该更加主动,以避免这个问题。

简单地说,在开发期间,我希望能够看到我使用API​​的每个地方的列表,该API是在android:targetSdkVersion指定的级别之上引入的。

我的问题是:这样的工具将如何运作?是否有可能在每个平台的< sdk-root> /平台下编写每个android.jar中的内容(构建某种与版本号配对的功能签名列表),然后进行某种搜索?我对Java / Dalvik的胆量知之甚少,无法真正解决问题。

3 个答案:

答案 0 :(得分:2)

好的,我正在为这个问题写一个体面的答案。简而言之,我首先通过标准的javap工具清除Android SDK .jars来构建数据库。这允许我构建一个庞大的API列表(函数,常量等),并与它们引入的API级别配对。

该工具的后半部分在您自己的.apk上运行并运行dexdump以获取每个.class的带注释的反汇编。然后,孩子们玩(或者应该)将每个函数调用交叉引用到它的API级别。

我应该在一个星期左右的时间内完成这项工作,并在某处将其发送到网上。

答案 1 :(得分:1)

将Eclipse Android插件设置为某个SDK版本,您应该会看到此SDK版本中不存在的API的错误。

答案 2 :(得分:0)

为什么不建立早期版本的SDK?