Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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
androidstudio中的代码共享_Android_Maven_Android Studio_Android Gradle Plugin_Android Library - Fatal编程技术网

androidstudio中的代码共享

androidstudio中的代码共享,android,maven,android-studio,android-gradle-plugin,android-library,Android,Maven,Android Studio,Android Gradle Plugin,Android Library,我已经开始从事一个项目,在这个项目中,我需要在一堆应用程序中共享一堆Java类。在Eclipse中,可以创建一个包含所有此类类的项目,并将其用作包含所有依赖项目的工作区中的库,但在Android Studio中,似乎不可能做到这一点(至少不容易做到) 我已经读了很多文章,其中很多建议建立一个库项目,生成一个aar文件,然后在我的项目中使用它。但是,据我所知,这将使我的库成为开源库(我说得对吗?),这是我不想要的。我这样做是为了一个客户端,我希望代码库是私有的 另外,我知道模块可以导入到新项目中。

我已经开始从事一个项目,在这个项目中,我需要在一堆应用程序中共享一堆
Java
类。在
Eclipse
中,可以创建一个包含所有此类类的项目,并将其用作包含所有依赖项目的工作区中的库,但在
Android Studio
中,似乎不可能做到这一点(至少不容易做到)

我已经读了很多文章,其中很多建议建立一个库项目,生成一个
aar
文件,然后在我的项目中使用它。但是,据我所知,这将使我的库成为开源库(我说得对吗?),这是我不想要的。我这样做是为了一个客户端,我希望代码库是私有的

另外,我知道模块可以导入到新项目中。但这会创建原始模块的副本。这根本不是我想要的。我不想维护同一类的多个副本,这完全违背了“代码共享”的目的


有没有什么好方法可以实现我想要的?非常感谢您的帮助。

您需要将eclipse项目视为Android Studio/IntelliJ Idea模块。然后,您可以生成android(或java)库,然后将它们包含在项目中

要将Android Studio模块标记为库,您可以转到文件->项目结构->面,然后单击库模块


您当然可以创建和使用一个库,而无需将其开源或提供给其他人

首先,除非它包含资源,否则不需要将其设置为aar。 如果它只是普通类,那么可以将其设置为.jar文件

无论哪种方式,共享这些库(aar或jar)的最简单方式是建立自己的存储库。Nexus和Artifactory是两种最常见的存储库管理器

将库保存在自己的项目中,然后将其发布到自己的内部存储库中


然后,将需要使用库的项目配置为(在gradle中)使用内部存储库,并从中获取库。

您有两个不同的选项

一种选择是将库作为单独的项目进行维护,并将它们编译成归档格式,如JAR或AAR;JAR文件用于纯Java库,AAR用于Android库(其中包含访问Android API和/或拥有Android资源的代码)。正如在评论中指出的,AAR不会像JAR文件那样强迫您向世界发布代码;它只是一种存档文件格式,其文件可以是您的计算机或组织的本地文件

有了存档文件,您可以将其包含在其他项目中。如果您是多开发人员组织的一部分,您可能会发现使用存储库管理器在组织内发布和维护这些库很方便,并且您可以使用Maven坐标样式规范在项目中包含库,而无需手动将这些库复制到开发机器上

这种方法的缺点是,它使更改这些库变得更加困难:您需要加载项目、进行更改、构建存档并分发存档

另一种方法是保持库作为源模块,就像在Eclipse中一样。您注意到,如果您通过UI导入模块,Android Studio将创建模块的副本,但是如果您绕过UI直接修改构建脚本,您可以做您想做的事情,即就地使用模块并在多个项目之间共享单个副本。为此,请在您的设置.gradle文件中工作并添加以下内容:

include ':module_name'
project(':module_name').projectDir = new File(settingsDir, '../relative/path/to/module')

我强烈建议你们不要在这里使用纯粹的相对路径;在本例中,路径锚定到Gradle提供的
settingsDir
变量,该变量定义为找到settings.Gradle的目录。如果使用纯相对路径(即不锚定到任何对象),则依赖于运行构建文件的所有环境中的工作目录是相同的(命令行与Android Studio与CI服务器),这不是一个好的假设

我的处境和你一样,我用git建立了一种方法。 要创建库,请执行以下步骤:

  • 在Android Studio中创建项目
  • 在该项目中创建android库模块
  • 在该库模块中,创建git存储库
  • .gitignore
    文件中添加
    modulename.iml
  • 将GitHub或Bitbucket用于私有云存储库。并将你的库推到它
  • 在您想要的任何项目中创建新的android库模型
  • 关闭Android Studio(不确定是否强制)
  • 使用资源管理器转到您创建的模块文件夹
  • 删除其中的所有数据,除了
    modulename.iml
  • 将您的库从“GitHub”克隆到其中
  • 就这些

    现在,无论您在家还是在工作中,都可以在多个项目中使用该库。在完成工作后,不要忘记推动库更改。在打开一个新的后拉它们。 我想你可以通过某种方式使这件事自动化


    好处是您不需要构建任何jar或aar。

    我对这个问题进行了编辑,对Eclipse可能实现的功能进行了更准确的解释。@greenapps,您的评论没有建设性。首先用谷歌搜索你的问题,如果出于某种奇怪的原因,你在图书馆项目中找不到任何东西,请回到这里问一个问题。生成AAR不会暴露你的代码。选中
    并将其用作工作区中的库
    。是的,我以前听说过,并且尝试过,但没有成功。我遵循的指令中没有一条对我有用。@greenapps——然后再问一个单独的问题,而不是劫持一条评论线索。的确如此。他们需要了解的关键是Android Studio项目类似于Eclipse工作区。非常感谢Scott!我研究了你的第一个建议