Scheme: এটি কী, কনফিগারেশন এবং Xcode-এ চালানো

লেখক: IT Sectr প্রকাশিত: 2026-05-30 পড়ার সময়: 9 মিনিট

Xcode-এ Scheme হলো একটি কনফিগারেশন যা নির্ধারণ করে iOS, macOS, watchOS বা tvOS-এর জন্য অ্যাপ কীভাবে বিল্ড, টেস্ট, প্রোফাইল ও আর্কাইভ করতে হবে। প্রতিটি Scheme-এ কর্মের একটি সেট থাকে (Build, Run, Test, Profile, Analyze, Archive) যার নিজস্ব প্যারামিটার, আর্গুমেন্ট ও এনভায়রনমেন্ট ভেরিয়েবল থাকে। Apple Developer Documentation, 2025-এর মতে, Scheme হলো Xcode-এ বিল্ড কনফিগারেশন পরিচালনার প্রধান টুল, যা ম্যানুয়াল প্যারামিটার পরিবর্তনের জায়গা নেয়। Xcode প্রজেক্ট প্রথমবার খোলার সময় প্রতিটি টার্গেটের জন্য স্বয়ংক্রিয়ভাবে একটি স্কিম তৈরি করে।

মূল বিষয়

  • Scheme হলো বিল্ডিং, টেস্টিং ও আর্কাইভিংয়ের জন্য কর্মের সেটসহ Xcode কনফিগারেশন।
  • Build নির্দিষ্ট কনফিগারেশন (Debug বা Release) দিয়ে টার্গেট কম্পাইল করে।
  • Run আর্গুমেন্ট, এনভায়রনমেন্ট ভেরিয়েবল ও এন্ট্রি পয়েন্টসহ অ্যাপ চালু করে।
  • Test নির্বাচিত টেস্ট সেট দিয়ে unit ও UI টেস্ট চালায়।
  • Archive প্রোডাকশন কনফিগারেশনে App Store-এ প্রকাশের জন্য বিল্ড করে।

Xcode-এ Scheme কী?

Xcode-এ Scheme হলো একটি XML ফাইল (.xcscheme এক্সটেনশনসহ) যা অ্যাপ বিল্ড ও বিশ্লেষণের জন্য কর্মের ক্রম ও তাদের প্যারামিটার বর্ণনা করে। প্রতিটি Scheme এক বা একাধিক টার্গেটের সাথে যুক্ত এবং নির্ধারণ করে কোন কনফিগারেশনে (Debug, Release, AdHoc) প্রতিটি কর্ম সম্পাদন করতে হবে। Scheme হলো Android-এর Build Variant-এর সমতুল্য, তবে আরও নমনীয় কাঠামোসহ: একটি স্কিমে বিভিন্ন কর্মের জন্য বিভিন্ন টার্গেট থাকতে পারে।

Xcode প্রজেক্ট প্রথমবার খোলার সময় প্রতিটি টার্গেটের জন্য স্বয়ংক্রিয়ভাবে একটি স্কিম তৈরি করে। ডিফল্টভাবে স্কিমের নাম টার্গেটের নামের সাথে মিলে যায়। প্রজেক্টে টেস্ট টার্গেট থাকলে Xcode সেটি প্রধান টার্গেটের স্কিমের Test কর্মে স্বয়ংক্রিয়ভাবে যোগ করে। একাধিক টার্গেটসহ প্রজেক্টের জন্য (প্রধান অ্যাপ + watchOS + এক্সটেনশন) Xcode প্রতিটির জন্য আলাদা স্কিম তৈরি করে, তবে এমন একটি স্কিমও তৈরি করা যায় যা সব টার্গেট একসাথে বিল্ড করে।

স্কিম xcshareddata/xcschemes/ ডিরেক্টরিতে সংরক্ষিত হয় (shared-এর জন্য) বা xcuserdata/<user>/xcschemes/-এ (private-এর জন্য)। Shared স্কিম Git-এ যায় এবং পুরো দল ব্যবহার করে। Private স্কিম স্থানীয়ভাবে সংরক্ষিত থাকে এবং সিঙ্ক হয় না। .xcscheme ফাইলের XML ফরম্যাট আছে যার রুট এলিমেন্ট <Scheme>। ভিতরে প্রতিটি কর্মের জন্য ব্লক থাকে: BuildAction, TestAction, LaunchAction, ProfileAction, AnalyzeAction, ArchiveAction।

