আইওএস লজিক পরীক্ষার সাহায্যে কোকোপড ব্যবহার করার সময় গ্রন্থাগারগুলি পাওয়া যায় নি


148

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

উদাহরণস্বরূপ, আমি যাদু রেকর্ড ব্যবহার করি এবং আমার পডস্পেকটিতে সেই লাইব্রেরিটি লিঙ্কযুক্ত রয়েছে। এটি আমার কর্মক্ষেত্রের পডস প্রকল্পে উপস্থিত রয়েছে এবং অ্যাপটি সিমুলেটর বা ডিভাইসে চলাকালীন প্রত্যাশার মতো কাজ করে। আমি যখন পরীক্ষার সাথে ম্যাজিকাল রেকর্ড ব্যবহার করে এমন বস্তুর সাথে লিঙ্ক করার চেষ্টা করি, তবে আমি একটি লিঙ্কারের ত্রুটি পেয়েছি যা জানায় যে এটি ম্যাজিকাল রেকর্ড থেকে নির্বাচকদের খুঁজে পাচ্ছে না। আমি আমার লজিক পরীক্ষার বান্ডিলটিতে আমার HEADER_SEARCH_PATH আপডেট করার চেষ্টা করেছি, এমনকি কোকোপডস দ্বারা নির্মিত হেডার ডিরেক্টরিতে এটি কঠোরভাবে কোডিং করেছি, তবে ভাগ্য নেই।

আমি ক্লাসগুলির বিরুদ্ধে ইউনিট পরীক্ষা চালাতে পারি যা কোনও সমস্যা না করে কোকোপডস লাইব্রেরি ব্যবহার করে না।

আমি কি এই ভুল সম্পর্কে যাচ্ছি? কোকোপডস লাইব্রেরি দেখার জন্য আমার কি অন্য কিছু করা উচিত?

উত্তর:


224

কোকোপডস 1.0 এর জন্য সিনট্যাক্সটি পরিবর্তন করেছে। এটি এখন এটির মতো দেখাচ্ছে:

def shared_pods
    pod 'SSKeychain', '~> 0.1.4'
    ...
end

target 'Sail' do
    shared_pods
end

target 'Sail-iOS' do
    shared_pods
end

প্রাক কোকোপডস 1.0 উত্তর

আপনি যা ব্যবহার করতে চান তা link_withআপনার কাছ থেকে Podfile। কিছুটা এইরকম:

link_with 'MainTarget', 'MainTargetTests'

তারপরে pod installআবার দৌড়াও ।


7
এটি তাত্ক্ষণিকভাবে আমার জন্য সমস্যাটি সমাধান করে।
mttrb

9
আমি এটির সাথে অদ্ভুত ত্রুটি পেয়েছি - পরীক্ষার সময়, isSubclassOfClass:কলগুলি NOযেখানে ফিরে উচিত তাদের ফিরে আসে YES। আমি এটি ব্যাখ্যা করার একমাত্র কারণ হ'ল নির্ভরতাগুলি সত্যই মূল এবং পরীক্ষার লক্ষ্য উভয়ের সাথে সংযুক্ত হয়ে যায় এবং যখন পরীক্ষার লক্ষ্যবস্তুটির বান্ডিল লোডার মূল বান্ডেলটি লোড করে, তখন সিদ্ধান্ত নিতে পারে না যে কোন শ্রেণি গ্রহণ করবে।
ফেব

4
আমার isKindOfClass:ফিরে আসার ক্ষেত্রে একই সমস্যা রয়েছে NOযখন এটি ফিরে আসবে YES। আমি যদি আমার পরীক্ষিত বিষয়টির পয়েন্টারে লগ Classকরি এবং Classআমি যে শ্রেণীর সাথে তুলনা করতে চাই সেগুলি দুটি পৃথক মান। স্পষ্টতই অ্যাপ বান্ডেল থেকে আমার কোডটি আমার ইউনিট পরীক্ষার কোডের চেয়ে ক্লাসের জন্য আলাদা প্রতীক ব্যবহার করছে। কেউ কি এর সমাধান করার কোন উপায় খুঁজে পেয়েছে?
নিকোলাস হার্ট

