আইওএস স্ট্যাটিক বনাম গতিশীল ফ্রেমওয়ার্কের স্পষ্টতা


115

আমাকে স্বীকার করতে হবে যে আইওএস 8 প্রকাশের সাথে আমি আইওএসে গতিশীল এবং স্ট্যাটিক ফ্রেমওয়ার্কগুলি সম্পর্কে কিছুটা বিভ্রান্ত হয়ে পড়েছি।

আমি যে লাইব্রেরিটি তৈরি করেছি তার বিতরণ করার জন্য আমি একটি উপায় সন্ধান করছি এবং আমার আইওএস 7 এবং ততোধিক সমর্থন করতে হবে। (দ্রষ্টব্য: এটি একটি মালিকানা কাঠামো হবে I আমি কোকো পোড ব্যবহার করতে পারি না, এবং উত্সটি বিতরণও করতে পারি না)। এখানে আমি ইতিমধ্যে জানি:

  • আইওএস 8 আইওএসের জন্য "এম্বেডড ফ্রেমওয়ার্কগুলি" চালু করেছিল, তবে আমি যেমন বুঝতে পেরেছি যে তারা আইওএস 7 এর জন্য কাজ করে না, কেবল আইওএস 8 এবং তারপরের জন্য।
  • আমার কাছে আমার লাইব্রেরিটিকে একটি স্ট্যাটিক লাইব্রেরি (.a ফাইল) হিসাবে বিতরণ এবং শিরোনাম বিতরণ করার বিকল্প রয়েছে। আমি জানি যে পরিস্থিতি মোকাবিলার এটি একটি সাধারণ উপায়, তবে আমি তার থেকে সহজ কিছু খুঁজে পেতে চাই (এবং যদি সম্ভব হয় তবে এটির সাথে কিছু সংস্থানও বান্ডিল করা)।
  • আমি এটিও পেয়েছি যে আইওএস 7 গতিশীল .ফ্রেমওয়ার্ক লাইব্রেরিগুলিকে সমর্থন করে না (কেবল স্থিতিশীল) কারণ এটি গতিশীল লিঙ্কিং সমর্থন করে না। তবে আইওএস 8 এর পাশাপাশি স্ট্যাটিক লিঙ্কিংও রয়েছে।

এবং এই তথ্য সম্পর্কিত আমার প্রশ্ন এখানে:

  • আমি দেখেছি যে আমি একটি ফ্রেমওয়ার্ক লক্ষ্য তৈরি করতে পারি এবং স্থির করে তুলতে পারি, ম্যাচ-ও টাইপটিকে "স্ট্যাটিক লাইব্রেরিতে" পরিবর্তন করে। আইওএস 7 কে কোনও সমস্যা ছাড়াই সমর্থন করার জন্য এবং আমার লাইব্রেরিটিকে একটি হিসাবে বিতরণ করার জন্য এটি কি যথেষ্ট হবে? .ফ্রেমওয়ার্ক বান্ডেল? যদি তাই হয়, তবে আইওএস 8-তে "এম্বেডেড ফ্রেমওয়ার্কগুলি" কেন একটি বড় চুক্তি, যেমন ইন্টারনেটের অনেক সংস্থান প্রস্তাব দিচ্ছে? আমি কি কিছু মিস করছি?
  • আমি যেভাবে অন্য কোনও অ্যাপ্লিকেশন করি তার সাথে। ফ্রেমওয়ার্কটি কোডইন করা কি দরকার?
  • আমার। ফ্রেমওয়ার্ক ফাইলের সাথে যদি আমার অন্যান্য সংস্থানগুলি (যেমন কোর ডেটা বা চিত্রগুলি) অন্তর্ভুক্ত করার দরকার হয় তবে কী হবে? এর জন্য আমার কি আলাদা .bundle ফাইল তৈরি করা দরকার?

