কীভাবে "ফ্যাট" কোকো টাচ ফ্রেমওয়ার্ক রফতানি করবেন (সিমুলেটার এবং ডিভাইসের জন্য)?


107

সঙ্গে Xcode 6 আমরা নিজের ডায়নামিক তৈরি করার ক্ষমতা পেতে Cocoa Frameworks

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

কারণে:

  • সিমুলেটর এখনও 32-bitলাইব্রেরি ব্যবহার

  • 1 জুন, 2015 থেকে অ্যাপ স্টোরে জমা দেওয়া অ্যাপ্লিকেশন আপডেটগুলিতে অবশ্যই 64-বিট সমর্থন অন্তর্ভুক্ত থাকতে হবে এবং আইওএস 8 এসডিকে ( বিকাশকারী.অ্যাপলকম ) দিয়ে তৈরি করা আবশ্যক

ডিভাইস এবং সিমুলেটরগুলিতে প্রকল্প চালানোর জন্য আমাদের ফ্যাট লাইব্রেরি তৈরি করতে হবে। যেমন ফ্রেমওয়ার্কগুলিতে 32 এবং 64 বিট উভয় সমর্থন করুন।

তবে আমি কোনও ম্যানুয়াল পাইনি, কীভাবে অন্যান্য প্রকল্পগুলির সাথে ভবিষ্যতের সংহতকরণের জন্য সার্বজনীন ফ্যাট ফ্রেমওয়ার্ক রফতানি করতে হবে (এবং এই লাইব্রেরিটি কারও সাথে ভাগ করুন)।

পুনরুত্পাদন করার জন্য আমার পদক্ষেপ এখানে:

  1. সেট ONLY_ACTIVE_ARCH=NOকরুনBuild Settings

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

  2. সমর্থন যোগ armv7 armv7s arm64 i386 x86_64করার Architectures(নিশ্চিত)

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

  1. ফ্রেমওয়ার্ক তৈরি করুন এবং এটি ফাইন্ডারে খুলুন:

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

  1. অন্য প্রকল্পে এই কাঠামো যুক্ত করুন

আসল ফলাফল:

তবে শেষ পর্যন্ত আমার এখনও একই সাথে ডিভাইস এবং সিমুলেটারে এই কাঠামোটি নিয়ে প্রকল্পটি চালাতে সমস্যা হচ্ছে।

  • যদি আমি Debug-iphoneosফোল্ডার থেকে ফ্রেমওয়ার্ক নিই - এটি ডিভাইসগুলিতে কাজ করে এবং সিমুলেটরগুলিতে ত্রুটি পায়:ld: symbol(s) not found for architecture i386

      xcrun lipo -info CoreActionSheetPicker

    ফ্যাট ফাইলে আর্কিটেকচার: কোর অ্যাকশনশীটপিকার রয়েছে: আর্মভ 7 আর্মভি 7 এস আর্ম 64

  • যদি আমি Debug-iphonesimulatorফোল্ডার থেকে ফ্রেমওয়ার্ক নিই - এটি সিমুলেটরগুলিতে কাজ করে। এবং ডিভাইসে আমার ত্রুটি রয়েছে:ld: symbol(s) not found for architecture arm64

      xcrun lipo -info CoreActionSheetPicker

    ফ্যাট ফাইলে আর্কিটেকচার: কোরঅ্যাকশনশীটপিকার হ'ল: i386 x86_64

সুতরাং, কীভাবে একটি গতিশীল কাঠামো তৈরি করা যায় যা ডিভাইস এবং সিমুলেটারগুলিতে কাজ করে?

এক্সকোড 6 আইওএস সম্পর্কিত এই উত্তরটি কোকো টাচ ফ্রেমওয়ার্ক তৈরি করছে - আর্কিটেকচার বিষয়গুলি তবে এটি সদৃশ নয়।


হালনাগাদ:

আমি এই মামলার জন্য একটি "নোংরা হ্যাক" পেয়েছি। আমার উত্তর নীচে দেখুন । যদি কেউ আরও সুবিধাজনক উপায় জানেন - দয়া করে আমাকে জানান!


ডুপ্লিকেট ইস্যু stackoverflow.com/questions/24039470/...
Andrius Steponavičius

