"कोटलीन में उस वर्ग के बजाय डैगर प्रोसेसर को चलाना पसंद करते हैं"


124

मुझे यह नोट बिल्ड में मिल रहा है जब भी मैं एक कोटलिन वर्ग (btw) में एक इंजेक्शन करता हूं, मेरे पास कोटलिन और जावा दोनों के साथ एक मिश्रित एंड्रॉइड प्रोजेक्ट है।

उदाहरण के लिए, इस compileStagingDebugJavaWithJavacग्रेडल टास्क के बाद: (StagingDebug मेरा बिल्ड वेरिएंट है), मुझे यह संदेश मिला:

"नोट: Com.packageNameXXX.CourseDiscoveryFragment के लिए एक सदस्य इंजेक्टर या फैक्ट्री बनाना। इसके बजाय उस वर्ग के ऊपर डैगर प्रोसेसर चलाना पसंद करें।"

मेरा कोर्सडिस्कवरी मैपफ्रेम कोड यहाँ देखा जा सकता है:

class CourseDiscoveryMapFragment : Fragment(){

    @Inject
    lateinit var presenter: CourseDiscoveryMapPresenter

    lateinit var mapView: MapView

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {

        val view = inflater.inflate(R.layout.fragment_discovery_map, container, false)

        MapsInitializer.initialize(activity)

        mapView = view.mapView
        mapView.onCreate(savedInstanceState?.getBundle(BUNDLE_KEY_MAP_STATE))

        (activity as BaseActivity)
                .activityComponent.inject(this)
}

और मेरी गतिविधिकम्पोनेंट है:

@ActivityScope
@Subcomponent(modules = ActivityModule.class)
public interface ActivityComponent {

    void inject(BaseActivity baseActivity);

    void inject(CourseDiscoveryMapFragment fragment);

    //Exposed to sub-graphs.
    Activity activity();
}

इसलिए, मैं कोटलिन में खंजर के इंजेक्शन होने के साथ-साथ जावा में लिखे डैगर कंपोनेंट और मॉड्यूल को लिख रहा हूं।

क्या यह कोई ऐसी चीज है जिसके बारे में मुझे चिंतित होना चाहिए?

धन्यवाद।


क्या आप पूरी त्रुटि / चेतावनी और उससे संबंधित कोड भी पोस्ट कर सकते हैं?
marcospereira

4
प्रश्न को अधिक विस्तार की आवश्यकता है। आपने मूल रूप से एक प्रश्न के रूप में एक Google क्वेरी लिखी थी।
जैसन मिनार्ड

@marcospereira का पुन: संपादन! धन्यवाद!
फैबियो कारबालो

4
अरे, क्या आपको उस चेतावनी का समाधान या शायद कारण मिला?
wojciech_maciejewski

3
यहाँ जवाब है: github.com/square/dagger/issues/537
R. Zagórski

जवाबों:


5

मुझे डर है कि तुम नहीं कर सकते। कोटलिन में निर्भरता मॉड्यूल क्यों नहीं लिखते हैं?

जावा में निर्भरता मॉड्यूल लिखने के लिए, आपको अपनी ग्रेड स्क्रिप्ट को इस तरह से कॉन्फ़िगर करने की आवश्यकता है:

 compile 'com.google.dagger:dagger:2.8'
 apt 'com.google.dagger:dagger-compiler:2.8'

लेकिन, कोटलिन में निर्भरता मॉड्यूल लिखने के लिए, आपको अपनी ग्रेड स्क्रिप्ट को इस तरह से कॉन्फ़िगर करना चाहिए:

compile 'com.google.dagger:dagger:2.8' 
kapt 'com.google.dagger:dagger-compiler:2.8'

संकलन प्रक्रिया के दौरान निर्भरता कोड उत्पन्न करने के लिए डैगर को एनोटेशन प्रोसेसिंग टूल की आवश्यकता होती है। इसलिए मुझे लगता है कि आपको सही भाषा के अनुसार सही APT (एनोटेशन प्रोसेसिंग टूल) का उपयोग करने की आवश्यकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.