এই সমস্যার জন্য আমি যে সমাধানগুলি দেখেছি তার প্রতিটিই হয় অদৃশ্য বলে মনে হয়েছে (অ্যাপ্লিকেশনটির প্রকল্পের শিরোনাম অনুলিপি করা) বা অতিরিক্ত মাত্রায় সরল করা হয়েছে যে তারা কেবলমাত্র তুচ্ছ পরিস্থিতিতে কাজ করে।
সংক্ষিপ্ত উত্তর
আপনার ব্যবহারকারীর শিরোনাম অনুসন্ধানের পথে নিম্নলিখিত পাথটি যুক্ত করুন
"$ (বিল্ড_রোট) /../ ইন্টারমিডিয়েটবিল্ডফিলসপথ / আনইনস্টলড প্রোডাক্ট"
কেন এই কাজ করে?
প্রথমত, আমাদের সমস্যাটি বুঝতে হবে। সাধারণ পরিস্থিতিতে, যখন আপনি চালনা, পরীক্ষা, প্রোফাইল বা বিশ্লেষণ করেন তখন বলতে হয়, এক্সকোড আপনার প্রকল্প তৈরি করে এবং বিল্ড / পণ্য / কনফিগারেশন / পণ্য ডিরেক্টরিতে আউটপুট রাখে , যা U BUILT_PRODUCTS_DIR ম্যাক্রোর মাধ্যমে উপলব্ধ ।
সর্বাধিক স্ট্যাটিক লাইব্রেরি সংক্রান্ত নির্দেশিকা সেটিং সুপারিশ জন শিরোলেখ ফোল্ডার পাথ থেকে $ TARGET_NAME এর , যার মানে আপনার liberal এর সংক্ষিপ্ত রূপ ফাইল হয়ে $ BUILT_PRODUCTS_DIR /libTargetName.a এবং আপনার হেডার পুরা হয় $ BUILT_PRODUCTS_DIR / TargetName। যতক্ষণ না আপনার অ্যাপ্লিকেশনটিতে তার অনুসন্ধানের পথে $ BUILT_PRODUCTS_DIR অন্তর্ভুক্ত থাকবে, ততক্ষণ আমদানি উপরের 4 টি পরিস্থিতিতে কাজ করবে। যাইহোক, আপনি সংরক্ষণাগার দেওয়ার চেষ্টা করার পরে এটি কাজ করবে না।
সংরক্ষণাগারটি কিছুটা ভিন্নভাবে কাজ করে
আপনি যখন কোনও প্রকল্প সংরক্ষণাগারভুক্ত করেন, এক্সকোড আর্কাইভইন্টারমিডিয়েটস নামে একটি আলাদা ফোল্ডার ব্যবহার করে। সেই ফোল্ডারের মধ্যে আপনি / আপনার অ্যাপনাম / বিল্ডপ্রডাক্টসপথ / রিলিজ-আইফোনস / পাবেন। এই ফোল্ডারটিই যখন আপনি কোনও সংরক্ষণাগারটি করেন $ BUILT_PRODUCTS_DIR নির্দেশ করে। আপনি যদি সেখানে সন্ধান করেন তবে দেখতে পাবেন যে আপনার নির্মিত স্ট্যাটিক লাইব্রেরি ফাইলে একটি সিমিলিংক রয়েছে তবে শিরোনাম সহ ফোল্ডারটি অনুপস্থিত।
শিরোনামগুলি (এবং lib ফাইল) সন্ধানের জন্য আপনাকে ইন্টারমিডিয়েটবিল্ডফাইসপ্যাথ / আনইনস্টলড প্রোডাক্টস / এ যেতে হবে। স্থির লাইব্রেরির জন্য যখন আপনাকে YES এ ইনস্টল করুন সেট করতে বলা হয়েছিল তখন মনে রাখবেন ? ঠিক আছে যখন আপনি একটি সংরক্ষণাগার তৈরি করবেন তখন সেটিংসের সেই প্রভাবটি রয়েছে।
পার্শ্ব দ্রষ্টব্য: আপনি যদি এটিকে ইনস্টল এড়িয়ে যাওয়ার জন্য সেট না করেন তবে আপনার শিরোনামগুলি অন্য কোনও জায়গায় স্থাপন করা হবে এবং lib ফাইলটি আপনার সংরক্ষণাগারে অনুলিপি করা হবে, যা আপনি অ্যাপ স্টোরের কাছে জমা দিতে পারেন এমন একটি .ipa ফাইল রফতানি থেকে বিরত রাখবে ।
অনেক খোঁজাখুঁজির পরেও আমি আনইনস্টলড প্রোডাক্টস ফোল্ডারের সাথে যথাযথ অনুরূপ কোনও ম্যাক্রো পাইনি, সুতরাং "B (বিল্ড_রোট) /../ দিয়ে ইন্টারমিডিয়েটবিল্ডফিলসপথ / আনইনস্টলড প্রোডাক্ট"
সারসংক্ষেপ
আপনার স্ট্যাটিক লাইব্রেরির জন্য, নিশ্চিত হয়ে নিন যে আপনি ইনস্টল করা এড়িয়ে গেছেন এবং আপনার সর্বজনীন শিরোনামগুলি $ TARGET_NAME এ স্থাপন করা হয়েছে।
আপনার অ্যাপ্লিকেশানের জন্য, আপনার ব্যবহারকারী শিরোনাম অনুসন্ধানের পথগুলিকে "$ (BUILT_PRODUCTS_DIR)" এ সেট করুন, যা নিয়মিত বিল্ডগুলির জন্য সূক্ষ্ম কাজ করে এবং "$ (BUILD_ROOT) /../ ইন্টারমিডিয়েটবাইল্ডফাইলসপথ / আনইনস্টলড প্রোডাক্টস", যা সংরক্ষণাগার বিল্ডগুলির জন্য কাজ করে।