2016-04-04 6 views
3

Ich versuche eine App zu erstellen, die aus separaten Bibliotheksprojekten besteht.Selbst erstellte Bibliothek mit Abhängigkeit zu einer anderen selbst erstellten Bibliothek

Um dies zu tun, ich versuche, ein Proof of Concept zu machen, die wie folgt sein soll:
enter image description here

ich das Projekt so einfach wie möglich zu halten versucht. Der Inhalt des Projekts spielt keine Rolle!
Alles, was zählt, ist die Abhängigkeiten zwischen den Projekten!

Die Ergebnis sollte sein, dass MainProject wird auszudrucken Something Another String!

ich versucht habe, alle von .JAR Dateien .AAR Dateien, aber das Beste, was ich war in rot
mit der Abhängigkeit bekam . Ich fügte die StringExtender.aar Datei zu StringReturner hinzu, und dann die StringReturner.aar Akte zum MainProject.

Wenn ich dies tun erhalte ich die folgende Ausnahme:

java.lang.NoClassDefFoundError: Failed resolution of: Lcom/example/erik/stringextender/StringExtender;

Was ist der richtige Weg, ein einfacher Beweis des Konzeptes wie diese Einrichtung? Ich kann anscheinend nichts finden, was mit einem Bibliotheksprojekt zusammenhängt, das eine Abhängigkeit hat. Es ist alles 1 Level tief!

Jede Hilfe ist willkommen!

EDIT ZEIGT Gradle FILES BUILD
StringReturner:

apply plugin: 'com.android.library' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.3" 

    defaultConfig { 
     minSdkVersion 15 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.2.1' 
    compile project(':StringExtender-lib-debug') 
} 

Hauptprojekts:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.3" 

    defaultConfig { 
     applicationId "com.example.erik.erikpoc10" 
     minSdkVersion 15 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.2.1' 
    compile 'com.android.support:design:23.2.1' 
    compile project(':StringReturnerLib-debug') 
} 
+0

Können Sie Ihre Build-Größe zeigen? –

+0

@ MsYvetteǝʇʇǝʌʎsW Fertig! – ErikBrandsma

Antwort

2

Verwenden Sie das folgende Tutorial - Creating libraries for Android applications

Sehen Sie ein funktionierendes Beispiel-Projekt auf meinem Github

Die wichtigsten Schritte waren:

  • 8,3. Bibliotheksmodul erstellen
  • 8.6. Definieren Sie die Abhängigkeit zum Bibliotheksprojekt.

Vergessen Sie nicht, die Bibliothek Klasse, die Sie zum Beispiel verwenden, importieren möchten:
In Mainproject: import com.example.stringreturner.StringReturner. In StringReturner: import com.example.stringreturner.StringExtender.

Die folgenden Informationen auf dem Bild basiert Sie bereitgestellt:

Die Bibliothek Methoden sind so nicht statisch vergessen Sie nicht ein tatsächliches Objekt zu machen. Also StringReturner sollte ein StringExtender-Objekt machen, und MainProject sollte zuerst ein StringReturner-Objekt machen!

Und schließlich, ich denke, es ist ein Tippfehler, aber beide Bibliotheken haben die Klasse StringReturner. Dies funktioniert aus naheliegenden Gründen nicht in der StringReturner-Bibliothek.

Ich sollte auch beachten, dass ich Android Studio 2.0 verwendet habe und ich .JAR-Dateien noch .AAR-Dateien nicht berührt habe. Ich habe lediglich zwei Bibliotheksmodule und eine App erstellt. Konfigurieren Sie dann die Projektstruktur -> Abhängigkeiten durch Hinzufügen von Modulabhängigkeiten.

+0

Hat den Trick für mich gemacht! – ErikBrandsma

Verwandte Themen