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