2

我发现我可以构建具有更高 sdk 目标的 android apk(比如说 3.0),但我仍然能够在较低的设备上运行我的应用程序(比如说 2.1)。我可以知道为什么吗?仅当我将其设置android:minSdkVersion为特定数字时仍会停止执行。

如果我在我的应用程序中使用像 Fragment 这样的最新功能但在较低平台的设备上运行它是否有意义,如果我这样做,我的应用程序会发生什么?我的应用程序会崩溃吗?

我在处理 admob 时意识到这一点,因为我在 Android 4.1 中编译它但能够在设备 2.1 中运行它,这真的让我感到惊讶。

4

4 回答 4

2

为了在 sdk 低于 3.0 的设备中使用 Fragment,您必须将 Android Support v4 库作为引用库包含在内。这允许您使用 Android 发布的最新 sdk 引入的 Fragment 和其他功能。保持与旧的 Android 设备的复古兼容性非常重要,因为这些设备的扩散太多了。

有关 Android 支持 v4 库的一些参考资料,您可以查看:

http://developer.android.com/reference/android/support/v4/app/package-summary.html

和这个:

http://developer.android.com/tools/extras/support-library.html

没有它,您不能在低于 3.0(API 级别 11)的 sdk 中使用 Fragment。

于 2012-07-05T07:35:29.407 回答
1

使用您的AndroidManifest.xml并使用声明式声明最低和目标 SDK 版本,您的 apk 应根据最低 SDK 版本运行:

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="14">
于 2012-07-05T07:35:47.670 回答
0

我可以知道为什么吗?

这是由于android:minSdkVersion

利用

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

如果我在我的应用程序中使用像 Fragment 这样的最新功能但在较低平台的设备上运行它是否有意义,如果我这样做,我的应用程序会发生什么?我的应用程序会崩溃吗?

当它使用旧平台中不存在的新 SDK 功能时,它将崩溃。

于 2012-07-05T07:36:16.330 回答
0

我发现我构建了具有更高 sdk 目标的 android apk(比如说 3.0),但我仍然能够在较低的设备上运行我的应用程序(比如说 2.1)。我可以知道为什么吗?

这就是 android SDK 的工作原理。但是默认情况下,当您在 Eclipse 中创建 Android 项目并选择 SDK 版本为 3.0 时,ADT 会自动将 android:minSdkVersion 设置为 11。如果您不想在低于 3.0 的版本上运行您的应用程序,请不要更改此值.

如果我在我的应用程序中使用像 Fragment 这样的最新功能但在较低平台的设备上运行它是否有意义,如果我这样做,我的应用程序会发生什么?我的应用程序会崩溃吗?

肯定会崩溃。你会得到方法未找到异常。相反,您可以使用一个在较低和较高版本的 android 上都支持的库,例如所有片段

于 2012-07-05T07:37:51.103 回答