Android更高的构建目标可以在较低平台设备上运行吗?

时间:2012-07-05 07:27:59

标签: android

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

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

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

4 个答案:

答案 0 :(得分:2)

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

有关Android Support v4 Library的一些参考,您可以查看:

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。

答案 1 :(得分:1)

使用 AndroidManifest.xml 并使用声明来声明最低版本和目标SDK版本,您的apk应该相应地运行到最低SDK版本:

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

答案 2 :(得分:0)

我可以知道为什么吗?

归因于android:minSdkVersion

使用

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

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

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

答案 3 :(得分:0)

  

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

这就是android SDK的工作原理。但默认情况下,当你在Eclipse中创建一个Android项目,并选择SDK版本来说,3.0,ADT会自动将android:minSdkVersion设置为11.如果你不想在小于3.0的版本上运行app,不要改变这个值

  

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

肯定会崩溃。您将获得找不到方法的异常。相反,你可以使用像fragments for all

这样的较低和较高版本的android都支持的库