4

每次我尝试 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 repo 添加为依赖项。我在根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的评论中指出的那样,使用没有 JitPack 的库就可以了:

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

我想也许 JitPack 无法构建这个 repo。但是,此存储库的 JitPack 日志显示“ok”。

Gradle 和 Java 版本:在 Android Studio 菜单 File > Project Structure > Project 中,Gradle 版本为 3.3,Android Plugin 版本为 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

4

1 回答 1

2

我认为问题在于组和版本。

构建日志中,您可以看到在 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 方式。

于 2017-06-30T09:23:52.917 回答