我的应用程序必须与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不兼容的清单条目,并在任何公开发布之前执行测试编译。
感谢您的任何建议!
答案 0 :(得分:0)
这是你现在能做的最好的事情。
这也适用于在布局文件中使用不受支持/不支持的属性。您无法在Manifest文件或任何其他资源文件中放置条件。
但是,我认为这不是一个大问题,至少现在,从现在开始,你会看到大多数用户切换到最新版本(4.0及更高版本)。