2015-10-16 12 views
5

W moim android projektu, mam dwa moduły,Jak zaimportować klasę modułu backend do modułu aplikacji w Android studio

moduł
  • App

  • moduł backend

Chcę zaimportować klasę modułu zaplecza do jednej z moich klas modułu aplikacji. ale gdy próbuję zaimportować go jak ten

import com.me.you.backend.entities 

dostaję błąd Error:(52, 58) error: package com.me.you.backend.entities does not exist

Następną rzeczą, że próbowałem to skompilować mój moduł backend w mojej aplikacji build.gradle tak

dependencies { 
.... 
compile project(':backend') 
} 

Ale otrzymuję 13 ostrzeżeń! tego typu

WARNING: Dependency org.apache.httpcomponents:httpclient:4.4.1 is ignored 
for debug as it may be conflicting with the internal version provided by Android. 

In case of problem, please repackage it with jarjar to change the class packages 

i kiedy uruchomić mój moduł aplikacji, otrzymuję ten błąd

Error:Execution failed for task ':app:packageAllDebugClassesForMultiDex'. 

java.util.zip.ZipException: duplikat wpisu: com/google/interfejsu App Engine /repackaged/com/google/api/client/auth/oauth2/AuthorizationCodeFlow$Builder.class

questi na temat:

Jak mogę skutecznie zaimportować moją klasę backendu?

Odpowiedz

1

Roztwór dodać dependancy na module backend w moim moduł aplikacji build.gradle tak

compile project(path: `:backend`, configuration: `android-endpoints`) 

Po tym czasie odbuduję mój projekt (Build> Rebuild project). i wszystko było w porządku.

0

dlaczego nie spróbujesz stworzyć nowego modułu "Commons". Można tam umieścić wszystkie udostępnione klas pomiędzy „Backend” i „aplikacji” dodając na swoich Gradle plików:

compile project(':commons') 
+0

@johny_kb Załóżmy, że tworzę ten moduł, wstawię w nim klasę backendu. ta klasa backendu ma metodę, która wywołuje inną klasę backendu. w końcu to jak umieszczanie wszystkich klas zaplecza w innym module (kopiowanie wklejania). a kiedy "skompiluję projekt (": commons ")" otrzymam te same ostrzeżenia i błędy! –

+0

Powiedz mi, jeśli źle rozumiem, co mówisz: masz klasę, która ma odniesienie do klasy zaplecza, i chcesz udostępnić ją aplikacji, więc klient może bezpośrednio wywołać tę metodę? Jeśli jest to klasa kontrolna, myślę, że nie można jej udostępnić między dwoma modułami. Rozwiązanie z "commons" wymaga w swoich klasach domen pakietowych, dzielonych między serwer i klienta. Jako przykład, jeśli mam klasę domeny "com.aproject.User", mogę umieścić ją w module "Commons", a następnie, w backend i aplikacji mogę go zaimportować. –

Powiązane problemy