Android L: LinkageError导致应用程序崩溃

9

作为针对L预览版测试现有Android应用的一部分,该应用程序崩溃并显示以下异常:

07-08 10:05:39.024: E/AndroidRuntime(2126): FATAL EXCEPTION: main
07-08 10:05:39.024: E/AndroidRuntime(2126): Process: com.example, PID: 2126
07-08 10:05:39.024: E/AndroidRuntime(2126): java.lang.LinkageError: com.example.BaseActivity
07-08 10:05:39.024: E/AndroidRuntime(2126):     at dalvik.system.DexFile.defineClassNative(Native Method)
07-08 10:05:39.024: E/AndroidRuntime(2126):     at dalvik.system.DexFile.defineClass(DexFile.java:222)
07-08 10:05:39.024: E/AndroidRuntime(2126):     at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:215)
07-08 10:05:39.024: E/AndroidRuntime(2126):     at dalvik.system.DexPathList.findClass(DexPathList.java:321)
07-08 10:05:39.024: E/AndroidRuntime(2126):     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:54)

这个应用在API 14-19的版本中运行良好,但在L预览版上启动时会崩溃,并显示这个晦涩难懂的错误。编译/目标SDK版本仍设置为API 19。

2个回答

20
问题是在BaseActivity中存在冲突的方法。我创建了一个名为getDrawable(int drawableId)的帮助方法,它与Android L中添加到Activity类中的方法具有相同的签名。
这种冲突导致了LinkageError问题。为了解决这个问题,我只需将我的帮助方法重命名,以避免与新的内置方法冲突即可。

2
这解决了我的问题,但在模块设置中我需要将编译SDK版本更改为Android 5.0,然后才能让Android Studio显示与目标SDK更改为API 21相关的错误和其他错误。 - clami219

-1

07-08 10:05:39.024: E/AndroidRuntime(2126): 致命异常:主要 07-08 10:05:39.024: E/AndroidRuntime(2126): 进程:com.example,PID:2126 07-08 10:05:39.024: E/AndroidRuntime(2126): java.lang.LinkageError:com.example.BaseActivity 07-08 10:05:39.024: E/AndroidRuntime(2126): at dalvik.system.DexFile.defineClassNative(本地方法) 07-08 10:05:39.024: E/AndroidRuntime(2126): at dalvik.system.DexFile.defineClass(DexFile.java:222) 07-08 10:05:39.024: E/AndroidRuntime(2126): at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:215) 07-08 10:05:39.024: E/AndroidRuntime(2126): at dalvik.system.DexPathList.findClass(DexPathList.java:321) 07-08 10:05:39.024: E/AndroidRuntime(2126): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:54)


请在回答时发布更多内容,而不仅仅是堆栈跟踪。上述内容根本不是答案。 - Jakob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接