Нет общего входа в Android? - PullRequest
6 голосов
/ 17 июня 2010

У меня есть довольно большая библиотека, которую я разработал специально для использования в моем приложении для Android.Однако сама бизнес-логика не зависит от Android.Чтобы сохранить это, я использовал Commons Logging во всей этой библиотеке и соответствующих тестах JUnit (которые я запускаю в Eclipse).

Однако теперь, когда я начинаю интегрировать его в Activity, которую запускаю на Android, яне могу заставить мою регистрацию работать.В Eclipse / JUnit я просто извлек файл jar log4j, а также файл log4j.properties.Кажется, это не работает при развертывании на устройстве.После нескольких попыток заставить это работать в течение нескольких часов, я сдался и попытался заменить все мои файлы регистрации общего достояния на android.util.Log.Теперь я могу войти на устройство ... но все тесты JUnit не работают.Когда любой JUnit пытается войти в систему с помощью android.util.Log, он генерирует RuntimeException 'Stub!'.

Я бы предпочел вернуться к моему подходу к ведению журнала общего пользования ... если кто-то может помочь с этим ... в противном случае.... что я могу сделать, чтобы мои тестовые случаи JUnit работали с использованием android.util.Log?

Большое спасибо заранее .. Я потратил на это больше нескольких часов и хотел быпереходите к написанию реального кода снова!

Ответы [ 5 ]

5 голосов
/ 09 апреля 2011

Как упоминает Qberticus, регистрация общего доступа будет работать в Android. Я только что подтвердил это, поместив библиотеку общих журналов в проект Android и зарегистрировав сообщения на уровне INFO. По умолчанию для Commons-logging используется структура ведения журнала Jdk14, которая затем передается в подсистему ведения журнала Android, а результаты можно просматривать в logcat. Тег установлен для класса, чей журнал используется: например, использование журнала из LogFactory.getLog(Foo.class) будет иметь тег «Foo».

4 голосов
/ 17 июня 2010

Я не верю, что есть порт log4j для android atm. Тем не менее, Android имеет встроенный java.util.logging, и регистрация общего достояния может подключаться к нему через Jdk14Logger. Если регистрация на общих ресурсах работает на Android, то вам, вероятно, будет хорошо.

1 голос
/ 31 января 2012

Решение Павла не сработало для меня. Это привело к конфликту во время компиляции, потому что, как это бывает, банка регистрации общего достояния уже включена в SDK. Моя проблема была в том, что я не мог с этим скомпилироваться.

Добавление:

extensible.classpath=${sdk.dir}/tools/lib/commons-logging-1.1.1.jar

чтобы мои ant.properties сделали свое дело.

1 голос
/ 17 июня 2010

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

0 голосов
/ 20 ноября 2011

Существует новый проект, который включает log4j на Android.Использование log4j поверх slf4j возможно.Он также предоставляет приложение для LogCat.Смотрите проект android-logging-log4j или log4j в поддержке android

...