@ AndriusSteponavičius এই প্রশ্নটি 2 মাস আগে জিজ্ঞাসা করা হয়েছিল।
স্কাইওয়ান্ডার

হ্যাঁ, তবে সেখানে আরও বিস্তারিত উত্তর রয়েছে, যা আমি মনে করি ব্যবহারকারীদের সম্পর্কে জানা উচিত
Andrius Steponavičius

কেবলমাত্র বিল্ড সেটিংসে ওয়ানওয়াই_এসিটিআইভি = মার্চ সেট করুন একটি গুরুত্বপূর্ণ পদক্ষেপ।
Jedidja

আপনার কাঠামোর জন্য উভয় ফ্যাট বাইনারি i386 x86_64 স্লাইস প্রয়োজন হয় যদি আপনি এটি সিমুলেটারে চালাতে চান এমনকি যদি আপনার কম্পিউটারের একটি 64 বিট শিল্প রয়েছে !!! কঠিন উপায় শিখেছি।
জে.বেণী

উত্তর:


82

এই উত্তরের বাস্তবতা: জুলাই ২০১৫ things সম্ভবত জিনিসগুলি পরিবর্তিত হবে।

TLDR;

বর্তমানে এক্সকোডের সর্বজনীন ফ্যাট ফ্রেমওয়ার্কের স্বয়ংক্রিয় রফতানির জন্য সরঞ্জাম নেই তাই বিকাশকারীকে অবশ্যই lipoসরঞ্জামটির ম্যানুয়াল ব্যবহার অবলম্বন করতে হবে । এছাড়াও এই রাডার অনুসারে অ্যাপস্টোর বিকাশকারীর কাছে জমা দেওয়ার আগে যিনি কাঠামোর গ্রাহক সেও অবশ্যই lipoএকটি কাঠামো থেকে সিমুলেটর স্লাইসগুলি সরাতে ব্যবহার করতে হবে ।

দীর্ঘ উত্তর অনুসরণ করা


আমি বিষয়টিতে অনুরূপ গবেষণা করেছি (উত্তরের নীচে লিঙ্কটি)।

আমি তাই আমার গবেষণার অ্যাপল ডেভেলপার ফোরাম, কার্থেজের এবং অধিরাজ্য প্রকল্প এবং সঙ্গে আমার নিজের পরীক্ষা-নিরীক্ষা অন্বেষণ ওপর ভিত্তি করে বন্টন সম্পর্কে কোনো সরকারী ডকুমেন্টেশন পাওয়া ছিল xcodebuild, lipo, codesignসরঞ্জাম।

এম্বেডড ফ্রেমওয়ার্ক সহ অ্যাপল বিকাশকারী ফোরাম থ্রেড এক্সপোর্টিং অ্যাপ্লিকেশন থেকে এখানে দীর্ঘ উদ্ধৃতি (আমার কাছ থেকে কিছুটা মার্কআপের সাথে) :

একটি কাঠামো প্রকল্প থেকে কাঠামো রফতানির সঠিক উপায় কী?

বর্তমানে একমাত্র উপায় হ'ল আপনি যা করেছেন ঠিক তা:

  • উভয় সিমুলেটর এবং আইওএস ডিভাইসের জন্য লক্ষ্য তৈরি করুন।
  • সেই প্রকল্পের জন্য এক্সকোডের ডেরিভেডডাটা ফোল্ডারে নেভিগেট করুন এবং দুটি বাইনারি একসাথে একক কাঠামোতে লিপো করুন। যাইহোক, আপনি যখন এক্সকোডে ফ্রেমওয়ার্ক লক্ষ্যটি তৈরি করেন, লক্ষ্য নির্ধারণটি 'বিল্ড অ্যাক্টিভ আর্কিটেকচার কেবল' থেকে 'না' তে সামঞ্জস্য করার বিষয়টি নিশ্চিত করুন। এটি এক্সকোডকে একাধিক বাইনার্টি ধরণের (আর্ম 64, আর্মভি 7 ইত্যাদি) লক্ষ্য তৈরি করতে অনুমতি দেবে। এটি Xcode থেকে কাজ করে তবে একক বাইনারি হিসাবে নয় This

  • এছাড়াও আপনি নিশ্চিত করতে চাইবেন যে স্কিমটি একটি রিলিজ বিল্ডে সেট হয়েছে এবং মুক্তির বিরুদ্ধে কাঠামো লক্ষ্য তৈরি করবে। আপনি যদি এখনও একটি লাইব্রেরি লোড ত্রুটি না পেয়ে থাকেন তবে ফ্রেমওয়ার্কে কোড স্লাইসগুলি পরীক্ষা করুন।

  • lipo -info MyFramworkBinaryফলাফলটি ব্যবহার করুন এবং পরীক্ষা করুন।