.xcscheme ফাইলের কাঠামো

.xcscheme হলো একটি XML ফাইল যা ম্যানুয়ালি বা Xcode-এর মাধ্যমে সম্পাদনা করা যায়। প্রধান এলিমেন্ট: <BuildAction> (বিল্ড করার টার্গেটের তালিকা), <TestAction> (টেস্ট টার্গেটের লিংক), <LaunchAction> (চালু করার কনফিগারেশন), <ProfileAction>, <AnalyzeAction>, <ArchiveAction>। প্রতিটি ব্লকে buildConfiguration অ্যাট্রিবিউট থাকে, যা নির্ধারণ করে নির্দিষ্ট কর্মের জন্য কোন কনফিগারেশন (Debug/Release) ব্যবহার করতে হবে।

Scheme-এর কর্ম: Build, Run, Test, Profile, Analyze, Archive

Scheme ছয়টি কর্ম নিয়ে গঠিত, যার প্রতিটি স্বাধীনভাবে কনফিগার করা যায়। Build কর্ম নির্ধারণ করে কোন টার্গেট ও কোন ক্রমে বিল্ড হবে। Run কর্ম নির্ধারণ করে অ্যাপ কীভাবে চালু হবে: কোন আর্গুমেন্ট, এনভায়রনমেন্ট ভেরিয়েবল ও কোন কনফিগারেশনে। Test কর্ম নির্ধারণ করে কোন টেস্ট চলবে ও কোন code coverage অপশন সক্রিয়। Profile কর্ম প্রোফাইলিংয়ের জন্য Instruments টুল দিয়ে চালায়। Analyze কর্ম Clang Static Analyzer দিয়ে স্ট্যাটিক কোড বিশ্লেষণ করে। Archive কর্ম App Store-এ প্রকাশ বা AdHoc বিতরণের জন্য বিল্ড করে।

প্রতিটি কর্মের জন্য আলাদা build configuration সেট করা যায়। সাধারণত Run ও Test-এর জন্য Debug এবং Archive-এর জন্য Release ব্যবহৃত হয়। build configuration কম্পাইলার ফ্ল্যাগ, অপ্টিমাইজেশন ও ডিবাগ তথ্যের সেট নির্ধারণ করে। Xcode দুটি স্ট্যান্ডার্ড কনফিগারেশন দেয়: Debug (অপ্টিমাইজেশন ছাড়া, ডিবাগ সিম্বলসহ) এবং Release (অপ্টিমাইজেশনসহ, ডিবাগ তথ্য ছাড়া)। ডেভেলপার project.xcconfig-এর মাধ্যমে কাস্টম কনফিগারেশন যোগ করতে পারে।

Archive কর্ম বিশেষভাবে গুরুত্বপূর্ণ — এটি একটি .xcarchive তৈরি করে, যা পরে App Store বা AdHoc-এর জন্য .ipa-তে রপ্তানি হয়। Archive কর্ম ডিফল্টভাবে Release কনফিগারেশন ব্যবহার করে, তবে AdHoc বা Distribution-এ পরিবর্তন করা যায়। Archive কর্মে revealArchiveInOrganizer ফ্ল্যাগও থাকে — আর্কাইভিং শেষ হলে Xcode আর্কাইভ নিয়ে আরও কাজের জন্য Organizer খোলে।

xml
<!-- iOS অ্যাপের জন্য .xcscheme উদাহরণ -->
<Scheme
  LastUpgradeVersion = "1500"
  version = "1.7">

  <BuildAction
    parallelizeBuildables = "YES"
    buildImplicitDependencies = "YES">
    <BuildActionEntries>
      <BuildActionEntry
        buildForTesting = "YES"
        buildForRunning = "YES"
        buildForProfiling = "YES"
        buildForArchiving = "YES"
        buildForAnalyzing = "YES">
        <BuildableReference
          BuildableIdentifier = "primary"
          BlueprintIdentifier = "ABCD1234"
          BuildableName = "MyApp.app"
          BlueprintName = "MyApp"
          ReferencedContainer = "container:MyApp.xcodeproj">
        </BuildableReference>
      </BuildActionEntry>
    </BuildActionEntries>
  </BuildAction>

  <LaunchAction
    buildConfiguration = "Debug"
    selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
    enableAddressSanitizer = "YES">
  </LaunchAction>
