尝试使用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添加它。
答案 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 :(得分:1)
我在android facebook整合时遇到了这个错误。原因是我将android-support-v4.jar库添加到我的项目中。 Facebook sdk已经支持图书馆了。因此,从libs和java构建路径中删除支持库如果您使用的库已经有了支持库。
答案 2 :(得分:1)
在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