【问题标题】:Relation between android version of device and version specified in the app设备的android版本与应用程序中指定的版本之间的关系
【发布时间】:2013-11-04 02:20:25
【问题描述】:

在使用 Eclipse 创建项目时,我需要最低 SDK,因为 Android 2.2(Froyo) 和 Target SDK 作为 Android 4.2(Jelly Bean) 与 Android 4.3 一起编译。我使用 sqlitebrowser v2.ob1 来创建数据库。我的应用程序运行时没有任何错误(尽管在 logcat 中只有几行红色),并且在我在模拟器中运行它时满足了我的要求。我尝试了 3 种不同的模拟器,效果很好。但是当我在移动设备上尝试这个应用程序时,只要与数据库有关,它就会显示强制关闭。我的意思是说,当它必须从数据库中检索或连接到数据库时,它会显示强制关闭。通过搜索,我了解到即使在其中使用外部创建的数据库(复制到 assets 文件夹,然后复制到默认位置),只要 .apk 文件就足以让应用程序运行。我的问题是

  1. 难道我的应用程序不能在 Android 2.2 到 4.2 的任何设备上正常运行吗?

  2. 我应该尝试用 Android 4.2 编译应用程序吗?

  3. 我不确定我试用过的设备版本,但我确定它在 2.2 和 4.2 之内。 (可能是姜饼)。除了通过 USB 将设备插入 PC 并查看 logcat(因为我没有安卓手机),我还能做些什么来解决这个问题?

  4. 应用的版本、模拟器和移动设备或任何其他设备的版本如何相关?

  5. 我的应用可以在哪些版本的设备上运行?

这是我的第一个 android 应用程序,因此不胜感激。提前感谢

【问题讨论】:

  • 没有堆栈跟踪,我们真的无法回答这个问题。不建议使用模拟器作为您唯一的测试设备
  • 基本上我的应用应该在 2.2 到 4.2 的设备上运行吧?

标签: android android-version


【解决方案1】:

您可能在应用程序中使用了较低版本的 SDK 不支持的功能。如果没有任何源代码或堆栈跟踪,很难准确地告诉你那可能是什么,但我可以澄清你对minSdkVersiontargetSdkVersion 的理解。

考虑到每个新版本的 Android SDK 都会引入以前版本中不存在的附加功能和 API。显然,旧版本的 Android 不支持这些功能。

当您指定 targetSdkVersion 时,您指定您使用的是在该特定 Android 版本中引入的功能。您还暗示您已经在该特定 API 级别测试了您的应用程序,并且它可以正常工作。

当您指定的minSdkVersion 低于您的targetSdkVersion 时,您暗示您的应用程序将在较低的 API 级别上正常工作因为您已手动编写测试或检查代码以确保当前 API 级别在运行之前与功能兼容

例如,如果我想运行 Jelly Bean 中引入的功能但我想保留对较低 API 级别的支持(例如 Gingerbread),我可能会在运行该功能之前添加以下检查(请参阅其他版本代码 @ 987654321@):

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
    // run some code specific to API level 16
}

Android SDK 可以自动处理在较低 API 级别引入的代码,但不能自动处理特定于较高 API 级别的代码。

因此,考虑到这一点,回答您的问题:

  1. 不,它只保证您的应用程序可以在 Android 4.2 上正常运行。您可以确保它与您希望支持的早期版本保持向后兼容。

  2. 没关系。相反,您应该首先确定您的应用程序是否在与您的目标运行相同 API 级别(Android 4.2,API 级别 17)的设备/模拟器上运行,然后在运行较低版本的设备/模拟器上运行它并尝试隔离导致它崩溃的代码(logcat 会很有帮助)。

  3. 您可以通过进入设置 > 关于手机 > Android 版本来查看设备的 Android 版本。如果它正在运行 Gingerbread,请记住,自那时以来已经引入了许多新功能,并且您的应用程序可能正在使用其中一些功能。对于模拟器,您可以在创建模拟器时指定 API 级别(您可以从 SDK 管理器下载其他版本使用)。

  4. 我认为到目前为止我的回答已经明确了这种关系。

  5. 重申一下,您的应用程序将在任何运行 Android 2.2 或更高版本的设备上运行,但如果您使用的 API 级别高于设备正在运行的功能,它可能会崩溃。

如果这仍然不清楚,您应该阅读更多关于支持多个平台版本的 Android 文档:here

【讨论】:

  • 我尝试在运行 Android 2.2 的模拟器中运行我的应用程序。一股力量逼近。我已经发布了一个关于 logcat 和源代码的问题。你能帮我检查一下吗? stackoverflow.com/questions/12950214/…
猜你喜欢
  • 2016-02-17
  • 2016-02-01
  • 2022-01-20
  • 1970-01-01
  • 1970-01-01
  • 2011-11-24
  • 2017-02-02
  • 2012-12-30
相关资源
最近更新 更多