एकता पटकथा बैकएंड IL2CPP और Mono2x के बीच अंतर


15

IL2CPP एक एकता-विकसित स्क्रीप्टिंग बैक-एंड है जिसे आप कुछ प्लेटफार्मों के लिए प्रोजेक्ट बनाते समय मोनो के विकल्प के रूप में उपयोग कर सकते हैं। नोट - IL2CPP केवल निम्नलिखित प्लेटफार्मों के लिए निर्माण करते समय उपलब्ध है:

  • Android AppleTV, iOS *, निंटेंडो 3DS, निन्टेंडो स्विच, प्लेस्टेशन 4 Playstation वीटा, WebGL *, विंडोज स्टोर, Xbox One

मेरे पास एक प्रोजेक्ट है (एकता 5.2) जो एंड्रॉइड परिनियोजन के लिए स्विच किया गया है। मैं से बैक मेरी पटकथा स्विच करने की कोशिश की Mono2xकरने के लिए IL2CPPऔर इसके लिए मुझे दिखा रहा है कि

Andriod पर IL2CPP प्रयोगात्मक और असमर्थित है

इसलिए, मेरा सरल प्रश्न यह है कि यदि यह अभी भी समर्थित नहीं है तो विकल्प को क्यों शामिल किया गया है, IL2CPP और Mono2x के बीच मूलभूत अंतर क्या है। मैंने IL2CPP स्क्रिप्टिंग बैकएंड पर स्विच क्यों किया ? इसके पेशेवरों और विपक्ष क्या हैं ?

मैंने एकता 5.5.2 में भी जाँच की है। विंडोज़ प्लेटफ़ॉर्म परिनियोजन में IL2CPP विकल्प नहीं है।

जवाबों:


14

जानकारी एकता संस्करण 2018.2 पर आधारित है:

IL2CPP पर एकता मैनुअल का हवाला देते हुए :

IL2CPP ( इंटरमीडिएट लैंग्वेज टू C ++ ) एक यूनिटी- डेवलप्ड स्क्रिप्टिंग बैकएंड है जिसे आप विभिन्न प्लेटफॉर्म के लिए प्रोजेक्ट बनाते समय मोनो के विकल्प के रूप में उपयोग कर सकते हैं। IL2CPP ( एक आगे का समय (एओटी) संकलक) मोनो कोडिंग बैकएंड की तरह प्रबंधित कोड के डिबगिंग का समर्थन करता है।

जब IL2CPP का उपयोग करके एक प्रोजेक्ट का निर्माण किया जाता है, तो यूनिटी आपके चुने हुए प्लेटफ़ॉर्म के लिए एक मूल बाइनरी फ़ाइल (.exe, APK, .xap, उदाहरण के लिए) बनाने से पहले स्क्रिप्ट और असेंबली से C ++ में कनवर्ट करती है। IL2CPP के कुछ उपयोगों में आपकी एकता परियोजनाओं के प्रदर्शन, सुरक्षा और प्लेटफ़ॉर्म संगतता को बढ़ाना शामिल है।

का हवाला देते हुए IL2CPP और मोनो पर एकता ट्यूटोरियल :

प्रत्येक स्क्रिप्टिंग बैकएंड के लाभ और कमियां हैं जो आपके निर्णय को प्रभावित करना चाहिए, जिस पर आपकी स्थिति के लिए सही विकल्प है:

IL2CPP:

  • मोनो की तुलना में कोड पीढ़ी में भारी सुधार होता है।
  • C ++ में स्क्रिप्ट कोड को ऊपर से नीचे तक डिबग करना संभव है।
  • आप कोड आकार को कम करने के लिए इंजन कोड स्ट्रिपिंग को सक्षम कर सकते हैं।
  • बिल्ड समय मोनो के साथ की तुलना में लंबे होते हैं।
  • केवल समय से आगे (एओटी) संकलन का समर्थन करता है।

मोनो:

  • IL2CPP की तुलना में तेज़ निर्माण समय।
  • जस्ट इन टाइम संकलन (JIT) के कारण अधिक प्रबंधित पुस्तकालयों का समर्थन करता है।
  • रनटाइम कोड निष्पादन का समर्थन करता है।
  • शिप असेंबली असेंबली (.dll फाइलें जो मोनो- या .net प्रोडक्शन) को प्रबंधित करती हैं।

महत्वपूर्ण बिंदु:

  • एंड्रॉइड प्लेयर सेटिंग्स में डिफ़ॉल्ट लक्ष्य आर्किटेक्चर IL2CPP और मोनो स्क्रिप्टिंग बैकएंड के साथ armv7 और x86 हैं।
  • UWP या iOS 11 और इसके बाद के संस्करण पर मोनो का समर्थन नहीं किया जाता है। IOS प्लेयर सेटिंग्स में डिफ़ॉल्ट आर्किटेक्चर IL2CPP स्क्रिप्टिंग बैकएंड के साथ armv7 और arm64 हैं।

  • UWP केवल IL2CPP और .NET का समर्थन करता है, .NET स्क्रिप्टिंग बैकेंड (डिप्रेकेटेड) Microsoft की .NET का उपयोग स्क्रिप्टिंग को पावर करने के लिए करता है।


