渐变绝对/相对路径

2022-09-03 12:24:26

我有以下问题。当我想在我的Gradle依赖项中使用本地jar时。

如果我只是添加:

compile files('libs/PushLinkAndroid-5.3.0.jar')

它不起作用。

C:\Users\Kai\AndroidStudioProjects\ProjectA\app\src\main\java\de\xyz\xxx\projecta\BaseActivity.java:21: error: package com.pushlink.android 不存在 import com.pushlink.android.pushLink;

注意:某些输入文件使用或覆盖已弃用的 API。注意:有关详细信息,请使用 -Xlint:deprecation 重新编译。4 个错误

失败

失败:生成失败,出现异常。

  • 出了什么问题:任务“:app:compileDebugJava”的执行失败。

    编译失败;有关详细信息,请参阅编译器错误输出。

  • 尝试:使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 >--debug 选项运行以获取更多日志输出。

构建失败

总时间:6.543 秒

如果我将绝对路径添加到Jar中,项目将编译并且一切正常:

compile files('C:/Users/Kai/AndroidStudioProjects/ProjectA/libs/PushLinkAndroid-5.3.0.jar')

看起来路径有问题,但是当绝对路径工作正常时,这怎么可能呢?

编辑:Build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "de.xyz.kai.migraenebook"
        minSdkVersion 16
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    //compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile 'com.jakewharton:butterknife:7.0.1'
    compile project(':volley')
    debugCompile 'im.dino:dbinspector:3.2.1@aar'
    compile 'de.hdodenhof:circleimageview:1.3.0'
    compile 'com.android.support:recyclerview-v7:+'
    //compile files('C:/Users/Kai/AndroidStudioProjects/MigraeneBook/libs/PushLinkAndroid-5.3.0.jar')
    compile files('libs/PushLinkAndroid-5.3.0.jar')
    //compile files('libraries/PushLinkAndroid-5.3.0.jar')
    //compile files('C:/Users/Kai/AndroidStudioProjects/MigraeneBook/libraries/PushLinkAndroid-5.3.0.jar')
}

注意:我尝试了不同的文件夹,PushLink.jar在“libs”和“libraries”中。我使用或注释掉哪个命令没有区别 - 绝对路径正在工作,相对不工作。


答案 1

试试这个,它将包括本地存储库中的所有JAR,所以你不必每次都指定它:

dependencies {
   compile fileTree(dir: 'libs', include: ['*.jar'])
}

另外,您应该知道,在通过以下方式引用文件时

files("relative/path/to/a.jar")

path 是相对于此代码段所在的构建脚本计算的。因此,当您的文件位于 中时,jar 应位于 中。在多项目 gradle 构建中,您可以将 jar 放在相对于根项目的文件夹中,并通过以下方式在所有子项目中引用它build.gradle/a/project/build.gradle/a/project/relative/path/to/a.jar

rootProject.files("relative/to/root/a.jar")

因此,请考虑到这一点,并重新检查您的gradle设置是否正确。


答案 2

如果调用 URL 方案路径,则可以使用以下示例:

def path = "file://${projectDir}/ojdbc6.jar"

推荐