2
কেউ কেউ উল্লিখিত ত্রুটির কারণে এটি যাওয়ার ভাল উপায় বলে আমি মনে করি না। বিট উপর ভিত্তি করে কনফিগারেশন ফাইল আপডেট করার সাথে লেগে থাকুন। আপনি দুবার libPods.a লিঙ্ক না করেছেন তা নিশ্চিত করুন।
বব স্প্রিন

3
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত কারণ এটি একাধিক লক্ষ্যবস্তু দিয়ে পোড সেটআপ করার সরকারী কোকোপডস উপায় way অনেক কিথ!
cschuff

174

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

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

কনফিগারেশন স্ন্যাপশট

আমাকে আমার মূল লক্ষ্যটির সেটিংস $(inherited)এবং সেটিংগুলি ${PODS_HEADERS_SEARCH_PATHS}অনুলিপি করতে হয়েছিল এবং সেগুলি বিল্ড সেটিংস / HEADER_SEARCH_PATHS এর অধীনে যুক্তি পরীক্ষার টার্গেটে অনুলিপি করতে হয়েছিল।

শেষ অবধি, আমার লজিক পরীক্ষার টার্গেটের জন্য লাইব্রেরিগুলির সাথে লিঙ্ক বাইনারিগুলিতে libPods.a যুক্ত করতে হয়েছিল।

আশা করি এটি অন্য কাউকে সহায়তা করতে সক্ষম।


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

4
এটি আমার জন্য কাজ করেছে, ধন্যবাদ। দ্রষ্টব্য .. আমার পরীক্ষার প্রজেক্ট এবং প্রধান প্রজেক্টে libPods.a যুক্ত করার দরকার নেই। এটি একটি সদৃশ প্রতীক ত্রুটির কারণ ঘটায়
ক্রেগ ব্রুস

আমার জন্য, আমাকে "ব্যবহারকারী-সংজ্ঞায়িত" বিল্ড সেটিংসও অনুলিপি করতে হয়েছিল। শিরোনাম অনুসন্ধানের পথগুলি $ PODS_ROOT উল্লেখ করে যা পরীক্ষার লক্ষ্যবস্তুতে সংজ্ঞায়িত হয়নি। আপনি এডিটর-> বিল্ড সেটিং যোগ করে> ব্যবহারকারী-সংজ্ঞায়িত সেটিং যুক্ত করুন এবং তারপরে মূল লক্ষ্য থেকে O PODS_ROOT মানটি অনুলিপি করে এটি যুক্ত করতে পারেন।
শিনিগামী

11
এটি ঠিক করার সঠিক উপায় এটি নয়। উত্তরটি লিংক_ সহ দেখুন। আপনি আপনার পড ফাইলে প্রতি লক্ষ্য ভিত্তিতে বিভিন্ন শুঁটি নির্দিষ্ট করতে পারেন , অর্থাত্, কেবলমাত্র আপনার পরীক্ষার লক্ষ্যমাত্রায় ওসিমকিতো অন্তর্ভুক্ত করে।
dbainbridge

হ্যা হ্যা হ্যা! এই উত্তরের আগে আমাকে আমার প্রকল্পগুলি থেকে পরীক্ষার লক্ষ্য মুছতে হয়েছিল! থ্যাঙ্কস ম্যান :)
জোসিপ বি।

53

কোকোপডস সহ ইউনিট টেস্টগুলি আমি এখানে পেয়েছি এমন একটি সমাধান রয়েছে :

এক্সকোডে প্রজেক্ট ফাইলটি খুলুন, তারপরে ডান প্যানেলে প্রকল্পটি (লক্ষ্য নয়) বেছে নিন কনফিগারেশন নামে একটি বিভাগ রয়েছে। আপনার পরীক্ষার টার্গেটের জন্য "কনফিগারেশন ফাইলের উপর ভিত্তি করে" কলামে পডগুলি চয়ন করুন।

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


ঠিক আছে, যদি পরীক্ষা-নির্দিষ্ট নির্ভরতা থাকে, যেমন Spectaআপনি পরীক্ষার প্রকল্পের সাথে লিংক করতে চান তবে মূল প্রকল্পের সাথে নয়? : এস
ফতুহোকু

এটি কাজ করেছে এবং পড কনফিগারেশন বা সেটআপে কোনও পরিবর্তন দরকার নেই ... দুর্দান্ত সমাধান।
রিচার্ড

