আইওএস এক্সকোড এসপিএম সুপারক্লাসকে ডিমেং করতে ব্যর্থ


9

আমার অ্যাপটি অনেকগুলি প্রকল্পের (ফ্রেমওয়ার্ক) সমন্বিত, প্রতিটি মূল বৈশিষ্ট্যের জন্য একটি এবং আমার বৈশিষ্ট্যগুলির একাধিকটিতে আমার অ্যাক্সেস করতে হবে এমন সমস্ত ধরণের জিনিসগুলির সাথে একটি সাধারণ কাঠামো রয়েছে।

নির্ভরতা যুক্ত করতে আমি এক্সকোড 11 এর সুইফট প্যাকেজ ম্যানেজার ব্যবহার করছি।

সাধারণ কাঠামোটিতে একটি RxSwift নির্ভরতা থাকে, যা আমি পুরো প্রকল্প জুড়ে ব্যবহার করি।

আমি যখন আমার কোনও বৈশিষ্ট্য ফ্রেমওয়ার্কে RxTest ব্যবহার করার চেষ্টা করি তখন আমি সমস্যার মুখোমুখি হচ্ছি।

আমি যদি এসপিএমের মাধ্যমে আরএক্সস্টেস্টকে সরাসরি পরীক্ষার টার্গেটে যুক্ত করি এবং পরীক্ষাগুলি চালাই, আমি পাই

'শ্রেণীর নাম' এর সুপারক্লাসকে ম্যাংলেড নাম থেকে 'অন্যান্য শ্রেণীর নাম' থেকে বিচ্যুত করতে ব্যর্থ

এবং অনেক

ক্লাস 'শ্রেণির নাম' উভয় 'সাধারণ কাঠামো পথ' এবং 'পরীক্ষার লক্ষ্য পথ' উভয় ক্ষেত্রে প্রয়োগ করা হয়

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

আমি যদি সাধারণ কাঠামোর সাথে আরএক্সস্টেস্ট যুক্ত করি তবে পরীক্ষাগুলি ঠিকঠাক হয় তবে আমি অ্যাপটি চালানোর সময় আমি পাই

dyld: লাইব্রেরি লোড করা হয়নি: @ rpath / XCTest.framework / XCTest est

যা বোঝায়, কারণ আমি একটি পরীক্ষার কাঠামোয় একটি পরীক্ষার কাঠামো যুক্ত করছি, এবং এটি করা ভাল কিছু নয়।

সুতরাং মূলত, আমি কোনও কনফিগারেশন পেতে সক্ষম হইনি যেখানে পরীক্ষা এবং অ্যাপ্লিকেশন উভয়ই ঠিকঠাক। হয় অ্যাপ্লিকেশন চালানো হয় বা পরীক্ষা চালানো হয়।

আমি এই কাজ কিভাবে পেতে পারি? আমি যখন পরীক্ষার লক্ষ্যে এটি তৈরি করি তখনই সাধারণ কাঠামোতে আরএক্সটেষ্টকে অন্তর্ভুক্ত করার কোনও উপায় আছে? অথবা RxTest শুধুমাত্র পরীক্ষার লক্ষ্যবস্তুতে অন্তর্ভুক্ত করা উচিত এবং আমি কিছু কনফিগারেশন অনুপস্থিত?

উত্তর:


2

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


হাই, কোন ভাগ্য আরও খুঁজে?
জানু

এই সম্পর্কে কিছু খুঁজে পেয়েছি?
বোজেন

এখনও অবধি কিছুই নয় :) সমস্যাটি আসলে এটি হ'ল লক্ষ্যগুলিতে স্থিতিশীলতার সাথে সংযুক্তি যুক্ত করে।
জেডেনেক টপিক

0

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

আপনি পরিবর্তন যদি Package.swiftআছে RxTestএকটি গতিশীল লাইব্রেরি হতে পরিবর্তে এটি কাজ করা উচিত। আপনি সহজেই RxSwiftএই লাইনটি ক্লোন করে এবং সংশোধন করে এটি পরীক্ষা করতে পারেন :

.library(name: "RxTest", targets: ["RxTest"]),

মধ্যে:

.library(name: "RxTest", type: .dynamic, targets: ["RxTest"]),

এবং তারপরে RxSwiftআপনার Xcode প্রকল্প নেভিগেটরে স্থানীয় অনুলিপিটি টেনে আনছেন। এরপরে এটি এক্সকোড দ্বারা ক্লোন করা পরিবর্তে আপনার প্যাকেজের স্থানীয় কপি ব্যবহার করবে।

একবার আপনি এটি করেন আপনি এটি আপনার যে কোনও লক্ষ্যমাত্রার প্রয়োজনের সাথে লিঙ্ক করতে পারেন এবং এটি কার্যকর হওয়া উচিত। যদি এটি আসলে সমস্যার সমাধান করে তবে আপনার দীর্ঘমেয়াদী সমাধানগুলি সম্ভবত:

1) একটি কাঁটাচামচ আছে যা কেবল এটিকে ডায়নামিক লাইব্রেরিতে পরিবর্তন করে।

2) RxSwiftসম্প্রদায়কে তাদের পণ্যগুলিকে গতিশীল করতে বা ডিফল্টর পাশাপাশি গতিশীল সংস্করণগুলি বিক্রয় করতে সম্মতি জানায়।

3) RxTestএকাধিক জায়গায় ব্যবহার বা অনুরূপ জিনিস ব্যবহার করবেন না ।


এটিও লক্ষণীয় যে Xcode 11.3 এবং এর আগেরটি গতিশীল সুইফ্ট প্যাকেজ সহ আর্কাইভ সমর্থন করে না। সুতরাং আপনি যদি গতিশীল পথে নামেন তবে আপনাকে Xcode 11.4 এর জন্য অপেক্ষা করতে হবে।


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

ইয়া এটা ব্যথা। আমি সম্মত যে গতিশীল এখানে প্রত্যাশিত আচরণ হবে। এটি পরিবর্তন করতে আমরা সবচেয়ে ভাল যা করতে পারি তা হ'ল অ্যাপলের সাথে একটি প্রতিক্রিয়া অনুরোধ জানানো।
বিস্কোথার্ন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.