android - 与 Android 应用共享 Java 库

标签 android netbeans jar shared

我刚刚开始进行 Android 开发,并将 Netbeans 与 NBAndroid 和 SDK 17 结合使用。

我想在我的 Java 和 Android 应用程序中使用相同的 Java 源代码。

http://developer.android.com/guide/developing/projects/projects-eclipse.html说明了如何在 Eclipse 中执行此操作(尽管它在 .JAR 连接方面很粗略),但我似乎无法在 NB 中使用它。

根据该链接,我的理解是 Android 应用程序的正确设置是一个 Android 应用程序项目,它引用一个 Android 库项目,而该项目又引用一个由 Java 库项目生成的 .JAR 库。然后,我还可以有一个引用同一个 Java 库项目的 Java 应用程序项目。

所以,我已经设置了这个项目结构...我有一个 AndroidApp 项目,它是 com.ex 包中的基本 HelloAndroid Activity 。该项目在 Libraries 文件夹中包含一个 AndroidLib 库项目。我还有一个 LibClass.java 文件,它定义了一个简单的 LibClass 类,它有一个函数 getText(),它只返回一个要显示的字符串。 AndroidApp 中的 MainActivity 调用它来获取要输出的 String。

当我把LibClass.java直接放到AndroidLib工程中,一切正常。

但我想做的是用Java分享源码。

所以我想将 LibClass.java 移动到 JavaLib 库中,其 .JAR 文件包含在 AndroidLib 项目中。但是,当我尝试这样做时,我在 MainActivity 类中遇到错误,提示它找不到 LibClass。查看“项目”窗口,我可以在 AndroidLib 项目的 Libraries 文件夹中的 JavaLib.jar 的 com.ex 包中看到 LibClass.class。 AndroidLib 在 AndroidApp 项目的 Libraries 文件夹中是可见的,但它不显示任何包或其他内容。

所以我觉得我离完成这项工作只有一步之遥。我是否需要对一个或另一个 AndroidManifest 文件做些什么?或者对 build.xml 文件做些什么?还是我完全走错了路?

如果有人可以发布操作方法,我将不胜感激。

最佳答案

我正在尝试类似的东西;我有 Java EE 项目,使用 Eclipse 构建,我正在尝试利用我的 Android 项目中的一些代码。这应该给我一个共享的代码库,而不是我以前不得不忍受的一堆令人困惑的 SVN 外部。

与创建 JAR 文件相比,我发现使用源代码并为平台构建效果最好(好吧,它一直在工作,但目前我遇到了问题)。所以,我正在做的是:

c:\MySvnFolderStructure\MyJavaProjectFolder\src\     (and then all the source under that)
c:\MySvnFolderStructure\MyJavaProjectFolder\android\ (and all the Eclipse Android project gubbins)
c:\MySvnFolderStructure\MyJavaProjectFolder\jee\     (and all the Eclipse JEE project gubbins)

Android 和 Java EE 项目没有自己的 src 文件夹,它们都链接到其父文件夹中的 src 文件夹。这意味着每个 Java 实现都从源代码构建自己的字节码版本,并使用自己的外部库(例如 Apache HTTP 库)。

当然他们不能共享像 awt 这样的东西(如另一篇文章中提到的),但是有很多东西可以交叉,特别是如果它是正在使用的核心 Java 类。

另外,事实证明,编写 JUnit 测试有点棘手,因为目前需要一些重复的测试代码,因为 Android 需要额外的检测,但我正在努力。

另请参阅 this post about relative paths在 Eclipse 中,这意味着可以将文件夹 checkout 到不同机器上的不同位置(就像我们都使用版本控制 checkout 一样)并且仍然可以共享。

关于android - 与 Android 应用共享 Java 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10151789/

相关文章:

java - 异常 NoClassDefFoundError

java - 在我的 Gradle Java 项目中使用本地 jar 作为依赖项

java - android opengles 2.0 绘制字符串 2d

android - 在非 Activity 扩展类中获取屏幕尺寸(Android)

android - 如何在 vuforia 中识别像建筑物这样的大型物体

Android API 人脸检测 vs. OpenCV/JavaCV 人脸检测

sass - 如何让 Netbeans 在保存时自动编译 Sass?

ruby-on-rails - 甚至更好地支持 Netbeans 中的 HAML?

java - 使用 NetBeans 连接到 Java 中的 Access 数据库

java - 嵌入 Neo4j 到底需要哪些 jar?