1
मुझे लगता है कि आपका जवाब संदर्भों को याद कर रहा है। मैं देख रहा हूं कि IL2CPP / मोनो सूची एकता के IL2CPP और मोनो ट्यूटोरियल पृष्ठ के समान पाठ है, और पहले 2 पैराग्राफ में एक अलग क्रम में एकता के IL2CPP मैनुअल पेज के समान पाठ हैं । संदर्भों को शामिल करने के लिए कृपया अपना उत्तर संपादित करें, अधिक जानकारी के लिए सहायता केंद्र देखें ।
सन्नी

3

IL2CPP एक एकता-विकसित स्क्रिप्टिंग बैक-एंड है जिसे आप कुछ प्लेटफार्मों के लिए प्रोजेक्ट बनाते समय मोनो के विकल्प के रूप में उपयोग कर सकते हैं। जब आप IL2CPP का उपयोग करके एक प्रोजेक्ट बनाने का विकल्प चुनते हैं, तो एकता एक देशी बाइनरी फ़ाइल (.exe, apk, .xap, के लिए) बनाने से पहले C ++ कोड में स्क्रिप्ट और असेंबली से IL कोड (कभी-कभी CIL - मध्यवर्ती भाषा या सामान्य इंटरमीडिएट भाषा कहा जाता है) को परिवर्तित करता है। उदाहरण) अपने चुने हुए मंच के लिए। IL2CPP के कुछ उपयोगों में आपकी एकता परियोजनाओं के प्रदर्शन, सुरक्षा और प्लेटफ़ॉर्म संगतता को बढ़ाना शामिल है।

स्रोत

IL2CPP एक माना जाने वाला * निष्पादन मंच है जो मोनो से तेज है। इस संदर्भ में "प्रायोगिक" पिछले वाक्य में "माना" शब्द पर एक मजबूत जोर देता है ।

एक ही कारण के लिए प्रायोगिक सुविधाओं को जारी किया जाता है बीटा सॉफ्टवेयर सार्वजनिक रूप से जारी किया जाता है: सॉफ्टवेयर उपयोग करने के लिए पर्याप्त है, और डेवलपर्स उपयोगकर्ताओं की एक विस्तृत श्रृंखला से बग रिपोर्ट और अन्य प्रतिक्रिया चाहते हैं ताकि वे उस बिंदु पर पहुंच सकें जहां सॉफ्टवेयर तैयार है या वास्तविक रिलीज।


* IL2CPP उस कोड के लिए काम नहीं करता है, जो विशुद्ध रूप से परावर्तन के माध्यम से उपयोग किया जाता है, जो कि प्रतिबिंब, क्रमांकन या सामान्य रूप से उन कक्षाओं पर उपयोग करते समय होगा जो कभी सीधे नहीं कहे जाते हैं और इस प्रकार बिल्ड से छीन लिए जाते हैं। एक ही प्रतिबंध वर्तमान में मोनो पर उन प्लेटफार्मों पर लागू होता है जो समय से पहले प्रतिबंध प्रतिबंधों का उपयोग करते हैं।


तो यह अभी भी परिपक्व नहीं है, मैं 5.2 का उपयोग कर रहा हूं 5.5 के बारे में कोई अनुभव नहीं है। या 5.6 है। इसके अलावा क्या il2cpp पर स्थानांतरित करने के लिए पेशेवरों n विपक्ष हैं?
मुहम्मद फैजान खान

यह कुछ प्लेटफार्मों के लिए परिपक्व है। यह कम से कम IOS के लिए यूनिटी 5 से पहले के आसपास रहा है। मुझे लगता है कि एंड्रॉइड IL2CPP को नवीनतम संस्करणों में प्रयोगात्मक रूप से चिह्नित नहीं किया गया है। जब तक मैंने IL2CPP का उपयोग करना शुरू नहीं किया, तब तक मुझे Android पर 4 से 5 तक की छलांग धीमी लगी। यह मेरे परीक्षण उपकरणों पर काफ़ी तेज़ है।
टर्टल विजार्ड

1
चूंकि IL2CPP मशीन कोड अहेड-ऑफ-टाइम के लिए संकलन कर रहा है, इसलिए प्रतिबिंब और जेनरिक के उपयोग के बारे में कुछ अतिरिक्त प्रतिबंध हैं । मोनो के जस्ट-इन-टाइम कंपाइलर में मक्खी पर आवश्यक कोड को आत्मनिरीक्षण करने और उत्पन्न करने की जानकारी है, लेकिन एओटी के लिए सभी आवश्यक कोड को बिल्ड समय पर पता लगाने में आसान होना चाहिए।
DMGregory
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.