আমি অনুগ্রহটি খুললাম: "বিশ্বাসযোগ্য এবং / অথবা অফিসিয়াল উত্স থেকে উত্তর অঙ্কনের সন্ধান করছি" " তবে এর পর থেকে এ রকম কিছু পাইনি।
@ জ্যাকস্ল্যাশ প্রদত্ত উত্তরটি সঠিক হলেও এটি কেবল গল্পের একটি অংশ বলেছে তাই আমি নিজের লেখাটি এমনভাবে লিখতে চাই যেখানে এই প্রশ্নটি জিজ্ঞাসা করার মুহুর্তে আমি এটি দেখতে চাই।
এই উত্তরের বাস্তবতা: জুলাই ২০১৫ things সম্ভবত জিনিসগুলি পরিবর্তিত হবে।
প্রথমে জোর করা যাক ফ্রেমওয়ার্কের সঠিক কোড স্বাক্ষরকরণের জন্য প্রয়োজনীয় পদক্ষেপগুলি ফ্রেমওয়ার্কের বিকাশকারীকে যে পদক্ষেপ নিতে হবে এবং ফ্রেমওয়ার্কের গ্রাহককে কী পদক্ষেপ নিতে হবে সেই পদক্ষেপগুলিতে বিভক্ত করা উচিত ।
টিএলডিআর;
ওএসএক্স কাঠামোর জন্য: বিকাশকারী কোডইন না করে ওএসএক্স কাঠামো বিতরণ করতে পারেন কারণ গ্রাহক যেভাবেই এটিকে পুনরায় কোডসাইন করবেন।
আইওএস ফ্রেমওয়ার্কের জন্য: বিকাশকারী কোডইন না করে আইওএস ফ্রেমওয়ার্ক বিতরণ করতে পারেন কারণ গ্রাহক এটিকে যেভাবেই পুনরায় কোডসাইন করবেন, তবে বিকাশকারীরা যখন আইওএস ডিভাইস তৈরি করেন তখন তাদের ফ্রেমওয়ার্কটি কোডইন করতে জ্যাকড দ্বারা বাধ্য হন।
কারণ রাডার এর: "আইওএস কাল্পনিক টুকরা ধারণকারী অবকাঠামো App স্টোর বা দোকান জমা যাবে না" আইওএস কাঠামোর কনজিউমার "copy_frameworks" বা "strip_frameworks" যা ব্যবহার মত বিশেষ স্ক্রিপ্ট চালাতে বাধ্য হয় lipo -remove
আইওএস ফ্রেমওয়ার্ক এবং পুনরায় থেকে কাল্পনিক টুকরা বন্ধ স্ট্রিপ -কোডসাইন স্ট্রিপ ফ্রেমওয়ার্ক কারণ এই মুহুর্তে এর কোডাইনিং পরিচয় যা ছিল তা (বা ছিল না) lipo -remove
ম্যানিপুলেশনের পার্শ্ব প্রতিক্রিয়া হিসাবে সরানো হয় ।
দীর্ঘ উত্তর অনুসরণ করা।
এই উত্তরটি "বিশ্বাসযোগ্য এবং / অথবা সরকারী উত্স থেকে আঁকানো" নয়, বরং এটি বহুসংখ্যক অভিজ্ঞতামূলক পর্যবেক্ষণের ভিত্তিতে তৈরি।
বুদ্ধিমান পর্যবেক্ষণ # 1: গ্রাহকরা তাদের পাত্তা দিচ্ছেন না কারণ তারা বিকাশকারীদের কাছ থেকে তারা প্রাপ্ত কোড ফ্রেমওয়ার্কটি পুনরায় কোডইন করবে
গিথুবে সুপরিচিত ওপেন সোর্স প্রকল্পগুলির বাইনারি কাঠামো বিতরণ কোডযুক্ত নয় । কমান্ড codesign -d -vvvv
দেয়: আমি যে সমস্ত বাইনারি আইওএস এবং ওএসএক্স ফ্রেমওয়ার্কগুলি অন্বেষণ করতে ব্যবহার করেছি সেগুলিতে "কোড অবজেক্টটি একেবারেই স্বাক্ষরিত হয় না"। কয়েকটি উদাহরণ: রিঅ্যাকটিভ কোকো এবং মেন্টল , রাজ্য , প্রতিশ্রুতি ।
এই পর্যবেক্ষণ থেকে এটি স্পষ্ট যে এই ফ্রেমওয়ার্কগুলির লেখকরা তাদের পক্ষে কনজিউমার দ্বারা কোডড হওয়ার ইচ্ছা পোষণ করেছেন, অর্থাত্ গ্রাহককে অবশ্যই "কোড সাইন অন কপি" ব্যবহার করতে হবে "এম্বেড ফ্রেমওয়ার্কস" বিল্ড ফেজের পতাকা কোড কোড বা কিছু কাস্টম শেল ব্যবহার করতে হবে স্ক্রিপ্ট যা ম্যানুয়ালি একই জিনিস করে: গ্রাহক পক্ষ থেকে কাঠামো কাঠামোয়।
আমি এর বিপরীতে একটিও উদাহরণ পাইনি: ওপেন সোর্স কাঠামো যাতে কোডডিং পরিচয় দিয়ে বিতরণ করা হবে তাই উত্তরের বাকী অংশে আমি এই ব্যাপকভাবে গৃহীত পদ্ধতিটিকে সঠিক হিসাবে ধরে নিচ্ছি: ফ্রেমওয়ার্ক বিকাশকারীর প্রয়োজন নেই কোডওয়ারিং পরিচয় দিয়ে তাদের বিকাশকারীকে অন্যান্য বিকাশকারীগুলিতে এটি বিতরণ করুন কারণ গ্রাহক যেভাবেই হোক এটিকে পুনরায় কোডিং করবেন ।
ইমিরিক পর্যবেক্ষণ # 2 যা কেবলমাত্র আইওএসের জন্য প্রযোজ্য এবং যা সম্পূর্ণ বিকাশকারীদের উদ্বেগ
উপভোক্তা গ্রাহ্য না করে তাঁরা যখন বিকাশকারী কাছ থেকে ফ্রেমওয়ার্ক কিনা বা codesigned করা হয় না, বিকাশকারী এখনো তার বিল্ড প্রক্রিয়ার অংশ হিসেবে তাদের আইওএস ফ্রেমওয়ার্ক codesign প্রয়োজন যখন তারা আইওএস ডিভাইসের জন্য এটি নির্মাণ কারণ অন্যথায় Xcode গড়ে তুলতে না: CodeSign error: code signing is required for product type 'Framework' in SDK 'iOS 8.1'
। জাস্টিন স্পাহার-সামার্স উদ্ধৃতি :
ওএস এক্স ফ্রেমওয়ার্কগুলিকে বিল্ড করার সময় কোডিং করার দরকার নেই ... দুর্ভাগ্যক্রমে, এক্সকোডের প্রয়োজন হয় যে বিল্ড টাইম সময়ে আইওএস ফ্রেমওয়ার্কগুলি কোডাইন করা উচিত।
এটি আমার উত্তর # 2 তে খুব সুন্দর উত্তর দিয়েছে: "আইফোন বিকাশকারী" পরিচয়টি এক্সকোডকে ক্যাজোল করার জন্য যথেষ্ট যাতে এটি ডিভাইসের জন্য আইওএস ফ্রেমওয়ার্ক তৈরি করতে পারে। কার্থেজ # 339 এ এই মন্তব্যটি একই কথা বলে।
বুদ্ধিমান পর্যবেক্ষণ # 3: লিপো সরঞ্জাম
Lipo টুল নির্দিষ্ট আচরণ: যখন ফ্রেমওয়ার্ক বাইনারি প্রয়োগ, এটা সবসময় যাও recursively কোনো codesign পরিচয় তা থেকে সরিয়ে ফেলা হবে : lipo -create/-remove codesigned framework ... -> not codesigned framework
।
এটি একটি উত্তর হতে পারে কেন পর্যবেক্ষণ # 1 এর সমস্ত উদাহরণগুলিতে কোডিং করা হয় না: লিপো প্রয়োগ করার পরে তাদের কোডসাইনিং পরিচয়টি উড়িয়ে দেওয়া হয় তবে পর্যবেক্ষণ অনুসারে # 1 ভোক্তা যত্ন নিচ্ছেন না যে এটি ঠিক আছে।
এই পর্যবেক্ষণটি অ্যাপস্টোর সম্পর্কে পরবর্তী পর্যবেক্ষণ # 4 এর সাথে বিশেষভাবে প্রাসঙ্গিক।
এমিরিক পর্যবেক্ষণ # 4: সিমুলেটর টুকরাযুক্ত আইওএস ফ্রেমওয়ার্কগুলি অ্যাপ স্টোরটিতে জমা দেওয়া যাবে না
এটি ব্যাপকভাবে আলোচিত: রাজ্য # 1163 এবং কার্থেজ # 188 এবং রাডার খোলা হয়েছে: রডার: // 19209161 ।
এটি সম্পূর্ণরূপে গ্রাহকের উদ্বেগ: আইওএস সর্বজনীন কাঠামোর জন্য যে গ্রাহকরা তাদের অ্যাপ্লিকেশনটিতে অন্তর্ভুক্ত রয়েছে, যখন অ্যাপ্লিকেশন তৈরি হচ্ছে, তাদের অবশ্যই বিশেষ স্ক্রিপ্ট (কাস্টম রান স্ক্রিপ্ট ফেজ) চালাতে হবে যা সেই ফ্রেমওয়ার্কের বাইনারি থেকে সিমুলেটর স্লাইস সরিয়ে ফেলবে যাতে অ্যাপটি অ্যাপস্টোর বৈধতা পাস করতে পারে।
বাইনারি ফ্রেমওয়ার্কগুলির জন্য ভাল উদাহরণটি আমি রিয়েলমে পেয়েছি: স্ট্রিপ- ফ্রেমওয়ার্কস ।
এটি গ্রাহকর পরিচয়ের সাথে lipo
বাদ দিয়ে অন্য সকল আর্কিটেকচার স্লাইসগুলি সরিয়ে ফেলার জন্য ব্যবহার ${VALID_ARCHS}
করে - এটি এখানে পর্যালোচনা # 3 কিক্স ইন: ফ্রেমওয়ার্কটিতে লিপো ম্যানিপুলেশনের কারণে পুনরায় কোডসাইন করা উচিত।
কার্থেজের কপিফ্রেমওয়ার্কস.সুইফ্ট স্ক্রিপ্ট রয়েছে যা গ্রাহক দ্বারা অন্তর্ভুক্ত সমস্ত ফ্রেমওয়ার্কগুলিতে একই কাজ করে: এটি সিমুলেটর স্লাইসগুলি বন্ধ করে দেয় এবং গ্রাহকের পক্ষে পুনরায় কোডসাইন কাঠামো তৈরি করে।
এছাড়াও ভাল নিবন্ধ আছে: এক্সকোডে ডায়নামিক লাইব্রেরিগুলি থেকে অবাঞ্ছিত আর্কিটেকচার কেটে নেওয়া ।
এখন বিকাশকারী এবং গ্রাহকের দৃষ্টিভঙ্গি থেকে আইওএস এবং ওএসএক্স উভয়ই উত্পাদন করতে প্রয়োজনীয় পদক্ষেপগুলির ওভারভিউ। প্রথমটি সহজ:
ওএসএক্স
বিকাশকারী:
- ওএসএক্স কাঠামো তৈরি করে
- এটি গ্রাহককে দেয়
বিকাশকারী থেকে কোনও কোডইনিং ক্রিয়াকলাপ প্রয়োজন।
গ্রাহক:
- বিকাশকারী থেকে ওএসএক্স কাঠামো গ্রহণ করে
- ফ্রেমওয়ার্ক / ডিরেক্টরিতে ফ্রেমওয়ার্কগুলি অনুলিপি করে এবং "কপিরাইটে কোড সাইন" প্রক্রিয়ার অংশ হিসাবে তাদের, গ্রাহকগণের পক্ষে এটি স্বয়ংক্রিয়ভাবে কোডাইন করে।
আইওএস
বিকাশকারী:
- ডিভাইসের জন্য আইওএস ফ্রেমওয়ার্ক তৈরি করে। কোডসাইনিংটি এক্সকোডের দ্বারা প্রয়োজনীয়, "আইফোন বিকাশকারী" পরিচয় যথেষ্ট।
- সিমুলেটারের জন্য আইওএস ফ্রেমওয়ার্ক তৈরি করে।
- পূর্ববর্তী দুটি থেকে সর্বজনীন iOS ফ্রেমওয়ার্ক তৈরি করে এমন লিপো ব্যবহার করে। এই মুহুর্তে 1 পদক্ষেপের কোডসাইনিং পরিচয়টি নষ্ট হয়: সর্বজনীন কাঠামো বাইনারি "একেবারে স্বাক্ষরিত হয় না" তবে এটি ঠিক যেহেতু "গ্রাহক যত্ন করে না"।
- এটি গ্রাহককে দেয়
গ্রাহক:
- বিকাশকারী থেকে আইওএস কাঠামো গ্রহণ করে
- ফ্রেমওয়ার্ক / ডিরেক্টরিতে ফ্রেমওয়ার্কগুলি অনুলিপি করুন (এই পদক্ষেপটি 3 য় ধাপের স্ক্রিপ্টের উপর নির্ভর করে অপ্রয়োজনীয় হতে পারে))
- বিল্ড প্রসেসের অংশ হিসাবে বিশেষ স্ক্রিপ্ট ব্যবহার করে: এই স্ক্রিপ্টটি সিমুলেটরটি আইওএস ফ্রেমওয়ার্কটি সরিয়ে ফেলে এবং তারপরে, গ্রাহকগণের পক্ষে এটি পুনরায় কোডসাইন করে।