मैं कुछ पुन: प्रयोज्य कोड के लिए एक ढांचा बनाना चाहता हूं जिसे मैं अन्य आईफोन ऐप्स में शामिल करना चाहता हूं। यह करने के लिए सबसे अच्छा तरीका क्या है? आदर्श रूप में, मैं इसे बिल्टिन फ्रेमवर्क की तरह काम करना चाहता हूं और ऐप को बिल्ड फाइलों के साथ मिलकर बिना इसका इस्तेमाल कर रहा हूं।मैं एक आईफोन ढांचा कैसे बना सकता हूं और इसे अन्य आईफोन अनुप्रयोगों में उपयोग कर सकता हूं
उत्तर
मैं एक ही चीज़ के बारे में सोच रहा हूं। अब तक मैं बस इतना करने में सक्षम हूं कि एक परियोजना को जिस तरह से मैं चाहता हूं उसे एक नई परियोजना शुरू करने के लिए इसे किसी अन्य फ़ोल्डर में कॉपी करें। फिर मैं .xcodeproj फ़ाइल का नाम बदलता हूं और उसे खोलता हूं। फिर मैं नया ऐप बनाने से पहले मूल बातें (आइकन, डिफ़ॉल्ट.png, लक्ष्य, निष्पादन योग्य) को कस्टमाइज़ करता हूं।
यह घबराहट है, और जिस तरह से कोड पुन: उपयोग करने के लिए काम नहीं किया जाता है। मुझे यकीन है कि बेहतर समाधान हैं। शायद स्रोत कोड प्रबंधन/संस्करण नियंत्रण का कुछ चालाक उपयोग? शायद एक्सकोड में बनाया गया कुछ? अन्य विचार? मैं यहां और अधिक पोस्ट देखने के लिए तत्पर हूं।
ऐप्पल आईफोन पर कस्टम ढांचे के उपयोग को रोकता है। लेकिन आप अच्छी पुरानी स्थिर पुस्तकालयों का उपयोग कर सकते हैं। 3.0 जीएम एसडीके में इसके लिए एक प्रोजेक्ट टेम्पलेट भी है, लेकिन आप बस एक स्थिर लाइब्रेरी को अपने आप लक्षित कर सकते हैं।
@ निकोलई रुहे - जहां ऐप्पल ने आईफोन पर कस्टम फ्रेमवर्क का उपयोग करने से मना किया है? मैंने iOS Developer Program License Agreement और ऐप स्टोर समीक्षा दिशानिर्देश दोनों के माध्यम से पढ़ा है, और इस तरह के प्रतिबंध का कोई उल्लेख नहीं दिख रहा है।
मुझे नहीं पता कि ऐप्पल कस्टम स्थिर पुस्तकालयों के उपयोग की अनुमति क्यों देगा, और कस्टम ढांचे के उपयोग को रोक देगा। शायद मुझे कुछ अन्य कानूनी दस्तावेज याद आ रहे हैं?
शायद यह तकनीकी कला का है, जैसे कि इंटरफ़ेस बिल्डर – hfossli
पर आईफोन-प्लगइन बनाने में मुश्किल/असंभव है रनटाइम पर आईओएस एक्जिक्यूटिव में कोई कोड जोड़ा जा सकता है। डायलीब, फ्रेमवर्क और प्लगइन्स के साथ यही होता है; स्थिर संग्रह संकलन समय पर जुड़े हुए हैं। यह संभवतः ऐप्स को छेड़छाड़ करने और एसडीके शर्तों का उल्लंघन करने, या अनजाने में शोषित होने और उपयोगकर्ता के डेटा को खतरे में डालने से रोकने के लिए किया जाता है। (उदाहरण के लिए, आपकी पता पुस्तिका की तरह।) –
"नोट: कस्टम फ्रेमवर्क का निर्माण आईओएस में समर्थित नहीं है।" http://developer.apple.com/library/ios/#documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW1 –
मैंने एक्सकोड 4 के लिए टेम्पलेट्स बनाए हैं जो आपको सार्वभौमिक आईओएस फ्रेमवर्क (जो डिवाइस और सिम्युलेटर दोनों में काम करते हैं) बनाने की अनुमति देता है।
एक बार टेम्पलेट स्थापित होने के बाद, आप एक नई परियोजना बनाते समय बस "स्टेटिक आईओएस फ्रेमवर्क" का चयन करते हैं और यह बाकी करता है। यह यूनिट परीक्षणों के साथ भी काम करता है।
बहुत अच्छा। इसे साझा करने के लिए धन्यवाद! –
इस लिंक को देखने, आप पूरी तरह से एक रूपरेखा बना सकते हैं और इसका इस्तेमाल कर सकते हैं। यदि आप अपना प्रोग्राम तैयार करते हैं तो सेब आपके ऐप को क्यों अस्वीकार कर देगा। see this link
ढांचा आपके कोड के संरचनात्मक संगठन के अलावा कुछ भी नहीं है। ऐसा करने के लिए कोई सीधा दृष्टिकोण नहीं है। लेकिन आप इसे एक बंडल और संगठित लक्ष्य का उपयोग करके प्राप्त कर सकते हैं। अपनी प्रोजेक्ट में एक नया बंडल जोड़ें और निम्न बेस एसडीके करें: नवीनतम आईओएस (आईओएस एक्स.एक्स) (एक्सएक्स में आपकी मशीन पर स्थापित सबसे आखिरी आईओएस एसडीके की संख्या दिखाई देगी)। आर्किटेक्चर: $ (ARCHS_STANDARD_32_BIT) armv6 ("armv6" से पहले स्पेस समेत यह मान बहुत महत्वपूर्ण है) यह सेटिंग Xcode 4.2 के लिए मान्य है, यदि आप पुराने संस्करण का उपयोग कर रहे हैं, तो "मानक (armv6 armv7)" का उपयोग करें विकल्प। (इस संपत्ति के मूल्य आइटम के मूल्य पर निर्भर करते हैं, इसलिए पहले सेट करें)। केवल सक्रिय आर्किटेक्चर बनाएं: नहीं (अन्यथा हम एक ही समय में armv6 और armv7 को संकलित नहीं कर सकते हैं)। मान्य वास्तुकला: $ (ARCHS_STANDARD_32_BIT) (यह वास्तव में यह मान होना बहुत महत्वपूर्ण है)। यदि आपका एक्सकोड armv6 और armv7 के साथ दो पंक्तियां दिखा रहा है, तो हटाएं और इस मान को एक पंक्ति में डालें। मृत कोड स्ट्रिपिंग: नहीं। मानक पुस्तकालयों के साथ लिंक: नहीं। मैक-ओ टाइप: रिलायटेबल ऑब्जेक्ट फ़ाइल। यह सबसे महत्वपूर्ण परिवर्तन है। यहां, हम संकलक को बंडल को एक स्थानांतरित फ़ाइल के रूप में इलाज करने का निर्देश देते हैं, ऐसा करके, हम इसे रैपर सेटिंग के साथ एक ढांचे में बदल सकते हैं। अन्य लिंकर ध्वज: यह सेटिंग अनिवार्य नहीं है, लेकिन यदि आप किसी भी प्रकार का C++ कोड (.cpp या।मिमी) इस ढांचे पर, क्रिस मूर (टिप्पणियों पर) "-lstdC++" विकल्प का उपयोग करने की सलाह देते हैं। पुरानी कंपाइलर्स में संघर्ष से बचने के लिए, इस मामले में "-ओबीजेसी" का भी उपयोग करना एक अच्छा विचार हो सकता है। रैपर एक्सटेंशन: ढांचा। यहां हम बंडल को फ्रेमवर्क में बदलते हैं। एक्सकोड करने के लिए, फ्रेमवर्क केवल एक्सटेंशन के साथ एक फ़ोल्डर है। फ्रेमवर्क, जिसमें एक या अधिक संकलित बाइनरी स्रोत, संसाधन और कुछ फ़ोल्डर्स हैं, एक फ़ोल्डर, जिसे आमतौर पर हेडर कहा जाता है, में सभी सार्वजनिक शीर्षलेख होते हैं। डीबग सिंबल जेनरेट करें: नहीं (यह एक बहुत ही महत्वपूर्ण सेटिंग है, अन्यथा ढांचा अन्य कंप्यूटर/प्रोफाइल पर काम नहीं करेगा)। प्रीकंपाइल उपसर्ग शीर्षलेख: नहीं।
एक aggrigated लक्ष्य बना सकते हैं और कॉपी
# Sets the target folders and the final framework product.
FMK_NAME=FI
FMK_VERSION=A
# Install dir will be the final output to the framework.
# The following line create it in the root folder of the current project.
INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework
# Working dir will be deleted after the framework creation.
WRK_DIR=build
DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.framework
SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}.framework
# Building both architectures.
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphoneos
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator
# Cleaning the oldest.
if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi
# Creates and renews the final product folder.
mkdir -p "${INSTALL_DIR}"
mkdir -p "${INSTALL_DIR}/Versions"
mkdir -p "${INSTALL_DIR}/Versions/${FMK_VERSION}"
mkdir -p "${INSTALL_DIR}/Versions/${FMK_VERSION}/Resources"
mkdir -p "${INSTALL_DIR}/Versions/${FMK_VERSION}/Headers"
# Creates the internal links.
# It MUST uses relative path, otherwise will not work when the folder is copied/moved.
ln -s "${FMK_VERSION}" "${INSTALL_DIR}/Versions/Current"
ln -s "Versions/Current/Headers" "${INSTALL_DIR}/Headers"
ln -s "Versions/Current/Resources" "${INSTALL_DIR}/Resources"
ln -s "Versions/Current/${FMK_NAME}" "${INSTALL_DIR}/${FMK_NAME}"
# Copies the headers and resources files to the final product folder.
cp -R "${DEVICE_DIR}/Headers/" "${INSTALL_DIR}/Versions/${FMK_VERSION}/Headers/"
cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/Versions/${FMK_VERSION}/Resources/"
# Removes the binary and header from the resources folder.
rm -r "${INSTALL_DIR}/Versions/${FMK_VERSION}/Resources/Headers" "${INSTALL_DIR}/Versions/${FMK_VERSION}/Resources/${FMK_NAME}"
# Uses the Lipo Tool to merge both binary files (i386 + armv6/armv7) into one Universal final product.
lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/Versions/${FMK_VERSION}/${FMK_NAME}"
rm -r "${WRK_DIR}"
इस रन स्क्रिप्ट में और aggrigate लक्ष्य को चलाने के ढांचे
कृपया अपनी वेबसाइट के लिए केवल स्पैमिंग लिंक बंद करें। –
@AndrewBarber क्या आपको लगता है कि यह मेरी वेबसाइट है? अगर मैं सिर्फ सवाल का जवाब देता हूं? अगर मैं अपनी वेबसाइट थी तो मैं बहुत खुश हूं :) –
कृपया ध्यान दें कि आपको इस साइट पर, यहां दिए गए उत्तर के उपयोगी बिंदु पोस्ट करना चाहिए, या आपके पोस्ट जोखिमों को हटाया जाना चाहिए ["कोई जवाब नहीं"] (http: //meta.stackexchange.com/q/8259)। यदि आप चाहें तो आप अभी भी लिंक शामिल कर सकते हैं, लेकिन केवल 'संदर्भ' के रूप में। लिंक को लिंक के बिना जवाब स्वयं ही खड़ा होना चाहिए। –
- 1. आईफोन: मैं gcov का उपयोग कैसे कर सकता हूं?
- 2. क्या मैं एक कंप्यूटर पर एक आईफोन ऐप संकलित कर सकता हूं और इसे दूसरे पर हस्ताक्षर कर सकता हूं?
- 3. क्या मैं एक एआरसी ढांचा तैयार कर सकता हूं और इसे गैर-एआरसी परियोजना में उपयोग कर सकता हूं?
- 4. मैं आईफोन यूआई ऑटोमेशन में सुधार कैसे कर सकता हूं?
- 5. मैं फॉगबगज़ को ईमेल कैसे भेज सकता हूं और इसे एक बग में बना सकता हूं?
- 6. मैं अपना खुद का हायर कैस्केड कैसे बना सकता हूं और इसे लागू कर सकता हूं?
- 7. क्या मैं .config फ़ाइल बना सकता हूं और इसे web.config में शामिल कर सकता हूं?
- 8. मैं "कस्टम प्रोटोकॉल" कैसे बना सकता हूं और इसे किसी एप्लिकेशन पर मैप कर सकता हूं?
- 9. आईफोन - मैं आईफोन संस्करण का पता कैसे लगा सकता हूं?
- 10. मैं प्रोग्राम पर आईफोन पर संदेश चैट बुलबुले कैसे बना सकता हूं (जैसे आईफोन संदेशों में)
- 11. आईफोन - मैं गोलाकार कोने और छाया दोनों के साथ एक छविदृश्य कैसे बना सकता हूं?
- 12. सबवर्जन: क्या मैं चेकआउट कर सकता हूं, संशोधित कर सकता हूं, और फिर इसे शाखा बना सकता हूं?
- 13. मैं केकेपीएचपी में सत्र डेटा कैसे बना सकता हूं, लिख सकता हूं और पढ़ सकता हूं?
- 14. क्या मैं आईफोन एसडीके सीख सकता हूं और सितंबर तक ऐप पूरा कर सकता हूं?
- 15. पोस्टग्रेस्क्ल में: मैं एक साधारण काउंटर कैसे बना सकता हूं जिसे मैं रीसेट कर सकता हूं?
- 16. मैं एक constraintViolationException कैसे बना सकता हूं?
- 17. मैं वर्टिकल यूआईस्लाइडर कैसे बना सकता हूं?
- 18. मैं ग्रोवी में वैश्विक चर कैसे बना सकता हूं और एक्सेस कर सकता हूं?
- 19. मैं एक्सकोड में एक बटन कैसे अक्षम कर सकता हूं?
- 20. मैं .NET मेटाडाटा-केवल 'संदर्भ असेंबली' कैसे बना सकता हूं और उपयोग कर सकता हूं?
- 21. मैं वीडियो स्ट्रीम कैसे करूं और इसे चला सकता हूं?
- 22. मैं php में साइट कैसे बना सकता हूं और इसे एक स्थिर संस्करण उत्पन्न कर सकता हूं?
- 23. जावास्क्रिप्ट का उपयोग करके मैं div कैसे बना सकता हूं और शैली बना सकता हूं?
- 24. मैं एक योजनाबद्ध दृश्य कैसे बना सकता हूं जिस पर मैं आइटम रख सकता हूं, स्थानांतरित कर सकता हूं और कनेक्ट कर सकता हूं?
- 25. क्या मैं एक सूची बना सकता हूं, और इसे एक ही समय में सॉर्ट कर सकता हूं?
- 26. मैं सी ++ में लूआ टेबल कैसे बना सकता हूं, और इसे लुआ फ़ंक्शन में पास कर सकता हूं?
- 27. क्या मैं अनंत सीमा का उपयोग कर सकता हूं और इसे संचालित कर सकता हूं?
- 28. मैं ऑडियो फ़ाइलों को ओवरलैप कैसे कर सकता हूं और एक्सकोड में आईफोन के लिए गठबंधन कर सकता हूं?
- 29. मैं एक क्षैतिज रेखा कैसे खींच सकता हूं और इसे केन्द्रित कर सकता हूं?
- 30. मैं एक आईफोन व्यू में धुंधला पाठ कैसे बना सकता हूं?
माइकल देखें नीचे इस सवाल का जवाब पाने के लिए। ढांचे को बनाना संभव है, केवल एक मैन्युअल दृष्टिकोण की आवश्यकता है। – DougW