2014-05-22 5 views
6

Czy w odniesieniu do tego post ktoś ma parę plików build.gradle, które demonstrują podstawową konfigurację odwoływania się do Crashlytics z projektu biblioteki Androida?Przykładowe pliki kompilacji gradacji do odwoływania się do Crashlytics z projektów App i Library

Otrzymuję następujący błąd, mimo że postępowałem zgodnie z zaleceniem dostarczonym przez pocztę pierwotnie wspomnianą powyżej.

To jest plik aplikacji gradle.build.

buildscript { 
    repositories { 
     mavenCentral() 
     maven { url 'http://download.crashlytics.com/maven' } 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.10.+' 
     classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.+' 
    } 
} 

apply plugin: 'android' 
apply plugin: 'crashlytics' 

repositories { 
    mavenCentral() 
    maven { url 'http://download.crashlytics.com/maven' } 
} 

dependencies { 
    compile project(':Common.Logger') 
    compile project(':Common.ProtocolBuffer') 
    compile project(':Common.Utils') 
    compile 'com.google.android.gms:play-services:+' 
    compile 'com.android.support:support-v4:+' 
    compile 'com.crashlytics.android:crashlytics:1.+' 
    androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.1' 
    androidTestCompile 'junit:junit:4.11' 
} 

android { 
    compileSdkVersion 19 
    buildToolsVersion '19.0.3' 

    buildTypes { 
     debug { 
      buildConfigField "boolean", "USE_LOGCAT", "true" 
      buildConfigField "boolean", "USE_CRASHLYTICS", "false" 
      ext.enableCrashlytics=false 
     } 

     release { 
      runProguard true 
      debuggable false 
      proguardFile getDefaultProguardFile('proguard-android-optimize.txt') 
      buildConfigField "boolean", "USE_LOGCAT", "false" 
      buildConfigField "boolean", "USE_CRASHLYTICS", "true" 
      ext.enableCrashlytics=true 
     } 
    } 

    sourceSets { 
     packagingOptions { 
      exclude 'LICENSE.txt' 
     } 

     lintOptions { 
      abortOnError false 
     } 
    } 
} 

To jest mój bieżący plik biblioteki build.gradle.

buildscript { 
    repositories { 
     mavenCentral() 
     maven { url 'http://download.crashlytics.com/maven' } 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.10.+' 
     classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.+' 
    } 
} 

repositories { 
    mavenCentral() 
    maven { url 'http://download.crashlytics.com/maven' } 
} 

dependencies { 
    compile 'com.crashlytics.android:crashlytics:1.+' 
} 

apply plugin: 'android-library' 

android { 
    compileSdkVersion 19 
    buildToolsVersion '19.0.3' 

    buildTypes { 
     debug { 
      buildConfigField "boolean", "USE_LOGCAT", "true" 
      buildConfigField "boolean", "USE_CRASHLYTICS", "false" 
      ext.enableCrashlytics=false 
     } 

     release { 
      buildConfigField "boolean", "USE_LOGCAT", "false" 
      buildConfigField "boolean", "USE_CRASHLYTICS", "true" 
      ext.enableCrashlytics=true 
     } 
    } 

    sourceSets { 
     lintOptions { 
      abortOnError false 
     } 
    } 
} 

powiedziano mi przez Crashlytics wspierać jakiś czas temu po prostu użyć flagi „ext.enableCrashlytics” w buildType.

Poniżej znajduje się bieżący błąd gradowania, który występuje przy użyciu powyższych plików kompilacji gradle.

Error:A problem occurred configuring root project 'ManageMyVMail.Android'. 
> A problem occurred configuring project ':Common.ProtocolBuffer'. 
    > Could not resolve all dependencies for configuration ':Common.ProtocolBuffer:_debugCompile'. 
     > Could not find any version that matches com.crashlytics.android:crashlytics:1.+. 
     Required by: 
      ManageMyVMail.Android:Common.ProtocolBuffer:unspecified > ManageMyVMail.Android:Common.Logger:unspecified 

jako pytanie wtórnym, muszę utworzyć ten sam zestaw wartości buildConfigField w obu plikach, jeśli chcę z nich korzystać zarówno z projektów po tym, jak ominąć bieżącego Gradle błędem kompilacji. Jestem całkiem nowy w Gradle i Android Studio, ale przeszukanie Intertrona nie dało jeszcze odpowiedzi.

Z góry dziękuję.

Odpowiedz

6