lipo -info MyFrameworkBinary

ফলাফল হয় i386 x86_64 armv7 arm64

  • আধুনিক সর্বজনীন ফ্রেমওয়ার্কগুলিতে 4 টি স্লাইস অন্তর্ভুক্ত থাকবে তবে এতে আরও অন্তর্ভুক্ত থাকতে পারে: i386 x86_64 armv7 arm64 আপনি যদি কমপক্ষে এই 4টি না দেখেন তবে এটি বিল্ড অ্যাক্টিভ আর্কিটেকচার সেটিং এর কারণে এটি গণ্য হবে।

এই প্রক্রিয়াটি বর্ণনা করেছেন ঠিক যেমনটি @ স্কাইভেন্ডার তার উত্তরে এটি করেছিলেন।

এইভাবে কার্থেজ লিপো ব্যবহার করে এবং রাজ্যটি লিপো ব্যবহার করে


গুরুত্বপূর্ণ বিশদ

রাডার রয়েছে: এক্সকোড 6.1.1 এবং 6.2: সিমুলেটর স্লাইসযুক্ত আইওএস ফ্রেমওয়ার্কগুলি অ্যাপ স্টোরের কাছে জমা দেওয়া যাবে না এবং এর চারপাশে দীর্ঘ আলোচনা হবে রিয়েলাম # 1163 এবং কার্থেজ # 188 যা বিশেষ কাজের অংশে শেষ হয়েছে:

অ্যাপস্টোর আইওএস ফ্রেমওয়ার্ক বাইনারিগুলিতে জমা দেওয়ার আগে অবশ্যই সিমুলেটর স্লাইসগুলি থেকে সরিয়ে ফেলা উচিত

কার্থেজের বিশেষ কোড রয়েছে: কপিফ্রেমওয়ার্কস এবং ডকুমেন্টেশনের সাথে সম্পর্কিত টুকরা:

এই স্ক্রিপ্টটি সর্বজনীন বাইনারি দ্বারা চালিত অ্যাপ স্টোর জমা দেওয়ার বাগের চারপাশে কাজ করে ।

রাজ্যের বিশেষ স্ক্রিপ্ট রয়েছে: স্ট্রিপ-ফ্রেমওয়ার্কস.শ এবং সম্পর্কিত ডকুমেন্টেশনের টুকরা:

সর্বজনীন বাইনারি সংরক্ষণাগারভুক্ত করার সময় এই স্টেপটির জন্য অ্যাপ স্টোর জমা দেওয়ার বাগের চারপাশে কাজ করা প্রয়োজন ।

এছাড়াও ভাল নিবন্ধ আছে: এক্সকোডে ডায়নামিক লাইব্রেরিগুলি থেকে অবাঞ্ছিত আর্কিটেকচার কেটে নেওয়া

আমি নিজেই রিয়েলমের ব্যবহার করেছি strip-frameworks.shযা আমার জন্য কোনও পরিবর্তন ছাড়াই নিখুঁতভাবে কাজ করেছে যদিও অবশ্যই যে কেউ স্ক্র্যাচ থেকে একটি লিখতে মুক্ত।


আমার বিষয়টির লিঙ্কটি যা আমি পড়ার পরামর্শ দিচ্ছি কারণ এটিতে এই প্রশ্নের আরও একটি দিক রয়েছে: কোড সাইন ইন - আইওএস / ওএসএক্স ফ্রেমওয়ার্ক তৈরি করা: অন্য বিকাশকারীদের বিতরণ করার আগে এগুলি কোড সাইন করা কি প্রয়োজনীয়?