1
যদিও এই সমাধানটি একটি ত্রুটি তৈরি করতে পারে: Class Foo is implemented in both MyApp and MyAppTestCase. One of the two will be used. Which one is undefined. এটি কোকোপডসে একটি বাগ দ্বারা সৃষ্ট বলে মনে হচ্ছে; নীচে @ জেআরভি উত্তর দেখুন।
রিচার্ড 23

এগুলি কেবল সতর্কতা নয়। এই ধরণের সেটআপের সাথে কোনও সঠিক Xcode কোড কভারেজ ডেটা তৈরি হয় না এবং ইউনিট পরীক্ষাগুলি বেশিরভাগ ক্ষেত্রে প্রবর্তনের সময় স্থির থাকে।
i4niac

আমি এস্টিমেট এসডিকে ম্যানুয়ালি ড্রাগ এবং ড্রপ দ্বারা আমদানি করেছি, আমি শুঁটি পাচ্ছি না। কিভাবে সমাধান করবেন?
গুরু তেজা

18

আমি অন্যান্য উত্তরের সাথে একমত হয়েছি যে লাইব্রেরিগুলিকে পরীক্ষার লক্ষ্যগুলির সাথে সংযুক্ত করা প্রয়োজন। তবে এখনও অবধি কোনও পরামর্শই আমাকে সাহায্য করেনি। @ ফ্যাব যেমন একটি মন্তব্যে লিখেছেন: "পরীক্ষার সময়, isSubclassOfClass:কলগুলি কখনই হ্যাঁ তাদের ফিরিয়ে দেওয়া উচিত নয় কল করে। লোডার মূল বান্ডিলটি লোড করে, কোন শ্রেণি নেবে তা সিদ্ধান্ত নিতে পারে না। " এই থ্রেডটিতে পূর্ববর্তী সমস্ত পরামর্শের সাথে আমি একই সমস্যা পেয়েছি।

আমি যে সমাধানটি কাজ করতে পেরেছি তা হ'ল আমার পডফিলকে আমার প্রধান লক্ষ্য এবং আমার পরীক্ষার টার্গেটের জন্য নির্দিষ্ট পোডগুলি সংজ্ঞায়িত করার জন্য আপডেট করা:

target 'MyTarget' do
   pod 'AFNetworking', '~> 2.5.0'
   pod 'Mantle', '~> 1.5'
end

target 'MyTargetTests' do
   pod 'OCMockito', '~> 1.3.1'
end

আমার পরীক্ষার লক্ষ্যের জন্য কোনও পড নির্দিষ্ট করা দরকার ছিল যদিও আমি কোনও পরীক্ষার নির্দিষ্ট পোড ব্যবহার করি নি। অন্যথায় কোকোপডস আমার প্রকল্পে প্রয়োজনীয় লিঙ্কিং যুক্তি প্রবেশ করান না।

এই লিঙ্কটিই আমাকে এই সিদ্ধান্তে আসতে সাহায্য করেছে।


1
কোকোপডস ইস্যুটির লিঙ্কটির জন্য ধন্যবাদ - যা আমার সমস্যা সমাধানে আমাকে সহায়তা করেছে!
karlbecker_com

হ্যাঁ!!!! এই বিষয়টি আমাকে জর্জরিত করে চলেছে। আমি জুড়ে এসেছি এটিই একমাত্র বুদ্ধিমান কোকোপডস উত্তর।
ডোনালিয়া

এটি 1.x এর অধীনে পরিচালনা করার আরও ভাল উপায় রয়েছে: stackoverflow.com/a/40866889/2799670
ড্যারেন ব্ল্যাক

6

আমি :exclusive => trueপ্রয়োগ পরীক্ষার টার্গেটে সদৃশ প্রতীক ত্রুটি এড়াতে যোগ করেছি ।

target 'myProjectTests', :exclusive => true do
   pod 'OCMock', :head
   pod 'XCTAsyncTestCase', :git => 'https://github.com/iheartradio/xctest-additions.git'
end

link_with 'myProject', 'myProjectTests'

যখন আমি অ্যাপ্লিকেশন পরীক্ষার লক্ষ্যটিকে যুক্তির একক পরীক্ষার জন্য পরিবর্তন করেছি, লিঙ্কারের ত্রুটি ঘটে। আমি সরানোর পরে :exclusive => true, সবকিছু আবার কাজ করে।

