Можно ли как-то указать путь на внешнюю библиотеку, которую я хочу использовать в проекте?

95
11 апреля 2021, 13:40

Есть возможность добавить зависимость или библиотеку в структуру проекта указавши к ней путь или добавить как модуль.

Но, что если я хочу просто указать путь к библиотеке которую я хочу использовать как путь... Так же как указан путь к ndk или sdk ведь эти папки не лежат в самом проекте, но мы их используем.

Таким образом я могу сослаться из нескольких проектов на одину и туже папку...

Я не хочу копировать файлы к себе в проект я хочу только ссылаться на какое то место на PC. Чтоб скажем если кто то редактирует какие то файлы то мне не нужно было делать пулл и все такое. У меня просто есть ссылка и то что сейчас там находиться то я и использую

Надеюсь у меня получилось обьяснить, что я хочу))

EDIT

Я имею ввиду такую возможность, есть скажем папка где то на PC в которой лежит 2 джава класса А и В . Добавляю (как то) путь в проект (как бы говорю вот там есть папка) и могу использовать эти файлы у себя в проекте. Вот такая идея...

Как сказал @woesss , что раньше в эклипсе была возможность добавлять линк на файл, это то что я ищу.

EDIT Хочу попробовать способ описанный @woesss для теста я скачал как zip вот эту либу (так как нужен нормальный gradle-проект)

https://github.com/lopspower/CircularImageView

распаковал ее и указал к ней путь в settings.gradle

include ':app', ':library'
project(':library').projectDir = new File('C:/Users/tetavi/Downloads/Buffer/Lib_DELETE/CircularImageView-master/CircularImageView-master')

И так же указал в gradle(module)

...
dependencies {
    ...
    implementation project(':library')
    ...
}

Получаю вот такую ошибку

Unable to find a matching configuration of project :library: None of the consumable configurations have attributes.

EDIT

Вот градл файл из либы которую я пробую добавить

// Top-level build file where you can add configuration options common to all sub-projects/modules.

apply from: 'dependencies.gradle'

buildscript {
ext.kotlin_version = '1.3.40'
repositories {
    google()
    jcenter()
}
dependencies {
    classpath 'com.android.tools.build:gradle:3.4.1'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
    classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.1'
}
}
task clean(type: Delete) {
delete rootProject.buildDir

}

Answer 1

Можно подключить модуль из другого проекта таким способом:
settings.gradle:

include ':app', ':library'
project(':library').projectDir = new File('path/to/library/project/libmodule')

build.gradle(module):

...
dependencies {
    ...
    implementation project(':library')
    ...
}

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

P.S. Хорошо, покажу на примере указанной либы с гитхаба: Допустим я скачал её в зипе и распаковал в C:\Users\woesss\dowloads\CircularImageView-master\

settings.gradle::

include ':app', ':library' // добавляем модуль ':library'
// указываем ему путь к папке нужного нам МОДУЛЯ в другом проекте
project(':library').projectDir = new File('C:\\Users\\woesss\\dowloads\\CircularImageView-master\\circularimageview')

build.gradle(module):

...
dependencies {
    ...
    // добавляем только что подключенный модуль в зависимость
    implementation project(':library')
    ...
}

Это можно сделать и через меню, но только после удачной синхронизации.

Теперь модуль как бы в нашем проекте и требует от нас свои зависимости - смотрим конфиг её проекта и добавляем нужное в конфиг своего:

build.gradle(project):

// здесь импортируются константы из файла 'dependencies.gradle'
// значит его тоже нужно скопировать в свой проект
// или добавить содержимое, если он уже есть.
// Вот тут начинаются грабли, за которыми придётся следить
// - потому что там хранятся версии зависимостей
// и они не будут синхронизироваться без вашего участия)
apply from: 'dependencies.gradle'
// дальше добавляем то, чего ещё нет в нашем проекте
buildscript {
    ext.kotlin_version = '1.3.40'
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.1'
    }
}

Всё - синхронизируемся, ребилдимся, работаем.

Answer 2

Можно например так сделать:

File > Project Structure > Dependencies Tab > Add module dependency

вот доки по этой теме. Я такое делал давненько, но у меня получилось, надеюсь и у вас все получится :)

READ ALSO
Как работает сокет в java

Как работает сокет в java

Как работает сокет в java, как он подключает между собой клиент и сервер и позволяет им обмениваться данными?

89
Изменённая логика RecyclerView

Изменённая логика RecyclerView

Задача: Сделать карусель фотографий, где последний элемент будет добавлять в карусель новые фотографии

119
RecyclerView неправильно отображает item

RecyclerView неправильно отображает item

В моем приложении есть тестВ каждом из вопросов можно выбрать один из 5 вариантов ответа

97
Как получить Uri записи SQLite Android

Как получить Uri записи SQLite Android

у меня имеется база данных SQLite в которую я добавляю и удаляю данные по принципу описанному ниже

105