как обновить локальные источники пакетов aar

Я создал два приложения Android Studio. Одна из них - библиотека AR. Я использовал эту библиотеку aar во втором приложении. Я добавил библиотеку aar, используя опцию File-> New-> New Module-> Import AAR / JAR Packages. после этого я могу видеть декомпилированные исходники моей библиотеки aar. Когда я обновляю библиотеку aar, я копирую и вставляю новый файл aar в папку проекта своего приложения. Но на этот раз Android Studio показывает более старые декомпилированные исходники. Но скомпилировать новый источник успешно. Как я могу обновить декомпилированные источники в Android Studio? когда я импортирую файл aar, строка implementation project(':app-debug') была добавлена ​​в мой build.gradle файл.

Я использую Android Studio 3.0.1

мое решение

единственный способ обновить локальные источники, который я могу найти, - это нажать кнопку Синхронизировать проект с файлами Gradle после обновления файла aar / jar.


person user4757345    schedule 29.11.2017    source источник
comment
У старого и нового файла aar одна и та же версия или это разные версии?   -  person Cliabhach    schedule 04.12.2017
comment
вы имеете в виду versionCode в build.gradle? Я его не менял.   -  person user4757345    schedule 05.12.2017
comment
Да, я имел в виду это. Если вы измените код версии, Android Studio следует более тщательно проверить источники.   -  person Cliabhach    schedule 08.12.2017
comment
@Cliabhach, я пробовала. но ситуация такая же.   -  person user4757345    schedule 12.12.2017
comment
Хм. Может, если попробовать команду Invalidate Caches? jetbrains.com/help/idea/2016.1/   -  person Cliabhach    schedule 12.12.2017
comment
к сожалению, это не работает. ситуация такая же.   -  person user4757345    schedule 14.12.2017
comment
Фу. Это странно. Гм ... на файл aar должна быть ссылка в файле build.gradle вашего приложения. Он должен выглядеть как implementation files("my_cool_library.aar") или implementation "com.example.projects:cool_library:1.1". Это существует? Вы можете добавить его к вопросу, если это так.   -  person Cliabhach    schedule 15.12.2017
comment
@Cliabhach, я обновил свой вопрос   -  person user4757345    schedule 20.02.2018


Ответы (6)


У меня была та же проблема, я пробовал каждую форму включения моего локального aar в мой проект, пробовал все методы восстановления, аннулирования кешей и т.д., но у меня все еще была проблема, когда изменения в моем локальном aar были недоступны после обновления файла в папке libs.

Единственное, что у меня сработало, это следующее:

  1. Закомментируйте строку файлов реализации ('../ libs / yourlib.aar') в gradle
  2. Синхронизировать градиент
  3. Обновите yourlib.aar в папке libs
  4. Раскомментируйте строку файлов реализации ('../ libs / yourlib.aar') в gradle
  5. Синхронизировать снова
  6. Построить проект

Теперь изменения в yourlib.aar должны быть доступны в вашем проекте. Если у вас есть эта библиотека, включенная в несколько модулей, я предполагаю, что вам придется делать это для каждого модуля. Не идеально, но я потратил как минимум 5 часов на эту проблему, и эти шаги были единственным способом, которым я мог, казалось бы, принудительно внести изменения. Я предполагаю, что удаление библиотеки из файла gradle, а затем синхронизация заставит ее выбрать новую, когда она будет добавлена ​​снова.

person Shayla Sawchenko    schedule 12.04.2018
comment
это сработало для меня, просто хочу упомянуть, что важно изменить файл только после первой синхронизации gradle - person Christian; 09.07.2018
comment
У меня получилось сделать недействительные кеши, на всякий случай, это также поможет кому-то еще. - person ThePartyTurtle; 27.08.2018

У меня была такая же проблема, и я очень быстро решил ее, выполнив следующие действия:

  • Найдите в папке проекта /.idea/libraries/ Gradle__artifacts_ [подпроект] .xml.
  • Удалить этот файл
  • В Android Studio перейдите в File-> Sync Project with Gradle Files.

Это для AAR, включенного как проект (именно так он включается при использовании File-> New-> New Module ...-> Import .JAR / .AAR Package).

person Regular User    schedule 08.08.2018
comment
Спасибо за ответ, который спас мне день. - person York; 18.10.2018
comment
Это единственное верное решение, которое можно было бы реализовать в CI без обновления версии библиотеки. Должен быть отмечен как принятый ответ, и команда разработчиков Android Studio должна исправить это много лет назад. - person Mateusz Wlodarczyk; 25.10.2018
comment
Это полезно, но разве вам все равно не нужно вручную копировать файлы .aar из проекта библиотеки в проект, который фактически использует библиотеку? - person Bad Loser; 01.04.2019

Прямо сейчас вы включаете AAR через project нотацию. Поскольку AAR - это буквально просто файл, вместо этого он должен быть включен с обозначением files.

Предполагая такую ​​структуру папок:

снимок экрана каталога папок нового проекта Android Studio 3

Вы можете включить файлы с любой из следующих строк в блок зависимостей app/build.gradle:

  // include just my_library
  implementation files('libs/my_library.aar')

  // include just other_library
  implementation files("$rootDir/common/libs/other_library.aar")

  // include both libraries
  implementation files('libs/my_library.aar', "$rootDir/common/libs/other_library.aar")

Между прочим, достаточно полный список поддерживаемых типов зависимостей можно найти по адресу https://docs.gradle.org/current/dsl/org.gradle.api.artifacts.dsl.DependencyHandler.html.

person Cliabhach    schedule 20.02.2018

После замены файла .arr через проводник Windows. Единственное, что у меня сработало, это File -> Invalidate caches / Restrt

person Evgeniy    schedule 19.12.2018

Вы пытались сначала закрыть вкладку декомпилированного файла в Android Studio, обновить имя версии в проекте AAR, перестроить AAR, передать, а затем посмотреть, как он обновляется?

Я знаю, что у меня это работает.

person Arzath    schedule 16.03.2018

В дополнение к проекту и настройкам комментирования / раскомментирования и повторной синхронизации Gradle мне пришлось удалить весь каталог build-cache.

На Mac: ~ / .android / build-cache / Windows: не знаю, где находится этот каталог.

person Alex Nguyen    schedule 18.12.2018