Вы говорите о переходных зависимостях. Это распространенная ошибка компиляции для многих инженеров.
Помните, что любые указатели репозитория, объявленные в дочерних подмодулях, должны также быть объявлены в родительском приложении. URL репозитория не включены в родительские модули. Поэтому, если у вас есть собственный репозиторий maven, к которому вы обращаетесь из дочернего модуля, вам нужно будет продублировать этот URL в родительском приложении.
Кроме того, если дочерний модуль имеет зависимости, они известны как переходные зависимости или «зависимости моих зависимостей». Они не включаются в окончательно скомпилированный файл APK или AAR. Они исключены по умолчанию. Это нормальное поведение по умолчанию.
Конечно, вы можете создать файл FAT-JAR или FAT-AAR для включения транзитивных зависимостей, но обычно это плохая практика, и я бы не рекомендовал это.
Если вы генерируете правильные файлы Maven, вы можете просто добавить в строку:
myDependencyNamespaceinGradle {
переходный = верно
}
этот флаг говорит ему включить зависимости этого зависимого.
ВАЖНЫЙ*
Это работает, только если у вас есть правильные структурированные файлы maven в дочернем и репозитории хоста maven, чтобы знать, какие дочерние зависимости нужно включить.
Теперь, если вам нужно, чтобы он компилировался, когда вы работаете локально, но вы знаете, что он будет предоставлен родителем, вы можете указать его как
при условии моей зависимости
вместо
скомпилировать мою зависимость.
Это говорит о том, что он должен компилироваться при отладке, но не упаковывать его вместе с ним, так как зависимость будет в конечном выводе как часть родительских зависимостей.
Другим важным фактором является обеспечение правильной настройки файла proguard, чтобы не удалять аннотации и код на основе отражений. Кинжал должен иметь страховку в этих файлах, чтобы их нельзя было удалить во время минимизации. Пожалуйста, подтвердите это путем отключения минификации и proguard при выпуске. Если он работает нормально, значит, ваша проблема связана с файлом proguard, если проблема все еще существует, скорее всего, это ваше управление переходными зависимостями.
Надеюсь, это поможет, пожалуйста, дайте мне знать, если вам нужна дополнительная ясность.