2016-02-19 16 views
5

मैं एक स्वच्छ समारोह है कि एक दृश्य पर कुछ करता है ठीक है जब तक मैं ProGuard का उपयोग नहीं करता। मैं देख सकता हूं कि AdapterIndeksuDlaSpinnera अपेक्षित के रूप में उलझा हुआ है, लेकिन जब अनुप्रयोग "एडाप्टर IndeksuDlaSpinnera लोड नहीं कर सकता" के साथ प्रोजेक्ट विफल हो जाता है (जबकि इसे मैंगलेड एडाप्टर नाम के बारे में शिकायत करनी चाहिए)।Kotlin, ProGuard और lambdas

मैं सभी एडेप्टर है कि मेरे withView

-keep class pl.qus.xenoamp.adapter.** { *; } 

अंदर इस्तेमाल किया जा सकता का mangling को अक्षम करके temporaty वैकल्पिक हल बनाने में सक्षम था, लेकिन मैं यह एक अच्छा समाधान है नहीं लग रहा है (और मुझे नहीं पता कि क्या अन्य वर्गों है इस तरह से असफल हो सकता है!)। तो क्या कोई यह बता सकता है कि समस्या क्या है और withView के अंदर उपयोग की जाने वाली अन्य कक्षाओं के समान अवसरों को संभावित रूप से ठीक करने के लिए प्रोगार्ड लाइन को क्या जोड़ना चाहिए?

+1

क्या आप एडाप्टर के साथ-साथ फ़ाइल के साथ '.class' फ़ाइल पोस्ट कर सकते हैं, जिसमें बंद होना शामिल है? वे एंड्रॉइड प्रोजेक्ट के 'बिल्ड/इंटरमीडिएट्स/क्लासेस /' में पाए जा सकते हैं। – user1643723

+0

हमें [चैट में इस चर्चा को जारी रखें] (http://chat.stackoverflow.com/rooms/103964/discussion-between-user1643723-and-ssuukk)। – user1643723

उत्तर

1

यह एक कठिन है। संक्षेप में, प्रोगुर्ड को कोटलिन के बारे में पता नहीं है। यह Class.forName() जैसी चीजों का पता लगाने के लिए एक सरल कोड विश्लेषण का उपयोग कर रहा है और उनके आसपास काम करता है, लेकिन कुछ और जटिल के लिए असफल हो सकता है। वास्तव में क्या होता है यह जानने के लिए आपको build उपनिर्देशिका (क्या आप प्रासंगिक पोस्ट कर सकते हैं?) से उत्पन्न .class फ़ाइलों को देखने की आवश्यकता है।

अभी के लिए आपको दो बातें कर सकते हैं:

  • Kotlin devs पूछो Kotlin संकलक के लिए उचित कहानियो/अनुकूलन समर्थन जोड़ने के लिए: यह वास्तव में सही तरीके से काम करने के लिए के रूप में हर गैर द्वारा प्रदर्शन है, अस्तित्व में -जावा कंपाइलर;
  • obfuscation से अपने स्वयं के स्रोतों को बाहर निकालें (अधिकांश गतिविधियां और दृश्य किसी भी तरह से अच्छी तरह से obfuscated नहीं होने जा रहे हैं)।
+1

आप https://youtrack.jetbrains.com पर obfuscation जैसी चीजों के लिए एक फीचर अनुरोध जोड़ सकते हैं ... यह सुनिश्चित करने के लिए कि क्या सुरक्षित है या केवल क्लास फ़ाइल नहीं दी गई है, पोस्ट-संकलन obfuscaters की कठिनाई को शामिल करना सुनिश्चित करें। (लेकिन फिर, वर्तमान संकलन मॉड्यूल के बाहर उपयोगों को जानने के बिना भी परेशान करना मुश्किल है, इसलिए संकलन-समय संस्करण में समस्याएं भी हो सकती हैं, बस अलग-अलग) –