【问题标题】:Progressive Enhancement for Android?Android的渐进增强?
【发布时间】:2012-07-17 13:14:49
【问题描述】:

在构建 Android apk 时是否可以使用渐进增强。 我想构建一个可在 SDK 8 + 上使用的应用程序(姜饼是主要的 android 版本),并在可能的情况下添加新版本的功能。

我知道我可以使用SDK_INT 获得 SDK 版本来做一些有条件的事情,但是当我使用更高版本中引入的功能时,eclipse 不会让我构建说我需要提高最低 SDK 级别。
也许是我的 Web 开发背景导致我认为这是可能的,这可能根本不可能,流行的应用程序是否有针对不同 SDK 的不同版本(如 min8-max10、min11-max15)? Android Java 代码可以进行渐进式增强吗?

【问题讨论】:

  • “eclipse 不允许我构建说我需要提高最低 SDK 级别”——这是警告(黄色),而不是错误(红色)。
  • 其实是个错误(红色)Call requires API level 11 (current min is 8): android.app.FragmentManager#findFragmentById
  • 另外,这是我用来在我的应用程序中选择性地启用 ActionBar 的方法:shanetully.com/2011/10/…

标签: java android progressive-enhancement


【解决方案1】:

检查构建是否由于 Lint 错误而失败,如果是,并且您确定不会在不受支持的设备上调用特定方法,请使用最低 api 级别向该方法添加注释如此调用:

@TargetApi(14)
public void useSomeNewApis() {
   ...
}

或者,如果您使用的是 eclipse,您可以将鼠标悬停在错误行上,然后选择 add @TargetApi(14) to useSomeNewApis

【讨论】:

  • 这是一个很好的开始,这是一个 Lint 错误很高兴知道,现在的问题是确保只有在版本正确时才能使用该功能
  • @Moak 您的问题已经有了答案:通过使用SDK_INT 检查SDK 版本。
【解决方案2】:

类似:

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

应该够了。但是,当程序从比设备上更新的 API 命中代码时,它会崩溃。

【讨论】:

  • 我使用此设置,但它不允许我使用版本 11 中的功能。所以我的问题是,有没有办法仅在正确的 SDK 可用时使用功能,换句话说,逐步增强应用程序
  • 这取决于你到底需要什么。看看这个答案:stackoverflow.com/a/4955612/538169
【解决方案3】:

您需要确保您使用的是正确版本的 android。如果您想使用 API 15 中提供的功能,您必须在该 API 中构建它。

因此,如果您要使用的功能需要 API 15,请确保在您的项目属性中将项目构建目标设置为该 API。

右键单击您的项目并转到“属性”。选择 Android 部分并确保检查了正确的 API。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多