2016-05-14 7 views
0

Ich habe ein Android-Projekt, wo ich zwei Module trennen will, indem man ein Bibliotheksprojekt macht. Aber die Klasse, die ein Teil der Bibliothek wird, erweitert eine Klasse, die im Wurzelprojekt sein wird. Also, wie kann ich diese beiden in build.gradle verknüpfen?Klasse in Android-Bibliothek Projekt Erweiterung einer anderen Klasse in Root-Projekt

Gradle Datei von Stammprojekt enthält:

sourceSets { 
    main { 
     res.srcDirs = ['res'] 
     main.java.srcDirs = ['src'] 
     manifest.srcFile 'AndroidManifest.xml' 
     proto.srcDirs 'protos/' 
    } 
} 

dependencies { 

    compile files('libs/host-libprotobuf-java-2.3.0-nano.jar') 
    compile files('libs/protobuf-java-2.3.0.jar') 
    compile project('lib') 
} 

Das Bibliotheksprojekt gradle Datei enthält:

sourceSets { 
    main { 
     manifest.srcFile 'AndroidManifest.xml' 
     java.srcDirs = ['src'] 
     resources.srcDirs = ['src'] 
     aidl.srcDirs = ['src'] 
     renderscript.srcDirs = ['src'] 
     res.srcDirs = ['res'] 
     assets.srcDirs = ['assets'] 
    } 
} 

In diesem Fall zeigt es Fehler in 'lib' Projekt, wo ich Klasse bin erstreckt Root-Projekt. Wenn ich java.srcDirs in der Bibliothek gradle Datei zu

java.srcDirs = ['src', '../src'] 

die Klasse modifizieren wird ohne Kompilierung Probleme erweitert aber bekommt Probleme in anderen Klassen von Stammprojekt.

Kann mir also jemand sagen, wie man diese beiden verbindet?

Antwort

1

Circular Abhängigkeiten (von Modulen) sind eine wirklich schlechte Idee. Du solltest sie immer vermeiden.

Lösung:

    die Basisklasse mit dem Bibliotheksmodul oder
  • Erstellen Sie ein drittes Modul für die Basisklasse verschieben
  • und es von beiden anderen Modulen Referenz