এম্বেডেড বাইনারি এবং লিঙ্কযুক্ত ফ্রেমওয়ার্কগুলির মধ্যে পার্থক্য কী


87

বাহ্যিক কাঠামো ব্যবহার করার সময় এক্সকোডে এখন একটি এম্বেডড বাইনারি পাশাপাশি লিঙ্কযুক্ত ফ্রেমওয়ার্ক বিভাগ রয়েছে।

এখানে চিত্র বর্ণনা লিখুন

আপনি যখন কোনও বাহ্যিক কাঠামো ডাউনলোড করেন এবং ফাইন্ডার-> এটিকে Xcode এ টেনে আনেন, তখন এটি ফ্রেমওয়ার্কটি লিঙ্কযুক্ত ফ্রেমওয়ার্ক এবং লাইব্রেরি বিভাগে স্থাপন করবে।

আপনি যখন কার্থেজ দিয়ে একটি লাইব্রেরি তৈরি করেন এটি এম্বেডড বাইনারি বিভাগে টেনে আনার প্রস্তাব দেয় ।

উভয়ই যোগসূত্রের ক্ষেত্রে কাজ করছে বলে মনে হয়, যেহেতু এপিআই উপলব্ধ হয়ে যায়, এম্বেডড বাইনারি বিভাগে একটি কাঠামো যুক্ত করার পরে এটি স্বয়ংক্রিয়ভাবে লিঙ্কযুক্ত ফ্রেমওয়ার্ক এবং লাইব্রেরি বিভাগে যুক্ত হয়ে যায় ।

তো, কে ঠিক আছে? কার্থেজ নাকি বাকি ইন্টারনেট? এবং কেন এক্সকোড প্রকল্পগুলিতে বহিরাগত সংস্থানগুলি অন্তর্ভুক্ত করার জন্য 2 টি বিকল্প রয়েছে?


এবং আপনি যখন ডিভাইসে পরীক্ষা করেন তখন এটি কাজ করে?
ট্রোজানফো

@ ট্রোজানফো হ্যাঁ এটি করে।
ম্যাক্সিম ভেক্সলার 13

এম্বেডেড বাইনারি বিভাগে বা এটি যদি না হয় তবে 1) এটির কোনও অর্থ নেই, বিল্ড করার সময় অ্যাপ্লিকেশন বান্ডলে ফ্রেমওয়ার্কটি অনুলিপি করার জন্য একটি বিল্ড স্টেপ রয়েছে।
Trojanfoe

4
কার্থেজ কেবল ওএসএক্স অ্যাপ্লিকেশনগুলির জন্য "এমবেডেড বাইনারিস" এ টেনে আনার পরামর্শ দেয়। আইওএসের জন্য, তারা কেবল "লিঙ্কযুক্ত ফ্রেমওয়ার্ক এবং লাইব্রেরি" সুপারিশ করে।
দামানুম

উত্তর:


72
  1. লিঙ্কিং- যদি আমরা এর মধ্যে সংজ্ঞায়িত কোনও এপিআই ব্যবহার করি তবে আমাদের অবশ্যই একটি কাঠামো লিঙ্ক করতে হবে।

  2. এম্বেডিং - এই প্রক্রিয়াটি নিশ্চিত করবে যে যুক্ত করা কাঠামো অ্যাপ্লিকেশন বান্ডেলের মধ্যে এম্বেড হবে এবং সম্ভাব্যভাবে অ্যাপ্লিকেশন এবং যে কোনও এক্সটেনশন বান্ডেলের মধ্যে ভাগ করে নেওয়ার কোডটি সহায়তা করবে। আমরা কেবলমাত্র তৃতীয় পক্ষের ফ্রেমওয়ার্কগুলি এম্বেড করি এবং ডিভাইসে সহজেই উপলব্ধ হওয়ার কারণে আইওএস দ্বারা সরবরাহ করা নয় not আমরা যদি এম্বেড করে রাখছি, তার অর্থ এই যে, আমাদেরও তাদের সাথে লিঙ্ক করতে হবে যাতে এক্সকোডটি বিল্ডটি সংকলন করতে এবং তৈরি করতে পারে। অ্যাপ্লিকেশনটি যখন ডিভাইসে চলে যায়, তখন এমবেড করা ফ্রেমওয়ার্কটি যখন প্রয়োজন হয় তখন মেমরিতে লোড হবে।


4
"যখন প্রয়োজন" অংশটির অর্থ কী? এর অর্থ কি এই যে এম্বেড করা কাঠামোটি রানটাইমের সময় প্রয়োজন হয় তা লোড হয়? এছাড়াও, আপনি কখন ভাবেন যে সংযোগটি কোনও গতিশীল কাঠামোর জন্য ঘটবে?
বার্টোসস

আমাদের কি এমন কোনও মামলা দরকার যা embedতা নয় link? এবং বিপরীতভাবে? এবং কেন?
অ্যালেনলিলি 8'19

আমি মনে করি আপনাকে কেবল ফ্রেমওয়ার্কগুলি লিঙ্ক করতে হবে যার এপিআই আপনি সরাসরি কোডে ব্যবহার করেন, ট্রানজিটিভ নির্ভরতা যা অ্যাপ্লিকেশন কোডটিতে উল্লেখ করা হয় না কেবল ঠিক থাকলে এম্বেড করা উচিত।
ওয়ার্নার আলটিউইচর

15

আপনি যদি বাইনারি এম্বেড করেন তবে এটি আপনার পণ্যতে অন্তর্ভুক্ত হবে। আপনি যদি কেবল একটি লাইব্রেরি বা ফ্রেমওয়ার্ক এম্বেড না করেই লিঙ্ক করেন তবে এটি আপনার পণ্যের অংশ হবে না।

