2010-06-17 13 views
6

Mam dość dużą bibliotekę opracowaną specjalnie do użytku w mojej aplikacji Android. Jednak sama logika biznesowa nie ma zależności od Androida. Aby to zachować, użyłem Commons Commons w całej tej bibliotece i odpowiednich testach JUnit (które uruchamiam w Eclipse).Brak rejestracji w Androidzie?

Jednak teraz, kiedy zaczynam zintegrować go do aktywności, która ja uruchomić na Androidzie, jestem w stanie dostać mój rejestrowania się do pracy. W Eclipse/JUnit po prostu wyciągnąłem plik jar log4j, a także plik log4j.properties. Wydaje się, że nie działa to po wdrożeniu na urządzeniu. Po kilku próbach zmuszenia go do pracy na kilka godzin, poddałem się i próbowałem zastąpić wszystkie moje commons, logując się do rzeczy z android.util.Log. Teraz mogę zalogować się na urządzeniu .. ale wszystkie testy JUnit są zepsute. Kiedy dowolny JUnit próbuje zalogować się przy użyciu android.util.Log, rzuca "Stub!" RuntimeException.

Wolałbym powrócić do mojej metody logowania commons .. jeśli ktoś może pomóc w tym .. w przeciwnym razie .. co mogę zrobić, aby moje walizki testowe JUnit uruchomione przy użyciu "android.util.Log"?

Wiele z góry dzięki .. Spędziłem więcej niż kilka godzin na to i chciałbym przenieść się ponownie pisząc rzeczywisty kod!

Odpowiedz

4

nie wierzę, że jest to port log4j dla android atm. Jednak Android ma wbudowane java.util.logging, a wspólne logowanie może połączyć się z tym poprzez Jdk14Logger. Jeśli wspólne logowanie działa na Androidzie, prawdopodobnie będziesz dobry.

1

można zbudować interfejs dla swojego rejestratora, który w zależności od platformy instancję delegata do rejestrowania, które są wspólne na platformie. Tak długo jak pracujesz i debugujesz to powinno wystarczyć, później w kodzie produkcyjnym na urządzeniu możesz po prostu wstawić logger, który nic nie robi i oszczędzasz cały czas potrzebny do zagospodarowania phoneloga.

5

Jak wspomina Qberticus, commons-logging będzie działać w Androidzie. Właśnie to potwierdziłem, upuszczając bibliotekę wspólnego logowania do projektu Android i logując komunikaty na poziomie INFO. Rejestrowanie w bazie danych będzie domyślnie oparte na strukturze rejestrowania Jdk14, która następnie przejdzie do podsystemu rejestrowania systemu Android, a wyniki będą widoczne w kodzie logcat. Znacznik jest ustawiony na klasę, której log jest używany: na przykład, użycie logu z LogFactory.getLog(Foo.class) będzie miało znacznik "Foo".

1

rozwiązanie Pawła nie działa dla mnie. Spowodowało to konflikt w czasie kompilacji, ponieważ tak się składa, że ​​słoik logowania społecznościowego jest już zawarty w zestawie SDK. Mój kłopot polegał na tym, że nie mogłem się przed tym skompilować.

dodania:

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

do moich ant.properties załatwiło sprawę.

Powiązane problemy