target 'myProjectTests', do
   pod 'OCMock', :head
   pod 'XCTAsyncTestCase', :git => 'https://github.com/iheartradio/xctest-additions.git'
end

link_with 'myProject', 'myProjectTests'

:exclusive => trueউল্লেখ করেছে যে বাইরের সমস্ত কিছুর do...endসাথে লিঙ্ক করা উচিত নয় myProjectTests, যা প্রয়োগ পরীক্ষার লক্ষ্যমাত্রায় যুক্তিসঙ্গত, তবে এটি যুক্তি পরীক্ষার লক্ষ্যগুলিতে লিঙ্কার ত্রুটির কারণ হতে পারে।


এই কোকোপোডস ইস্যুতে কাইলফের উত্তরে যেমন আমার কাছে এক্সক্লুসিভর সমাধান ছিল, তখন এই প্রশ্নের জেআরভি-র উত্তরের জন্য ধন্যবাদ পাওয়া গেল!
karlbecker_com

1
হ্যাঁ, প্রত্যেককেই এই বিষয়টি @কার্লবেকার_কমের লিখিত গিথুবটিতে পড়তে হবে। দেখে মনে হচ্ছে এটি কোকোপডের কেবল দীর্ঘকালীন সীমাবদ্ধতা। সেখানে আলোচনা অনুসারে লিংক_ও প্রয়োজনীয় নয়। কেবল পরীক্ষার লক্ষ্য যুক্ত করুন এবং ব্যবহার করুন: একচেটিয়া। যদি আপনার পরীক্ষার টার্গেটে কোনও নির্দিষ্ট পোডের প্রয়োজন না হয় তবে যে কোনওভাবে একটি যুক্ত করুন কোকোপডগুলি এটি প্রক্রিয়া করবে না।
kball

@kball কোনটির লিঙ্ক_বিহীন দরকার নেই? এপ্লিকেশন টেস্ট নাকি লজিক ইউনিটের পরীক্ষা?
হাই ফেং কাও

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

6

আপনি @ কীথ স্মাইলি সমাধান অনুসারে লিংক_ই ব্যবহার করতে পারেন।

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

def import_pods
    pod 'SSKeychain'
end

target 'MyProjectTests', :exclusive => true do
  import_pods
end

target 'MyProject', :exclusive => true do
  import_pods
  pod 'Typhoon'
end

উপরের উদাহরণে, আমি উভয় লক্ষ্যবস্তুতে 'এসএসকিচেইন' এবং 'টাইফুন' কেবল 'মাইপ্রজেক্ট' লক্ষ্যটিতে যুক্ত করেছি


5

এই সমস্যার আমার সমাধানটি হ'ল আমার পডফিল পরিবর্তন করে লাইব্রেরিটিকে উভয় লক্ষ্যবস্তুতে অন্তর্ভুক্ত করার জন্য

target "MyApp" do  
    pod 'GRMustache', '~> 7.0.2'
end

target "MyAppTests" do
    pod 'GRMustache', '~> 7.0.2'
end

এবং যেহেতু আমি সুইফ্ট ব্যবহার করছি আমাকেও MyApp-Bridging-Header.hফাইলটি অন্তর্ভুক্ত করার জন্য পরীক্ষার লক্ষ্যটি কনফিগার করতে হয়েছিল । (বিল্ড সেটিংস ট্যাবের অধীনে সুইফ্ট সংকলক গোষ্ঠীতে)


3
যত্নশীল - আপনি আরও শুঁটি যুক্ত রাখার সাথে সাথে এটি আপনার বিল্ডের সময়গুলি বাড়িয়ে দেবে!
ফতুহোকু

@ ফাতুহোকু এটি জানত না। এটি কেন সময় বাড়ায় তা সম্পর্কে আপনি কিছু অন্তর্দৃষ্টি দিতে পারেন?
Qw4z1

