Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android和Java项目之间共享源代码_Java_Android - Fatal编程技术网

在android和Java项目之间共享源代码

在android和Java项目之间共享源代码,java,android,Java,Android,有一个类使用android平台和jdk编译。现在,我们的想法是,在两个项目中使用该类,一个是android项目,另一个是java应用程序 因此,我创建了一个包含两个模块的项目,一个用于android,一个用于java解决方案。所有的工作都很好,在两个模块之间复制并粘贴类源代码,但是使用起来不是很舒服 因此,问题是,如何在没有复制和粘贴的情况下实现。我更喜欢intellij解决方案,但如果需要,我愿意改用eclipse 谢谢您的回答。创建一个包含共享类的MyLibrary项目,将其打包为jar(M

有一个类使用
android平台
jdk
编译。现在,我们的想法是,在两个项目中使用该类,一个是android项目,另一个是java应用程序

因此,我创建了一个包含两个模块的项目,一个用于android,一个用于java解决方案。所有的工作都很好,在两个模块之间复制并粘贴类源代码,但是使用起来不是很舒服

因此,问题是,如何在没有复制和粘贴的情况下实现。我更喜欢intellij解决方案,但如果需要,我愿意改用eclipse


谢谢您的回答。

创建一个包含共享类的
MyLibrary
项目,将其打包为jar(MyLibrary.jar),并将此jar添加为Java和Android项目的库。

既然您说该类是“公共的”,这意味着它不使用任何特定于Android的类。在这种情况下,您可以将公共代码作为JAR库分发给java和Android项目。

不幸的是,我并不真正理解这是什么意思

此问题的典型解决方案是3个项目:

    <dependency>
        <groupId>com.mycompany</groupId>
        <artifactId>util</artifactId>
        <version>1.0</version>
    </dependency>
  • 安卓项目
  • 其他项目
  • 共享(公用)项目
  • 项目1和2依赖于项目3

    如果您使用的是maven,那么操作非常简单:只需添加适当的依赖项标记。例如,如果您的实用程序项目的工件是“com.mycompany.util”,请将如下定义添加到依赖项目的pom.xml中:

        <dependency>
            <groupId>com.mycompany</groupId>
            <artifactId>util</artifactId>
            <version>1.0</version>
        </dependency>
    
    
    com.mycompany
    利用率
    1
    
    FWIW,以下是我使用NetBeans 7.1.1所做的工作。。。有可能这些步骤中的一些是不需要的,但经过几天的实验,这似乎是可行的

  • 创建一个包含共享类及其源代码的“Shared1”Java库
  • 将“Shared1”库添加到桌面Java项目中
  • 创建一个“共享”Android项目。。。在属性中,勾选“Is Library”并设置自定义位置“./Shared1.dist”
  • 将“共享”项目添加到Android应用程序项目中的库中
  • 在Android应用程序项目中添加“Shared1”作为JAR库(自定义位置“./Shared1.dist”)
  • “Shared1”项目中的类现在可以在桌面环境和Android环境中使用


    当心在“共享”库类中使用java.awt类不会生成任何编译器警告,但会导致Android应用程序崩溃后续运行也会崩溃,即使java.awt引用已被删除,并且已对所有内容进行了清理和构建

    是的,它可以很好地用于制作JAR库。但这不会导致性能下降吗?JAR必须翻译成dalvik(或者别的什么,我不知道确切的意思)。一个类就是一个类。无论是直接在android项目中,还是在jar中,android都必须做同样的工作。运行时性能没有损失。这是因为Android SDK(特别是dex工具)将把所有的.class文件一起编译成Dalvik字节码(.dex文件)。因此,是的,编译时性能有损失;但这是遵循的标准程序。如果你能分享你的解决方案,那就太好了;如果答案对你有帮助,请在这里投票或接受。我不能投票,因为我需要更多的声誉。下面是intellij的解决方案:1)创建一个新的空项目。2) 为库添加java模块3)为desktopapp添加java模块并为库设置moduledepencies 4)为androidapp添加android模块并为库设置依赖项Intellij IDE同时只加载一个项目。我不知道其他ide是否可以处理多个。因此,如果我不想使用多个IDE窗口,我必须使用模块。另外,模块与项目类似,但ide可以加载其中的许多模块。根据现有项目,您可以创建一个新模块。我不想重复了。