我发现我可以构建具有更高sdk目标的android apk(比方说3.0),但我仍然可以在较低的设备中运行我的应用程序(比方说2.1)。我可以知道为什么吗?只有当我将android:minSdkVersion
设置为特定数字时,仍然会停止执行。
如果我在我的应用程序中使用像Fragment这样的最新功能但是在较低平台设备中运行它是否有意义,如果我这样做,我的应用会发生什么?我的应用会崩溃吗?
我在处理admob时意识到这一点,因为我在Android 4.1中编译它但能够在设备2.1中运行它,这真让我感到惊讶。
答案 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都支持的库