2013-05-13 50 views
0

我收到(从bugsense)崩溃报告从我的应用程序在Android版本低于3,但应用程序已在清单中声明:为什么我的应用安装在(推测)不支持的Android版本上?

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

因此,一旦用户进行移动,在App,崩溃。

这怎么可能?我知道安装会失败,并显示“包分析失败”消息。 我一定要实现一个在应用程序的Android版本检查?或者我错过了清单中的某些东西?

一个例子:

0java.lang.NoSuchMethodError: xxx.xxx.xxx.MyActivity.getFragmentManager 
1at xxx.xxx.xxx.MyActivity.onCreate(MyActivity.java:98) 
2at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
3at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 
4at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 
5at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
6at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
7at android.os.Handler.dispatchMessage(Handler.java:99) 
8at android.os.Looper.loop(Looper.java:123) 
9at android.app.ActivityThread.main(ActivityThread.java:3729) 
10at java.lang.reflect.Method.invokeNative(Native Method) 
11at java.lang.reflect.Method.invoke(Method.java:507) 
12at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:874) 
13at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:632) 
14at dalvik.system.NativeStart.main(Native Method) 

我敢打赌,我没有SuchMethod中的Android 2.3.3

无论如何,总误差仅3,在1K左右的用户和每天3,5k会议, 本星期。所以把这个Q作为一个练习。

+0

嗯,无论是有人有你的代码,并通过SDK或其他人在使用旧版本的设备上加载APK。 什么是崩溃报告是什么样子? – npace 2013-05-13 15:07:28

+0

这可能是这种情况,因为它是开源的,因此代码是免费的。我正在编辑问题以包含错误。 – dentex 2013-05-13 15:25:40

+1

不管怎样,我的应用程序通过侧面加载ONLY(和应用内更新)安装;) – dentex 2013-05-13 15:43:46

回答

0

如果该应用程序被安装在不符合指定API级的设备上,它将执行特定于某个特定不受支持的API级的代码时崩溃。但是,指定minSdkVersion应该防止它在根本不符合此级别的设备上安装。

但是,使用上面的“uses-sdk”定义,满足最低SDK要求的设备也可以启动该应用程序,但在稍后使用特定于更高级别目标SDK(即在仅满足级别11的最低要求的设备上使用API​​级别17方法)。如果是这种情况,那么您将不得不使用应用内检查或使用@TargetApi或类似方法对批注方法进行批注。然而,看到你提到你的方式会接收到低于最低SDK级别的Android版本的崩溃,但其他的东西似乎是不对的。

没有试图变得有趣:但是你能否确认这个应用程序的所有版本(已经向公众公开)都包含你的文章中描述的“uses-sdk”声明?这可能是一个旧版本的应用程序崩溃,你没有阅读最新的可用APK的bug报告,但以前的版本...

+0

你在第一段说什么版本的崩溃正是我知道。我可以确认所有版本一直都有Manifest摘录报道。 – dentex 2013-05-13 15:22:06

-2

每当你使用低于3的Android版本,你需要使用较低的minSdkVersion到8

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

利用这一点,它会为所有Android版本的设备上运行。

+0

我不打算支持在3以下。所以11版本为的minSdkVersion是为我好。我只是从下面3 – dentex 2013-05-13 15:29:45

相关问题