NB: Пожалуйста, предложите лучшее название для этого вопроса.
Предположим, у меня есть два класса с одинаковыми именами, и я хочу импортировать один или другой перед компиляцией в зависимости от варианта использования/версии приложения. Есть ли способ сделать это?
Зачем мне это нужно?, спросите вы.
Мне нужно использовать важную библиотеку Java, которая использует java.time, но мне также нужно поддерживать min sdk 23 (Android 6.0). Я мог бы использовать триЗатемABP в своем приложении для Android, чтобы использовать все API java.time, но мне нужно импортировать их из org.threeten.bp.
Эта важная библиотека на самом деле является частной. Итак, идея состоит в том, чтобы заставить его использовать либо импорт java.time, либо импорт org.threeten.bp, чтобы скомпилировать 2 версии, которые были бы совместимы как с Android-приложениями, так и с настольными Java-приложениями.
Надеюсь, мои объяснения достаточно ясны. Спасибо за помощь.
@MenoHochschild да, это именно то, что я пытаюсь объяснить выше («... идея состоит в том, чтобы использовать либо java.time импорт, либо org.threeten.bp импорт для компиляции 2 версий»). Теперь вопрос в том, как я могу сделать это чистым способом?
Я предлагаю вам просто всегда использовать бэкпорт (пока однажды вы не сможете переключиться на использование встроенного java.time всегда). Хотя бэкпорт был разработан для Java 6 и 7, он работает и с более поздними версиями Java.




В итоге я использовал threetenbp в проекте библиотеки, как предложил @Ole V.V.
Затем в моем проекте для Android я использовал threetenAbp (версия для Android) и импортировал ее в библиотеку с помощью gradle. Наконец, исключение пакетов, используемых в библиотеке, означает, что вместо них используется threetenAbp.
implementation ('my-library') {
exclude group: 'org.threeten'
}
NB: обратите внимание на разницу (A) в threetenbp и threetenAbp.
Библиотека, использующая
java.time, недоступна в Android ниже 26 уровня. Поэтому нет возможности использовать эту библиотеку в более старых версиях Android. Единственным способом была бы возможность (если у вас есть) хранить две разные версии этой библиотеки — одна из них использует вместо этого threetenbp. Я не знаю, можете ли вы создать его самостоятельно или собрать из доступных источников, которые вы могли бы редактировать (на основе форка?).