2010-10-12 10 views
9

Mam trochę kodu java (kompiluje się ładnie na Androida) w projekcie biblioteki (LIB), który chcę użyć w innym projekcie Android (A).Android - Junit - Testowany projekt wykorzystuje zewnętrzny Jar

Ponieważ kod LIB raczej nie zmieni się bardzo, zdecydowałem się dodać go jako słoik do A. Działa dobrze.

Mam inny projekt, który jest projektem przyrządu Android, testując pierwszy projekt Android (B).

Więc co mamy teraz jest A tym LIB jako zewnętrzny słoika i B Testy A.

Problem zaczyna się, gdy chcę uzyskać dostęp z kodem B napisany w lib. Z tego co widzę, chyba że dodaję LIB jako zewnętrzny słoik do B, odmawia on kompilacji (to znaczy nie może uzyskać dostępu do kodu w słoju LIB, który jest zawarty w A).

Jestem niechętny, aby dodać LIB jako zewnętrzny słoik do B, ponieważ: 1. To nie w porządku, a 2. Po uruchomieniu testów nie powiedzie się z:

java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation

znalazłem Mike's question , ale jego rozwiązanie obejmuje tylko kompilowanie za pomocą skryptu mrówkowego i obecnie wolę używać IDE Eclipse dla tego projektu.

Każdy pomysł, jak rozwiązać ten problem?

+2

Rozwiązane przez następujące [Ten wpis na blogu] (http://dtmilano.blogspot.com/2009/12/android-testing-external-libraries.html). Wygląda na to, że powinienem mieć _exported_ LIB z A, aby było dostępne z B. –

+0

To pomogło. Wyeksportowałem zależności android z głównego projektu (słoik znajdował się w folderze libs, więc nie można było wyeksportować go bezpośrednio), aw projekcie testowym również musiał sprawdzić główny projekt. Teraz działa. – Ixx

Odpowiedz

1

(W celu usunięcia tej kwestii z „Nieodebrane” filtr ...)

Rozwiązaniem jest opisane tutaj:

Android Testing: External libraries

lib powinny być wywożone z A, aby go dostępne od B.

+0

Pierwotnie odpowiedziałem na moje pytanie, ale moja odpowiedź została przekształcona w komentarz przez kogoś w systemie StackOverflow, dostarczając mi link do faq. Sądzę, że wiadomość była taka, że ​​moja odpowiedź nie stanowi właściwej odpowiedzi, ponieważ jest to głównie odnośnik do zewnętrznego linku. –

+0

Hmm. Słusznie. Rozumiem ich logikę, ale tylko wtedy, gdy system pozwolił również na usunięcie takich pytań z filtra "Nieodebrane" w tym samym czasie. W przeciwnym razie pozostanie w stanie zawieszenia na zawsze. : - / – DreadPirateShawn

Powiązane problemy