每当我尝试分叉Android库并通过JitPack使用它时,我会收到错误,放弃并选择其他方法来自定义和使用库。这次我想深入了解并创建了一个隔离问题的基本应用程序。你能下载下面的回购并告诉我我做错了吗?
此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无法建立这个回购。但是,JitPack log for this repository表示“确定”。
Gradle和Java版本:在Android Studio菜单文件>项目结构> Project,Gradle版本为3.3,Android插件版本为2.3.3。在同一个对话框中,SDK Location选项卡显示正在使用C:\ Program Files \ Android \ Android Studio \ jre中嵌入的JDK。
> "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
谢谢。
编辑:尝试用我的叉子试图让图书馆更加友好JitPack,仍然是同样的问题。请参阅回购中的提交。
已解决:有关详细信息,请参阅https://github.com/gazialankus/JitpackNotWorking/blob/master/README.md。
答案 0 :(得分:2)
我认为问题在于群组和版本。
在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,可以看到它们不使用group
和version
来配置发布,因此不使用JitPack设置的内容因此无法找到。
只要JitPack没有变得更加智能化,该项目就不是JitPack兼容的,而不仅仅是设置一些项目变量,而是添加一些重新配置出版物或类似内容的初始化脚本。
也许您应该使用复合构建。使用复合构建,您将声明二进制依赖项,如com.theartofdev.edmodo:android-image-cropper:2.4.5
,但随后通过项目的工作树替换此依赖项,并自动完成子构建以获取依赖项的工件。这是使用自定义构建版本替换依赖项的纯Gradle方法。