1
আমি লিপো ব্যবহার করেছি তবে যখন ফ্রেমওয়ার্কটি সিমুলেটর তৈরি করছে তখন এটি শ্রেণীর নামের সাথে অমীমাংসিত শনাক্তকারী দেখায় কিন্তু ডিভাইসে এটি কাজ করে। যদি বাইনারিটির সিমুলেটর সংস্করণ ব্যবহার করে তবে এটি কাজ করছে .. কোনও ধারণা?
সুসিম সামন্ত

2
ডিসেম্বর 2016 এ Xcode 8.2 দ্বারা এটির কোনও প্রমাণ আমি খুঁজে পেয়েছি have: /
জেফ্রি উইজম্যান 15

1
@ জিফ্রে, এটি কি এক্সকোড ৯.২ এ পরিবর্তিত হয়েছে বা কিছু আলাদা? বিতরণের জন্য বাইনারি কাঠামো তৈরি করা আমার এই প্রথমবার, এবং আমি ইতিমধ্যে ভয়
পেয়েছি

দুঃখের সাথে - কিছুটা এই কাজটি করা হয়নি say শুভকামনা।
জেফ্রি ওয়াইজম্যান

57

এটি এত পরিষ্কার সমাধান নয়, তবে কেবল একটি উপায় আছে যা আমি খুঁজে পাই:

  1. সেট ONLY_ACTIVE_ARCH=NOকরুনBuild Settings

    • সিমুলেটারের জন্য লাইব্রেরি তৈরি করুন
    • ডিভাইসের জন্য লাইব্রেরি তৈরি করুন
  2. Productsআপনার কাঠামোর জন্য কনসোল ফোল্ডারে খুলুন (আপনি ওপেন ফ্রেমওয়ার্ক ফোল্ডার দ্বারা এবং cd ..সেখান থেকে এটি খুলতে পারেন )

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

  1. ফোল্ডার থেকে এই স্ক্রিপ্ট চালান Products। এটি এই ফোল্ডারে ফ্যাট ফ্রেমওয়ার্ক তৈরি করে। (অথবা নিজে নীচে ব্যাখ্যা না 3. 4. )

বা:

  1. এই স্ক্রিপ্ট দ্বারা লিপো ব্যবহার করে এই 2 ফ্রেমওয়ার্কগুলি একত্রিত করুন ( YourFrameworkNameআপনার ফ্রেমওয়ার্কের নামটি প্রতিস্থাপন করুন )

    lipo -create -output "YourFrameworkName" "Debug-iphonesimulator/YourFrameworkName.framework/YourFrameworkName" "Debug-iphoneos/YourFrameworkName.framework/YourFrameworkName"
  2. বিদ্যমান ফ্রেমওয়ার্কগুলির মধ্যে একটি নতুন বাইনারি দিয়ে প্রতিস্থাপন করুন:

    cp -R Debug-iphoneos/YourFrameworkName.framework ./YourFrameworkName.framework
    mv YourFrameworkName ./YourFrameworkName.framework/YourFrameworkName
    

  1. লাভ: ./YourFrameworkName.framework- ব্যবহারের জন্য প্রস্তুত ফ্যাট বাইনারি! আপনি আপনার প্রকল্পে এটি আমদানি করতে পারেন!

প্রকল্পের জন্য, যা ওয়ার্কস্পেসে নেই:

আপনি এখানে বর্ণিত হিসাবে এই টুকরোটি ব্যবহার করার চেষ্টা করতে পারেন । তবে মনে হচ্ছে, এটি ওয়ার্কস্পেসের প্রকল্পগুলির জন্য কাজ করে না।


আমি ভেবেছিলাম অ্যাপল আর ফ্যাট বাইনারি গ্রহণ করে না। kodmunki.wordpress.com/2015/03/04/…
মনস্টিওর

1
@ স্কাইওয়াইন্ডার ফ্যাট বাইনারি ব্যবহারের জন্য প্রস্তুত আপনি কি অন্য কোনও সহজ উপায় রফতানি কোকো টাচ ফ্রেমওয়ার্ক পেয়েছেন? আমি উপরের মত একই পদ্ধতি ব্যবহার করছি তবে আমি এটি পছন্দ করি না। এক্সকোডের এমন কিছু থাকা উচিত যা প্রক্রিয়াটি স্বয়ংক্রিয় করে দেয়।
দেব জিআর

