2013-11-21 22 views
28

Ich habe massive Schwierigkeiten, mein App-Projekt zu erstellen. Ich habe das wichtigste App-Modul und ein Bibliotheksprojekt Modul wie unten dargestellt:Android Studio - App mit Bibliotheksprojekt schlägt fehl

Project Structure

Dies ist die gradle.build für jedes der Module:

Haupt App:

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.6.+' 
    } 
} 
apply plugin: 'android' 
repositories { 
    mavenCentral() 
} 
android { 
    compileSdkVersion 19 
    buildToolsVersion '19.0.0' 

    defaultConfig { 
     minSdkVersion 14 
     targetSdkVersion 19 
    } 
    buildTypes { 
     release { 
      runProguard true 
      proguardFile getDefaultProguardFile('proguard-android-optimize.txt') 
     } 
    } 
    productFlavors { 
     defaultFlavor { 
      proguardFile 'proguard-rules.txt' 
     } 
    } 
} 
dependencies { 
    compile 'com.android.support:support-v13:19.0.+' 
    compile 'com.google.android.gms:play-services:4.0.+' 
    compile project(':libraries:datetimepicker') 
} 

Und dieses ist für die Bibliothek Projekt:

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.6.+' 
    } 
} 
apply plugin: 'android-library' 

repositories { 
    mavenCentral() 
} 

android { 
    compileSdkVersion 19 
    buildToolsVersion "19.0.0" 

    defaultConfig { 
     minSdkVersion 14 
     targetSdkVersion 19 
    } 
    release { 
     runProguard true 
     proguardFile 'proguard-rules.txt' 
     proguardFile getDefaultProguardFile('proguard-android-ptimize.txt') 
    } 
} 

dependencies { 
    compile 'com.android.support:support-v4:19.0.+' 
} 

Schließlich ist dies die Projekteinstellungen.Staffel-Datei.

include ':App', ':libraries:datetimepicker' 

Ich bin in der Lage erfolgreich Pakete aus der Bibliothek meiner App-Code importieren und verwenden Sie sie, aber wenn ich versuche, ich zu kompilieren erhalten folgendes:

Gradle: Execution failed for task ':App:compileDefaultFlavorDebug'. 
> Compilation failed; see the compiler error output for details. 

E:\blah\blah\MyClass.java 
Gradle: error: cannot find symbol class DatePickerDialog 
Gradle: error: package DatePickerDialog does not exist 
Gradle: error: cannot find symbol class DatePickerDialog 
Gradle: error: cannot find symbol class DatePickerDialog 
Gradle: error: cannot find symbol variable DatePickerDialog 
Gradle: error: method does not override or implement a method from a supertype 

Ich habe zu beheben versucht, dies seit 3 ​​Tagen und habe fast alle der ähnlichen Frage Lösungen, die ich hier finden konnte. Ich bin ziemlich sicher mit der Entwicklung für Android, nicht so zuversichtlich mit Gradle und habe wahrscheinlich etwas offensichtlich falsch gemacht.

einige zusätzliche Informationen:

  • Android Studio v0.3.6
  • Android SDK Errichten-Tools rev 19
  • Gradle Version 1,8

Irgendwelche Ideen, wie man dieses Problem beheben?

Antwort

65

Wenn Gradle das Bibliotheksprojekt erstellt, erstellt es den Release-Typ, selbst wenn Sie den Debug-Typ für Ihre Haupt-App erstellen (dies ist ein bug). In Ihrem Bibliotheksprojekt haben Sie Proguard für Ihren Build-Versionstyp konfiguriert, und Proguard verschleiert die Symbolnamen und macht sie für Ihre App unsichtbar.

Da Sie den Bibliothekscode steuern, sollten Sie Proguard nicht in Ihrem Bibliotheks-Build ausführen und ihn nur für Release-Builds Ihrer Haupt-App ausführen. Es wird den gesamten Code einschließlich der Abhängigkeiten verschleiern.

Wenn Sie den Bibliothekscode wirklich unabhängig voneinander verschleiern möchten, müssen Sie die Proguard-Regeln einrichten, um die öffentlichen Symbole der Bibliothek anzuzeigen, DatePickerDialog.

+0

Legende! hat perfekt funktioniert! – Gyroscope

+1

Der zweite Absatz hat meinen Tag gerettet. – sschrass

+0

thaks so viel, ich ändere set MinifyEnabled zu false, und bauen Erfolg – weigan

0

Gerade ausdrücklich sagt gradle, die Ihrer Bibliothek Projekt müssen durch Hinzufügen/Modifizieren Abschnitt

android/buildTypes/debug 

Ihrer Bibliothek des Projekts Build nicht minimierte werden.gradle Datei wie folgt (minifyEnabled falsch ist der Schlüssel):

android { 
... 
    buildTypes { 
     debug { 
      debuggable true 
      minifyEnabled false 
     } 
... 
    } 
... 
} 

Hinweis:

Hier habe ich auch anweisen, ausdrücklich gradle meiner 'debug' zu machen bauen debug (debug wahr).

Verwandte Themen