问题标签 [android-compatibility]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
858 浏览

android - 在 2.2 错误上运行片段 - 找不到类

我正在尝试使我的应用程序向后兼容 Android 2.2。

我有 Fragments、ListFragments、FragmentPagerAdapter 和 ActionBarSherlock 都在发生。

我已经包含了 android 支持库,并且构建在我的 android 4.1 设备上完美运行,但在 2.2 设备上,我得到以下内容:

我已经玩了几个小时了,但我只是不知道该尝试什么。任何建议表示赞赏。如果您需要查看一些代码,请告诉我。

谢谢。

0 投票
1 回答
81 浏览

android - 没有兼容性库就无法创建 Android 应用程序?

我正在尝试创建一个小型 Android 应用程序,但没有片段和东西的兼容性库。只是一个简单的应用程序。当我进入 Eclipse 中的“安装依赖项”步骤时,下一步和完成是灰色的。我该如何继续?所有新应用真的都需要有兼容性库吗?

0 投票
1 回答
100 浏览

java - 当我面向较旧的 Android 设备时,我应该使用哪个版本的 Google API?

我有一个为 API 15 及以上设备(即 ICS)设计的 Android 应用程序。现在我还想针对 API 10 设备,即 Gingerbread。为了做到这一点,我使用了 ActionBarSherlock。

好的,所以我按照文档找到了 Sherlock。我更新了我的代码。我有一项活动是MapActivity,这需要替换为SherlockMapActivity. 完毕。

在我的项目的构建目标中,我将目标指定为“Google APIs for API 15”。在我的应用程序清单文件中,我将最低 SDK 要求设置为 API 10。现在,当我创建 Gingerbread 模拟器并尝试启动我的应用程序时,我收到以下错误:

包 com.mridang.soemthing 需要不可用的共享库 com.google.android.maps;失败!

我知道这是因为 Gingerbread 缺少“适用于 API 15 的 Google API”,这是可以理解的,但如果我将项目的构建目标设置为“适用于 API 10 的 Google API”,那么我将无法使用我拥有的代码块使用CalendarContract仅在未来的 API 中出现的。

这似乎是 Catch-22 的情况,我似乎无法理解如何让我的应用程序在这两种设备上运行。有什么帮助吗?

0 投票
1 回答
108 浏览

android - 在 Eclipse 上加载 ActionBarSherlocks 的演示时出错

我试图在 ActionBarSherlock 上加载演示,但使用FragmentTransaction. 活动是FeatureTogglesTabNavigation。我也遇到了一个错误,TabNavigationCollapsed因为它正在扩展TabNavigationwhich uses FragmentTransaction.

错误是:

我的错误可能是什么?我的项目构建目标是 Android 4.0。

0 投票
1 回答
1423 浏览

android - Android 兼容性库。最佳实践

我一直在开发一个针对 Android API 级别 10 的应用程序。当我开始时,我的理论是针对低 API,因此它可以在大多数设备上使用。我觉得这是大多数新开发人员所做的。随着我深入了解 android,我开始熟悉兼容性库,以便从更高的 API 级别向应用程序添加功能。

有没有人对所有或大多数设备的最佳开发方式有一些明确的建议。我看到了两种明确的方法。

我读过这篇文章很多次,但我注意到它是从 2010 年开始的,在 android 年代已经过时了。

是不是更好

- 针对较低的 API 进行开发并使用兼容性库来增加与新设备的更好兼容性

或者

- 针对最新的 API 进行开发并在兼容性方面工作以支持旧设备?

最后,我假设测试设备的可用性可能会在这里发挥作用。我同时拥有 2.3.4 和 4.0 设备,所以我真的在决定在开发时我想要在哪个设备上进行大部分测试。

我希望这不会因为主观而被删除。这是困扰许多新安卓开发者的一个非常重要的问题,也是开发 Good Professional 安卓应用程序并非易事的原因之一。

0 投票
1 回答
254 浏览

android - 使用 Android 兼容库

