এক্সকোড প্রকল্প বনাম এক্সকোড ওয়ার্কস্পেস - পার্থক্য


401

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

এক্সকোডপ্রজেক্ট এবং এক্সকোড ওয়ার্কস্পেস ফাইলগুলির মধ্যে পার্থক্য কী?

  1. তাদের দুজনের মধ্যে পার্থক্য কী?
  2. তারা কি জন্য দায়ী?
  3. আমি যখন আমার অ্যাপ্লিকেশন টিমে / একা বিকাশ করি তখন তাদের কারও সাথে কাজ করা উচিত?
  4. এই দুটি ফাইলের ক্ষেত্রে আমার আরও কি সচেতন হওয়া উচিত?

উত্তর:


606

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

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

ভাগ করা প্রকল্প সেটিংস যা সমস্ত লক্ষ্যবস্তু উত্তরাধিকার সূত্রে প্রাপ্ত হয়, যদি না এগুলি ওভাররাইট করে

ভাগ করা প্রকল্প সেটিংস যা সমস্ত লক্ষ্যবস্তু উত্তরাধিকার সূত্রে ওভাররাইড না করে inherit

কংক্রিট টার্গেট সেটিংস: পিএসই আইফোন প্রকল্পের বেস এসডিকে সেটিংটি ওভাররাইট করে

কংক্রিট টার্গেট সেটিংস: পিএসই আইফোন প্রকল্পের Base SDKসেটিংকে ওভাররাইড করে

এক্সকোডে আপনি সর্বদা প্রকল্পগুলি খুলুন (বা ওয়ার্কস্পেসগুলি, তবে লক্ষ্যগুলি নয়) এবং এতে থাকা সমস্ত লক্ষ্যগুলি নির্মিত / চালানো যেতে পারে তবে কোনও প্রকল্পের নির্মাণের কোনও উপায় / সংজ্ঞা নেই, তাই প্রতিটি প্রকল্পের জন্য কমপক্ষে একটি লক্ষ্য প্রয়োজন to কেবলমাত্র ফাইল এবং সেটিংসের সংগ্রহের চেয়ে বেশি হন।

চালানোর জন্য প্রকল্পের লক্ষ্যগুলির মধ্যে একটি নির্বাচন করুন

চালানোর জন্য প্রকল্পের লক্ষ্যগুলির মধ্যে একটি নির্বাচন করুন

অনেক ক্ষেত্রে, প্রকল্পগুলি আপনার প্রয়োজন। আপনি যদি উত্স থেকে গড়ে তোলেন এমন নির্ভরতা থাকে তবে আপনি এটিকে একটি সাবপ্রজেক্ট হিসাবে এম্বেড করতে পারেন । সাবপ্রজেক্টগুলি পৃথকভাবে বা তাদের সুপার প্রকল্পের মধ্যে খোলা যেতে পারে।

ডেমোলিব একটি সাবপ্রজেক্ট

ডেমোলিব একটি সাবপ্রজেক্ট

আপনি যদি সুপার প্রকল্পের নির্ভরতার সাথে সাবপ্রজেক্টের লক্ষ্যগুলির মধ্যে একটি যোগ করেন তবে সাবপ্রজেক্টটি অপরিবর্তিত না থাকলে স্বয়ংক্রিয়ভাবে নির্মিত হবে। এখানে সুবিধাটি হ'ল আপনি একই প্রকল্পের কোড এবং আপনার নির্ভরতা একই এক্সকোড উইন্ডোতে ফাইল সম্পাদনা করতে পারবেন এবং আপনি যখন নির্মাণ / চালাবেন তখন আপনি প্রকল্পের এবং এর সাব-প্রকল্পগুলির লক্ষ্যগুলি থেকে নির্বাচন করতে পারেন:

একটি সাবপ্রজেক্ট থেকে লক্ষ্যগুলি চালানো

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

কর্মক্ষেত্রের কাঠামো

