当我学习Android开发(通过Eclipse)时,有一件事让我感到沮丧,就是让Android应用程序项目引用Android库项目以便可靠地工作。有时app项目不会因为缺少在库中定义的类引用而构建,有时它会构建但在运行时崩溃并引用库中定义的类,并带有错误链接
java.lang.NoClassDefFoundError: com.dave.customviewtestlib.LibTestClass
显示在logcat中。
我正在使用Android Developer Tools Build:v21.0.1-543035
我创建了一个工作区,其中最简单的Android应用程序项目引用了最简单的Android库项目。我究竟应该如何在Eclipse中将它们绑在一起?他们自己都很好。然后我编辑Android应用程序项目的“Java Build Path”。令人困惑的是,似乎有很多方法可以参考图书馆项目。有时一种方式有效,然后它停止工作,另一种方式在开始工作之前不起作用。我应该
此外,还有神秘的Java Build Path |订单和导出选项卡。这是什么意思?
我还有一个相关的问题:这些所谓的Android库就像静态库(你在构建时引用它们,代码被吸入,在运行时它只是app二进制文件的一部分),或者像动态一样库(它们可以单独安装在设备上)?我理解它是所有Java,所有类都是在运行时由类加载器加载的,但我认为仍然有一个重要的区别。大多数教程和参考文献都是如此愚蠢,获得答案是没有希望的。
任何帮助都会有助于减少我的烦恼:)
答案 0 :(得分:2)
在包浏览器视图中:
右键单击库项目 - >项目属性 - > android标签
检查:是图书馆。
右键点击Android项目 - >项目属性 - > android标签
单击“添加”按钮,然后从列表中选择您的库项目。
为了回答你“静态问题”和Android库项目和jar'd库之间的区别是android工具自动修复项目的资源(xml)引用(生成的R文件等),然后它包将类转换为.jar文件并将其添加到项目的apk中。所以它是静态的。
关于构建路径和订单以及导出标签。您可以在构建路径中添加:.jar文件,工作区中的其他项目以及项目的其他源文件。从中可以看到订单/导出选项卡,您可以选择项目的jar文件(或Android项目中的apk)静态包含哪些库/类文件。