2015-06-15 14 views
5

Witam Obecnie migruję część android app mojej app cordova/phonegap od ant do gradle i próbuję dodać SDK tkaniny.Problemy z dodawaniem zależności tkaniny do projektu Android cordova

W projektach cordova plik build.gradle wydaje się być automatycznie generowany, a wszystkie zmiany należy dodać do build-extras.gradle. Jak mogę dodać dodatkowe zależności w bloku buildscript?

Oto, jak materiał powinien wyglądać w build.gradle, i działa, jeśli umieściłem go tutaj, ale został nadpisany.

buildscript { 
    repositories { 
     mavenCentral() 
     // this line needs to be added 
     maven { url 'https://maven.fabric.io/public' } 
    } 

    // this block needs to be added 
    dependencies {    
     classpath 'io.fabric.tools:gradle:1.+' 
    } 
} 

Jeśli dodać ten blok w gromadzeniu extras.gradle, Groovy narzeka

Nie udało się zastosować wtyczki [id 'io.fabric'] Plugin o identyfikatorze 'io.fabric' nie znaleziono.

ale jeśli dodać go do build.gradle może uzyskać zamienione na i nie zostanie dodany do moich kolegów buduje (jest ostrzeżenie na początku pliku, że nie powinno być edytowane).

Mój build-extras.gradle

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

    dependencies { 
     classpath 'io.fabric.tools:gradle:1.+' 
    } 
} 

android { 
    dependencies { 
     compile('com.facebook.android:facebook-android-sdk:3.21.1') { 
      exclude module: 'support-v4' 
     } 
     compile 'com.google.android.gms:play-services:7.5.0' 
    } 

// dexOptions { 
//  preDexLibraries = false 
// } 
} 

apply plugin: 'io.fabric' 

repositories { 
    jcenter() 
    maven { url 'https://maven.fabric.io/public' } 
} 

dependencies { 
    // Crashlytics Kit 
    compile('com.crashlytics.sdk.android:crashlytics:[email protected]') { 
     transitive = true 
    } 
} 

Jestem całkiem nowy, Gradle ... w build.gradle istnieje ta linia ... może mi może pomóc?

// Allow plugins to declare Maven dependencies via build-extras.gradle. 
repositories { 
    mavenCentral() 
} 

Odpowiedz

1

Aby rozwiązać ten problem Obecnie używam hak Cordova before_build który zastępuje build.gradle i moją MainActivity.java z własnej niestandardowej wersji zapisanej w folderze spoza platformy w moim repozytorium projektu Cordova.

Zmodyfikowana MainActivity.java ma właśnie tę dodatkową linię dodaną po loadUrl (launchUrl);

Fabric.with(this, new Crashlytics()); 

Oto hak Cordova.

/hooks/before_build/addGradleExtras.sh 

#!/bin/sh 

if [ -d "platforms/android" ]; then 

echo "copying extra gradle configuration to android directory" 
cp resources/build-extras.gradle platforms/android/build-extras.gradle 

echo "OVERWRITING GENERATED build.gradle IN PROJECT, AS LONG AS WE DO NOT FIND A BETTER WAY" 
cp resources/build.gradle platforms/android/build.gradle 

echo "Adding fabric.properties file" 
cp resources/fabric.properties platforms/android/fabric.properties 

echo "Overwriting mainactivity with our changes" 
cp resources/MainActivity.java platforms/android/src/com/updatemi/app2/MainActivity.java 

W build.gradle wystarczy dodać to po buildscript {

repositories { 
    mavenCentral() 
    maven { url 'https://maven.fabric.io/public' } 
} 

dependencies { 
    classpath 'io.fabric.tools:gradle:1.+' 
} 

iw gromadzeniu extras.gradle w ostatnich zależnościami zablokować

compile('com.crashlytics.sdk.android:crashlytics:[email protected]') { 
     transitive = true 
    } 

ten nie jest ostatecznym rozwiązaniem, a jedynie bardzo odurzającym sposobem na jego działanie. To może przerwać aktualizacje Cordova.

Będę odpowiedzieć ponownie, jeśli znajdę lepsze rozwiązanie. Te skrypty basha będą działać, jeśli masz Linuksa, a może, jeśli masz system Mac.

+0

Cześć Paul, czy mogłabyś dzielić swój skrypt? –

+1

Oczywiście. W zaktualizowanej odpowiedzi jest skrypt, którego użyłem. –

1

W oparciu o podobne obejście w https://github.com/phonegap/phonegap-plugin-push/issues/1878, mogłem znaleźć mniej inwazyjne podejście.

Zrobiono podobny problem dla wtyczki google-services. Błąd był następujący:

Plugin with id 'com.google.gms.google-services' not found. 

Zamiast zastępować cały wygenerowany build.gradle, dodano zależność classpath do kompilacji.Gradle, tuż obok linii, która odwołuje android narzędzia budować, wykorzystujące haki:

classpath 'com.android.tools.build:gradle:1.5.0' 

Skrypt hak jest dostępny w https://gist.github.com/kkleokrish/ac794fc3280bf23e81cce9b6a7f138f9

Powiązane problemy