NoClassDefFoundError:android / support / v4 / content / LocalBroadcastManager

问题描述 投票:0回答:7
  • 平台:Monodroid v.2.h
  • 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添加它。

android xamarin.android
7个回答
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”复选框“TICK”

就是这样,你完成了!


1
投票

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


1
投票

在Android Studio 0.8.2中

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


1
投票

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

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

这为我修好了。


0
投票

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


0
投票

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

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

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.