</Scheme>

Scheme তৈরি ও কনফিগার করা

ডায়াগনস্টিক স্যানিটাইজার

নতুন স্কিম তৈরি করা হয় Xcode মেনুর মাধ্যমে: Product → Scheme → New Scheme অথবা Scheme প্যানেলের (Run বাটনের পাশে) "+" বাটন দিয়ে। তৈরির সময় যে টার্গেটের জন্য স্কিম তৈরি হচ্ছে তা নির্বাচন করা হয়। বিদ্যমান স্কিম "duplicate" হিসেবে নির্বাচিত হলে Xcode স্বয়ংক্রিয়ভাবে তার সেটিংস কপি করে। নতুন স্কিম ডিফল্টভাবে private হিসেবে সংরক্ষিত হয় — দলের সাথে ভাগ করতে Manage Schemes-এ Shared সক্রিয় করতে হয়।

Edit Scheme উইন্ডোতে (Product → Scheme → Edit Scheme) কর্মের সংখ্যা অনুযায়ী ছয়টি ট্যাব থাকে। প্রতিটি ট্যাবে build configuration, চালু করার আর্গুমেন্ট, এনভায়রনমেন্ট ভেরিয়েবল ও ডায়াগনস্টিক ফ্ল্যাগ পরিবর্তন করা যায়। Run ট্যাবে অপশন থাকে: executable (কোন বাইনারি চালাতে হবে), wait for executable to be launched (চালু হওয়া প্রসেস ডিবাগ করার জন্য), debugger (LLDB বা None), launch arguments, environment variables ও বর্ধিত অপশন (Address Sanitizer, Thread Sanitizer, Main Thread Checker, Memory Management)।

ডায়াগনস্টিকের জন্য Address Sanitizer (ASan) C/C++/ObjC কোডে সীমার বাইরে প্রবেশ, use-after-free ও অন্যান্য মেমরি ত্রুটি সনাক্ত করে। Thread Sanitizer (TSan) মাল্টিথ্রেডেড কোডে ডেটা রেস সনাক্ত করে। Undefined Behavior Sanitizer (UBSan) অনির্ধারিত আচরণ সনাক্ত করে, যেমন signed int ওভারফ্লো। এই অপশনগুলো Edit Scheme → Run → Diagnostics-এ পাওয়া যায় এবং শুধুমাত্র Debug বিল্ডের জন্য কাজ করে। সব স্যানিটাইজার সক্রিয় করলে চালু হতে 2-3 গুণ ধীর হতে পারে, তাই এগুলো বেছে বেছে সক্রিয় করার পরামর্শ দেওয়া হয়।

বিভিন্ন এনভায়রনমেন্টের জন্য স্কিম ক্লোন করা

সাধারণ অভ্যাস হলো প্রতিটি এনভায়রনমেন্টের জন্য আলাদা স্কিম তৈরি করা: Dev, Staging, Production। প্রতিটি স্কিম একই Build Configuration ব্যবহার করে (Dev-এর জন্য Debug, Production-এর জন্য Release), তবে আলাদা চালু করার আর্গুমেন্ট: Dev-এর জন্য -FIRAnalyticsDebugEnabled, -com.apple.CoreData.SQLDebug 1 এবং Production-এর জন্য সেগুলোর অনুপস্থিতি। চালু করার আর্গুমেন্ট UserDefaults-এ (ProcessInfo.processInfo.arguments) পাস হয় এবং অ্যাপ শুরুর সময় পড়ার জন্য উপলব্ধ থাকে। এটি কোড পরিবর্তন না করেই সার্ভার URL, লগিং লেভেল ও ফিচার পরিবর্তন করতে দেয়।

Shared ও Private স্কিম: Git-এর মাধ্যমে ব্যবস্থাপনা

Shared স্কিম <project>.xcworkspace/xcshareddata/xcschemes/ বা <project>.xcodeproj/xcshareddata/xcschemes/-এ সংরক্ষিত হয় এবং Git রিপোজিটরিতে যায়। দলের সব ডেভেলপার এই স্কিমগুলো Xcode-এ দেখে। Shared স্কিম হলো দলের মধ্যে স্কিম বিতরণের একমাত্র উপায়। যদি কোনো ডেভেলপার গুরুত্বপূর্ণ স্কিম তৈরি করে (যেমন "Staging Archive") কিন্তু সেটিকে Shared হিসেবে চিহ্নিত না করে, তাহলে বাকি দল সেটি দেখতে পাবে না, ফলে বিভ্রান্তি সৃষ্টি হয়: প্রত্যেকে নিজের সেটিংসসহ নিজের স্কিম তৈরি করবে।