我在 Android 兼容性库上做了很多工作,并且一直使用库中的类而不是 Android jar 中的类来确保向后兼容性。

这是正确的使用方法吗?

我有一个想法,为使用该库的类提供一个接口。这样我可以从该类型构建 2 个类。1个使用ACL,另一个使用Android jar。使用 roboguice 我可以自动使用正确的类型。

这样做有什么好处或坏处吗?

0 投票
1 回答
272 浏览

android - Android XML Style/Theme版本兼容性,考虑Eclipse/lint开发安全

似乎当今开发 Android 应用程序的最佳方法是在 project.properties 中定位 android-17,在清单中定位 minSdkVersion "whateversuitsyou" 和 targetSdkVersion 17。

在此配置中,标准 lint 检查将通知仅在“whateversuitsyou”以上的 API 版本中可用的任何 API 调用,并且可以使用反射等动态支持更新的功能(如果有)。

但是,在此设置中,至少无需进一步配置,XML 中的样式和主题属性可能不会放在适当的文件夹中,例如当“whateversuitsyou”小于 11 时引用默认资源文件夹中的“Holo”元素又名蜂巢。

如果应用程序遇到未知的 XML 样式属性,它们似乎不会崩溃。LogCat 将显示错误,例如“样式包含输入错误的键”。

不确定是否在应用启动时检查了整个样式;如果是这样,当然可以在每个 API 版本上运行一次应用程序以检查是否存在任何问题。然而,这并不是完全可取的。此外,样式和主题并不是唯一的版本特定资源。

有没有办法让 lint 针对文件夹 *-vXY 的 minSdkVersion 和 API 版本 XY 检查资源?有人可以对此有所了解吗?

0 投票
3 回答
896 浏览

android - Android:Http 请求在 4.0 上不起作用

我测试了这段代码,它在 2.2 和 2.3.3 上运行良好,但在 4.0 上崩溃了。

问题似乎出在http请求上。任何想法为什么?

0 投票
1 回答
8474 浏览

android - 针对最大数量的受支持设备优化 Android 清单文件

当我上传新的 APK 文件时,我无法让我的 Manifest 文件与许多较新的手机兼容,但我不明白为什么。我正在全新的HTC Evo V上对其进行测试,但无论出于何种原因,该设备都不会出现在兼容性列表中。

我正在针对 API 17 进行编译,最低支持 API 10,因此应该包含绝大多数手机。

我试过的:

  • 删除所有权限;不用找了
  • 尝试制作不需要WIFI;不用找了
  • 删除installLocation以查看是否有所作为;不用找了
  • 甚至尝试添加小屏幕支持以查看它是否会出现;不用找了

我读过的:

我的清单文件:

0 投票
3 回答
925 浏览

android - Android AsyncTask 与特定情况下的线程

我正在开发一个看起来类似于 Google Play 应用程序的应用程序(在片段内使用 gridviews 滑动视图,此外 gridview [图像 + 文本] 中的数据是从远程服务器检索的)。

我的问题是后台任务。我无法决定使用什么来从互联网上检索数据。主要是我试图决定是使用 AsyncTask 还是手动线程。当然,实现 AsyncTask 会更容易,但经过一些研究,我注意到很多人发现它有限制。

在我的特殊情况下,我想从 Internet 下载数据作为 Json 对象,解析它们并在 gridview 中显示数据。网格视图最多有 30 个项目,每个项目包含一个缩略图和 3 个文本视图。在 Android 文档中,他们说 AsyncTask 适合短操作(最多几秒钟)。填写多达 30 个项目是否会被视为一项短期操作?我希望同时获取数据。我还想支持 API 8 及更高版本的 Android 手机。我读到对于不同的 API,AsyncTask 的行为不同(串行或同时)

我的问题是:为我的应用程序使用 AsyncTask 是否合适?还是我必须手动完成所有操作?ThreadPoolExecutor 是第三种方法吗?比手动穿线容易吗?

任何建议都将不胜感激,如果不对这个问题做出决定,我就无法继续实施。

提前致谢!