2015-10-16 2 views
5

In meinem Android-Projekt zu importieren, ich habe zwei Module,Wie eine Backend-Modul Klasse in ein App-Modul im Android Studio

  • App Modul

  • Backend-Modul

Ich möchte eine Backend-Modul-Klasse in eine meiner App-Modul-Klassen importieren. aber wenn ich versuche, es zu importieren, wie dies

import com.me.you.backend.entities 

Ich erhalte einen Fehler Error:(52, 58) error: package com.me.you.backend.entities does not exist

Das nächste, was ich versuchte, mein Backend-Modul in meiner App build.gradle wie diese

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

zu kompilieren Aber Ich bekomme 13 Warnungen! dieser Art

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 

Und wenn ich meine App-Modul laufen, bekomme ich diesen Fehler

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

java.util.zip.ZipException: doppelte Eintrag: com/google/appengine /repackaged/com/google/api/client/auth/oauth2/AuthorizationCodeFlow$Builder.class

Questi auf

Wie kann ich meine Backend-Klasse erfolgreich importieren?

Antwort

1

Lösung war dependancy auf Backend-Modul in meinem App-Moduls hinzufügen build.gradle wie diese

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

Danach baue ich mein Projekt (Build> Projekt neu erstellen). und alles war in Ordnung.

0

Warum versuchen Sie nicht, ein neues Modul "Commons" zu erstellen. Dort können Sie alle gemeinsam genutzten Klassen zwischen ‚Backend‘ setzen und ‚App‘ erweitern, indem man Ihren gradle Dateien:

compile project(':commons') 
+0

@johny_kb Angenommen, ich erstelle dieses Modul, lege eine Backend-Klasse hinein. Diese Back-End-Klasse verfügt über eine Methode, die eine andere Back-End-Klasse aufruft. Am Ende ist es so, als würde man alle Backend-Klassen in ein anderes Modul schreiben (Kopieren einfügen). und wenn ich das Projekt (': commons') kompiliere, werde ich am Ende dieselben Warnungen und Fehler bekommen! –

+0

sagen Sie mir, wenn ich falsch verstehe, was Sie sagen: Sie haben eine Klasse, die eine Referenz mit einer Backend-Klasse hat, und Sie möchten es mit der App teilen, so dass Client diese Methode direkt aufrufen kann? Wenn es sich um eine Kontrollklasse handelt, kann sie nicht zwischen zwei Modulen ausgetauscht werden. Lösung mit 'Commons' erfordert in ihrem Paket Domain-Klassen, die zwischen Server und Client geteilt werden. Wenn ich zum Beispiel eine Domain-Klasse "com.aproject.User" habe, kann ich sie in das "Commons" -Modul einfügen und dann kann ich sie im Backend und in der App importieren. –

Verwandte Themen