তবে, আইওএস 8-তে সমস্ত তৃতীয় পক্ষের ফ্রেমওয়ার্কগুলি "এম্বেড" করা দরকার। এমনকি বিভিন্ন প্রোগ্রামের মধ্যে ভাগ করা একটি কাঠামোও সেই প্রোগ্রামগুলির প্রত্যেকটিতেই "এম্বেড" হওয়া দরকার। এটি কোনও ভাগ করা স্থানে ডিভাইসে ইনস্টল থাকা অবস্থায়, ভাগ করা অবস্থান থেকে একই "এম্বেডড" কোড ব্যবহার করে অন্য যে কোনও ইনস্টলেশন প্রক্রিয়া সেই বিদ্যমান ইনস্টলেশনটিকে পুনরায় ব্যবহার করতে পারে। এটি আইওএস 8-এর সাথে সুনির্দিষ্ট, এটি iOS8 এর আগে সম্ভব ছিল না এবং iOS জগতের বাইরেও এই উত্তরটি সঠিক হতে পারে না।


4
"বাইনারি এম্বেড করা আপনার ব্যবহারকারীদের কাছে ইতিমধ্যে তাদের মেশিনগুলিতে সেই স্টাফের কার্যকর ইনস্টলেশন না করার ক্ষেত্রে আপনার পণ্যটি ইনস্টল করা সহজ করে তুলবে" আইওএস নয়, আইওএসের মতো মনে হচ্ছে ... তাদের কাছে লাইব্রেরি না থাকলে ইনস্টল করা (যেমন এটি অ-মানক) তবে অ্যাপটি কেবল লোড হবে না।
ট্রোজানফয়ে

এটি কেবলমাত্র লোড হবে না, @ ট্রোজানফো, এটি প্রত্যাখ্যান করা হবে এবং আপনি এটি প্রথম স্থানে ইনস্টল করতে পারবেন না (যদি আপনি বিকাশকারী না হন বা কোনও এন্টারপ্রাইজ অ্যাকাউন্ট ব্যবহার না করেন ...)
ক্রেগগোড

ডায়নামিকভাবে লিঙ্কযুক্ত কাঠামোটি আইওএস 8
-র

যখন ব্যবহারকারী আপনার অ্যাপটি ইনস্টল করে এবং যদি সেই অ্যাপ্লিকেশনটিতে গতিযুক্ত লিঙ্কযুক্ত কাঠামো অন্তর্ভুক্ত থাকে তবে সেই কাঠামোটি স্বয়ংক্রিয়ভাবে অনুসন্ধান করা যেতে পারে। তবে এটি একটি অতিরিক্ত পয়েন্ট যা ব্যবহারকারীর ইনস্টলেশন প্রক্রিয়া চলাকালীন ব্যর্থ হতে পারে, একটি লিঙ্ক সম্পাদনা ত্রুটি উত্থাপন করে যা অ্যাপ্লিকেশনটি বন্ধ করে দেয়। সুতরাং আমি উত্তরটি কেবল ওএস এক্সের ক্ষেত্রেই প্রয়োগ করতে হবে এবং আইওএসের ক্ষেত্রে নয় এমন কোনও কারণ আমি দেখতে পাচ্ছি না। আপনি যদি আমার উত্তর সম্পর্কে উন্নতির জন্য জায়গা দেখতে পান তবে আরও সুনির্দিষ্ট হন। অথবা কোনও সহকর্মী বিকাশকারীকে একটি সম্পূর্ণ এসও সদস্য করার জন্য সেই উত্তরটিকে উঁচু করুন, যদি আপনি উত্তরটি ইতিমধ্যে সঠিক বলে মনে করেন;)
বস্টি

এটি আপনার উত্তরের theচ্ছিক দিক যা আমি আপত্তি করি। ফ্রেমওয়ার্কটি যদি তৃতীয় পক্ষের হয় তবে তা অবশ্যই অ্যাপ্লিকেশন বান্ডেলের অংশ হতে হবে। পিরিয়ড। এটি ওএসএক্স অ্যাপ্লিকেশনগুলিতেও বেশিরভাগ ক্ষেত্রে সত্য (অবশ্যই ম্যাক অ্যাপ স্টোরের মাধ্যমে বিতরণ করা অ্যাপগুলির জন্য)।
ট্রোজানফয়ে

0

LinkingLinkerসংকলন সময় বা লোড / রান সময় এ সম্পর্কে আরও কাজ করে। Linker কপি একটি Libraryলক্ষ্য বাইনারি মধ্যে। যেহেতু Frameworkস্বশাসিত হয়, Linkerএই ক্ষেত্রে, খুঁজুন জন্য দায়ী এবং লিঙ্ক Dynamic Frameworkভিতরে সিস্টেম লোডার পথ বা খুঁজে পেতে এবং লিঙ্কটি একটি ভিতরে বান্ডিল

Embeddingলক্ষ্য বাইনারি মধ্যে বাইনারি অনুলিপি করার একটি প্রক্রিয়া। ফলস্বরূপ এটি ভিতরে অবস্থিত হবে।

এখানে আরও পড়ুন


-3

আমার বোঝার জন্য, এম্বেড করা বাইনারিটিতে কেবল ডায়নামিক কাঠামো অন্তর্ভুক্ত থাকে যা আইওএস 8 এবং তারপরের উপর উপলব্ধ রয়েছে, অন্যথায় আপনি কেবল স্থিতিশীল ফ্রেমওয়ার্কটিকেই লিঙ্ক করতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.