Private স্কিম xcuserdata/<user>/xcschemes/-এ সংরক্ষিত থাকে এবং Git-এ যায় না। এগুলো ব্যক্তিগত কনফিগারেশনের জন্য উপযোগী: যেমন, কোনো নির্দিষ্ট ডেভেলপারের জন্য সব স্যানিটাইজার সক্রিয় থাকা স্কিম। Private স্কিমে এমন গুরুত্বপূর্ণ সেটিংস থাকা উচিত নয় যার উপর প্রজেক্টের বিল্ড নির্ভর করে — ডেভেলপার প্রজেক্ট ছেড়ে গেলে তার private স্কিমগুলো হারিয়ে যাবে। পরামর্শ: CI/CD-তে ব্যবহৃত ও কমপক্ষে দুই ডেভেলপার ব্যবহার করে এমন সব স্কিম Shared করুন।

স্কিম ব্যবস্থাপনা Manage Schemes-এর মাধ্যমে করা হয় (Product → Scheme → Manage Schemes)। উইন্ডোতে প্রজেক্টের সব স্কিম, তাদের অবস্থা (Shared/Private) ও যোগ/মুছে ফেলার জন্য +/− বাটন দেখা যায়। Shared চেকবক্স দলের জন্য স্কিমের দৃশ্যমানতা পরিবর্তন করে। Git কনফ্লিক্টের ক্ষেত্রে (দুই ডেভেলপারের .xcscheme-এ পরিবর্তন), মার্জ সাবধানে সমাধান করতে হয় — XML ফাইলে ভিন্ন টার্গেট আইডেন্টিফায়ার থাকতে পারে। মার্জের সময় লক করা ফাইলগুলিতে .xcscheme যোগ করার পরামর্শ দেওয়া হয় (git lfs বা .gitattributes)।

চালু করার আর্গুমেন্ট ও এনভায়রনমেন্ট ভেরিয়েবল

Arguments (আর্গুমেন্ট) Scheme-এ হলো সেই স্ট্রিং যা চালু করার সময় অ্যাপকে দেওয়া হয় (ProcessInfo.processInfo.arguments) এবং এনভায়রনমেন্ট ভেরিয়েবল (ProcessInfo.processInfo.environment)। আর্গুমেন্ট ফ্ল্যাগের জন্য ব্যবহৃত হয়: -AppleLanguages (ru), -AppleLocale ru_RU রাশিয়ান লোকেল সিমুলেট করার জন্য, বা -FIRDebugEnabled Firebase ডিবাগিং সক্রিয় করার জন্য। এনভায়রনমেন্ট ভেরিয়েবল কনফিগারেশনের জন্য ব্যবহৃত হয়: API_BASE_URL=http://localhost:3000, LOG_LEVEL=debug

বিভিন্ন এনভায়রনমেন্টে ফিচার (feature flags) পরিচালনার জন্য Arguments + Build Configuration-এর সংমিশ্রণ ব্যবহৃত হয়। Dev স্কিমে আর্গুমেন্ট -FeatureFlagNewOnboarding YES সেট করা হয়, এবং Production-এ — -FeatureFlagNewOnboarding NO (বা আর্গুমেন্ট অনুপস্থিত)। কোডে যাচাই: UserDefaults.standard.bool(forKey: "FeatureFlagNewOnboarding")। এই পদ্ধতি কোড পরিবর্তন ও প্রোডাকশন মান কমিট না করেই staging-এ ধীরে ধীরে ফিচার সক্রিয় করতে দেয়।

গুরুত্বপূর্ণ: Scheme-এর আর্গুমেন্ট ও এনভায়রনমেন্ট ভেরিয়েবল Info.plist-এর মানগুলিকে ওভাররাইড করে। Info.plist-এ API_URL নির্দিষ্ট থাকলে এবং Scheme-এ — Run কর্মের জন্য API_URL=http://localhost থাকলে, Xcode থেকে চালানোর সময় Scheme-এর মান ব্যবহৃত হবে। ডিভাইসে চালানোর সময় (Xcode থেকে নয়) — Info.plist-এর মান। এটি লোকাল ডেভেলপমেন্টের জন্য সুবিধাজনক, তবে মনে রাখতে হবে Scheme-এর ভেরিয়েবল বিল্ডে যায় না — সেগুলো শুধুমাত্র Xcode দিয়ে চালানোর সময় কাজ করে।

