2016-11-30 8 views
6

का उपयोग करते समय डैगर 2 घटक उत्पन्न नहीं होते हैं जब मैं एंड्रॉइड स्टूडियो 2.2 में Jack compiler सक्षम करता हूं तो Dagger 2 घटक उत्पन्न नहीं होता है। जैक के साथ डैगर 2 का उपयोग किया जा सकता है? यदि हां, तो मैं अपने आवेदन को कॉन्फ़िगर करने के बारे में कैसे जाउंगा?जैक

से अपने आवेदन के build.gradle:

jackOptions { 
    enabled true 
    } 

compileOptions { 
    sourceCompatibility JavaVersion.VERSION_1_8 
    targetCompatibility JavaVersion.VERSION_1_8 
} 

उत्तर

8

मैं इसे समझने में 2 दिनों की तरह डूब गया। तो मैं यहां निष्कर्ष पोस्ट करने के लिए वापस घूम रहा हूं यदि यह किसी के समय बचाता है:

यह bug in Jack that prevents classpaths from working properly के कारण होता है। इसे जैक को "इन-प्रोसेस" चलाना है (उसी जेवीएम में ग्रेबल डिमन के रूप में)। android.defaultConfig.jackOptions.jackInProcess को गलत करने के लिए "पूर्व शर्त" त्रुटि से परे मिलता है लेकिन यह अन्य समस्याओं (2 जेवीएम जो होग सिस्टम संसाधन) का कारण बनता है & bugs जो अन्य (worse) तरीकों में निर्माण को तोड़ देता है। एंड्रॉयड Gradle प्लगइन है, जो पहले से ही इस के लिए ठीक है की 2.3 रिहाई के लिए

  • प्रतीक्षा:

    अभी के लिए, सबसे अच्छा समाधान हो रहा है।

  • इस दौरान, डाउनग्रेड डैगर को v2.2 तक डाउनग्रेड करें।
    जैक के साथ गुवा संघर्ष से बचने के लिए यह उच्चतम संस्करण है।

संपादित करें: अद्यतन 2017/01/14:
मैं के लिए जैक के साथ कई अन्य समस्याओं में भाग गया और इसके बारे में बहुत थक गया है कि मैं retrolambda में स्विच हो गया और लात मारी अपने आप को इस पहले नहीं कर रही! अभी, जैक बस हल होने की तुलना में अधिक समस्याएं पैदा करता है। बस प्लस के साथ लाइनें जोड़ें और लाइनों को कम से कम लाइनों को हटाएं और जैक के साथ मिलकर काम करने के लिए इंतजार करते समय आप डैगर 2.8 पर वापस जा सकते हैं!

+plugins { 
+ id "me.tatarka.retrolambda" version "3.4.0" 
+} 

apply plugin: 'com.android.application' 
+apply plugin: 'me.tatarka.retrolambda' 

-  jackOptions { 
-   enabled true 
-  } 

भी तेजी से retrolambda के लिए बनाता है, अपने gradle.properties फाइल करने के लिए org.gradle.jvmargs=-Xmx4608M जोड़ सकते हैं ताकि Dexing प्रक्रिया में हो सकता है। अब, मैं डैगर 2.8 पर हूं और मेरा साफ बनाता है केवल 12 सेकंड हैं, अच्छा रिडेंस, जैक!

+0

धीरे-धीरे 2.2 से 2.3 तक अपडेट करने से मेरे लिए चाल थी। धन्यवाद – Gonzalo

3

documentation page on Jack and Jill एनोटेशन प्रोसेसर के लिए विशेष निर्देश "संकलन समय पर लागू किया जाना है लेकिन आपके APK में शामिल किया जाना नहीं", annotationProcessor निर्भरता गुंजाइश के उपयोग की सलाह दे है। उदाहरण संयोग से डैगर 2:

dependencies { 
    compile 'com.google.dagger:dagger:2.0' 
    annotationProcessor 'com.google.dagger:dagger-compiler:2.0' 
} 
+3

मुझे निम्न त्रुटि मिल रही है त्रुटि: निष्पादन कार्य के लिए विफल रहा ': app: transformJackWithJackForDebug'। > com.android.jack.ir.JNodeInternalError: java.lang.Exception: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkState (ZLjava/lang/String; Ljava/lang/Object; Ljava/लैंग/ऑब्जेक्ट; लाजावा/लैंग/ऑब्जेक्ट;) वी –

+0

@ मारियो क्लासपाथ पर गुवा की बेमिसाल प्रतियों के साथ एक समस्या है। एक संभावना मैंने नहीं देखा था कि डैगर ने 2.0 से थोड़ा आगे बढ़ाया है, इसलिए '2.8' या' 2.x' बहुत बेहतर काम कर सकता है। –

+0

मैं संस्करण 2.8 –

0

जैक अब बहिष्कृत है, this post देखें।

आप 3.0 पूर्वावलोकन 1 के लिए अपने Android स्टूडियो के उन्नयन के लिए, जावा 8.

उपयोग करने के लिए आप इसे (अन्य lib के साथ संघर्ष) अपग्रेड नहीं कर सकते हैं, तो सक्षम होने के लिए है या आप एक रिलीज के लिए इंतजार करना चाहते हैं संस्करण, आप इस समाधान का समाधान करने की कोशिश कर सकते हैं:

  • retrolamba lib जोड़ें, instructions here का पालन करें।
संबंधित मुद्दे