1

我刚刚开始进行 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 调用它来获取要输出的字符串。

当我将LibClass.java直接放到AndroidLib项目中时,一切正常。

但我想做的是与Java共享源代码。

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

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

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

4

3 回答 3

1

我正在尝试类似的东西;我有 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 需要额外的工具,但我正在努力。

另外,请参阅这篇关于 Eclipse 中的相对路径的帖子,这意味着可以将文件夹签出到不同机器上的不同位置(就像我们都使用版本控制签出一样)并且仍然可以共享。

于 2012-05-02T09:32:41.913 回答
0

问题是Android中的Java平台与JDK平台不同。

特别是,.JAR 库不能引用任何不包含在 Android 平台中的内容。java.awt.* 是你不能引用的一个例子(除非你可以有 java.awt.fonts)。

JDK String 和 Android String 之间也有区别——Android 没有实现 isEmpty() 方法。

于 2012-04-30T02:57:56.770 回答
0

如果我理解您的情况正确,您正在尝试为您的 android 和 java 应用程序使用自定义 java 库。

对于这种情况,您可以先构建 java 库。您可以直接将 jar 放到 android 项目的 libs 文件夹中,并将其添加到 android 项目的构建路径中,而不是将 java 库 jar 添加为 android 库。

如果您使用 ANT 脚本构建 java 库 jar ,则可以考虑将源文件也添加为 jar 的一部分。这将帮助您在开发 android 部分时获得代码帮助。但这部分纯粹是可选的。

于 2012-04-14T11:05:54.740 回答