swift
import Foundation

struct AppEnvironment {
    var apiBaseURL: String {
        ProcessInfo.processInfo.environment["API_BASE_URL"]
            ?? Bundle.main.object(forInfoDictionaryKey: "API_BASE_URL") as? String
            ?? "https://api.production.com"
    }

    var isDebugMode: Bool {
        ProcessInfo.processInfo.arguments.contains("-DebugModeEnabled")
    }

    var isNewOnboardingEnabled: Bool {
        UserDefaults.standard.bool(forKey: "FeatureFlagNewOnboarding")
    }
}

// স্টার্টআপে ব্যবহার
let env = AppEnvironment()
NetworkConfig.shared.configure(baseURL: env.apiBaseURL)

CI/CD-তে Scheme: xcodebuild-এর মাধ্যমে অটোমেশন

CI/CD-তে (GitHub Actions, Jenkins, GitLab CI) Scheme xcodebuild কমান্ডের প্রধান আর্গুমেন্ট হিসেবে ব্যবহৃত হয়। উদাহরণ: xcodebuild -workspace MyApp.xcworkspace -scheme MyApp -configuration Release -sdk iphoneos archive-scheme ফ্ল্যাগ নির্ধারণ করে কোন স্কিম ব্যবহার করতে হবে। xcodebuild .xcscheme ফাইল থেকে সব সেটিংস পড়ে, যার মধ্যে build configuration, টার্গেট ও বিল্ড ক্রম অন্তর্ভুক্ত। এটি নিশ্চিত করে যে CI/CD লোকাল IDE-র মতো একই প্যারামিটার দিয়ে অ্যাপ বিল্ড করে।

CI/CD-এর জন্য Shared স্কিম গুরুত্বপূর্ণ। স্কিম Shared না হলে xcodebuild রিপোজিটরিতে সেটি খুঁজে পাবে না এবং বিল্ড "Scheme not found" ত্রুটিতে ব্যর্থ হবে। নিয়ম: CI/CD সেট আপ করার আগে নিশ্চিত করুন সব ব্যবহৃত স্কিম Shared হিসেবে চিহ্নিত। দ্বিতীয় নিয়ম: CI/CD-তে ডিফল্ট স্কিম ব্যবহার করবেন না (Xcode স্বয়ংক্রিয়ভাবে প্রথম স্কিম নির্বাচন করে) — সর্বদা -scheme ফ্ল্যাগের মাধ্যমে স্কিমের নাম স্পষ্টভাবে পাঠান।

একাধিক স্কিম সমান্তরালভাবে বিল্ড করতে (যেমন অ্যাপ ও watchOS এক্সটেনশন) xcodebuild ক্রমানুসারে বা সমান্তরালে চালানো যায়। আধুনিক CI সিস্টেম ম্যাট্রিক্সের মাধ্যমে বিভিন্ন স্কিমের বিল্ড সমান্তরাল করতে দেয়: একটি জব iOS অ্যাপ বিল্ড করে, অন্যটি watchOS এক্সটেনশন। এটি দুই সমান্তরাল এজেন্টে মোট বিল্ড সময় 15 থেকে 8 মিনিটে কমায়। শেষে আর্টিফ্যাক্টগুলো xcodebuild -exportArchive-এর মাধ্যমে একটি .xcarchive-এ একত্রিত হয়।

bash
#!/bin/bash — xcodebuild দিয়ে CI/CD বিল্ড
# 1. পরিষ্কার ও বিল্ড
xcodebuild clean archive \
  -workspace "MyApp.xcworkspace" \
  -scheme "MyApp Production" \
  -configuration Release \
  -sdk iphoneos \
  -archivePath "build/MyApp.xcarchive" \
  CODE_SIGN_STYLE="Manual" \
  PROVISIONING_PROFILE_SPECIFIER="match AppStore"

# 2. IPA-তে রপ্তানি
xcodebuild -exportArchive \
  -archivePath "build/MyApp.xcarchive" \
  -exportPath "build/ipa" \
  -exportOptionsPlist "ExportOptions.plist"