1
@ দেবগ্রাহ এখনও পর্যন্ত না .. সেজন্য আমি আমার নিজের উত্তর গ্রহণ করি নি। এখনও আরও ভাল সমাধান খুঁজছেন।
স্কাইওয়েন্ডার

1
সিমুলেটরটিতে চলতে পারে না তবে 3 এবং 4 ধাপের সাহায্যে ডিভাইসে কাজ করে
jose920405

1
@ যে কেউ কেবল Debug-ফোল্ডারটি কেন ব্যবহার করবেন তা ব্যাখ্যা করতে পারবেন lipo -create? এই কাঠামোটি Releaseকনফিগারেশনের জন্য ব্যবহার করা যেতে পারে এবং কেন? ধন্যবাদ।
ইয়েভেন ডাবিনিন

10

@ স্টিলেভ উত্তরটি খুব সহায়ক ছিল তবে আমি তার পরিবর্তে যা করেছি তা হ'ল ফ্রেমওয়ার্কের দুটি সংস্করণ (একটি ডিভাইসের জন্য এবং একটি সিমুলেটারের জন্য) সংকলন করা এবং তারপরে Run Script Phaseচলমান আর্কিটেকচারের জন্য প্রয়োজনীয় পূর্বনির্দিষ্ট কাঠামোটি স্বয়ংক্রিয়ভাবে অনুলিপি করতে নিম্নলিখিতটি যুক্ত করা হয়েছিল

echo "Copying frameworks for architecture: $CURRENT_ARCH"
if [ "${CURRENT_ARCH}" = "x86_64" ] || [ "${CURRENT_ARCH}" = "i386" ]; then
  cp -af "${SRCROOT}/Frameworks/Simulator/." "${SRCROOT}/Frameworks/Active"
else
  cp -af "${SRCROOT}/Frameworks/Device/." "${SRCROOT}/Frameworks/Active"
fi

অ্যাপ স্টোরে জমা দেওয়ার সময় অযৌক্তিক টুকরোগুলি সরিয়ে ফেলতে lipoআমার strip-frameworks.shকাছে কোনও ফ্যাট ফ্রেমওয়ার্ক তৈরির ব্যবহার নেই ।


আপনি কোনটির সাথে লিঙ্ক করবেন?
জাকা জানার

@ JakaJančar আমি ${SRCROOT}/Frameworks/Activeফোল্ডারে থাকা ব্যক্তির সাথে লিঙ্ক করছি । তারা সংকলনের সময় সক্রিয় আর্কিটেকচারের জন্য সঠিক পূর্বনির্ধারিত ফ্রেমওয়ার্কগুলির জন্য প্রতিস্থাপিত হয়।
odm

2
এটা ভালবাসা! এটি একত্রিত-পরে-টিয়ার-অ্যাডর lipoঅ্যাপ্রোচ চেয়ে অনেক সহজ ।
ক্লোজাচ

2

