【问题标题】:JitPack won't use a GitHub repo - included sample repo that demonstrates the issueJitPack 不会使用 GitHub 存储库 - 包含演示该问题的示例存储库
【发布时间】:2017-12-04 02:47:04
【问题描述】:

每次我尝试 fork 一个 Android 库并通过 JitPack 使用它时,我都会遇到错误,放弃并选择其他方式来自定义和使用该库。这次我想深入了解并创建一个隔离问题的基本应用程序。你能下载下面的 repo 并告诉我我做错了什么吗?

在这个 repo 中有一个非常基本的 Android 应用程序:https://github.com/gazialankus/JitpackNotWorking。我只是在 Android Studio 中创建了一个新的 Android 应用程序,并按照 https://jitpack.io/ 中的说明将 https://github.com/ArthurHub/Android-Image-Cropper github 存储库添加为依赖项。我在根build.gradle 中添加了JitPack Maven 存储库,并在应用程序build.gradle 中添加了库依赖项,如下所示:

compile 'com.github.ArthurHub:android-image-cropper:2.4.5'

Gradle 同步正常,但 android-image-cropper-2.4.5 未显示在项目视图的外部库下。因此,应用程序不会生成此错误:

Error:(6, 38) error: package com.theartofdev.edmodo.cropper does not exist

正如我在应用程序 build.gradle 中的 cmets 中指出的那样,使用没有 JitPack 的库就可以了:

compile 'com.theartofdev.edmodo:android-image-cropper:2.4.5'

我想也许 JitPack 无法构建这个 repo。但是,JitPack log for this repository 说“好的”。

Gradle 和 Java 版本:在 Android Studio 菜单文件 > 项目结构 > 项目中,Gradle 版本为 3.3,Android 插件版本为 2.3.3。在同一个对话框中,SDK Location 选项卡显示嵌入式 JDK 正在从 C:\Program Files\Android\Android Studio\jre 使用。

> "C:\Program Files\Android\Android Studio\jre\bin\java.exe" -version 
openjdk version "1.8.0_112-release"
OpenJDK Runtime Environment (build 1.8.0_112-release-b06)
OpenJDK 64-Bit Server VM (build 25.112-b06, mixed mode)

Android Studio 中没有待处理的更新。

您能否下载并构建此存储库以隔离问题并告诉我我做错了什么?同样,演示问题的存储库在这里:https://github.com/gazialankus/JitpackNotWorking

谢谢。

编辑:尝试使用我的 fork 并尝试使库对 JitPack 更友好,但仍然是同样的问题。请参阅 repo 中的提交。

已解决:请参阅https://github.com/gazialankus/JitpackNotWorking/blob/master/README.md 了解更多详情。

【问题讨论】:

  • 我正在检查。
  • 你的java版本是多少?
  • 我添加了有关 Java 版本的信息。是Android Studio中嵌入的JDK,即openjdk版本“1.8.0_112-release”。
  • 我可以确认它没有下载依赖项,也没有显示任何错误消息。我检查了来自 jitpack 的其他依赖项,这些依赖项已经包含在我的项目中,并且它的主题是只有这个没有被下载。我认为您需要联系 Jitpack.io,因为它看起来不是您独有的问题。
  • 也许你忘记从最新的提交中创建一个标签。 jitpack.io 使用 release 标签作为库。

标签: android android-studio gradle jitpack


【解决方案1】:

我认为问题出在组和版本上。

build log 中,您可以看到Gradle 调用中包含-Pgroup=com.github.ArthurHub-Pversion=2.4.5。但在日志中,您也会看到 Found artifact: com.theartofdev.edmodo:android-image-cropper:2.4.5-SNAPSHOT 实际上应该是 Found artifact: com.github.ArthurHub:android-image-cropper:2.4.5

您还可以在日志底部的文件列表中看到,仅生成 POM,没有 jar 或 aar。这也是为什么 Gradle 同步在 AS 中成功的原因,因为找到了依赖项 pom 并且有效,所以该依赖项没有工件。

如果你查看你所指项目的build.gradle,你可以看到他们没有使用groupversion来配置发布,所以JitPack设置的内容没有被使用,因此不能找到了。

该项目根本不兼容 JitPack,只要 JitPack 没有变得更智能,并且不只是设置一些项目变量,而是添加一些重新配置出版物的初始化脚本或类似的东西。

也许您应该改用复合构建。使用复合构建,您可以声明像com.theartofdev.edmodo:android-image-cropper:2.4.5 这样的二进制依赖项,然后用项目的工作树替换此依赖项,然后自动完成子构建以获取依赖项的工件。这是用自定义构建替换依赖项的纯 Gradle 方式。

【讨论】:

  • 每次我尝试 fork 一个 Android 库并通过 JitPack 使用它时,我都会遇到错误,放弃并选择其他方式来自定义和使用该库。:它意味着许多库不兼容 JitPack,而 Gazi Alankus 只是运气不佳?
  • 我猜是这样,但我这里只能讲这个例子。
  • 我不是 100% 确定,但回顾以前的项目,我认为这是另外两次无法类似使用 JitPack 并最终将库代码添加到我的项目中:github.com/Nexmo/verify-android-sdkgithub.com/rameshvoltella/RWeekCalendar(无论如何,后者可能是一个坏例子)。所以现在我将尝试根据 Vampire 的建议制作一个与 JitPack 兼容的图像裁剪器的分支。非常感谢!
  • Nexmo/verify-android-sdk 的第 2 版和第 3 版都没有构建在 JitPack 中,正如您在其 log 中看到的那样。 rameshvoltella/RWeekCalendar 的三个快照构建看起来应该已经工作并且可以使用了。
  • 已解决。谢谢吸血鬼!我在这里记录了解决方案:github.com/gazialankus/JitpackNotWorking/blob/master/README.md 你写的所有问题都是正确的! (除了我不需要对版本做任何事情。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-24
  • 1970-01-01
  • 2017-11-19
  • 1970-01-01
  • 2011-08-09
  • 1970-01-01
  • 2013-03-22
相关资源
最近更新 更多