Добавьте внешний проект в проект Android Studio, так как зависимость приводит к ошибке, не находящей файл

В настоящее время я пытаюсь добавить локальный клон https://github.com/firebase/FirebaseUI-Android как зависимость в моем проекте. Я не хочу импортировать его стандартным способом, потому что хочу внести изменения в FirebaseUI. В настоящее время я пытаюсь это:

settings.gradle:

include ':firebaseui'
project(':firebaseui').projectDir = new File(settingsDir, '../FirebaseUI')

build.gradle моего модуля:

dependencies {
    compile project(":firebaseui")
}

Но я получаю:

Error:(42, 0) Could not read script 'C:\Users\Gonzalo\AndroidStudioProjects\MyProject\common\constants.gradle' as it does not exist.

который импортируется в FirebaseUI\build.gradle:

allprojects { project ->
    // Get constants, this is where we store things
    // like the list of submodules or the version
    project.apply from: "$rootDir/common/constants.gradle"
...

Это проблема с build.gradle FirebaseUI или моей?


person Gonzalo    schedule 16.06.2016    source источник


Ответы (2)


Используйте бинарные отложения через репозиторий mavenLocal():

  1. git clone https://github.com/firebase/FirebaseUI-Android
  2. cd FirebaseUI-Android
  3. gradlew tasks // вы увидите publishToMavenLocal
  4. Откройте FirebaseUI-Android в отдельный экземпляр Intellij
  5. Внесите свои изменения
  6. Беги gradlew publishToMavenLocal
  7. В своем собственном проекте добавьте mavenLocal() к вашему repositories
  8. Затем добавьте compile 'com.firebaseui:firebase-ui:0.4.1' сделайте dependencies

После всего этого все готово.

  1. Внесите изменения в библиотеку
  2. Опубликуйте его снова через gradlew publishToMavenLocal
  3. Перекомпилируйте ваше приложение
person Jared Burrows    schedule 16.06.2016
comment
Либо у меня были проблемы с кешем, либо gradle получал внешнюю (официальную) версию, но где-то по пути мне пришлось изменить версию на 0.4.2, чтобы убедиться, что локальная версия включена. - person Gonzalo; 17.06.2016
comment
Да, обычно я меняю версию, добавляя -SNAPSHOT. - person Jared Burrows; 17.06.2016

Проблема в том, что означает $rootDir. Если вы попытаетесь создать только код Firebase, его родительский каталог $rootDir вернет его родительскую папку. и относительное расположение const.gradle верно.

Теперь, когда вы добавляете firebase в качестве подпроекта вашего проекта, $rootDir теперь является вашим корневым каталогом, а $rootDir/common/constants.gradle больше не является допустимым путем. Возможно, вам удастся избежать замены пути на:

$rootDir../FirebaseUI/common/constants.gradle

Однако, если вы не вносите локальные изменения в код firebase, я бы поддержал рекомендацию Джареда использовать двоичные зависимости из репозитория maven.

person RaGe    schedule 16.06.2016