মূলত এর জন্য আমি খুব ভাল সমাধান খুঁজে পেয়েছি। আপনার কেবল এই সাধারণ পদক্ষেপগুলি অনুসরণ করতে হবে।

  1. একটি কোকো টাচ ফ্রেমওয়ার্ক তৈরি করুন।
  2. বিটকোড নম্বরে সক্ষম করুন
  3. আপনার লক্ষ্য নির্বাচন করুন এবং স্কিম সম্পাদনা চয়ন করুন। রান নির্বাচন করুন এবং তথ্য ট্যাব থেকে মুক্তি নির্বাচন করুন।
  4. অন্য কোনও সেটিংসের প্রয়োজন নেই।
  5. X86 আর্কিটেকচারে সিমুলেটর চলমান হিসাবে এখন যে কোনও সিমুলেটারের জন্য কাঠামো তৈরি করুন।
  6. প্রকল্প নেভিগেটরে পণ্য গোষ্ঠীতে ক্লিক করুন এবং। ফ্রেমওয়ার্ক ফাইলটি সন্ধান করুন।
  7. এটিতে ডান ক্লিক করুন এবং শো ইন ফাইন্ডারে ক্লিক করুন। এটি কোনও ফোল্ডারে অনুলিপি করুন এবং আটকান, আমি ব্যক্তিগতভাবে 'সিমুলেটর' নামটি পছন্দ করি।
  8. এখন জেনেরিক আইওএস ডিভাইসটির কাঠামো তৈরি করুন এবং through থেকে through টি ধাপ অনুসরণ করুন। কেবলমাত্র সিমুলেটারের পরিবর্তে ফোল্ডারটির নাম 'ডিভাইস' করুন।
  9. ডিভাইস। ফ্রেমওয়ার্ক ফাইলটি অনুলিপি করুন এবং অন্য কোনও ডিরেক্টরিতে আটকান। আমি উভয়ের তাত্ক্ষণিক সুপার ডিরেক্টরি পছন্দ। সুতরাং ডিরেক্টরি কাঠামো এখন হয়ে যায়:
    • ডেস্কটপ
    • যন্ত্র
      • MyFramework.framework
    • কাল্পনিক
      • MyFramework.framework
    • মাইফ্রেমওয়ার্ক.ফ্রেমওয়ার্ক এখন টার্মিনালটি খুলুন এবং ডেস্কটপে সিডি করুন। এখন নিম্নলিখিত কমান্ডটি টাইপ করা শুরু করুন:

লাইপো-ক্রিয়েট 'ডিভাইস / মাইফ্রেমে ওয়ার্ক.ফ্রেমওয়ার্ক / মাইফ্রেমওয়ার্ক' 'সিমুলেটর / মাইফ্রেমে ওয়ার্ক.ফ্রেমওয়ার্ক / মাই ফ্রেমওয়ার্ক' -আউটপুট 'মাইফ্রেমে ওয়ার্ক.ফ্রেমওয়ার্ক / মাই ফ্রেমওয়ার্ক'

এবং এটাই. এখানে আমরা মাইফ্রেমেওয়ার্ক.ফ্রেমওয়ার্কের ভিতরে মাইফ্রেমওয়ার্ক বাইনারি উপস্থিত সিমুলেটর এবং ডিভাইস সংস্করণটি মার্জ করি। আমরা একটি সর্বজনীন কাঠামো পাই যা সিমুলেটর এবং ডিভাইস সহ সমস্ত আর্কিটেকচারের জন্য তৈরি করে।


আমি বিটকোড সক্ষম করে FAT ফাইল তৈরি করতে চাই। আমাকে গাইড করুন।
ব্যবহারকারী 3898700

2

আমি কেবল @odm দ্বারা এই দুর্দান্ত উত্তরটি আপডেট করতে চাই । এক্সকোড 10 সাল থেকে CURRENT_ARCHভেরিয়েবল বিল্ড আর্কিটেকচারটি আর প্রতিফলিত করে না। পরিবর্তে প্ল্যাটফর্মটি পরীক্ষা করতে আমি স্ক্রিপ্টটি পরিবর্তন করেছি:

echo "Copying frameworks for platform: $PLATFORM_NAME"
rm -R "${SRCROOT}/Frameworks/Active"
if [ "${PLATFORM_NAME}" = "iphonesimulator" ]; then
    cp -af "${SRCROOT}/Frameworks/Simulator/." "${SRCROOT}/Frameworks/Active"
else
    cp -af "${SRCROOT}/Frameworks/Device/." "${SRCROOT}/Frameworks/Active"
fi

আমি অনুলিপি করার আগে লক্ষ্য ডিরেক্টরিটি সাফ করার জন্য একটি লাইনও যুক্ত করেছি, কারণ আমি লক্ষ্য করেছি যে সাব-ডিরেক্টরিতে অতিরিক্ত ফাইল অন্যথায় ওভাররাইট করা হবে না rit


1