সচরাচর জিজ্ঞাসিত প্রশ্ন

একটি সাধারণ প্রজেক্টের জন্য কয়টি স্কিম প্রয়োজন?

সাধারণত 2-3টি স্কিম যথেষ্ট: Development (Debug), Staging (টেস্ট সার্ভারের জন্য আর্গুমেন্টসহ) এবং Production (Release)। মডিউলার লাইব্রেরির জন্য — টেস্টিং সেটিংসসহ একটি স্কিম। বেশি স্কিম তৈরি করবেন না — প্রতিটি নতুন স্কিম রক্ষণাবেক্ষণ প্রয়োজন।

Scheme কীভাবে Build Configuration থেকে আলাদা?

Build Configuration (Debug/Release) হলো .xcconfig-এ সংজ্ঞায়িত কম্পাইলার ফ্ল্যাগের সেট। Scheme হলো কর্মের সেট, যার প্রতিটি একটি Build Configuration-কে নির্দেশ করে। স্কিম বলে "চালানোর সময় Debug ব্যবহার করো", কনফিগারেশন নির্ধারণ করে "Debug মানে অপ্টিমাইজেশন ছাড়া, সিম্বলসহ"।

Scheme থেকে কোডে আর্গুমেন্ট কীভাবে পাঠাবেন?

আর্গুমেন্ট ProcessInfo.processInfo.arguments এবং UserDefaults-এ যায় (যদি আর্গুমেন্ট ড্যাশ দিয়ে শুরু হয়)। এনভায়রনমেন্ট ভেরিয়েবল ProcessInfo.processInfo.environment-এ যায়। কোডে: UserDefaults.standard.bool(forKey: "FeatureFlag") -FeatureFlag YES ধরনের আর্গুমেন্টের জন্য।

একাধিক টার্গেটের জন্য একটি স্কিম থাকতে পারে কি?

হ্যাঁ, Build Action-এ একাধিক টার্গেট যোগ করা যায়। উদাহরণস্বরূপ, "App + Watch + Widget" স্কিম তিনটি টার্গেটই ক্রমানুসারে (যদি parallelizeBuildables=NO) বা সমান্তরালে (YES) বিল্ড করবে। অ্যাপ আর্কাইভের জন্য প্রধান টার্গেট যথেষ্ট — বাকিগুলো নির্ভরতা হিসেবে বিল্ড হয়।

SPM ব্যবহার করলে স্কিমের প্রয়োজন কেন?

Swift Package Manager স্কিমের জায়গা নেয় না — স্কিম এখনও নির্ধারণ করে কোন কনফিগারেশনে SPM নির্ভরতা বিল্ড করতে হবে, কোন টেস্ট চালাতে হবে ও কীভাবে আর্কাইভ করতে হবে। SPM প্যাকেজের নিজস্ব স্কিম থাকতে পারে, যা প্যাকেজ যোগ করলে প্রজেক্টে স্বয়ংক্রিয়ভাবে আমদানি হয়।

সারসংক্ষেপ

  • Scheme হলো Xcode কর্মের XML কনফিগারেশন: Build, Run, Test, Profile, Analyze, Archive।
  • Build Configuration (Debug/Release) স্কিমের প্রতিটি কর্মের জন্য আলাদাভাবে সেট করা হয়।
  • Shared স্কিম Git-এ সংরক্ষিত হয় ও পুরো দল ব্যবহার করে, private শুধুমাত্র লোকাল।
  • আর্গুমেন্ট ও Scheme-এর এনভায়রনমেন্ট ভেরিয়েবল কোড পরিবর্তন ছাড়াই এনভায়রনমেন্ট পরিবর্তন করতে দেয়।
  • CI/CD বিল্ডের অভিন্নতা নিশ্চিত করতে xcodebuild -scheme-এর মাধ্যমে Scheme ব্যবহার করে।
  • ডায়াগনস্টিকস (ASan, TSan, UBSan) ডেভেলপমেন্টের সময় বাগ খুঁজতে স্কিমে কনফিগার করা হয়।
  • পরামর্শ: Dev/Staging/Production-এর জন্য 2-3টি Shared স্কিম রাখুন এবং private স্কিম রিপোজিটরিতে সংরক্ষণ করবেন না।

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন