2011-03-30 8 views
9

मैं एक एंड्रॉइड एप्लिकेशन के भीतर एक थर्ड पार्टी जार फ़ाइल का उपयोग करने की कोशिश कर रहा हूं। मैं जार फ़ाइल में कुछ कक्षाओं का उपयोग ठीक करने में सक्षम हूं। हालांकि, कक्षाओं में से एक वर्ग कुछ जावा वर्गों का संदर्भ देता है जो दल्विक वीएम द्वारा समर्थित नहीं दिखते हैं। इन त्रुटियों को मैं LogCat में देख रहा हूँ में से कुछ हैं:क्या एंड्रॉइड त्रुटि के लिए कोई काम है "वर्चुअल विधि जावा/बीन्स/प्रॉपर्टी डिस्क्रिप्टर को हल करने में असमर्थ"?

Unable to find class referenced in signature java/beans/PropertyDescriptor. 
Unable to resolve virtual method java/beans/PropertyDescriptor.getName(). 
Unable to resolve virtual method java/beans/PropertyDescriptor.getReadMethod(). 
Unable to resolve static method java/beans/Introspector.getBeanInfo(). 
Unable to resolve exception class java/beans/IntrospectionException. 

ऐसा लगता है कि आत्मनिरीक्षण और प्रतिबिंब से संबंधित जावा वर्गों Dalvik द्वारा समर्थित नहीं हैं। मैं दो चीजों को जानना चाहता हूं। क्या यह निकट भविष्य में दल्विक में इसका समर्थन करने की योजना है? दूसरा, क्या किसी के पास इस काम के आसपास के आसपास के काम के लिए कोई सुझाव है?

उत्तर

9

ऐसा प्रतीत होता है कि आत्मनिरीक्षण और प्रतिबिंब से संबंधित जावा वर्ग दल्विक द्वारा समर्थित नहीं हैं।

कंबल आधार पर नहीं, AFAIK। कोर एंड्रॉइड टीम का एक उद्देश्य डिवाइस की लागत को कम करने के लिए फर्मवेयर को छोटा रखना है। इसका एक दुष्प्रभाव केवल java.* और javax.* से कक्षाएं शामिल करना है जो उन्हें आवश्यक हैं। मूल रूप से, एंड्रॉइड में java.beans.* में से कोई भी अस्तित्व में नहीं था; अब, कुछ वर्ग और इंटरफेस उपलब्ध हैं, लेकिन पूरे पैकेज नहीं।

क्या यह निकट भविष्य में दल्विक में इसका समर्थन करने की योजना है?

आपको पता चलेगा कि बाकी के बारे में क्या पता है, जो कहने के लिए, केवल अगर यह रिलीज में दिखाई देता है।

दूसरा, क्या किसी के पास इस समस्या के आसपास के आसपास के काम के लिए कोई सुझाव है?

तीसरे पक्ष के जार एक ओपन सोर्स प्रोजेक्ट है:

  1. ले लो आवश्यक java.beans अपाचे सद्भाव से कक्षाओं और उन्हें अपने प्रोजेक्ट में डाल
  2. उन्हें एक अलग पैकेज में refactor (जैसे, bondy.beans), के बाद से एंड्रॉयड अच्छा नहीं लगेगा ज्यादा अगर आप
  3. वर्गों के अपने पुनर्संशोधित संस्करण का उपयोग करने के लिए तीसरे पक्ष के जार को संशोधित अपने प्रोजेक्ट में java.beans वर्गों लोड करके देखें

यह संभव है कि jarjar इसके बारे में कुछ भी कर सकता है - मैंने अभी तक टूल का उपयोग नहीं किया है और इसकी क्षमताओं की सीमा को नहीं जानते हैं।

+0

यह सलाह सही है। आगे जर्जर तकनीकी विवरण यहां वर्णित हैं: http://code.google.com/p/dalvik/wiki/JavaxPackages –

+1

एंड्रॉइड को खुश करने के लिए सिर्फ 3 वें पार्टी जार को संशोधित करना बहुत दर्दनाक है (आपको मूल रूप से उन्हें स्रोत से पुनर्निर्माण करना होगा)। यह एक दयालु बात है कि एंड्रॉइड बीनइन्फो के रूप में कुछ मूलभूत समर्थन नहीं करता है। –

1

अपाचे सद्भावना लंबे समय से सेवानिवृत्त हो गई है। मैं openbeans का उपयोग कर रहा हूं। और यह मेरे लिए सभी समस्या हल करता है।

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