2013-04-30 8 views
8


मैं अनुप्रयोगों के लिए Static Library बना रहा हूं। मैंने लगभग इसे पूरा किया, लेकिन संसाधनों के साथ एक मुद्दा है।स्टेटिक लाइब्रेरी के साथ संसाधन फ़ाइलों को कैसे स्थानांतरित करें (बंडल में संसाधन कैसे लपेटें)?

मेरी स्टेटिक लाइब्रेरी बहुत सारी छवियों और ध्वनि फ़ाइलों का उपयोग करती है। मैं इसे अपनी स्टेटिक लाइब्रेरी से कैसे स्थानांतरित कर सकता हूं?

मुझे पता है कि हम इसे एक बंडल पर लपेट सकते हैं और इसे .a फ़ाइल के साथ दे सकते हैं। लेकिन मुझे नहीं पता कि बंडल फ़ाइल में छवियों और ध्वनि फ़ाइलों को कैसे लपेटें।

मैं क्या किया:

  • मैं एक बहुत खोजा, लेकिन किसी भी उपयोगी लिंक नहीं मिल सका।
  • मुझे Conceptual CFBundles संदर्भ मिला, लेकिन मेरी समस्या के लिए कोई समाधान नहीं मिला।
  • मैं XCode के लिए उपलब्ध फ़ाइल टेम्पलेट्स जाँच की है, लेकिन Settings Bundle.

उत्तर

9

वहाँ कई अच्छे कारणों के कई बंडलों और यह करने के लिए कई अलग अलग तरीकों के साथ एक आवेदन पत्र बनाने के लिए कर रहे हैं की तुलना में किसी भी अन्य प्रकार के बंडल देखा नहीं था। मेरे अनुभव करने के लिए सबसे अच्छा तरीका खुला Xcode है और एक नया बंडल परियोजना बनाने:

  1. का चयन करें: फ़ाइल -> नया प्रोजेक्ट ... -> समूह मैक OSX -> फ्रेमवर्क & लाइब्रेरी -> बंडल (!)। प्रोजेक्ट में अपनी संसाधन फाइलें जोड़ें।
  2. बंडल बनाएं क्योंकि आप अन्य आईफोन ऐप्स बनाते हैं।
  3. आप इस प्रोजेक्ट को अपनी स्थिर लाइब्रेरी प्रोजेक्ट में जोड़ सकते हैं और लाइब्रेरी बदलते समय इसे पुनर्निर्माण कर सकते हैं। आपको पता होना चाहिए कि बंडल स्वयं को आपकी लाइब्रेरी फ़ाइल से लिंक नहीं किया जाएगा।
  4. अपनी ऐप परियोजनाओं में अपनी प्रोजेक्ट में एक सामान्य संसाधन फ़ाइल के रूप में .bundle फ़ाइल जोड़ें (जोड़ें -> मौजूदा फ़ाइलें ... -> उपरोक्त निर्मित। बंडल फ़ाइल ढूंढें और चुनें। इसे कॉपी न करें)।

उदाहरण:

// Static library code: 
#define MYBUNDLE_NAME  @"MyResources.bundle" 
#define MYBUNDLE_IDENTIFIER @"eu.oaktree-ce.MyResources" 
#define MYBUNDLE_PATH  [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: MYBUNDLE_NAME] 
#define MYBUNDLE   [NSBundle bundleWithPath: MYBUNDLE_PATH] 

// Get an image file from your "static library" bundle: 

- (NSString *) getMyBundlePathFor: (NSString *) filename 
{ 
     NSBundle *libBundle = MYBUNDLE; 
     if(libBundle && filename){ 
      return [[libBundle resourcePath] stringByAppendingPathComponent: filename]; 
     } 
     return nil; 
} 

// ..... 
// Get an image file named info.png from the custom bundle 
UIImage *imageFromMyBundle = [UIImage imageWithContentsOfFile: [self getMyBundlePathFor: @"info.png"] ]; 

अधिक मदद के लिए आप जाँच कर सकते हैं इन अच्छा लेख

  1. iOS Library With Resources

  2. Resource Bundles

उम्मीद है कि यह आपकी मदद करता है।

+0

आपके उत्तर के लिए धन्यवाद :) –

+0

hmmm। आपका स्वागत है मिडहुन :-) –

+0

एक बात: imageWithContentsOfFile प्रदर्शन के मामले में खराब है छवि का उपयोग करना बेहतर है क्योंकि यह कैशिंग का उपयोग कर रहा है, इसलिए यह तेज़ हो सकता है :) इसके अतिरिक्त आप सरल परिणाम से कम कोड के साथ एक ही परिणाम प्राप्त कर सकते हैं: '[UIImage imageNamed : [NSString stringWithFormat: @ "my.bundle /% @", imageName]]; 'और बस सही बंडल नाम –

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