আমার উত্তর নীচের বিষয়গুলি কভার:

  • ফ্রেমওয়ার্ক তৈরি করুন যা সিমুলেটর এবং ডিভাইস উভয়ের জন্যই কাজ করে

  • কীভাবে "ফ্যাট" কোকো টাচ ফ্রেমওয়ার্ক রফতানি করবেন (সিমুলেটার এবং ডিভাইস উভয়ের জন্য)?

  • X86_64 আর্কিটেকচারের জন্য অপরিবর্তিত প্রতীক

  • ld: স্থাপত্যের জন্য প্রতীক (গুলি) খুঁজে পাওয়া যায়নি x86_64 86

পদক্ষেপ 1: প্রথমে সিমুলেটর টার্গেট সহ আপনার ফ্রেমওয়ার্কগুলি তৈরি করুন

পদক্ষেপ 2: সিমুলেটর বিল্ডিং প্রক্রিয়া সাফল্যের পরে, এখন ডিভাইস লক্ষ্য নির্বাচন বা জেনেরিক আইওএস ডিভাইস নির্বাচনের সাহায্যে আপনার কাঠামোর জন্য তৈরি করুন

পদক্ষেপ 3: এখন আপনার কাঠামোর লক্ষ্য নির্বাচন করুন এবং তার জন্য "বিল্ড পর্যায়সমূহ" এর অধীনে "রান স্ক্রিপ্ট যুক্ত করুন" নির্বাচন করুন এবং নীচের স্ক্রিপ্ট কোডটি অনুলিপি করুন)

পদক্ষেপ 4: এখন অবশেষে, আবার তৈরি করুন এবং আপনার কাঠামো উভয় সিমুলেটর এবং ডিভাইসের সামঞ্জস্যের জন্য প্রস্তুত। Hurray থেকে !!!!

[দ্রষ্টব্য: চূড়ান্ত পদক্ষেপ 4 এর আগে আমাদের উভয়ই সামঞ্জস্যপূর্ণ কাঠামো প্রস্তুত থাকতে হবে (সিমুলেটর এবং ডিভাইস আর্কিটেকচার সামঞ্জস্যপূর্ণ, যদি না দয়া করে উপরের পদক্ষেপগুলি 1 এবং 2 টি সঠিকভাবে অনুসরণ করুন)

রেফারেন্স চিত্রটি দেখুন:

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

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

শেল অঞ্চলে কোডের নীচে রাখুন:

#!/bin/sh


UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal


# make sure the output directory exists

mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"


# Step 1. Build Device and Simulator versions

xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos  BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build

xcodebuild -target "${PROJECT_NAME}" -configuration ${CONFIGURATION} -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build


# Step 2. Copy the framework structure (from iphoneos build) to the universal folder

cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework" "${UNIVERSAL_OUTPUTFOLDER}/"


# Step 3. Copy Swift modules from iphonesimulator build (if it exists) to the copied framework directory

SIMULATOR_SWIFT_MODULES_DIR="${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/Modules/${PROJECT_NAME}.swiftmodule/."

if [ -d "${SIMULATOR_SWIFT_MODULES_DIR}" ]; then

cp -R "${SIMULATOR_SWIFT_MODULES_DIR}" "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/Modules/${PROJECT_NAME}.swiftmodule"

fi


# Step 4. Create universal binary file using lipo and place the combined executable in the copied framework directory

lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework/${PROJECT_NAME}"


# Step 5. Convenience step to copy the framework to the project's directory

cp -R "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework" "${PROJECT_DIR}"


# Step 6. Convenience step to open the project's directory in Finder

open "${BUILD_DIR}/${CONFIGURATION}-universal"


এই লিপিটি নিজেকে কল করে বলে মনে হচ্ছে এটি অসীম লুপের কারণ হয়ে দাঁড়িয়েছে !! এটি চালানোর পরে আমার কম্পিউটারটি পুনরায় চালু করতে হবে! ক্রমাগতভাবে নতুন এক্সকোডবিল্ড প্রক্রিয়া তৈরি করছিল ... এবং নতুন ফাইন্ডার উইন্ডো খোলার - ভোট ডাউন হবে
J.beenie

পুনরাবৃত্তি সমস্যা ছাড়াই অনুরূপ স্ক্রিপ্টের জন্য এই এসও কিউ / এ- তে @ l0gg3r এর উত্তরটি দেখুন ।
জে.বেণী
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.