Po kilku e-mailach z obsługą Crashlytics znalazłem rozwiązanie. Ostateczne rozwiązanie miało dwa aspekty.

  1. Pierwotnie opublikowany komunikat o błędzie stwierdzał sytuację, po prostu nie czytałem poprawnie. Po prostu projekt biblioteki, który nie wymagał Crashlytics, zależał od innego projektu biblioteki, który potrzebował Crashlytics. Dodanie zależności Crashlytics do wspomnianej biblioteki rozwiązało problem z kompilacją Gradle.

  2. Klucz API Crashlytics musiał zostać dodany do manifestu projektu biblioteki w zależności od Crashlytics. Projekt został zbudowany, ale nie przesłał moich komunikatów "log" w czasie wykonywania, więc była to oczywista poprawka po nawiązaniu połączenia.

Dołączyłem pliki Gradle z każdego z (3) projektów związanych z moim scenariuszem. Mam nadzieję, że to pomoże innym i dzięki Mike'owi w Crashlytics za odpowiedź na moje wiadomości.

App.gradle (wzywa Crashlytics.start())

buildscript { 
    repositories { 
     mavenCentral() 
     maven { url 'http://download.crashlytics.com/maven' } 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.10.+' 
     classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.+' 
    } 
} 

apply plugin: 'android' 
apply plugin: 'crashlytics' 

repositories { 
    mavenCentral() 
    maven { url 'http://download.crashlytics.com/maven' } 
} 

dependencies { 
    compile project(':Common.Logger') 
    compile project(':Common.ProtocolBuffer') 
    compile project(':Common.Utils') 
    compile 'com.google.android.gms:play-services:+' 
    compile 'com.android.support:support-v4:+' 
    compile 'com.crashlytics.android:crashlytics:1.+' 
    androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.1' 
    androidTestCompile 'junit:junit:4.11' 
} 

android { 
    compileSdkVersion 19 
    buildToolsVersion "19.1.0" 

    buildTypes { 
     debug { 
      buildConfigField "boolean", "USE_CRASHLYTICS", "false" 
     } 

     release { 
      buildConfigField "boolean", "USE_CRASHLYTICS", "true" 
      runProguard true 
      debuggable false 
      proguardFile getDefaultProguardFile('proguard-android-optimize.txt') 
     } 
    } 

    sourceSets { 
     packagingOptions { 
      exclude 'LICENSE.txt' 
     } 

     lintOptions { 
      abortOnError false 
     } 
    } 
} 

Common.Logger.gradle (wzywa Crashlyics.log())

apply plugin: 'android-library' 

repositories { 
    maven { url 'http://download.crashlytics.com/maven' } 
} 

dependencies { 
    compile 'com.crashlytics.android:crashlytics:1.+' 
} 

android { 
    compileSdkVersion 19 
    buildToolsVersion "19.1.0" 

    buildTypes { 
     debug { 
      ext.enableCrashlytics = false 
     } 

     release { 
      ext.enableCrashlytics = true 
     } 
    } 

    sourceSets { 
     lintOptions { 
      abortOnError false 
     } 
    } 
} 

Common.ProtocolBuffer. gradle (zależy od Common.Logger, no Crashlytics dzwoni)

apply plugin: 'android-library' 

repositories { 
    mavenCentral() 
    maven { url 'http://download.crashlytics.com/maven' } 
} 

dependencies { 
    compile 'com.google.protobuf:protobuf-java:2.4.1' 
    compile 'org.apache.commons:commons-io:1.3.2' 
    compile 'com.crashlytics.android:crashlytics:1.+' 
    compile project(':Common.Logger') 
} 

android { 
    compileSdkVersion 19 
    buildToolsVersion "19.1.0" 

    sourceSets { 
     lintOptions { 
      abortOnError false 
     } 
    } 
} 
+0

Czy uważasz, że to działałoby tylko w przypadku projektu bibliotecznego, bez konfiguracji związanej z Crashlytics po stronie aplikacji? – mass

+0

Nie wierzę, że byłoby to oparte na fakcie, że 'Crashyltics.Initialize()' musi zostać wywołane w aplikacji (założeniu). –

+0

Wygląda na to, że możesz wywołać inicjowanie w innym miejscu, ale w ich zapleczu Crashlytics paruje twój klucz API wygenerowany przez wtyczkę z Twoim pakietem aplikacji/nazwą. W związku z tym nie ma dla mnie rzeczywistego przypadku (jak dotąd) wywoływania init z biblioteki, chyba że nie możesz tego zrobić, aby pokryć wiele aplikacji dystrybucją biblioteki. – mass

Powiązane problemy