在Android Gradle构建中依赖于一个在GitHub上派生的项目

12
我已将第三方自定义ListView库引入我的Android Gradle项目中。我最初从jcenter仓库将该项目添加为gradle库依赖项。但现在,我复制了GitHub项目,并对其进行更改。
原始项目已不再维护,因此提交拉取请求不起作用,我确实需要自己的分支。
使用Gradle设置此依赖关系的好方法是什么?
我考虑将ListView库放在与我的项目相同的GitHub repo下,但这似乎很混乱,我确实想将我的分支保持为单独的库。
我考虑的另一件事是将它们同时检查出来,并在我的应用程序中使用“..”来获取库。这意味着如果有协作者(我可能很快就会有),他们需要调整配置以适合自己或以与我相同的方式检查所有内容。
或者,我可以发布到像mavenCentral或jcenter这样的仓库,但我仍在研发中,所以那听起来也不好。
还有什么更清洁的选项我错过了吗?

2
其他解决方案包括将其发布到您自己的(可能是私有的)Bintray存储库、使用Git子模块,或者使用像Prezi的Pride这样的解决方案。 - Peter Niederwieser
2个回答

14

一个简单的解决方案是使用JitPack发布您的库。您只需创建一个GitHub发布版本并在存储库中添加构建文件即可。

JitPack是一个从GitHub存储库中拉取软件包的Maven存储库。它会检出您的代码并构建它。


1
这确实是最简单的解决方案,而且你根本不需要发布。你可以直接使用主分支上的快照构建:标签为master-SNAPSHOT。 但是发布是更干净的做法。 - Hatzen

4

另一个选择是Gradle源依赖。基本上,您声明对Git存储库的依赖:

sourceControl {
    gitRepository("https://github.com/gradle/native-samples-cpp-library.git") {
        producesModule("org.gradle.cpp-samples:utilities")
    }
}

然后Gradle会克隆并构建该项目。然后您可以将其添加为依赖项:

dependencies {
    implementation('org.gradle.cpp-samples:utilities') {
        version {
            branch = 'release'
        }
    }
}

1
很遗憾,就在我写这篇文章的时候,Android Studio 3.4.1仍然不支持gradle构建文件中的sourceControl:模块在代码中显示为“红色”,并且“gradle sync”失败。如果我通过命令行进行构建,使用./gradlew build一切都能正常工作。 - gabry
@gabry,这是否已经支持了 AS 3.5.2 和 Gradle 6.0? - Den Drobiazko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接