2014-05-22 4 views
6

इस post के संदर्भ में, क्या किसी के पास build.gradle फ़ाइलों की एक जोड़ी है जो एंड्रॉइड लाइब्रेरी प्रोजेक्ट से क्रैशलिटिक्स को संदर्भित करने के लिए मूल सेटअप का प्रदर्शन करती है?उदाहरण ग्रेडल ऐप और लाइब्रेरी प्रोजेक्ट्स से क्रैशलिटिक्स को संदर्भित करने के लिए फाइलें बनाएं

मुझे निम्न त्रुटि मिलती है, भले ही मैंने उपरोक्त वर्णित पोस्ट के माध्यम से प्रदान की गई सिफारिश का पालन किया हो।

यह मेरी ऐप 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 
     } 
    } 
} 

यह मेरी वर्तमान लाइब्रेरी 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 
     } 
    } 
} 

मैं Crashlytics ने कहा था कुछ समय का समर्थन पहले बस एक buildType में 'ext.enableCrashlytics' ध्वज का उपयोग करें।

उपरोक्त ग्रेडल बिल्ड फ़ाइलों का उपयोग करते हुए वर्तमान क्रमिक त्रुटि निम्न है।

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 

एक माध्यमिक सवाल के रूप में, मैं दोनों फाइलों में buildConfigField मूल्यों का एक ही सेट बनाने की जरूरत है, तो मैं के बाद मैं वर्तमान Gradle निर्माण त्रुटि अतीत मिलता है दोनों परियोजनाओं से उन्हें उपयोग करना चाहते हैं। मैं ग्रैडल और एंड्रॉइड स्टूडियो के लिए काफी नया हूं, लेकिन इंटरट्रॉन की खोज में अभी तक कोई जवाब नहीं मिला है।

अग्रिम धन्यवाद।

उत्तर

6

क्रैशलिटिक्स समर्थन के साथ कुछ ईमेल के बाद, मुझे एक समाधान मिला। अंतिम समाधान के दो पहलू थे।

  1. मूल रूप से पोस्ट किया गया त्रुटि संदेश स्थिति बता रहा था, मैं बस इसे सही ढंग से नहीं पढ़ रहा था। बस, लाइब्रेरी प्रोजेक्ट जिसे क्रैशलिटिक्स की आवश्यकता नहीं थी, अन्य लाइब्रेरी प्रोजेक्ट पर निर्भर था जिसे क्रैशलिटिक्स की आवश्यकता थी। उपर्युक्त पुस्तकालय में क्रैशलिटिक्स निर्भरता को जोड़ने से ग्रैडल बिल्ड समस्या हल हो गई।

  2. क्रैशलिटिक्स एपीआई कुंजी को क्रैशलिटिक्स के आधार पर लाइब्रेरी प्रोजेक्ट मैनिफेस्ट में जोड़ा जाना था। प्रोजेक्ट बनाया गया, लेकिन रनटाइम पर मेरे "लॉग" संदेश सबमिट नहीं किए, इसलिए कनेक्शन बनाने के बाद यह एक स्पष्ट फिक्स था।

मैंने अपने परिदृश्य में शामिल प्रत्येक (3) परियोजनाओं से ग्रैडल फ़ाइलें शामिल की हैं। उम्मीद है कि यह दूसरों को मदद करता है और मेरे संदेशों का जवाब देने के लिए क्रैशलिटिक्स में माइक को धन्यवाद देता है।

App.gradle (कॉल 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 (कॉल 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। ग्रेडल (कॉमन.लोगर पर निर्भर करता है, कोई क्रैशलिटिक्स पर कॉल करता है)

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

क्या आपको लगता है कि यह केवल लाइब्रेरी प्रोजेक्ट के लिए काम करेगा, बिना किसी क्रैशलिटिक्स से संबंधित कॉन्फ़िगरेशन के पक्ष में? – mass

+0

मुझे विश्वास नहीं है कि यह इस तथ्य पर आधारित होगा कि 'क्रैशिलिक्स। प्रारंभ करें() को ऐप (धारणा) में कॉल करने की आवश्यकता है। –

+0

स्पष्ट रूप से आप कहीं और प्रारंभ करने के लिए कॉल कर सकते हैं, फिर भी उनके बैकएंड क्रैशलिटिक्स पर आपके एप्लिकेशन पैकेज/नाम के साथ प्लगइन द्वारा जेनरेट की गई आपकी एपीआई-कुंजी जोड़ती है। इसलिए लाइब्रेरी से इनिट को कॉल करने के लिए मेरे पास अभी तक कोई वास्तविक उपयोग केस नहीं है, जब तक कि आप अपने पुस्तकालय वितरण के साथ कई अनुप्रयोगों को कवर करने के लिए ऐसा नहीं कर सकते। – mass

संबंधित मुद्दे