2012-04-25 8 views
5

मैंने एंड्रॉइड के लिए लाइब्रेरी से एक स्रोत कोड डाउनलोड किया, इसे संकलित किया और मुझे एक .jar फ़ाइल मिली, मैंने अपनी परियोजना में शामिल किया और मैंने इसका उपयोग करने की कोशिश की लेकिन मैं हमेशा java.lang प्राप्त करें। NoClassDefFoundError, मैंने देखा कि जार फ़ाइल में आर $ XXX फ़ाइलें नहीं हैं, मैंने यह पोस्ट पढ़ा: Android Library Import delete R और समाधानों की कोशिश की लेकिन मेरे लिए कोई भी काम नहीं किया।java.lang.NoClassDefFound एंड्रॉइड लाइब्रेरी का उपयोग करते समय सभी आर क्लासिस के साथ त्रुटि

मैंने अपनी खुद की सरल लाइब्रेरी बनाई और मैंने देखा कि आर फाइलें जार में शामिल नहीं हैं, मुझे WinRar का उपयोग करके मैन्युअल रूप से .class फ़ाइलों को जोड़ना है, लेकिन मुझे लगता है कि मुझे कुछ आसान याद आ रहा है, मैं ग्रहण का उपयोग कर रहा हूं एडीटी के साथ।

हर किसी

उत्तर

7

आप जार फ़ाइलों बना रहे हैं के लिए धन्यवाद तो आप जार फ़ाइल में r.java, manifeast फ़ाइल को शामिल नहीं करना चाहिए।

क्योंकि जार को शिकायत के दौरान अनुपालन नहीं किया जाएगा और शिकायत समय के दौरान कोई स्थिर पूर्णांक नहीं बनायेगा।

एंड्रॉइड में हमारे पास Android LIbrary है जो एंड्रॉइड प्रोजेक्ट के समान है लेकिन अन्य परियोजनाओं में शामिल किया जा सकता है।

और यदि अभी भी आपको जार फ़ाइल की आवश्यकता है तो बस जार में क्लास फाइलों को रखें, अपने सभी संसाधनों में एप्लिकेशन और जावा फाइलों से शामिल हैं, आप रनटाइम के दौरान संसाधनों को संदर्भित करने के लिए नीचे दिए गए कोड का उपयोग कर सकते हैं।

कि आपको अपने कोड में R.drawable.icon के बजाय getResourseIdByName (getPackageName(), "drawable", "icon") का उपयोग करना होगा। नीचे GetResourceIdByName ::

public int getResourseIdByName(String packageName, String className, String name) { 
      int id = 0; 
     try { 
      for (int i = 0; i < Class.forName(packageName + ".R").getClasses().length; i++) { 
       if(Class.forName(packageName + ".R").getClasses()[i].getName().split("\\$")[1].equals(className)) { 
        if(Class.forName(packageName + ".R").getClasses()[i] != null) 
         id = Class.forName(packageName + ".R").getClasses()[i].getField(name).getInt(Class.forName(packageName + ".R").getClasses()[i]); 
        break; 
       } 
      } 
     } catch (ClassNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IllegalArgumentException e) { 
      e.printStackTrace(); 
     } catch (SecurityException e) { 
      e.printStackTrace(); 
     } catch (IllegalAccessException e) { 
      e.printStackTrace(); 
     } catch (NoSuchFieldException e) { 
      e.printStackTrace(); 
     } 
     return id; 
    } 
के लिए कोड है
संबंधित मुद्दे

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