Вход в библиотеки "Java Library Code" для приложений Android - PullRequest
8 голосов
/ 15 февраля 2011

Я следую совету , чтобы реализовать независимый код устройства Android (не приложения!) Для моих Android-приложений в отдельном проекте "Java Library Code". Это облегчает мне тестирование, так как я могу использовать стандартную компоновку проекта maven, поддержку Spring test и системы Continuous Build, как я привык. Я не хочу смешивать это в своем проекте приложения для Android, хотя это возможно.

Теперь мне интересно, как реализовать ведение журнала в этой библиотеке. Поскольку эта библиотека будет использоваться на устройстве Android, я бы хотел использовать android.util.Log. Я добавил следующую зависимость в свой проект, чтобы получить недостающие пакеты / классы Android и зависимости:

<dependency>
    <groupId>com.google.android</groupId>
    <artifactId>android</artifactId>
    <version>2.2.1</version>
    <scope>provided</scope>
</dependency>

Но эта библиотека просто содержит метод-заглушку (аналогично android.jar внутри android-sdk), поэтому использование android.util.Log приводит к

java.lang.RuntimeException: Stub!

при запуске моих юнит-тестов. Как реализовать ведение журнала, которое работает на устройстве Android, но не выходит из строя снаружи (я не ожидаю, что оно будет работать, но не должно выходить из строя)?

Спасибо за любые советы
Клаус


Пока что я собираюсь обойти это исключение за пределами Android, но надеюсь, что есть лучшее решение.

try {
    Log.d("me", "hello");
} catch (RuntimeException re) {
    // ignore failure outside android
}

Ответы [ 2 ]

8 голосов
/ 17 февраля 2011

Эти две ссылки из GrepCode ( 1 , 2 ), похоже, предполагают, что обработчик по умолчанию java.util.Logging на android делегирует android.util.Log, так в вашей библиотеке вы можете просто использовать java.util.logging apis.

Я не смог найти дополнительную документацию относительно этого поведения

1 голос
/ 12 марта 2019

Вы можете использовать этот фрагмент:

java.util.logging.Logger.getLogger("SOME_TAG").log(Level.INFO, "log message")

И это будет выглядеть в Android Logger:

2019-03-12 14:14:20.143 31195-32138/your.package.name I/SOME_TAG: log message
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...