2
ভাল একটি পোড প্রতিটি উল্লেখ আপনার Podsপ্রকল্পের একটি লক্ষ্য । আপনার শুঁটি দুবার উল্লেখ করে (একবার পরীক্ষার জন্য এবং একবার অ্যাপ্লিকেশনের জন্য), আপনার লক্ষ্য দুটি সেট হবে। এটি কার্যকরভাবে কনফিগারেশনের কাজ দ্বিগুণ করে pod install। আপনার> 15 টি শুঁটি না হওয়া পর্যন্ত এটি কোনও সমস্যা হবে না তবে ততক্ষণ খুব বেশি চিন্তা করবেন না।
ফতুহোকু

1
এই একমাত্র সমাধান যা আমার জন্য কোকোপডস 1.0 নিয়ে কাজ করে
উইলিয়াম এন্টারিকেন

1.x হিসাবে, অ্যাপ্লিকেশন নির্ভরতা উত্তরাধিকার সূত্রে প্রাপ্ত পরীক্ষার জন্য এটি অফিশিয়াল পদ্ধতি: স্ট্যাকওভারফ্লো.com
ড্যারেন ব্ল্যাক

4

যখন আমি কিছু সংস্করণ নিয়ন্ত্রণের সময় কিছু লাইব্রেরি ফাইল হারিয়েছি তখন আমারও একই ঘটনা ঘটেছিল। আমি এখনও আমার পডগুলিতে লাইব্রেরির ফাইলটি দেখেছি তবে আসল কোডটি হারিয়ে গেছে, এক্সকোড বলেছিল যে এটি চলে গেছে was আমার হতাশার জন্য, 'পড ইনস্টল' চালানো অবিলম্বে হারানো ফাইলগুলি ফিরিয়ে আনেনি।

নিম্নলিখিতগুলি সম্পাদন করে আমি নিজেই পডটি সরিয়ে এবং প্রতিস্থাপন করতে হয়েছিল:

  1. পডফিল থেকে পাঠাগারটি সরান
  2. লাইব্রেরিটি পুরোপুরি সরাতে 'পড ইনস্টল' চালান
  3. লাইব্রেরিটি পোডফাইলে ফিরিয়ে দিন
  4. আবার 'পড ইনস্টল' চালান

এটি লাইব্রেরিকে মূল ফর্মটিতে আবার প্রশ্ন করা উচিত।


2

এটিও লক্ষণীয় যে আপনি যদি libPods.aদুবার যোগ করে থাকেন তবে আপনি এইরকম কিছু বাজে ত্রুটি পাবেন:

232 duplicate symbols for architecture i386

এটির সমাধান করতে, কেবলমাত্র libPods.aআপনার প্রকল্প এক্সপ্লোরারের একটি উল্লেখ মুছুন ।


2

কোকোপডস ১.x হিসাবে, লক্ষ্য এবং সংশ্লিষ্ট পরীক্ষার টার্গেটের মধ্যে ভাগ করে নেওয়া নির্ভরতা ঘোষণা করার একটি নতুন উপায় আছে। আমি মার্ক স্ট্রুজিনস্কির গৃহীত সমাধানটি এই মুহুর্তে ব্যবহার করছি, তবে আমার পরীক্ষা চালানোর সময় এই পদ্ধতিটি ব্যবহার করে বিপুল সংখ্যক সতর্কতা পাওয়া গেছে যে:

Class SomeClass is implemented in both /Path/To/Test/Target and /Path/To/App/Target. One of the two will be used. Which one is undefined.

কোকোপডস 1.x দিয়ে আমরা আমাদের-টেস্ট লক্ষ্যটিকে প্যারেন্ট টার্গেটের অনুসন্ধানের পথগুলির মাধ্যমে উত্তরাধিকার হিসাবে ঘোষণা করতে পারি, এর মতো:

target 'MyApp' do
    pod 'aPod'
    pod 'anotherPod'
    project 'MyApp.xcodeproj'
end
target 'MyAppTests' do
    inherit! :search_paths
    project 'MyApp.xcodeproj'
end

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


2

এটি আমার জন্য কাজ করে দেখুন,

আমাদের কনফিগারেশনে পডস সেট করতে হবে,

প্রজেক্ট-> তথ্য-> এক্সকোড প্রকল্পে কনফিগারেশনগুলি (আপনার প্রকল্প) ডিবাগ, রিলিজ (এবং আপনার অন্যটি কী) জন্য মূল প্রকল্প 'পডস' এ সেট করা উচিত। দেখুন "শিরোলেখ পাওয়া যায়নি - অনুসন্ধান পাথ অন্তর্ভুক্ত নয়"

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

