使用Android Studio和gradle时是否可以在项目之间共享库项目?

2024-04-15

我正在努力弄清楚如何将库项目导入到 Android Studio 中,以使其可用于多个项目。新构建系统的文档意味着您需要将库项目导入到您正在处理的项目的根目录中:

Gradle 项目还可以通过使用多项目设置来依赖于其他 gradle 项目。多项目设置通常通过将所有项目作为给定根项目的子文件夹来工作 (http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Multi-project-setup http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Multi-project-setup)

这是有问题的,因为正如我上面提到的,我希望所有当前和未来的项目都可以访问常用的库。例如,我目前正在尝试将 Volley 集成到一个新项目中来对其进行评估,并假设我将来希望在多个其他项目中使用它。我将其克隆到我的“${PROJECT_ROOT}/”文件夹,该文件夹与我创建测试项目的级别相同,给我:

${PROJECT_ROOT}/TestProject/测试
${PROJECT_ROOT}/齐射

在尝试以各种方式设置项目的 build.gradle 文件后,我成功编译应用程序的唯一方法是将 Volley 移至 TestProject“主”项目中,这给了我:

${PROJECT_ROOT}/TestProject/测试
${PROJECT_ROOT}/TestProject/volley

这不仅阻止我在不属于 TestProject 的其他项目中使用 Volley,而无需再次复制或克隆它,而且这意味着 git 希望我将其添加到我在根目录下建立的存储库中。测试项目。

如何在 Android Studio 项目中引用库项目而不将它们包含在项目本身中?


你不能将 git 与子模块一起使用吗?例如在您的 .gitmodules 文件中,您可以添加以下内容:

[submodule "volley"]
path = volley
url = https://path/to/volley/repository 

您可以将 url 设置为 Volley 的官方存储库,或者您自己的 volley 内部版本。其他项目可以以相同的方式设置并指向相同的 volley 存储库。

我想这样其他用户就可以调用git clone所有依赖项目都将在主项目文件夹中下载,而不必担心单独下载库项目。

但对于 Volley,我只需将其编译成 JAR 文件并将其粘贴到主项目的 /libs 文件夹中。也就是说,如果您不需要修改其来源。

[更新] 对于不需要修改源码的库项目,可以尝试使用Android Studio将其编译成AAR文件进行共享。 AAR 文件就像 Android 中的 JAR 文件,因此您可以将它们添加到 /lib 源文件夹,或将它们发布到本地/内网 maven 存储库。如果您选择maven路线,请在build.gradle中添加您的本地/内网存储库,并引用您已发布的库项目。

希望将来更多的库项目所有者将他们的项目构建成 AAR 文件并将它们发布到 Maven 中央存储库,这样我们就可以直接从 build.gradle 文件引用它们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Android Studio和gradle时是否可以在项目之间共享库项目? 的相关文章

