我 fork 了一个项目并导入了它,但我无法使用它
I forked a project and imported it, but I cannot use it
我是 GitHub 的新手,所以也许这很明显,但我遵循了许多网站的所有步骤(当然还有 SO 问题),但它不起作用。
我要换this GitHub project. (Which is actually a fork of this一个)
通过 Gradle 导入 GitHub 项目并使用它就像一个魅力。因此,因为我需要做一些小改动,所以我遵循了以下步骤:
- 我分叉了
- 我根据需要更改了代码
- 我做了一个新版本(3.1.1):this 是我的叉子
然后:
- 我将
maven { url "https://www.jitpack.io" }
添加到我的根 gradle
- 我在应用程序中导入了叉子 gradle:
implementation 'com.github.tabkus:odomacrop:3.1.1'
- 我同步了gradle
- 导入我的叉子似乎工作正常,因为它没有显示错误并且下载了大量数据
但是:我无法使用代码。我无法导入 classes。在这种情况下,我需要例如代码中的 class UCrop
UCrop.of(...)
.withMaxResultSize(1080, 1080)
.start(activity);
但是我无法导入它。我无法导入任何 class。我还在 Android Studio 中尝试了 Invalidate caches and restart
,但这也没有帮助...
它只是说:Cannot resolve symbol 'UCrop'
编辑:
我按照答案解决了一个错误。但它仍然没有用。所以我在 jitpack.io 上检查了它。现在的错误是 Execution failed for task ':ucrop:signReleasePublication'. > Could not read PGP secret key
。我在网上查了一下,但找不到解决办法。我假设某些 Gradle 设置应包含一些签名密钥,而我的缺少这样的密钥。但由于它是一个叉子,我的 Gradle 文件是完全相同的文件。 (我只对一些 java.classes 做了小改动)jitpack.io/com/github/tabkus/odomacrop/2.2.7-2/build.log
假设您看到错误消息:
Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
Could not find com.github.yalantis:ucrop:2.2.6.
Searched in the following locations:
- https://dl.google.com/dl/android/maven2/com/github/yalantis/ucrop/2.2.6/ucrop-2.2.6.pom
- https://repo.maven.apache.org/maven2/com/github/yalantis/ucrop/2.2.6/ucrop-2.2.6.pom
- https://jcenter.bintray.com/com/github/yalantis/ucrop/2.2.6/ucrop-2.2.6.pom
Required by:
project :app
首先检查这是否类似于 Yalantis/uCrop
issue 779 - Yalantis/uCrop
是原始项目)
you just move:
maven { url "https://jitpack.io" }
from
build.gradle (Project)
to
settings.gradle
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
jcenter()
maven { url "https://maven.google.com" }
maven { url "https://jitpack.io" }
}
}
rootProject.name = "<Project Name>"
include ':app'
嗯...
- 不要相信Android Studio 同步,它有时不会为您弹出错误
- 使用 Gradle CLI 直接 运行 一个简单的“assmeble”任务,例如 Android 项目的
./gradlew clean assembleDebug
。(添加 -s
以显示更多堆栈跟踪(如有必要)
- 在我的例子中,上面的命令在下面抛出错误:
> Task :app:mergeDebugResources FAILED
FAILURE: Build failed with an exception.
- What went wrong:
Execution failed for task ':app:mergeDebugResources'.
Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
Could not find com.github.tabkus:odomacrop:3.1.1.
Searched in the following locations:
- https://dl.google.com/dl/android/maven2/com/github/tabkus/odomacrop/3.1.1/odomacrop-3.1.1.pom
- https://repo.maven.apache.org/maven2/com/github/tabkus/odomacrop/3.1.1/odomacrop-3.1.1.pom
- https://www.jitpack.io/com/github/tabkus/odomacrop/3.1.1/odomacrop-3.1.1.pom
Required by:
project :app
- 现在问题很明显了:你的 JitPack 版本绝对有问题。所以我去 https://jitpack.io/#tabkus/odomacrop 查看状态:
- 单击日志图标,您将看到根本原因:
我是 GitHub 的新手,所以也许这很明显,但我遵循了许多网站的所有步骤(当然还有 SO 问题),但它不起作用。
我要换this GitHub project. (Which is actually a fork of this一个)
通过 Gradle 导入 GitHub 项目并使用它就像一个魅力。因此,因为我需要做一些小改动,所以我遵循了以下步骤:
- 我分叉了
- 我根据需要更改了代码
- 我做了一个新版本(3.1.1):this 是我的叉子
然后:
- 我将
maven { url "https://www.jitpack.io" }
添加到我的根 gradle - 我在应用程序中导入了叉子 gradle:
implementation 'com.github.tabkus:odomacrop:3.1.1'
- 我同步了gradle
- 导入我的叉子似乎工作正常,因为它没有显示错误并且下载了大量数据
但是:我无法使用代码。我无法导入 classes。在这种情况下,我需要例如代码中的 class UCrop
UCrop.of(...)
.withMaxResultSize(1080, 1080)
.start(activity);
但是我无法导入它。我无法导入任何 class。我还在 Android Studio 中尝试了 Invalidate caches and restart
,但这也没有帮助...
它只是说:Cannot resolve symbol 'UCrop'
编辑:
我按照答案解决了一个错误。但它仍然没有用。所以我在 jitpack.io 上检查了它。现在的错误是 Execution failed for task ':ucrop:signReleasePublication'. > Could not read PGP secret key
。我在网上查了一下,但找不到解决办法。我假设某些 Gradle 设置应包含一些签名密钥,而我的缺少这样的密钥。但由于它是一个叉子,我的 Gradle 文件是完全相同的文件。 (我只对一些 java.classes 做了小改动)jitpack.io/com/github/tabkus/odomacrop/2.2.7-2/build.log
假设您看到错误消息:
Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
Could not find com.github.yalantis:ucrop:2.2.6.
Searched in the following locations:
- https://dl.google.com/dl/android/maven2/com/github/yalantis/ucrop/2.2.6/ucrop-2.2.6.pom
- https://repo.maven.apache.org/maven2/com/github/yalantis/ucrop/2.2.6/ucrop-2.2.6.pom
- https://jcenter.bintray.com/com/github/yalantis/ucrop/2.2.6/ucrop-2.2.6.pom
Required by:
project :app
首先检查这是否类似于 Yalantis/uCrop
issue 779 - Yalantis/uCrop
是原始项目)
you just move:
maven { url "https://jitpack.io" }
frombuild.gradle (Project)
tosettings.gradle
dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() jcenter() maven { url "https://maven.google.com" } maven { url "https://jitpack.io" } } } rootProject.name = "<Project Name>" include ':app'
嗯...
- 不要相信Android Studio 同步,它有时不会为您弹出错误
- 使用 Gradle CLI 直接 运行 一个简单的“assmeble”任务,例如 Android 项目的
./gradlew clean assembleDebug
。(添加-s
以显示更多堆栈跟踪(如有必要) - 在我的例子中,上面的命令在下面抛出错误:
> Task :app:mergeDebugResources FAILED
FAILURE: Build failed with an exception.
- What went wrong: Execution failed for task ':app:mergeDebugResources'. Could not resolve all files for configuration ':app:debugRuntimeClasspath'. Could not find com.github.tabkus:odomacrop:3.1.1. Searched in the following locations: - https://dl.google.com/dl/android/maven2/com/github/tabkus/odomacrop/3.1.1/odomacrop-3.1.1.pom - https://repo.maven.apache.org/maven2/com/github/tabkus/odomacrop/3.1.1/odomacrop-3.1.1.pom - https://www.jitpack.io/com/github/tabkus/odomacrop/3.1.1/odomacrop-3.1.1.pom Required by: project :app
- 现在问题很明显了:你的 JitPack 版本绝对有问题。所以我去 https://jitpack.io/#tabkus/odomacrop 查看状态:
- 单击日志图标,您将看到根本原因: