Bazel টিউটোরিয়াল: একটি iOS অ্যাপ তৈরি করুন

এই টিউটোরিয়ালটি ব্যাজেল ব্যবহার করে কীভাবে একটি সাধারণ iOS অ্যাপ তৈরি করতে হয় তা কভার করে।

আপনি কি শিখবেন

এই টিউটোরিয়ালে, আপনি শিখবেন কিভাবে:

  • Bazel এবং Xcode ইনস্টল করে এবং নমুনা প্রকল্প ডাউনলোড করে পরিবেশ সেট আপ করুন
  • একটি Bazel ওয়ার্কস্পেস সেট আপ করুন যাতে অ্যাপের জন্য সোর্স কোড থাকে এবং একটি WORKSPACE ফাইল থাকে যা ওয়ার্কস্পেস ডিরেক্টরির শীর্ষ স্তর চিহ্নিত করে
  • প্রয়োজনীয় বাহ্যিক নির্ভরতার রেফারেন্স ধারণ করতে WORKSPACE ফাইলটি আপডেট করুন
  • একটি BUILD ফাইল তৈরি করুন
  • সিমুলেটর এবং একটি iOS ডিভাইসের জন্য অ্যাপ তৈরি করতে Bazel চালান
  • সিমুলেটরে এবং একটি iOS ডিভাইসে অ্যাপটি চালান

আপনার পরিবেশ সেট আপ করুন

শুরু করতে, Bazel এবং Xcode ইনস্টল করুন এবং নমুনা প্রকল্প পান।

Bazel ইনস্টল করুন

Bazel এবং এর নির্ভরতা ইনস্টল করতে ইনস্টলেশন নির্দেশাবলী অনুসরণ করুন।

Xcode ইনস্টল করুন

Xcode ডাউনলোড এবং ইনস্টল করুন। Xcode অ্যাপল অ্যাপ্লিকেশন তৈরি করতে Bazel দ্বারা প্রয়োজনীয় কম্পাইলার, SDK এবং অন্যান্য সরঞ্জাম রয়েছে।

নমুনা প্রকল্প পান

আপনাকে গিটহাব থেকে টিউটোরিয়ালের জন্য নমুনা প্রকল্পও পেতে হবে। GitHub রেপোর দুটি শাখা রয়েছে: source-only এবং mainsource-only শাখায় শুধুমাত্র প্রকল্পের জন্য উৎস ফাইল রয়েছে। আপনি এই টিউটোরিয়ালে এই শাখার ফাইলগুলি ব্যবহার করবেন। main শাখায় সোর্স ফাইল এবং সম্পূর্ণ করা Bazel WORKSPACE এবং BUILD ফাইল উভয়ই রয়েছে। আপনি টিউটোরিয়াল পদক্ষেপগুলি সম্পন্ন করার পরে আপনার কাজ পরীক্ষা করতে এই শাখার ফাইলগুলি ব্যবহার করতে পারেন।

source-only শাখায় ফাইলগুলি পেতে কমান্ড লাইনে নিম্নলিখিতটি লিখুন:

cd $HOME
git clone -b source-only https://github.com/bazelbuild/examples

git clone কমান্ড $HOME/examples/ নামে একটি ডিরেক্টরি তৈরি করে। এই ডিরেক্টরিতে Bazel-এর জন্য বেশ কয়েকটি নমুনা প্রকল্প রয়েছে। এই টিউটোরিয়ালের জন্য প্রকল্প ফাইল $HOME/examples/tutorial/ios-app এ রয়েছে।

একটি কর্মক্ষেত্র সেট আপ করুন

একটি ওয়ার্কস্পেস হল একটি ডিরেক্টরি যেখানে এক বা একাধিক সফ্টওয়্যার প্রকল্পের জন্য সোর্স ফাইল রয়েছে, সেইসাথে একটি WORKSPACE ফাইল এবং BUILD ফাইল রয়েছে যাতে নির্দেশাবলী রয়েছে যা Bazel সফ্টওয়্যার তৈরি করতে ব্যবহার করে। কর্মক্ষেত্রে আউটপুট ডিরেক্টরিগুলির প্রতীকী লিঙ্কও থাকতে পারে।

একটি ওয়ার্কস্পেস ডিরেক্টরি আপনার ফাইল সিস্টেমের যে কোনো জায়গায় অবস্থিত হতে পারে এবং এটির মূলে WORKSPACE ফাইলের উপস্থিতি দ্বারা চিহ্নিত করা হয়। এই টিউটোরিয়ালে, আপনার ওয়ার্কস্পেস ডাইরেক্টরি হল $HOME/examples/tutorial/ , যেটিতে আপনি আগের ধাপে GitHub রেপো থেকে ক্লোন করা নমুনা প্রজেক্ট ফাইলগুলি ধারণ করেছেন।

আপনার সুবিধার জন্য, আপনার ওয়ার্কস্পেস ডিরেক্টরিতে উল্লেখ করতে এখন $WORKSPACE পরিবেশ পরিবর্তনশীল সেট করুন। কমান্ড লাইনে, লিখুন:

export WORKSPACE=$HOME/examples/tutorial

একটি ওয়ার্কস্পেস ফাইল তৈরি করুন

প্রতিটি ওয়ার্কস্পেসে অবশ্যই টপ-লেভেল ওয়ার্কস্পেস ডিরেক্টরিতে অবস্থিত WORKSPACE নামের একটি টেক্সট ফাইল থাকতে হবে। এই ফাইলটি খালি হতে পারে বা এতে সফ্টওয়্যারটি তৈরি করার জন্য প্রয়োজনীয় বাহ্যিক নির্ভরতার উল্লেখ থাকতে পারে।

আপাতত, আপনি একটি খালি WORKSPACE ফাইল তৈরি করবেন, যা শুধুমাত্র ওয়ার্কস্পেস ডিরেক্টরি সনাক্ত করতে কাজ করে। পরবর্তী ধাপে, আপনি বাহ্যিক নির্ভরতার তথ্য যোগ করতে ফাইলটি আপডেট করবেন।

কমান্ড লাইনে নিম্নলিখিত লিখুন:

touch $WORKSPACE/WORKSPACE
open -a Xcode $WORKSPACE/WORKSPACE

এটি খালি WORKSPACE ফাইল তৈরি করে এবং খোলে।

WORKSPACE ফাইলটি আপডেট করুন

অ্যাপল ডিভাইসের জন্য অ্যাপ্লিকেশন তৈরি করতে, Bazel এর GitHub সংগ্রহস্থল থেকে সর্বশেষ অ্যাপল বিল্ড নিয়মগুলি টানতে হবে। এটি সক্ষম করতে, আপনার WORKSPACE ফাইলে নিম্নলিখিত git_repository নিয়মগুলি যোগ করুন:

load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")

git_repository(
    name = "build_bazel_rules_apple",
    remote = "https://github.com/bazelbuild/rules_apple.git",
    tag = "0.19.0",
)

git_repository(
    name = "build_bazel_rules_swift",
    remote = "https://github.com/bazelbuild/rules_swift.git",
    tag = "0.13.0",
)

git_repository(
    name = "build_bazel_apple_support",
    remote = "https://github.com/bazelbuild/apple_support.git",
    tag = "0.7.2",
)

git_repository(
    name = "bazel_skylib",
    remote = "https://github.com/bazelbuild/bazel-skylib.git",
    tag = "0.9.0",
)

উৎস ফাইল পর্যালোচনা

$WORKSPACE/ios-app/UrlGet এ অবস্থিত অ্যাপটির জন্য সোর্স ফাইলগুলি দেখুন। আবার, অ্যাপের কাঠামোর সাথে পরিচিত হওয়ার জন্য আপনি এখন এই ফাইলগুলি দেখছেন। এই টিউটোরিয়ালটি সম্পূর্ণ করার জন্য আপনাকে কোনো উৎস ফাইল সম্পাদনা করতে হবে না।

একটি বিল্ড ফাইল তৈরি করুন

একটি কমান্ড-লাইন প্রম্পটে, সম্পাদনার জন্য একটি নতুন BUILD ফাইল খুলুন:

touch $WORKSPACE/ios-app/BUILD
open -a Xcode $WORKSPACE/ios-app/BUILD

নিয়ম লোড বিবৃতি যোগ করুন

iOS টার্গেট তৈরি করতে, Bazel এর GitHub সংগ্রহস্থল থেকে বিল্ড নিয়ম লোড করতে হবে যখনই বিল্ড চলে। আপনার প্রকল্পে এই নিয়মগুলি উপলব্ধ করতে, আপনার BUILD ফাইলের শুরুতে নিম্নলিখিত লোড বিবৃতি যোগ করুন:

load("@build_bazel_rules_apple//apple:ios.bzl", "ios_application")

আপনাকে শুধুমাত্র ios_application নিয়মটি লোড করতে হবে কারণ objc_library নিয়মটি Bazel প্যাকেজে তৈরি করা হয়েছে।

একটি objc_library নিয়ম যোগ করুন

Bazel বিভিন্ন বিল্ড নিয়ম প্রদান করে যা আপনি iOS প্ল্যাটফর্মের জন্য একটি অ্যাপ তৈরি করতে ব্যবহার করতে পারেন। এই টিউটোরিয়ালটির জন্য, আপনি প্রথমে objc_library নিয়মটি ব্যবহার করবেন Bazel কে কিভাবে অ্যাপের সোর্স কোড এবং Xib ফাইলগুলি থেকে একটি স্ট্যাটিক লাইব্রেরি তৈরি করবেন তা জানাতে। তারপর আপনি ios_application নিয়মটি ব্যবহার করে বলবেন কিভাবে অ্যাপ্লিকেশন বাইনারি এবং .ipa বান্ডেল তৈরি করতে হয়।

আপনার BUILD ফাইলে নিম্নলিখিত যোগ করুন:

objc_library(
    name = "UrlGetClasses",
    srcs = [
         "UrlGet/AppDelegate.m",
         "UrlGet/UrlGetViewController.m",
         "UrlGet/main.m",
    ],
    hdrs = glob(["UrlGet/*.h"]),
    data = ["UrlGet/UrlGetViewController.xib"],
)

নিয়মের নাম, UrlGetClasses নোট করুন।

একটি ios_application নিয়ম যোগ করুন

ios_application নিয়মটি অ্যাপ্লিকেশন বাইনারি তৈরি করে এবং .ipa বান্ডেল ফাইল তৈরি করে।

আপনার BUILD ফাইলে নিম্নলিখিত যোগ করুন:

ios_application(
    name = "ios-app",
    bundle_id = "Google.UrlGet",
    families = [
        "iphone",
        "ipad",
    ],
    minimum_os_version = "9.0",
    infoplists = [":UrlGet/UrlGet-Info.plist"],
    visibility = ["//visibility:public"],
    deps = [":UrlGetClasses"],
)

উপরের BUILD ফাইলে আপনার যোগ করা UrlGetClasses নিয়মের আউটপুটকে কীভাবে deps অ্যাট্রিবিউট উল্লেখ করে তা লক্ষ্য করুন।

এখন, ফাইলটি সংরক্ষণ করুন এবং বন্ধ করুন। আপনি আপনার BUILD ফাইলটিকে GitHub রেপোর main শাখায় সম্পূর্ণ উদাহরণের সাথে তুলনা করতে পারেন।

অ্যাপটি তৈরি করুন এবং স্থাপন করুন

আপনি এখন আপনার অ্যাপ তৈরি করতে এবং এটিকে একটি সিমুলেটরে এবং একটি iOS ডিভাইসে স্থাপন করতে প্রস্তুত৷

নির্মিত অ্যাপটি $WORKSPACE/bazel-bin ডিরেক্টরিতে অবস্থিত।

এই টিউটোরিয়ালের জন্য সম্পূর্ণ WORKSPACE এবং BUILD ফাইলগুলি GitHub রেপোর প্রধান শাখায় অবস্থিত। অতিরিক্ত সাহায্য বা সমস্যা সমাধানের জন্য আপনি সম্পূর্ণ ফাইলের সাথে আপনার কাজ তুলনা করতে পারেন।

সিমুলেটরের জন্য অ্যাপটি তৈরি করুন

নিশ্চিত করুন যে আপনার বর্তমান কাজের ডিরেক্টরিটি আপনার বেজেল ওয়ার্কস্পেসের ভিতরে রয়েছে:

cd $WORKSPACE

এখন, নমুনা অ্যাপ্লিকেশন তৈরি করতে নিম্নলিখিত লিখুন:

bazel build //ios-app:ios-app

Bazel নমুনা অ্যাপটি চালু করে এবং তৈরি করে। বিল্ড প্রক্রিয়া চলাকালীন, এর আউটপুট নিম্নলিখিতগুলির মতো প্রদর্শিত হবে:

INFO: Found 1 target...
Target //ios-app:ios-app up-to-date:
  bazel-bin/ios-app/ios-app.ipa
INFO: Elapsed time: 0.565s, Critical Path: 0.44s

বিল্ড আউটপুট খুঁজুন

.ipa ফাইল এবং অন্যান্য আউটপুট $WORKSPACE/bazel-bin/ios-app ডিরেক্টরিতে অবস্থিত।

সিমুলেটরে অ্যাপটি চালান এবং ডিবাগ করুন

আপনি এখন iOS সিমুলেটর ব্যবহার করে Xcode থেকে অ্যাপটি চালাতে পারেন। প্রথমে, Tulsi ব্যবহার করে একটি Xcode প্রকল্প তৈরি করুন

তারপরে, এক্সকোডে প্রকল্পটি খুলুন, রানটাইম স্কিম হিসাবে একটি iOS সিমুলেটর চয়ন করুন এবং রান এ ক্লিক করুন।

একটি ডিভাইসের জন্য অ্যাপ তৈরি করুন

আপনার অ্যাপ তৈরি করতে যাতে এটি একটি iOS ডিভাইসে ইনস্টল এবং লঞ্চ হয়, Bazel-এর সেই ডিভাইস মডেলের জন্য উপযুক্ত প্রভিশনিং প্রোফাইল প্রয়োজন। নিম্নলিখিতগুলি করুন:

  1. আপনার অ্যাপল ডেভেলপার অ্যাকাউন্টে যান এবং আপনার ডিভাইসের জন্য উপযুক্ত প্রভিশনিং প্রোফাইল ডাউনলোড করুন। আরও তথ্যের জন্য অ্যাপলের ডকুমেন্টেশন দেখুন।

  2. আপনার প্রোফাইল $WORKSPACE সরান।

  3. (ঐচ্ছিক) আপনার .gitignore ফাইলে আপনার প্রোফাইল যোগ করুন।

  4. আপনার BUILD ফাইলে ios_application টার্গেটে নিম্নলিখিত লাইন যোগ করুন:

    provisioning_profile = "<your_profile_name>.mobileprovision",
    

এখন আপনার ডিভাইসের জন্য অ্যাপ তৈরি করুন:

bazel build //ios-app:ios-app --ios_multi_cpus=armv7,arm64

এটি একটি চর্বি বাইনারি হিসাবে অ্যাপ তৈরি করে। একটি নির্দিষ্ট ডিভাইস আর্কিটেকচার তৈরি করতে, এটিকে বিল্ড বিকল্পগুলিতে মনোনীত করুন।

একটি নির্দিষ্ট Xcode সংস্করণ তৈরি করতে, --xcode_version বিকল্পটি ব্যবহার করুন। একটি নির্দিষ্ট SDK সংস্করণ তৈরি করতে, --ios_sdk_version বিকল্পটি ব্যবহার করুন। --xcode_version বিকল্পটি বেশিরভাগ পরিস্থিতিতে যথেষ্ট।

একটি ন্যূনতম প্রয়োজনীয় iOS সংস্করণ নির্দিষ্ট করতে, আপনার BUILD ফাইলে ios_application বিল্ড নিয়মে minimum_os_version প্যারামিটার যোগ করুন।

আপনি কমান্ড লাইনের পরিবর্তে একটি GUI ব্যবহার করে আপনার অ্যাপ তৈরি করতে তুলসী ব্যবহার করতে পারেন।

একটি ডিভাইসে অ্যাপটি ইনস্টল করুন

ডিভাইসে অ্যাপটি ইনস্টল করার সবচেয়ে সহজ উপায় হল Xcode চালু করা এবং Windows > Devices কমান্ড ব্যবহার করা। বাম দিকের তালিকা থেকে আপনার প্লাগ-ইন ডিভাইস নির্বাচন করুন, তারপর "ইনস্টল করা অ্যাপস" এর অধীনে অ্যাড (প্লাস সাইন) বোতামে ক্লিক করে এবং আপনার তৈরি করা .ipa ফাইলটি নির্বাচন করে অ্যাপটি যোগ করুন।

যদি আপনার অ্যাপটি আপনার ডিভাইসে ইনস্টল করতে ব্যর্থ হয়, তাহলে নিশ্চিত করুন যে আপনি আপনার BUILD ফাইলে (পূর্ববর্তী বিভাগে ধাপ 4) সঠিক প্রভিশনিং প্রোফাইল উল্লেখ করছেন।

আপনার অ্যাপ চালু করতে ব্যর্থ হলে, নিশ্চিত করুন যে আপনার ডিভাইসটি আপনার প্রভিশনিং প্রোফাইলের অংশ। Xcode-এ Devices স্ক্রিনে View Device Logs বোতামটি কী ভুল হয়েছে সে সম্পর্কে অন্যান্য তথ্য প্রদান করতে পারে।

আরও পড়া

আরো বিস্তারিত জানার জন্য, GitHub রেপোর প্রধান শাখা দেখুন।