2015-04-30 21 views
5

Niedawno przeprowadziłem migrację projektu Android z Eclipse do Android Studio. Obecnie mój projekt ma następującą Gradle struktury skryptu:Gdzie umieścić dyrektywę wtyczki Crashlytics w plikach kompilacji Gradle

  • najwyższego poziomu pliku Gradle gromadzeniu
  • Główny moduł (mój app) Gradle plik build
  • moduł
  • A (mój app) Gradle plik build
  • moduł B (mój app) Gradle plik build
  • moduł
  • C (mój app) Gradle plik build

Treść mojego głównego Gradle bu Plik ild:

// Top-level build file where you can add configuration options common to all sub-projects/modules. 

buildscript { 
    repositories { 
     mavenCentral() 
     maven { url 'http://download.crashlytics.com/maven' } 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:1.2.1' 
     classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.+' 
     // NOTE: Do not place your application dependencies here; they belong 
     // in the individual module build.gradle files 
    } 

} 

allprojects { 
    repositories { 
     maven { url "http://dl.bintray.com/populov/maven" } 
     mavenCentral() 
    } 
} 

Chciałbym się upewnić, że crashlytics będzie obecny w całym projekcie. początkowo starał się dodać

apply plugin: 'crashlytics' 

do głównego pliku Gradle projekt, ale napotkał następujący błąd:

Error:(2, 0) Crashlytics was applied to a project without an Android plugin. Please make sure the Crashlytics plugin is applied after the appropriate Android plugin for your project.

Potem przeniósł się apply plugin: 'crashlytics' do modułu głównego (mój app) Gradle plik build a budowa była udana.

Ponieważ jestem nowy w Gradle & Android Studio, nie byłem pewien, czy potrzebuję go również do submodułów A, B, C, aby umożliwić crashlytics przechwytywanie wyjątków generujących z tych modułów. Zastanawiam się również, dlaczego nie mogę (lub jak mogę) dodać "Zastosuj plugin:" crashlytics "" do głównego pliku gradle projektu.

Czy ktoś może to dla mnie wyjaśnić?

Odpowiedz

0

Wyjątek od modułem (moduł biblioteki tak, nie jesteś moduł app) zostaną zgłoszone jeśli głównym aplikacji katastrofie. Jeśli jest poprawnie obsługiwany i nie ma awarii, nic nie zostanie zgłoszone.

Ogólnie zmienić aplikację (submodule) build.gradle. Czasami trzeba zmienić gradację najwyższego poziomu, aby dodać ogólne zależności.

Zgłoszenie wtyczki:
Nie można zastosować wtyczkę do najwyższego poziomu Gradle jak to jest projekt i nie Gradle moduł Gradle. Nie jestem pewien o tym btw.

Dodatkowa uwaga:
Twitter wykupionej Crashlytics i zintegrowany go w Fabric. Polecam korzystanie z wtyczki Fabric, która pozwoli ci mieć pewne statystyki w naprawdę fajnym interfejsie. Obsługuje również iOS i Androida na tej samej matrycy, z obsługą botów (Jira itp.).

przypadku korzystania Fabric, aplikacja Gradle plik build wola wygląda następująco:

buildscript { 
    repositories { 
     maven { url 'https://maven.fabric.io/public' } 
    } 

    dependencies { 
     classpath 'io.fabric.tools:gradle:1.+' 
    } 
} 
apply plugin: 'com.android.application' 
apply plugin: 'io.fabric' 

... 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    ... 
    compile('com.crashlytics.sdk.android:crashlytics:[email protected]') { 
     transitive = true; 
    } 
} 
+0

Jednak ja nadal nie jestem pewien co do błędu (jeśli stosuje się wtyczki na najwyższym poziomie Gradle) ..jak działa zastosowana dyrektywa wtyczki? jaki jest jego zakres? –

+0

@MaximRahlis Nie wiem, będziesz musiał zapoznać się z dokumentacją dotyczącą gradacji przeglądarek –