2013-06-19 25 views
25

मैं समझने की कोशिश करता हूं कि कैसे Xamarin.iOS (मोनो टच) और Xamarin.Android (एंड्रॉइड के लिए मोनो) काम करते हैं। मैंने एक छोटी सी ऐप लिखी और .app और .apk फ़ाइल में देखा।ज़ैमरिन आईओएस और एंड्रॉइड कैसे काम करता है?

.app फ़ाइल (आईओएस) के अंदर कई .dll फ़ाइलें हैं। पर क्यों? प्रत्येक पृष्ठ और पोस्ट पर मैंने पढ़ा है कि वे कहते हैं: ऐप को मूल रूप से निष्पादित किया गया है और कुछ भी व्याख्या नहीं किया गया है। क्या कोई मुझे बता सकता है कि xamarin डेवलपर का अर्थ "मूल" के साथ क्या है?

.apk फ़ाइल के अंदर एक भी .dll फ़ाइल नहीं है ..

+0

आईओएस बंडल में डीएलएल केवल मेटाडेटा प्रतिबिंब के लिए उपयोग किया जाता है, निष्पादन योग्य कोड नहीं। एंड्रॉइड उपयोग जिट के लिए http://stackoverflow.com/questions/10741319/how-secure-is-monotouch – Jason

उत्तर

1

Xamarin संकलक .NET रनटाइम बंडल और एक देशी (बाइनरी) एआरएम निष्पादन, एक iOS या Android एप्लिकेशन के रूप में पैक आउटपुट।

+0

देखें – ArthNRick

9

"मूल" के Xamarin परिभाषा शामिल है, लेकिन तक सीमित नहीं है: मशीन कोड को संकलित किया गया है और उसके बाद .app में पैक

  • सी # कोड के प्रत्येक पंक्ति। रनटाइम पर JIT नहीं है, क्योंकि इसे AOT द्वारा दबाया गया है। अधिक जानकारी

http://www.mono-project.com/AOT

में पाया जा सकता (ध्यान दें कि Xamarin.Android अभी भी JIT का उपयोग करता है, http://xamarin.com/how-it-works)

  • मंच देशी प्रकार के लिए प्रवेश/एपीआई, पूरी तरह से खुला है तो आप कर रहे हैं एपीआई कॉल के एक छोटे से सेट तक सीमित नहीं है (यदि आप एचटीएमएल 5/जावास्क्रिप्ट का उपयोग करते हैं, तो आप जानते हैं कि किस प्रकार की सीमाएं हैं)।

  • आपके द्वारा डिज़ाइन किया गया उपयोगकर्ता इंटरफ़ेस आईओएस (कोको टच) या एंड्रॉइड (स्काया) द्वारा खुलासा मूल एपीआई से जुड़ा हुआ है। प्रदर्शन को चोट पहुंचाने या महसूस करने के लिए कोई मध्यवर्ती परत नहीं है।

अंदर क्या है .ipa या .apk, जो परवाह करता है? बेशक @ जेसन की टिप्पणी हमें कुछ आंतरिक कार्यान्वयन विवरण दिखाती है।

  • मोनो
  • मूल निवासी क्रम (Davlik, एआरटी, IOS क्रम)

कुछ उदाहरण:

2

सबसे पहले, Xamarin एक ही समय में दो अलग-अलग runtimes पर काम करता है। जब आप विजुअल स्टूडियो में अपनी सी # कक्षा बना रहे हैं, तो इस वर्ग का उदाहरण मोनो के तहत चलाएगा। इसके अलावा जब आप न्यूटन से न्यूटन.जेसन पैकेज डाउनलोड कर रहे हैं, तो यह भी मोनो में चलाएगा। यही कारण है कि हम सभी शांत .NET सामान का उपयोग कर सकते हैं। हालांकि, जब आप Java.Lang.Object (एंड्रॉइड) या NSObject (आईओएस) से विरासत में हैं या कस्टम नियंत्रण बना रहे हैं, तो इन कक्षाओं के उदाहरण देशी रनटाइम के तहत चलेंगे।

दूसरा, आप देख सकते हैं कि हमें इन दोनों दुनिया को किसी भी तरह से बांधना होगा। चलो देखते हैं कि हमारे पास किस प्रकार की वस्तुएं हैं।

  • प्रबंधित वस्तुओं (मोनो)
  • Unmaneged वस्तुओं (मूल निवासी दुनिया)
  • सहकर्मी वस्तुओं (मोनो, जिन वस्तुओं पर देशी वस्तुओं के लिए रैपर है)

सहकर्मी वस्तुओं यह है Xamarin SDKs वर्गों के उदाहरण (उदाहरण के लिए गतिविधियां, नियंत्रण नियंत्रण, UILabels, TextViews और इसी तरह), Java.Lang.Object, NSObject, Fragment या यहां तक ​​कि UISegment कक्षाओं से अपने उत्तराधिकारी के उदाहरण।

यह तंत्र Xamarin से सबसे महत्वपूर्ण चीजों में से एक है।

पीएस: असल में, इससे कोई फर्क नहीं पड़ता कि हम किस प्रकार के संकलन का उपयोग ज़ैमरिन परियोजनाओं जेआईटी या एओटी के लिए करते हैं। यह मंच पर निर्भर करता है और .NET दुनिया से कुछ सुविधाओं की अनुमति देता है/नहीं देता है। यह वर्णन नहीं करता है कि Xamarin कैसे काम करता है।

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