1
"আইওএস 7 ফ্রেমওয়ার্ক লাইব্রেরি সমর্থন করে না কারণ এটি গতিশীল লিঙ্কিং সমর্থন করে না" এই বিবৃতিটি সঠিক নয়।
মিডহান এমপি

1
আমি দেখি. আপনি আমাকে সঠিক বাক্য বলতে পারেন? আইওএস 7 গতিশীল লিঙ্কিং সমর্থন করে বা আইওএস 7। ফ্রেমওয়ার্ক লাইব্রেরি সমর্থন করে বলে এটি কি মিথ্যা? অথবা উভয়?
csotiriou

1
রিমবার এভিফাউন্ডেশন এবং কোর গ্রাফিক্স সবই ফ্রেমওয়ার্ক। সম্ভবত এটি আপনাকে আপনার সমস্ত প্রশ্নের উত্তর খুঁজতে সাহায্য করবে: raywenderlich.com/65964/create-a-framework-for-ios
মিডহান এমপি

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

1
মালিকানা কাঠামো বিতরণ করতে আপনি কোকোপড ব্যবহার করতে পারেন (যেমন পার্স)
রিক সান্তোস

উত্তর:


69

আইওএস 8 এর আগে, এক্সকোড কেবলমাত্র আইওএসের জন্য স্ট্যাটিক লাইব্রেরি তৈরির বিকল্পটিকে অনুমতি দিয়েছিল। এটির সাথে সাধারণ সমস্যাটি হ'ল আমাদের বাইনারি এবং শিরোনামগুলি পৃথকভাবে চালিত করতে হয়েছিল।

পরে, কিছু বিকাশকারী 'স্ট্যাটিক ফ্রেমওয়ার্ক' তৈরির ধারণা নিয়ে আসে। [। ফ্রেমওয়ার্কটি কেবল একটি ফোল্ডার যা লিব এবং শিরোনামগুলির সাথে প্রতীকী লিঙ্কযুক্ত]। এরকম একটি উদাহরণ https://github.com/jverkoey/iOS- ফ্রেমওয়ার্ক

এই বিকল্পটি আইওএস 7 বা 8 বা তার আগে কাজ করবে। কারণ তারা হোল্ডারের ফাইলগুলি পাশাপাশি বান্ডিল করার সুবিধার্থে কেবল স্ট্যাটিক লাইব্রেরি।

আপনার সংস্থানসমূহের প্রশ্নগুলির জন্য, আমাদের তাদের '.bundle' এ বান্ডিল করতে হবে .. তাদের শিপিংয়ের জন্য আমি নিশ্চিত নই যে আমরা সেগুলি .framework ফোল্ডারে আবদ্ধ করতে পারি কিনা .. অতীতে আমি আমার লিবগুলি এইভাবে পাঠাতাম একটি স্থিতিশীল কাঠামো এবং বান্ডিল ...

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

যদি দ্রুত ব্যবহার হয় তবে আপনাকে অবশ্যই ডায়নামিক ফ্রেমওয়ার্কের সাথে যেতে হবে। তত্ত্ব অনুসারে, ডায়নামিক ফ্রেমওয়ার্কগুলি আইওএস 7 তে কাজ করে .. তবে, আমি মনে করি অ্যাপ্লিকেশনটি আইওএস 7 কে লক্ষ্য করে এবং ডায়নামিক ফ্রেমওয়ার্কগুলি ব্যবহার করে: আইটিউনস কানেক্টটি প্রত্যাখ্যান করবে :-)।

আশাকরি এটা সাহায্য করবে


16

এক্সকোড 9 এর পরে আপনি সুইফটের জন্য স্ট্যাটিক ফ্রেমওয়ার্কও তৈরি করতে পারেন। এটিআইবি উত্সের সামঞ্জস্যের কারণে এটি সম্ভব। আপনাকে কেবলমাত্র Mach-O typeফ্রেমওয়ার্ক টার্গেটের আন্ডার বিল্ড সেটিংস পরিবর্তন করতে হবে । এই কৌশলটি হাইব্রিড ফ্রেমওয়ার্ক (সুইফট এবং অবজেক্টিভ-সি কোড সহ ফ্রেমওয়ার্ক) এর ক্ষেত্রেও প্রযোজ্য।