কর্মক্ষেত্রের কাঠামো

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

একটি ওয়ার্কস্পেস থেকে লক্ষ্যগুলি চালানো

আপনি এখনও আপনার প্রকল্প ফাইলগুলি আলাদাভাবে খুলতে পারেন, তবে সম্ভবত তাদের লক্ষ্যগুলি তৈরি হবে না কারণ আপনি ওয়ার্কস্পেস ফাইলটি না খুললে এক্সকোড নির্ভরতাগুলি সমাধান করতে পারে না। ওয়ার্কস্পেসগুলি আপনাকে সাবপ্রজেক্টগুলির মতো একই সুবিধা দেয়: একবার নির্ভরতা পরিবর্তিত হয়ে গেলে, এটি আপ-টু-ডেট হয়েছে তা নিশ্চিত করার জন্য Xcode এটি পুনর্নির্মাণ করবে (যদিও এর সাথে আমার কিছু সমস্যা হয়েছে, এটি নির্ভরযোগ্যভাবে কাজ করছে বলে মনে হয় না)।

সংক্ষেপে আপনার প্রশ্নগুলি :

1) প্রকল্পগুলিতে ফাইল (কোড / রিসোজেস), সেটিংস এবং লক্ষ্যগুলি থাকে যা সেই ফাইলগুলি এবং সেটিংস থেকে পণ্য তৈরি করে। ওয়ার্কস্পেসগুলিতে এমন প্রকল্প রয়েছে যা একে অপরকে রেফারেন্স করতে পারে।

2) উভয়ই আপনার সামগ্রিক প্রকল্পের কাঠামোর জন্য দায়ী, তবে বিভিন্ন স্তরে।

3) আমি মনে করি প্রকল্পগুলি বেশিরভাগ ক্ষেত্রেই যথেষ্ট। নির্দিষ্ট কারণ না থাকলে ওয়ার্কস্পেস ব্যবহার করবেন না। এছাড়াও, আপনি আপনার প্রকল্পটি সর্বদা কোনও কর্মক্ষেত্রে এম্বেড করতে পারেন।

4) আমি মনে করি উপরের পাঠ্যটি এর জন্য…

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


7
একটি প্রকল্প দুটি পৃথক ওয়ার্কস্পেসের অংশ হতে পারে? বা আমি যদি দুটি প্রকল্পের সাথে একটি প্রকল্প ভাগ করতে চাই তবে তাদের সমস্ত কি একই কর্মক্ষেত্রের অংশ হওয়ার দরকার আছে?
জ্যাক

8
অবশ্যই, কোনও প্রকল্প আপনার ইচ্ছামতো কর্মক্ষেত্রের অংশ হতে পারে। একটি ওয়ার্কস্পেসে একটি প্রকল্প যুক্ত করা প্রকল্পটি নিজেই কিছু পরিবর্তন করে না। সুতরাং আপনার কাছে অনেকগুলি বিকল্প রয়েছে ... সবগুলিই একটি ওয়ার্কস্পেসে, দুটি ওয়ার্কস্পেস যা একটি প্রকল্প ভাগ করে দেয়, বা দুটি প্রকল্প যা ভাগ করে নেওয়া প্রকল্পটি একটি সাবপ্রজেক্ট হিসাবে।
হাজি

1
এর সাথে আমার কোনও অভিজ্ঞতা নেই, তবে রিডএমই বলে: " আপনি আপনার প্রকল্পের কাঠামো এবং সেটআপের উপর সম্পূর্ণ নিয়ন্ত্রণ বজায় রেখেছেন ", এবং " [নির্ভরতা] একক কর্মক্ষেত্রে সংহত করার পরিবর্তে, [...] আপনার নির্ভরতা অবশ্যই অন্তর্ভুক্ত করতে হবে তাদের নিজস্ব এক্সকোড প্রকল্প "। সংক্ষেপে: এটি আপনার প্রকল্পগুলি / কর্মক্ষেত্রগুলিকে একেবারেও স্পর্শ করে না, সুতরাং উত্তরটিতে কীভাবে এটি অন্তর্ভুক্ত করা উচিত তা আমি দেখতে পাচ্ছি না। উত্তর এখনো সহায়ক যদি আপনি কার্থেজের ব্যবহার করেন, বিশেষ করে হয় আপনি আপনার নির্ভরতা গঠন কীভাবে স্থির করতে হবে, কিন্তু যে কেউ কার্থেজের নির্দিষ্ট।
হাজি

