Я пытаюсь начать работать с проектом libaums (https://github.com/magnusja/libaums). Я написал журнал класса, который отражает методы android.util.Log, но записывает все в файл (поскольку я не могу получить доступ к выходному потоку отладки на Android). Я не мог понять, как собрать пакет из написанного мной модуля и включить его как локальную зависимость в проект libaums ( Компиляция Gradle: пакет не найден ), поэтому я решил просто импортировать Log.java (это пакет com.iglogger, который реализует Log class) в обоих проектах libaums (приложение и фактическая библиотека libaums). Это, в свою очередь, создало проблему на этапе слияния файлов dex - так что проект приложения зависит как от класса Log, так и от libaums, и все же libaums также использует класс Log.
13684:09:44:38.705 [ERROR] [com.android.build.gradle.internal.tasks.DexMergingTaskDelegate] java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
13861:Caused by: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
13649:09:44:38.698 [ERROR] [org.gradle.api.Project] D8: Program type already present: com iglogger.Log
13685:Program type already present: com.iglogger.Log
13862:Program type already present: com.iglogger.Log
13871:Program type already present: com.iglogger.Log
После некоторых исследований решение, похоже, заключается в том, что мне нужно исключить зависимость от Log.java (т.е. com.iglogger.Log) при импорте libaums в проект приложения. Но как именно я предполагаю сделать это в моем случае? Кажется, я объявил зависимость от Log.java в проекте libaums, чтобы позже я мог ее исключить. Верно? Если да, то как?




Таким образом, проблема решилась удалением файлов (com/iglogger) из проекта приложения, который зависит от проекта lib. т.е. оператор Импортировать в java, по-видимому, включает не только объявление используемых пакетов, но и, по выбору, объекты самих пакетов.