দুর্দান্ত টিপ। জানেন না কেন এই উত্তরটি আমাকে স্কোর করার কারণে হ্রাস পেয়েছে। \ লক্ষ্য 'বিল্ড সেটিংস \ মাচ-ও-টাইপ করুন এবং স্ট্যাটিক ফ্রেমওয়ার্ক নির্বাচন করুন।
rustyMagnet


7

staticবা dynamicনামে সাধারণত একটি Linking[সম্পর্কে] প্রকারের দিকে নির্দেশ করে

ফ্রেমওয়ার্কগুলি হতে পারে staticবা dynamic[স্থির বা গতিশীল পরীক্ষা করুন]

আপনি গ্রন্থাগার বিন্যাস করে একটি উপর একটি প্রভাব ফেলবে পরিবর্তন করতে পারেন Linkerপরিবর্তন করে Framework target -> Build Settings -> Mach-O Type[সম্বন্ধে] থেকে Static Libraryবা Dynamic Library। ডিফল্টরূপে Xcode এর Dynamic Libraryমান থাকে।

এই সেটিংটির উপর নির্ভর করে বিভিন্ন ধরণের বাইনারি তৈরি করা হবে

আপনি কোনও গ্রাহককে সফলভাবে কনফিগার করার পরে [লিঙ্ক বনাম এম্বেড]

Static Linker ld : সংকলনের সময় সম্পাদনাযোগ্য static libraryঅবজেক্ট ফাইলের মধ্যে থেকে সমস্ত কোড অন্তর্ভুক্ত করা হবে ।

Dynamic Linker dyld : লোড / রান টাইমে এম্বেড থাকা কাঠামোটি @rpath[প্রায়] ব্যবহার করে এটি লিঙ্ক করার চেষ্টা করবে

[শব্দভাণ্ডার]


6

স্টিফট লাইবটিতে সুইফট কাজ করে না। আপনার যদি গতিশীল কাঠামো ব্যবহার করতে হয় তবে আপনাকে মিনি আইওএস 8.0 এ সেট করতে হবে কারণ অ্যাপস্টোর গতিশীল ফ্রেমওয়ার্ক সহ আইওএস 7 প্রত্যাখ্যান করবে


আপনি একটি স্থির লাইব্রেরি একটি সুইফট ভিত্তিক প্রকল্পে আমদানি করতে পারেন
C0D3

5

আমার কাছে সমস্ত উত্তর নেই তবে আমি এখানে আপনার কয়েকটি প্রশ্নের উত্তর দেওয়ার চেষ্টা করব।

  • আপনি আইওএস 7 এ এই ফ্রেমওয়ার্কগুলি ব্যবহার করার জন্য একটি সতর্কতা পাবেন, তবে এটি কেবলমাত্র একটি সতর্কতা। এই উত্তর দেখুন ।

  • আপনি অন্যান্য ডেটা যেমন কোরডাটা অন্তর্ভুক্ত করতে পারেন তবে আপনাকে সেগুলি ম্যানুয়ালি তৈরি করতে হবে। একটি কোর ডেটা মডেল কীভাবে তৈরি করবেন সে সম্পর্কে একটি টিউটোরিয়াল এখানে ।

  • আইওএসের জন্য আপনাকে কোড সাইন ডায়নামিক লাইব্রেরি করতে হবে।

  • আপনি নিশ্চিত করতে হবে যে আপনার ফ্রেমওয়ার্কটি সিমুলেটর এবং ডিভাইস আর্কিটেকচার উভয়ই সমর্থন করে যদি আপনি এটি বিতরণের পরিকল্পনা করছেন।

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