随机推荐

  • ModuleNotFoundError:没有名为“win10toast”的模块; bs4.FeatureNotFound:找不到具有您请求的功能的树构建器:lxml

    我已经使用 pip 命令安装了它们 它显示它已安装但无法工作 我还更新了 pip 的版本 但它仍然显示更新 pip 的命令 C Users DELL gt pip install win10toast Requirement already
  • 加速用于 FDR 估计的 MATLAB 代码

    我有 2 个输入变量 p 值向量 p with N元素 未排序 and N x M具有通过随机排列获得的 p 值的矩阵 pr with M迭代 N相当大 10K到100K甚至更多 M假设是 100 我正在估计每个元素的错误发现率 FDR p
  • 使用 JSP 的 Request.getParameter

    我正在尝试根据请求参数自动填充下拉列表 我对 JSP 还很陌生 所以请原谅我问这个简单的问题 以下工作正常并正确显示警报 alert 所以我知道我想做的事情很简单 但是当我使用以下命令将相同的逻辑添加到我的 select 语句中时
  • 添加到 hashmap 需要很长时间

    我在我的java程序中坚持了几行 这花费了太多时间 大约20秒 而且对我来说这似乎很奇怪 这是线条 Map
  • 从随机字符串中查找单词列表中的单词

    我正在开发一个解读类型的程序 用户可以输入随机字母 程序会迭代这些字母和单词列表 以尝试找到包含单词列表中的这些部分或全部随机字母的单词 例如 if Input sasdfle words found in wordlist sad fle
  • 实体框架首先选择不带 .ToList() 的新 POCO

    我正在创建一个具有服务层 WCF 网站 和 Silverlight 4 客户端的应用程序 RIA 服务不是一种选择 因此我们创建中间类来来回传递 为了这个问题的目的 我们假设我来回传递美味Food对象 public class FoodDa
  • 使用knockout js实现html5拖放照片,durandal 2.0

    我在淘汰赛 js 视图模型中有一个照片列表 我希望能够在它们之间交换 实际上更正确的术语是将一张复制到另一张上面 这是我的简化视图模型 define durandal app knockout jquery function app ko
  • jQuery UI 日期选择器导致屏幕在选择日期后滚动到顶部

    我在 jQuery 对话框中有几个 jQuery 日期选择器 每当用户从日期选择器中选择日期时 屏幕就会滚动到顶部 这种情况只发生在 IE8 中 而不会发生在 Firefox 3 6 或 Chrome 5 中 由于大多数用户都会使用 IE
  • 如何在 CloudKit 中撤销用户的可发现性权限?

    我很好奇用户是否可以以某种方式更改可发现性权限 我在设置里没找到方法 您可以在您的设备上进行设置Settings iCloud iCloud Drive Find via Email
  • jenkins 擦除存储库并强制克隆与结帐前清理

    我试图了解用于拉取 git 存储库的 擦除存储库并强制克隆 和 签出前清理 这两个选项之间的区别 查看这两个选项的帮助部分 两者似乎都有相似的功能 我无法找出区别 它们的外观如下 清除存储库并强制克隆 在构建之前删除工作区的内容 确保工作区
  • 使用node.js os.cpus()来检测用户空闲时间?

    我正在使用 appjs 开发一个聊天应用程序 该应用程序使用 node js 作为平台 我一直在检测计算机何时处于空闲状态 当用户离开它或不使用它时 Node js 中有 os 模块及其os cpus 为每个核心提供此类信息 model I
  • 如何在不更改原始列表的情况下更改新列表?

    我有一个列表 其中填充了操作中的一些数据 并将其存储在内存缓存中 现在我想要另一个列表 其中包含基于某些条件的列表中的一些子数据 正如下面的代码所示 我正在对目标列表进行一些操作 问题是我对目标列表所做的任何更改也会对 mainList 进
  • 如何防止用户在文本框中输入特殊字符[重复]

    这个问题在这里已经有答案了 我需要验证文本框中的密码条目 我有一些要求需要满足 以便允许创建用户配置文件 其中之一是如果密码包含除数字和字母以外的任何其他内容 则拒绝注册系统需要拒绝进入 我尝试的一切似乎都失败了 这就是我现在站的地方 pr
  • 编译 eigen 程序时出错:错误:'seq' 不是 'Eigen' 的成员

    我试图在遵循算术序列的索引中索引矩阵 根据官网的Eigen教程 我应该使用Eigen seq firstVal lastVal step 来生成这个序列 调用此函数后 会弹出该线程标题中粘贴的错误 我检查了本地 eigen 文件夹中的所有文
  • 如何在 python-docx 中获取单元格背景颜色?

    我正在尝试使用 python docx 从 MS Word 表中读取数据 有一种方法可以设置表格单元格的背景颜色 tcPr cell tc get or add tcPr shd OxmlElement w shd shd set qn w
  • 扩展 ASP.NET 应用程序

    这是一个非常广泛的问题 但希望我能得到有用的提示 目前我有一个在单个服务器上运行的 ASP NET 应用程序 我现在需要进行扩展以适应不断增加的客户负载 所以我的计划是 1 将 ASP NET 和 Web 组件扩展到五台服务器上 2 将数据
  • 用scrapy一一爬取网站列表

    我正在尝试抓取网站列表scrapy 我尝试将网站网址列表作为start urls 但后来我发现我买不起那么多内存 有什么办法可以设置scrapy一次抓取一两个网站 您可以尝试使用concurrent requests 1以免数据超载 htt
  • 如何在java服务器端解密cryptojs AES加密消息?

    我有以下基于 cryptojs 的 javascript 加密 解密函数 它工作得很好 我在使用 cryptpjs 加密消息时使用随机盐 随机 iv 值和特定密码 我在解密加密消息时重复使用相同的盐 iv 和密码来生成密钥 这部分效果很好
  • 如何在odoo 10中添加、更新和删除Many2many字段记录?

    我正在向导中设置功能 该功能将执行以下操作 添加新记录并链接到当前现有记录Many2many Field 更新现有记录Many2many Field 删除当前已有的Many2many场地 向导模型和实际模型有两个Many2many fiel
  • 使用Android Studio和gradle时是否可以在项目之间共享库项目?

    我正在努力弄清楚如何将库项目导入到 Android Studio 中 以使其可用于多个项目 新构建系统的文档意味着您需要将库项目导入到您正在处理的项目的根目录中 Gradle 项目还可以通过使用多项目设置来依赖于其他 gradle 项目 多