Страницы

Поиск по вопросам

среда, 29 января 2020 г.

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

#java #android #android_studio


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

Но, что если я хочу просто указать путь к библиотеке которую я хочу использовать
как путь... Так же как указан путь к 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


}
    


Ответы

Ответ 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' } } Всё - синхронизируемся, ребилдимся, работаем.

Ответ 2



Можно например так сделать: File > Project Structure > Dependencies Tab > Add module dependency вот доки по этой теме. Я такое делал давненько, но у меня получилось, надеюсь и у вас все получится :)

Комментариев нет:

Отправить комментарий