【问题标题】:Android studio add external maven project on disk as dependancyAndroid Studio 在磁盘上添加外部 maven 项目作为依赖项
【发布时间】:2018-08-06 02:51:13
【问题描述】:

我遇到了与本文所述类似的问题 Question

所以我有一个 android 项目,它依赖于这个流行的库 XChange。由于 XChange 对 android 不是很友好(使用 JDK 8 流等并且 Android 不完全支持它们(Link)并且我对库有一些其他自定义要求,所以我决定分叉该项目。

所以目前我正在使用 IntteliJ Idea 开发 XChange maven 项目,提交更改并使用 Jitpack.io 将新提交包含为对 Android Studio 的依赖项。这可行,但非常耗时。

所以我已经尝试或尝试了以下方法来克服这个问题。

1) 将 Maven 项目转换为 gradle 并使用 Android Studio 导入功能 - 这会复制源代码,因此 git 支持下降,我无法从 XChange 的主要来源中提取更改

2) 转换为 gradle 项目并尝试通过 settings.gradle 将其包含在内,并将其作为依赖项包含在开始时接受的引用问题的答案中。不幸的是,这不起作用,因为 XChange 有很多子项目并且子项目依赖项导入失败。

include ':xchange-core'
include ':xchange-kraken'
project(':xchange-core').projectDir = new File(settingsDir, '../XChange/xchange-core')
project(':xchange-kraken').projectDir = new File(settingsDir, '../XChange/xchange-kraken')

3) 以某种方式使用 MavenLocal,但我不知道如何让它工作(使用 IntelliJ 想法)

XChange 有以下设置

\XChange (has its own pom.xml with settings for all subprojects)
   + xchange-core (main dependency for all subprojects)
   + xchange-kraken
   + xchange-binance
   + ...

总而言之,当我需要将我自己的从磁盘的依赖分支包含到 Android Studio 时,是否有人可以节省一些时间来构建项目?

编辑

示例问题

Settings.gradle

include ':app'
include ':xchange-core'

project(':xchange-core').projectDir = new File(settingsDir, "../XChange/xchange-core/")

Build.gradle ... 编译项目(':xchange-core')

错误

错误:(4, 0) 无法在 org.gradle.api 类型的对象上找到参数 [{group=com.github.mmazi, name=rescu, version=2.0.1}] 的方法 compile()。 internal.artifacts.dsl.dependencies.DefaultDependencyHandler。

【问题讨论】:

    标签: android maven android-studio gradle intellij-idea


    【解决方案1】:

    这是我解决问题的方法。

    步骤 1. 将项目(在我的例子中是 XChange fork)作为 git 子模块克隆到您的主应用程序文件夹,这样您就可以保持版本控制

    git submodule add 'YOUR_GIT_REPOSITORY'
    

    步骤 1.5。如果你有一个 maven 库项目,那么从你的库文件夹中的终端运行 gradle init。这会将您的 Maven 项目转换为 gradle 一。 Android Studio 所必需的。

    第 2 步。如果您有任何顶级 build.gradle 或 settings.gradle,那就别管这些了。绝对不是一个完美的解决方案,但我让它工作的唯一方法。在您的主应用程序 settings.gradle 中,您必须像这样定义每个子模块

    include ':app'
    include ':xchange-core'
    ...
    
    project(':xchange-core').projectDir = new File(settingsDir, "../XChange/xchange-core/")
    ...
    

    如果您的库项目中有顶级 build.gradle,则将您可以在应用程序顶部 build.gradle 文件中的所有内容以及我复制到库子模块 build.gradle 文件中的所有其他内容(是的,每个一)

    第 3 步。在您的应用程序 build.gradle 文件中,现在您可以将库子模块包含为

    ...
    implementation project(':xchange-core')
    ...
    

    另外,这篇 Medium 帖子非常有用 Link

    【讨论】:

      猜你喜欢
      • 2016-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-11
      • 1970-01-01
      • 2018-01-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多