প্রকল্পের শ্রেণিবিন্যাস সম্পর্কে ভালভাবে ব্যাখ্যা করা হয়েছে। আমি যদি লোকেশন থেকে সাবপ্রজেক্টটি সরিয়ে / সরান তবে সাবপ্রজেক্টটি মূল প্রকল্পে থাকবে? stackoverflow.com/questions/40214505/...
গণেশ Guturi

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

102

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


34

সংক্ষেপে

  • এক্সকোড 3 উপ-প্রকল্প চালু করেছে, যা পিতামাতার-সন্তানের সম্পর্ক, যার অর্থ বাবা-মা তার সন্তানের লক্ষ্য উল্লেখ করতে পারে তবে এর বিপরীতে কোনও পরিবর্তন নেই
  • এক্সকোড 4 চালু করেছে ওয়ার্কস্পেস, যা ভাইবোনের সম্পর্ক, যার অর্থ কোনও প্রকল্প একই ওয়ার্কস্পেসে প্রকল্পগুলি রেফারেন্স করতে পারে

2

আমি যখন আইওএস প্রকল্পগুলি বিকাশ করতে কোকোপড ব্যবহার করেছি, তখন একটি .xcworkspaceফাইল রয়েছে, আপনার .xcworkspaceকোকোপডসের সাথে সম্পর্কিত ফাইল সহ প্রকল্পটি খুলতে হবে ।

ফাইল পূর্বরূপ

আপনি ফাইল Show Package Contentsসহ যখন .xcworkspace, আপনি contents.xcworkspacedataফাইলটি পাবেন।

প্যাকেজ সূচিপত্র

<?xml version="1.0" encoding="UTF-8"?>
<Workspace
   version = "1.0">
   <FileRef
      location = "group:BluetoothColorLamp24G.xcodeproj">
   </FileRef>
   <FileRef
      location = "group:Pods/Pods.xcodeproj">
   </FileRef>
</Workspace>

এই লাইনে মনোযোগ দিন:

location = "group:BluetoothColorLamp24G.xcodeproj"

.xcworkspaceফাইলের সাথে সংশয়ের অবকাশ নেই .xcodeprojফাইল।

উন্নয়ন পরিবেশ:

macOS 10.14
Xcode 10.1

2
  1. তাদের দুজনের মধ্যে পার্থক্য কী?
    ওয়ার্কস্পেস প্রকল্পের একটি সেট

  2. তারা কি জন্য দায়ী?
    প্রকল্পটি সোর্স কোডের জন্য দায়ী। ওয়ার্কস্পেস প্রকল্পগুলির মধ্যে নির্ভরতার জন্য দায়ী

  3. আমি যখন আমার অ্যাপ্লিকেশন টিমে / একা বিকাশ করি তখন তাদের কারও সাথে কাজ করা উচিত?
    আপনার পছন্দটি আপনার প্রকল্পের ধরণের উপর নির্ভর করে depends উদাহরণস্বরূপ যদি আপনার প্রকল্পটি কোকোপডস নির্ভরতা পরিচালকের উপর নির্ভর করে তবে এটি একটি ওয়ার্কস্পেস তৈরি করে।

  4. এই দুটি ফাইলের ক্ষেত্রে আমার আরও কি সচেতন হওয়া উচিত?
    কর্মক্ষেত্রের প্রতিযোগী হলেন cross-project references[সম্পর্কে]

[এক্সকোড উপাদান]

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