0
  • 平台: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 manager 下,安装了所有的 API 包,以及 extras 下的“Support Library”包。

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

想法?

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

4

7 回答 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. 按“添加外部 Jar”
  5. (最重要的一步)从您的当前项目位置选择“libs”文件夹的“android-support-v4”jar 文件(路径应该在您的项目文件夹中,而不是 android sdk)。
  6. 选择“订购和导出”选项卡和“勾选”“android-support-v4.jar”复选框

就是这样,你完成了!

于 2013-09-17T07:13:14.167 回答
1

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

于 2013-11-04T15:32:41.503 回答
1

在 Android Studio 0.8.2

安卓工作室 0.8.2

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

于 2014-07-30T08:46:32.393 回答
1

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

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

这为我修好了。

于 2019-03-14T07:50:43.747 回答
0

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

于 2012-09-26T12:57:38.303 回答
0

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

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

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

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

于 2012-09-26T18:26:03.547 回答
0

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

于 2014-07-14T10:01:15.513 回答