Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
设备的android版本与应用程序中指定的版本之间的关系_Android_Android Version - Fatal编程技术网

设备的android版本与应用程序中指定的版本之间的关系

设备的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。我的意思是,当它必须从数据

在使用eclipse创建项目时,我有Android2.2(Froyo)所需的最低SDK和Android4.2(Jelly Bean)所需的目标SDK,并使用Android4.3编译。我已经使用sqlitebrowser v2.ob1创建了数据库。我的应用程序运行时没有任何错误(虽然logcat中只有几行红色),并且在模拟器中运行时满足了我的要求。我尝试了3种不同的模拟器,效果很好。但当我在移动设备上试用这个应用程序时,只要数据库有问题,它就会显示force close。我的意思是,当它必须从数据库检索或连接到数据库时,它显示force close。通过搜索,我了解到即使使用外部创建的数据库(复制到assets文件夹,然后复制到默认位置),只要.apk文件就足以让应用程序运行。我的问题是

  • 我的应用程序在安卓2.2到4.2的任何设备上都不能正常工作吗

  • 我应该试着用Android 4.2编译应用程序吗

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

  • 应用程序的版本、仿真器和手机或任何其他设备的版本是如何相关的

  • 我的应用程序可以在哪些版本的设备上运行


  • 这是我的第一个android应用程序,非常感谢您的帮助。感谢advace

    您可能正在应用程序中使用较低版本SDK不支持的功能。如果没有任何源代码或stacktrace,很难准确地告诉您这可能是什么,但我可以澄清您对
    minSdkVersion
    targetSdkVersion
    的理解

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

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

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

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

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

    因此,请牢记这一点,回答您的问题:

  • 不,它只保证你的应用程序能在安卓4.2上正常工作。由您来确保它与您希望支持的早期版本保持向后兼容

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

  • 您可以进入设置>关于手机>Android版本来检查设备的Android版本。如果它运行的是姜饼,请记住,从那时起已经引入了许多新功能,您的应用程序可能正在使用其中的一些功能。对于emulator,您可以在创建emulator时指定API级别(您可以从SDK管理器下载其他版本以使用)

  • 我认为到目前为止,我的回答清楚地表明了这种关系

  • 重申一下,您的应用程序将在运行Android 2.2或更高版本的任何设备上运行,但如果您使用的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
    }