আশা করি এটি কারওর পক্ষে সহায়ক।


1

আমি আমার সুইফট অ্যাপ্লিকেশনটির সাথে আইওএসে গুগল্যাপস অবজেক্টিভ-সি পিওড ইন্টিগ্রেশন নিয়ে কাজ করছি এবং তাই আমার কাছে সমস্যাটি ছিল বিল্ড সেটিংসে পরীক্ষার টার্গেটের ব্রিজ শিরোলেখ ফাইল ( SWIFT_OBJC_BRIDGING_HEADER ) এর কোনও উল্লেখ নেই । আপনার অ্যাপ এবং পরীক্ষার অ্যাপ্লিকেশন লক্ষ্যগুলি উভয়ই এতে ইঙ্গিত করেছে তা নিশ্চিত করুন যাতে তৃতীয় পক্ষের এপিআই কলগুলি (মানচিত্রের এপিআই, ইত্যাদি) সুইফট ইউনিট পরীক্ষায় ব্যবহৃত হতে পারে।


1
আপনার মত আমারও একই রকম সেটআপ আছে। আমি ইতিমধ্যে ব্রিজিং শিরোনামটিকে পরীক্ষার লক্ষ্যে যুক্ত করেছি, তবে আমি ত্রুটিটি পেয়েছি "গুগল্যাপস" তেমন কোনও মডিউল নেই " import GoogleMaps
নিকোলাস মিয়ারি

0

পরবর্তী বাক্য গঠন আমার জন্য সেরা ফলাফল দেয় (কোকোপড v.1.2.1 এর অধীনে পরীক্ষিত):

https://github.com/CocoaPods/CocoaPods/issues/4626#issuecomment-210402349

 target 'App' do
    pod 'GoogleAnalytics' , '~> 3.0'
    pod 'GoogleTagManager' , '~> 3.0'

     pod 'SDWebImage', '~>3.7'
     platform :ios, '8.0'
     use_frameworks!

     target 'App Unit Tests' do
         inherit! :search_paths
     end
 end

এটি ছাড়া আমার নকল প্রতীক সম্পর্কে পরীক্ষা চালানোর সময় সতর্কতা রয়েছে।

এর পরে সতর্কতা অদৃশ্য হয়ে গেল।


0

এক্সসিস্টেস্টের অধীনে ওপেনসিভি ব্যবহার করার ক্ষেত্রে আমার সমস্যা ছিল। এটি আমার Undefined symbols for architecture arm64মতো ক্লাসের লিঙ্কার ত্রুটি দিচ্ছিল cv::Mat। আমি pod 'OpenCV', '~> 2.0'মূল টার্গেটের অধীনে কোকোপডগুলির মাধ্যমে ওপেনসিভি ইনস্টল করছি । আমি ওপেনসিভি নির্ভরতাটিকে পরীক্ষার টার্গেটের অধীনে রাখার চেষ্টা করেছি বা এর কোনওটিই কাজে লাগেনি inherit! :search_pathsতা বিবেচনা করুন। সমাধানটি একটি abstract_targetঅনুরূপ তৈরি করা ছিল :

# Uncomment the next line to define a global platform for your project
platform :ios, '6.1.6'

abstract_target 'Shows' do
  pod 'RMVision', path: '../..'
  pod 'RMShared', path: '../../../RMShared'
  pod 'OpenCV', '~> 2.0'

  target 'RMVisionSample' do
    # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
    # use_frameworks!

    # Pods for RMVisionSample
  end

  target 'RMVisionSampleTests' do
    # inherit! :search_paths
    # Pods for testing
  end

  target 'RMVisionBenchmarks' do
    # inherit! :search_paths
    # Pods for testing
  end

end 

প্রকল্পগুলি সাফ করার জন্য pod deintegrateএবং pod cleanকমান্ডগুলি পরীক্ষার সময় আপনি নতুন করে শুরু করেছেন কিনা তা নিশ্চিত করতে সহায়তা করে সেগুলি & কমান্ডগুলিও কার্যকর। আপনি এই দুটি ব্যবহার করে ইনস্টল করতে পারেন [sudo] gem install cocoapods-deintegrate cocoapods-clean

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.