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