Android AAR lib - не удалось связать ресурс - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь преобразовать приложение Android в модуль lib, не копируя источник.Я сделал это (изменил файл build.gradle), и он синхронизируется и компилируется, но когда я добавляю зависимость к результирующему файлу AAR в другой проект (где я хочу использовать эту библиотеку), сборка завершается неудачно, и связывание ресурсов не удается.

Я не могу понять, почему:

  • оригинальное приложение создает и запускает

  • lib (сборка из приложения) строит

  • проект, который использует AAR из этой библиотеки, не создает и обнаруживает ошибку в этом AAR.

Например, одна из возможных ошибок:

Android resource linking failed
error: resource style/TextAppearance.Design.Tab (aka bv.dev.aarlibtester:style/TextAppearance.Design.Tab) not found.
error: failed linking references.

Таким образом, он говорит, что ресурсы не найдены, и указывает на зависимости, которые я использовал в этой библиотеке (в данном примере это design)

Я создал тестовый проект, чтобы продемонстрировать это на простом примере.

Github

  • aar-res-app - это простой проект приложения, в котором используется design зависимость

  • aar-res-lib - библиотека, созданная из этого проекта (конвертированная)

  • aar-res-lib-tester - простой проект приложения, использующий that lib.


В настоящее время я переименовал пакет библиотеки, чтобы он не совпадал с пакетом приложения, и использовал jar вместо aar.

Я создаю его, используя Gradle -> root -> Tasks -> Other -> createFullJarRelease.

Результат в Build > Intermediates > Full_jar > Release > CreateFullJarRelease > full.jar

1 Ответ

0 голосов
/ 07 февраля 2019

Итак, реальная проблема в том, что aar и jar, созданные таким образом, не содержат библиотек, от которых они зависят.Если вы добавляете библиотеку таким образом, вам нужно добавить все ее зависимости в проект, который ее использует.

В моем примере это implementation 'com.android.support:design:28.0.0'.

Если проект содержит много таких зависимостей, вы должны добавить их все.Но вы все равно можете столкнуться с такой проблемой, как «слияние манифеста не удалось» и другими проблемами.

Или вы можете попытаться развернуть вашу библиотеку в maven или jitpack, но вам нужно правильно настроить ее, чтобы файл pom былгенерируется со всеми необходимыми зависимостями, чтобы можно было легко использовать эту библиотеку.

...