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

Я сделал много крошечных проектов, таких как одноэкранный режим, приложение для викторины, музыкальная структура и т. д. Как новичок, я искал возможность повторного использования проекта, так как есть много пакетов, которые одинаковы во всех проектах, таких как утилиты и т. д. Итак, я узнал о модуле библиотеки Android по ссылке ниже:

https://developer.android.com/studio/projects/android-library

Моя проблема в том, почему даже после добавления зависимостей в библиотечный модуль мне нужно добавлять такие же зависимости в модуль приложения? Например, мой библиотечный модуль использует edmodo android image cropper (https://github.com/ArthurHub/Android-Image-Cropper) для обрезки изображений, и чтобы использовать это в модуле приложения, мне также пришлось добавить его зависимость в модуль приложения! Почему? Можно ли это улучшить? Спасибо с нетерпением!

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

matio 08.08.2018 01:42

@matio Итак, на непрофессиональном языке это выглядит примерно так: `` Я сделал один библиотечный модуль. Он содержит несколько других библиотек в качестве зависимости, и я мог бы заплатить за это, и только потому, что мой библиотечный модуль может использоваться кем угодно или делиться им, это не значит, что кто-то может получить преимущества этих платных библиотек! Итак, если вы хотите использовать библиотеки, которые я использовал в своем модуле библиотеки, вам придется добавить их в качестве зависимости в модуль приложения проекта самостоятельно, и если это не бесплатно, вам придется заплатить так же, как и я. пришлось заплатить. `` Так ли это?

Sagar Patel 08.08.2018 02:05
1
2
899
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

why do I have to add same dependencies in app module also?

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

Can it be improved?

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

Если вы все еще хотите продолжить (возможно, у вас есть внутренний модуль, который является проприетарным), вы можете либо извлечь jar-файл с библиотеками зависимостей и включить его в каталог libs, либо опубликовать его в maven вместе с зависимостями.

Другие вопросы по теме