同项目支持3.0及以下版本

Posted

技术标签:

【中文标题】同项目支持3.0及以下版本【英文标题】:Support 3.0 and lower levels in the same project 【发布时间】:2011-07-18 05:11:36 【问题描述】:
    我在 android 上有一个 9 级应用程序,我想知道我是否可以在同一个项目中使用 11 级 (Android 3.0) 的新功能? 对于 3.0 平板电脑版本,我的布局将包含片段。如何使用这些片段并让 9 级版本成功构建和运行? 能否为不同的 API 级别定义不同的布局(在 res/layout 中)? 如果我保留 2 个版本,一个用于平板电脑,另一个用于手机,我可以将其添加到具有相同包名的 android-marketplace 中吗?

【问题讨论】:

【参考方案1】:

我有一个 9 级的 Android 应用,我想知道我是否可以在同一个项目中使用 11 级 (Android 3.0) 的新功能?

是的,正如 Willis 先生所建议的那样,通过反射或条件类加载。 Here is a sample application 为操作栏演示了这一点,也是 API 级别 11 的新内容。

对于 3.0 平板电脑版本,我的布局将包含片段。如何使用这些 Fragment 并让 9 级版本成功构建和运行?

使用Android compatibility library。

我可以为不同的 API 级别(在 res/layout 中)定义不同的布局吗?

是的,通过 -vNN 资源集后缀(例如,res/layout-v11)。但是,您应该尽量减少这种情况。

如果我保留 2 个版本,一个用于平板电脑,另一个用于手机,我可以将其添加到具有相同包名的 android-marketplace 中吗?

没有。

【讨论】:

有安卓兼容库的文档吗? @FARH:一般来说和普通的fragment是一样的,但是库上没有太多具体的,除了安装库时安装的代码示例。【参考方案2】:

This question 和答案似乎很有帮助。

官方文档也覆盖了Backward Compatibility for Applications中的解决方案。

试试:http://android-developers.blogspot.com/2009/04/backward-compatibility-for-android.html

建议使用反射,它允许您在运行时以编程方式搜索类和方法的存在。

至于布局,请尝试查看Supporting Multiple Screen Sizes。您可以使用不同的布局大小,例如 layout-xlarge

如果我保留 2 个版本,一个用于平板电脑 其他用于手机,我可以将其添加到 具有相同功能的 android-marketplace 包名?

您不能为两个不同的应用使用相同的包名称。

如果您的代码因您使用的 API 版本而存在很大差异,那么您可能希望分叉您的代码,然后当您确信您的大多数用户群已升级到您需要的 API 级别时再次合并它。

【讨论】:

以上是关于同项目支持3.0及以下版本的主要内容,如果未能解决你的问题,请参考以下文章

国内重要的 Go 语言项目:TiDB 3.0 GA,稳定性和性能大幅提升

新老版本vue-cli的安装及创建项目等方式的比较

微软TypeScript 3.0重磅发布!

vue-cli 3.0 初体验

eclipse报错Dynamic Web Module 3.0 requires Java 1.6

React多页面应用脚手架-v1.3.0