设备的android版本与应用程序中指定的版本之间的关系
在使用eclipse创建项目时,我有Android2.2(Froyo)所需的最低SDK和Android4.2(Jelly Bean)所需的目标SDK,并使用Android4.3编译。我已经使用sqlitebrowser v2.ob1创建了数据库。我的应用程序运行时没有任何错误(虽然logcat中只有几行红色),并且在模拟器中运行时满足了我的要求。我尝试了3种不同的模拟器,效果很好。但当我在移动设备上试用这个应用程序时,只要数据库有问题,它就会显示force close。我的意思是,当它必须从数据库检索或连接到数据库时,它显示force close。通过搜索,我了解到即使使用外部创建的数据库(复制到assets文件夹,然后复制到默认位置),只要.apk文件就足以让应用程序运行。我的问题是设备的android版本与应用程序中指定的版本之间的关系,android,android-version,Android,Android Version,在使用eclipse创建项目时,我有Android2.2(Froyo)所需的最低SDK和Android4.2(Jelly Bean)所需的目标SDK,并使用Android4.3编译。我已经使用sqlitebrowser v2.ob1创建了数据库。我的应用程序运行时没有任何错误(虽然logcat中只有几行红色),并且在模拟器中运行时满足了我的要求。我尝试了3种不同的模拟器,效果很好。但当我在移动设备上试用这个应用程序时,只要数据库有问题,它就会显示force close。我的意思是,当它必须从数据
这是我的第一个android应用程序,非常感谢您的帮助。感谢advace您可能正在应用程序中使用较低版本SDK不支持的功能。如果没有任何源代码或stacktrace,很难准确地告诉您这可能是什么,但我可以澄清您对
minSdkVersion
和targetSdkVersion
的理解
考虑到Android SDK的每一个新版本,都会引入以前版本中不存在的附加功能和API。显然,旧版本的Android不支持这些功能
当您指定一个targetSdkVersion
时,您指定您正在使用该特定版本的Android中引入的功能。您还暗示您已经在特定的API级别上测试了您的应用程序,并且它可以正常工作
当您指定的minSdkVersion
低于您的targetSdkVersion
时,这意味着您的应用程序将在较低的API级别上正常工作,因为您已手动编程测试或检查代码,以确保当前API级别在运行功能之前与功能兼容
例如,如果我想运行Jelly Bean中引入的功能,但我想保留对较低API级别的支持(例如姜饼),我可能会在运行该功能之前添加以下检查(请参阅其他版本代码):
Android SDK可以自动处理在较低API级别引入的代码,但不能自动处理特定于较高API级别的代码
因此,请牢记这一点,回答您的问题:
如果还不清楚,您应该在Android文档中阅读更多关于支持多个平台版本的信息:。您可能在应用程序中使用了SDK较低版本不支持的功能。如果没有任何源代码或stacktrace,很难准确地告诉您这可能是什么,但我可以澄清您对
minSdkVersion
和targetSdkVersion
的理解
考虑到Android SDK的每一个新版本,都会引入以前版本中不存在的附加功能和API。显然,旧版本的Android不支持这些功能
当您指定一个targetSdkVersion
时,您指定您正在使用该特定版本的Android中引入的功能。您还暗示您已经在特定的API级别上测试了您的应用程序,并且它可以正常工作
当您指定的minSdkVersion
低于您的targetSdkVersion
时,这意味着您的应用程序将在较低的API级别上正常工作,因为您已手动编程测试或检查代码,以确保当前API级别在运行功能之前与功能兼容
例如,如果我想运行Jelly Bean中引入的功能,但我想保留对较低API级别的支持(例如姜饼),我可能会在运行该功能之前添加以下检查(请参阅其他版本代码):
Android SDK可以自动生成
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
// run some code specific to API level 16
}