[英]How does a gradle dependency find a package?
我的gradle文件中有这个用于android studio应用程序...
apply plugin: 'com.android.application'
def ftcLibLocation = "../../../android/ftc_lib/ftc_app/FtcRobotController/libs"
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "teamXXXX.testbot"
minSdkVersion 19
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile 'com.android.support:appcompat-v7:22.1.1'
compile files('${ftcLibLocation}/FtcRobotController-debug.jar')
compile files('${ftcLibLocation}/FtcCommon-release.jar')
compile files('${ftcLibLocation}/ModernRobotics-release.jar')
compile files('${ftcLibLocation}/RobotCore-release.jar')
compile files('${ftcLibLocation}/WirelessP2p-release.jar')
compile files('${ftcLibLocation}/Analytics-release.jar')
compile files('${ftcLibLocation}/d2xx.jar')
}
但是,当我编译程序gradle / android studio时,它抱怨找不到我所知道的位于这些jar中的程序包。
Error:(3, 47) error: package com.qualcomm.robotcore.eventloop.opmode does not exist
该软件包位于$ {ftcLibLocation} /RobotCore-release.jar中,为什么构建找不到它?
创建一个libs
文件夹(与src
目录相邻),并将所有jar文件包含在该目录中。
然后在您的build.gradle
文件中,使用以下命令:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
您不必分别编译每个依赖项。
发生这种情况有多种原因。 可能最有用的启动工具是gradle dependencies
命令。 它会告诉您有关您的依赖项的信息,这可能会让您感到惊讶。 有关此的更多信息:
ftcLibLocation
在gradle运行的环境中未正确设置。 通常gradle将在构建期间显示完整路径,或者您可以显示或记录它: https://discuss.gradle.org/t/accessing-the-buildscript-classpath/5297
jar文件已更改,但是gradle缓存不知道这一点。 有时我会遇到这个问题,我必须去:
{userhome}\\.gradle\\.caches
并且在其中您会发现很多文件夹,这些文件夹已经缓存了对库的引用。 这些库通常是远程的,但是我看到了本地库被缓存的问题。 您可以删除此目录-或查找有问题的部件。 删除将导致您的所有依赖项再次下载,可能需要一段时间。
另一个潜在的问题是Android Studio和gradle。 有时,插件无法正确更新。 重新启动Android Studio,然后重试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.