2015-06-26 2 views
0

у меня есть это в моем Gradle файл для андроид приложения студии ... `Как зависимость от градиента находит пакет?

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/андроида студия жалуется, что не может найти пакеты, которые я знаю, расположенные в эти банки.

Error:(3, 47) error: package com.qualcomm.robotcore.eventloop.opmode does not exist 

Этот пакет находится в $ {} ftcLibLocation /RobotCore-release.jar почему не строить его размещения?

+0

См., Если применяется [этот ответ] (http://stackoverflow.com/a/16841156/2055998). –

ответ

1

Создайте папку libs (рядом с каталогом src) и включите все ваши банки в этом каталоге.

Затем в файле build.gradle, используйте:

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

Вам не нужно компилировать каждую зависимость по отдельности.

+0

Но все дело в том, что все эти банки живут в другом git-репо, и я не хочу, чтобы их принудительно копировали в каталог libs искусственным образом. Я хочу иметь несколько различных проектов, которые все ссылаются на один и тот же набор банок. Разве это не слишком ограничительно, если я вынужден скопировать все банки в каталог libs в каждом проекте? – skatefriday

0

Существует несколько причин, по которым это может произойти. Вероятно, самым полезным инструментом для запуска является команда gradle dependencies. Он расскажет вам о ваших зависимостях, которые могут вас удивить. Подробнее об этом здесь:

What is the Gradle artifact dependency graph command?

  1. Ваша переменная путь ftcLibLocation не установлен должным образом в среде, в которой Gradle работает. Обычно Gradle будет отображаться полным путем во время сборки или вы можете отобразить или зарегистрировать ее:

https://discuss.gradle.org/t/accessing-the-buildscript-classpath/5297

  1. Файл банка был изменен, но Gradle кэш не знает, что. Я бегу в это иногда и я должен пойти:

    {userhome}\.gradle\.caches

    и там вы найдете много папок, которые кэшируются ссылки на библиотеки. Эти библиотеки обычно удалены, но у I есть проблемы с кэшированием локальных библиотек. Вы можете удалить этот каталог - или найти деталь, в которой есть проблема. Удаление будет заставляет все ваши зависимости загружаться снова и может занять некоторое время.

  2. Другой потенциальной проблемой является Android Studio и gradle. Иногда плагин не обновляется должным образом. Перезагрузите Android Studio и повторите попытку.

Смежные вопросы