Android studio在磁盘上添加外部maven项目作为依赖

时间:2018-02-26 15:42:40

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

我遇到了类似的问题 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。

1 个答案:

答案 0 :(得分:0)

以下是我解决问题的方法。

步骤1.克隆项目(在我的情况下是XChange fork)作为主app文件夹的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')
...

此外,此媒体帖子非常有用Link