2015-06-15 17 views
5

Xin chào, tôi hiện đang di chuyển phần android của ứng dụng cordova/phonegap từ ant sang gradle và tôi đang cố gắng thêm SDK vải.Các vấn đề với việc thêm phụ thuộc vải vào dự án android được xây dựng bằng cordova

Trong các dự án cordova, build.gradle dường như được tạo tự động và tất cả thay đổi sẽ được thêm vào build-extras.gradle. Làm thế nào tôi có thể thêm phụ thuộc bổ sung trong khối buildscript?

Đây là cách các công cụ cho vải nên xem trong build.gradle, và nó hoạt động nếu tôi đặt nó ở đây, nhưng nó được ghi đè.

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.+' 
    } 
} 

Nếu tôi thêm khối này trong việc xây dựng extras.gradle, Groovy phàn nàn với

Không thể áp dụng Plugin [id 'io.fabric'] Plugin với id 'io.fabric' không tìm thấy.

nhưng nếu tôi thêm nó vào build.gradle nó có thể bị ghi đè và sẽ không được thêm vào đồng nghiệp của tôi (có cảnh báo ở đầu tệp không được chỉnh sửa).

My 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 
    } 
} 

Tôi khá mới để Gradle ... trong build.gradle có dòng này ... có lẽ nó có thể giúp tôi?

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

Trả lời

1

Để giải quyết vấn đề Tôi hiện đang sử dụng một cái móc cordova before_build đó sẽ ghi đè các build.gradle và MainActivity.java của tôi với phiên bản tùy chỉnh của riêng tôi được lưu trữ trong một thư mục nền tảng phi trong kho dự án cordova tôi.

MainActivity.java đã sửa đổi chỉ có dòng bổ sung này được thêm sau loadUrl (launchUrl);

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

Đây là móc nối 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 

Trong build.gradle bạn chỉ cần để thêm video này sau khi buildscript {

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

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

Và trong xây dựng-extras.gradle, trong sự phụ thuộc cuối cùng chặn

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

này không phải là một giải pháp cuối cùng, và chỉ có một cách rất hacky để làm cho nó hoạt động. Nó có thể phá vỡ các bản cập nhật cordova.

Tôi sẽ trả lời lại nếu tôi tìm được giải pháp tốt hơn. Tập lệnh bash này sẽ hoạt động nếu bạn có Linux và có thể nếu bạn có hệ thống Mac.

+0

Hi Paul, bạn sẽ nhớ chia sẻ kịch bản của bạn? –

+1

Tất nhiên. Trong câu trả lời được cập nhật là tập lệnh mà tôi đã sử dụng. –

1

Dựa trên cách giải quyết tương tự trong https://github.com/phonegap/phonegap-plugin-push/issues/1878, tôi có thể tìm cách tiếp cận ít xâm phạm hơn.

Đã xảy ra sự cố tương tự đối với plugin dịch vụ google. Lỗi này là

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

Thay vì thay thế toàn bộ build.gradle được tạo, hãy thêm phụ thuộc classpath để tạo.gradle, ngay bên cạnh dòng tham chiếu đến các công cụ xây dựng android, sử dụng móc:

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

Các kịch bản móc có sẵn trong https://gist.github.com/kkleokrish/ac794fc3280bf23e81cce9b6a7f138f9

Các vấn đề liên quan