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

问题描述 投票:0回答:1

我有一个类似于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.internal.artifacts的对象上找到参数[{group = com.github.mmazi,name = rescu,version = 2.0.1}]的方法compile() .dsl.dependencies.DefaultDependencyHandler。

android maven android-studio gradle intellij-idea
1个回答
0
投票

这是我如何解决我的问题。

步骤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')
...

此外,这个中等职位是非常有用的Link

© www.soinside.com 2019 - 2024. All rights reserved.