ইন iOS5 অ্যাপল ড্রপ armv6 থেকে স্থাপত্য ARCHS_STANDARD_32_BIT ।
আইফোন 3 জি সমর্থন রাখার জন্য আমি আইওএস 5-তে এমনকি আর্মভি 6-এ সংকলন করতে চাই ।
কেউ কি এর সমাধান খুঁজে পেয়েছিল?
উত্তর:
আমি সবেমাত্র iOS 4.0 এর একটি স্থাপনার লক্ষ্য নির্দিষ্ট করে কিছু তৈরি করেছি। আর্কিটেকচারগুলিতে কেবল আর্মভি 7 নির্দিষ্ট করে, এক্সকোড আমাকে সতর্ক করেছিল যে আইওএস 4.2 এর নীচে যে কোনও কিছু সমর্থন করতে আমাকে আর্কিটেকচারে আর্মভি 6 অন্তর্ভুক্ত করতে হয়েছিল। কেবলমাত্র সেই ক্ষেত্রটি সম্পাদনা করুন, ডায়ালগটি পপ আপ হয়ে গেলে "+" বোতামটি ক্লিক করুন এবং আক্ষরিক "আর্মভি 6" প্রবেশ করুন।
আমার ক্ষেত্রে, আমরা আমাদের অ্যাপ্লিকেশনটি আইওএস 4 এবং আইওএস 5 এর অধীনে কাজ করতে চাই। আমাদের কিছু সংশোধন করতে হয়েছিল যাতে এটি আইওএস 5 এর অধীনে সঠিকভাবে কাজ করবে তবে এই সমস্ত পরিবর্তনগুলি আইওএস 4-বন্ধুত্বপূর্ণ কোড পরিবর্তনগুলির মাধ্যমে হয়েছিল।
আমরা এমনভাবে কিছু আইওএস 5-নির্দিষ্ট ক্ষমতা যুক্ত করেছি যা অ্যাপ্লিকেশনটিকে আইওএস 4 এর অধীনে ক্রাশ না করে চালানোর অনুমতি দেয়। বিশেষত, আমরা iOS5 সক্ষমতার জন্য তাদের ব্যবহার করার চেষ্টা করার আগে পরীক্ষা করেছি এবং আইওএস 5-কেবলমাত্র লাইব্রেরিগুলিকে Oচ্ছিক হিসাবে সংযুক্ত করেছি।
সুতরাং, একটি আইওএস 5 জগতে আইফোন 3 জি সমর্থন করা ঠিক তত সহজেই বোঝাতে পারে "আমরা আমাদের অ্যাপ্লিকেশনটি আইওএস 4 এবং তার উপরে চালিত করতে চাই (কোনও আইওএস 5 বৈশিষ্ট্য ব্যবহার ছাড়াই)" বরং "আমরা নিশ্চিত করতে চাই যে আমাদের অ্যাপ্লিকেশন আইওএস 5 চলমান কোনও পুরানো ডিভাইসে চলেছে! "। এখানে একটি পার্থক্য আছে; চিন্তা করুন. :-)
যাইহোক, পিছনে আর্মভি 6 সমর্থন যুক্ত করা খুব সহজ। এবং আমি অনুমান করি এটি হ'ল: এক পর্যায়ে, যখন আর কোনও বাহু 6 ডিভাইস না থাকে তবে চিন্তার কারণ নেই (যে কারণেই হোক না কেন) এর জন্য আপনাকে আর তৈরি করতে হবে না। অ্যাপলের দৃষ্টিভঙ্গি হ'ল প্রত্যেকেরই যত তাড়াতাড়ি সম্ভব সর্বশেষতম হার্ডওয়্যারে আপগ্রেড করা উচিত। সুতরাং সেই বিশ্বে, সর্বশেষতম এবং সর্বশ্রেষ্ঠ ছাড়াও ডিভাইসগুলির কোনও কিছুর ডিফল্ট করার দরকার নেই। :-) সৌভাগ্যক্রমে (বা না), আমরা বিকাশকারীরা আসল বিশ্বে বাস করি এবং স্বীকার করি যে আপনাকে কিছু সময়ের জন্য পুরানো জিনিসগুলি সমর্থন করতে হবে। এবং আমি অনুমান করি যে এক্সকোড দেব দলটি এটি খুব জানে, এই কারণেই আপনি আর্মভ 6 সমর্থনটি খুব সহজভাবে যোগ করতে পারেন।
এর সহজ উত্তরটি হ'ল আপনাকে "স্ট্যান্ডার্ড (আর্মভি 7) - $ (এআরএইচএসপিআরপিডিআরডি_32_BIT)" থেকে স্রেফ "আর্মভি 6" এবং "আর্মভি 7" এ পরিবর্তন করতে হবে। নীচের চিত্রটি দেখুন। এটি কাজ করার জন্য আপনাকে পূর্ববর্তী সেটিংস সহ লাইনটি মুছতে হবে।
আপনি এটি প্রকল্প এবং লক্ষ্যগুলিতে সেট করেছেন তা নিশ্চিত করুন ... এটি নির্ধারণের জন্য আমার এক ঘন্টা ব্যয় হয়েছে। এটি একটির জন্য নির্ধারণ করেছিল কিন্তু অন্যটির জন্য নয়। আশাকরি এটা সাহায্য করবে. জিএলটিএ
আমি মনে করি যে অ্যাপল স্ট্যান্ডার্ড সেটিংস থেকে আর্মভ dropped নামার কারণ রয়েছে reason
আমি আইওএস 5 এসডিকে দিয়ে আর্মভি 7 / আর্মভি 6 সংকলন করেছি, তবে, আর্মভ 6 সংকলক রিলিজ মোডে ভুল কোড তৈরি করেছে। ঘন্টাখানেক পরে কাজ করার পরে (বিভিন্ন অপ্টিমাইজেশনের স্তরের সাথে এলএলভিএম বা জিসিসি চেষ্টা করা) ছেড়ে দিই।
সুতরাং, আমি যতক্ষণ না পুরানো আর্মভি 6 ডিভাইসগুলি সমর্থন করি ততক্ষণ আমি iOS এসডিকে 4.x এ ফিরে যাচ্ছি।
কোডের উদাহরণ:
// myView center=(160, 100)
CGPoint p=myView.center;
// now p=(100,100) (what the heck?)
p.x=myView.center.x;
p.y=myView.center.y;
// now p=(160,100)
p.y+=100;
// now p =(200,200) (what the heck?)
তবে আমার কাছে কিছুটা মেমোরি দুর্নীতি রয়েছে, তবে আর্মভ 7 সংকলক এবং আইওএসএসকে <5.0 এ এটি প্রত্যাশার মতো আচরণ করে।
শুভেচ্ছান্তে
এটি সত্যই এখনও কোনও সমাধান কিনা তা নিশ্চিত না, তবে আমি আবিষ্কার করেছি যে "আর্কিটেকচারগুলি" -এ the (আর্চএসসিপিআরডিআরডি_32_BIT) সংজ্ঞাযুক্ত স্ট্রিংয়ের পরিবর্তে "আর্মভি 6 আর্মভি 7" আমাকে আইওএস 5 এর সাথে বেস এবং আইওএস 4 একটি স্থাপনা হিসাবে সংকলন করার অনুমতি দেয় লক্ষ্য, এবং বৈধতা পাস।
আমি কোনও আইওএস 5-এক্সক্লুসিভ লাইব্রেরি বা কল ব্যবহার করছি না, তবে আমার পরবর্তী প্রকাশে যেতে চাইছি।