NoClassDefFoundError:android / support / v4 / content / LocalBroadcastManager

时间:2012-09-26 12:42:29

标签: android xamarin.android

  • 平台:MonoDroid v4.2.4
  • IDE:Visual Studio 2012
  • 最低SDK版本:API 12

尝试使用Android.Support.v4.Content命名空间中包含的LocalBroadcastManager类时,我遇到了运行时问题。在我的IDE中,我明确地添加了引用,并且可以将命名空间/类的范围设置得很好,并且在编写一些代码之后,按预期编译。但是,在应用程序部署和启动时,我会收到错误提示:“NoClassDefFoundError:android / support / v4 / content / LocalBroadcastManager”

这是提示运行时错误的代码(DSC_Discconected_From_Device是一个继承自BroadcastReceiver的类)。它会在最后一行停止执行。

        IntentFilter filter = new IntentFilter(UsbManager.ActionUsbDeviceDetached);

        DSC_Disconnected_From_Device Receiver = new DSC_Disconnected_From_Device();

        LocalBroadcastManager.GetInstance(this).RegisterReceiver(Receiver, filter);

在SDK管理器下,安装了所有API包,以及附加功能下的“支持库”包。

在哪里寻找班级的定义?我可能会将源LocalBroadcastManager.java复制到android-sdk框架中“可能”正在寻找的路径。例如:.. \ android-sdk \ extras \ android \ support \ v4 \ src \ honeycomb \ android \ support \ v4 \ content \ LocalBroadcastManager.java

想法?

编辑:忘记提及我的项目已经在位于项目根目录的“libs”文件夹中引用了支持库android-support-v4。我必须创建目录并通过Visual Studio添加它。

7 个答案:

答案 0 :(得分:4)

这个问题困扰了我近六个月,没有任何解决方案可以帮助我,但今天我已经设法找到了正确的解决方案。

当您选择项目目标版本大于或等于Android 4.0时,Android SDK会在项目“libs”文件夹中包含“android-support-v4.jar”文件。此jar包含与Android 4.0或更高版本相关的所有类和方法。

Android正在尝试查找“android-support-v4.jar”中的类定义,这意味着您尚未配置“android-support-v4.jar”文件的构建路径。为此,请按照下列步骤操作:

  1. 打开项目属性
  2. 从左侧菜单中选择“Java Build Path”
  3. 选择“库”标签页
  4. 按“添加外部罐子”
  5. (最重要的一步) 从CURRENT PROJECT LOCATION中选择“libs”文件夹的“android-support-v4”jar文件(路径应该在您的项目文件夹中)而不是android sdk)。
  6. 选择“订购和导出”标签,然后选中“android-support-v4.jar”的复选框
  7. 就是这样,你已经完成了!

答案 1 :(得分:1)

我在android facebook整合时遇到了这个错误。原因是我将android-support-v4.jar库添加到我的项目中。 Facebook sdk已经支持图书馆了。因此,从libs和java构建路径中删除支持库如果您使用的库已经有了支持库。

答案 2 :(得分:1)

在Android Studio 0.8.2中

Android Studio 0.8.2

按绿色" +"在项目结构的依赖项中,然后键盘键" 1" (对于libs)并选择v4 + lib

答案 3 :(得分:1)

如果启用了proguard,请尝试添加

# Local Broadcast Manager
-keep public class android.support.v4.content.LocalBroadcastManager

这为我修复了它。

答案 4 :(得分:0)

如果是Eclipse,则需要将支持库.jar文件添加到IDE中的/ libs目录中,以便在制作apk时Android安卓程序包将包含在您的apk中。

答案 5 :(得分:0)

问题似乎与android-support-v4.jar库的“属性”有关。

默认情况下,Visual Studio中“高级属性”中列出的“构建操作”的值为内容。我将值切换为 AndroidJavaLibrary ,运行时错误消失了。

但是,BroadcastReceiver没有收到USB断开连接意图,嗯......会相应地更新这个答案。

编辑:我永远无法让LocalBroadcastReceiver工作,所以我不得不使用常规的。

答案 6 :(得分:0)

用FacebookSDK> libs文件夹中的android-support-v4.jar替换你> libs文件夹中项目的android-support-v4.jar