支持较高API级别的清单属性,同时建立较低的API级别?

时间:2011-09-12 23:06:22

标签: android android-manifest

我的应用程序必须与Android 2.1兼容(Eclair,API Level 7)。我想使用仅由Android 2.2+(Froyo,API Level 8)支持的清单属性。作为一项规则,我不想在我的代码中直接调用(即,不通过反射) ANY Level 8 API。

此问题的可接受解决方案是针对Froyo(API 8)进行编译,并在manfiest中包含uses-sdk标记以指示向后兼容性:

<uses-sdk android:minSdkVersion="7"/>

现在需要注意的是,我们需要小心并对Eclair进行广泛测试(通过自动化测试和/或手动测试),以确保我们不会意外地使用Froyo特定的API调用。

在我看来,这不是一个可以接受的解决方案。我强烈希望仅使用反射来调用高于应用程序基线要求的API,并且只希望支持基线上方的清单设置。有没有办法干净利落地解决这个问题?

我目前的解决方法是删除与基准API不兼容的清单条目,并在任何公开发布之前执行测试编译。

感谢您的任何建议!

1 个答案:

答案 0 :(得分:0)

这是你现在能做的最好的事情。

这也适用于在布局文件中使用不受支持/不支持的属性。您无法在Manifest文件或任何其他资源文件中放置条件。

但是,我认为这不是一个大问题,至少现在,从现在开始,你会看到大多数用户切换到最新版本(4.0及更高版本)。