টুল ও পারফর্ম্যান্স

Lightbuild-এর মাধ্যমে ডিক্লেরেটিভ, এজেন্ট-রেডি Android বিল্ড

স্পিকার

  • Scott Myers

    ডেভেলপার রিলেশনস ইঞ্জিনিয়ার

  • Juan Sebastian Oviedo

    সিনিয়র প্রোডাক্ট ম্যানেজার

সম্পর্কে

টক সম্পর্কে

Android অ্যাপের সংখ্যা বৃদ্ধি পাওয়ার সাথে সাথে AI কোডিং অ্যাসিস্ট্যান্টের প্রয়োজনীয়তাও বাড়ছে। আপনার বিল্ড কনফিগার করার জন্য এক্সিকিউটেবল কোড ব্যবহার করলে, সিঙ্ক করার সময় কমে যাওয়া, ভঙ্গুর লজিক এবং জটিলতা বৃদ্ধির মতো সমস্যা দেখা দিতে পারে।

Lightbuild-এ প্রবেশ করুন: আধুনিক Android ডেভেলপমেন্টের জন্য ডিজাইন করা, বিল্ড ইঞ্জিনে Google-এর ডিক্লারেটিভ, কনফিগারেশন-চালিত ইন্টারফেস।

এই সেশনে, আমরা বিল্ড ম্যানেজ করার জন্য Lightbuild-এর নতুন পদ্ধতি এবং একটি ডেমো অ্যাপ তৈরি করতে এটি কীভাবে ব্যবহার করতে হয় তা এক্সপ্লোর করব। এক্সিকিউশন থেকে বিল্ড কনফিগারেশন ডিকাপল করা কীভাবে Android Studio-তে বিদ্যুতের মতো দ্রুত সিঙ্ক সহ আরও দ্রুত প্রোজেক্ট ওপেন করার সুবিধা প্রদান করে তা জানুন, পাশাপাশি আরও নিরাপদ, আরও নির্ভরযোগ্য AI এডিটিংয়ের জন্য একটি অনুমানযোগ্য স্কিমা অফার করে। এছাড়াও, আমরা Lightbuild-এর এজেন্ট-ফ্রেন্ডলি CLI টুল সম্পর্কে আলোচনা করব যা লোকাল মেশিন, টিম ও CI/CD পাইপলাইন জুড়ে রিপ্রোডিউসেবল বিল্ড তৈরি করতে সাহায্য করে

সারাংশ

  • Lightbuild হল Android অ্যাপের জন্য একটি পরীক্ষামূলক বিল্ড সিস্টেম প্রিভিউ যা এক্সিকিউটেবল স্ক্রিপ্টগুলিকে সম্পূর্ণরূপে ঘোষণামূলক ডেটা ফাইল দিয়ে প্রতিস্থাপন করে। এটি ব্যাকগ্রাউন্ডে এক্সিকিউশন ইঞ্জিন হিসেবে Gradle ব্যবহার করে।
  • ডিক্লারেটিভ YAML কনফিগারেশন, প্রোজেক্ট স্ট্রাকচারকে নির্ধারক, স্ট্যাটিক গ্রাফ হিসেবে মডেল করে। এটি AI এজেন্টদের টপোলজি পরীক্ষা করতে এবং স্ট্রাকচার্ড স্কিমা ব্যবহার করে নিরাপদে মডিউল বা ডিপেন্ডেন্সি পরিবর্তন করতে দেয়।
  • ফাস্ট IDE সিঙ্ক, চেক-ইন করা resolved.deps ফাইলে ডিপেন্ডেন্সি আগে থেকে গণনা করে স্ক্রিপ্ট মূল্যায়ন বাইপাস করে। CI/CD বিল্ডের সময় এই ফাইলগুলি লক ফাইল হিসেবেও কাজ করতে পারে।
  • প্রতিটি প্রোজেক্ট কোডকে লাইব্রেরি মডিউলে আলাদা করে, যেখানে অ্যাপ্লিকেশন মডিউলকে খালি শেল হিসেবে রাখে। এই স্ট্রাকচার বিল্ডকে ত্বরান্বিত করে এবং ডেমো ও প্রোডের মতো ফ্লেভার দেখানোর জন্য আলাদা অ্যাপ্লিকেশন মডিউলকে অনুমতি দেয়।
  • স্ট্যান্ডঅ্যালোন CLI-তে query এবং resolve-এর মতো কমান্ড অন্তর্ভুক্ত থাকে যা এজেন্টিক ওয়ার্কফ্লোর জন্য JSON আউটপুট দিতে পারে। Lightbuild বর্তমানে পরীক্ষামূলক ব্যবহারের জন্য Android Studio Canary-তে উপলভ্য।

রিসোর্স

Gemini Notebook

বিষয়

  • android-builds
  • lightbuild
  • android-studio
  • declarative-build
  • ai-agents

ট্রান্সস্ক্রিপ্ট করা

Lightbuild-এর সাথে পরিচয়

  • হ্যালো, সবাইকে স্বাগত।

  • আমার নাম জুয়ান সেবাস্তিয়ান ওভিয়েডো।

  • আমি Android ডেভেলপার অভিজ্ঞতা টিমের প্রোডাক্ট ম্যানেজার।

  • আমি এখানে স্কটের সাথে আছি এবং আজ আমরা আপনার সাথে Lightbuild-এর একটি প্রাথমিক লুক শেয়ার করতে পেরে আনন্দিত, যা Android অ্যাপের জন্য একটি নতুন পরীক্ষামূলক বিল্ড অভিজ্ঞতা।

  • আমি এই প্রোজেক্টের প্রসঙ্গ, এর পিছনের দর্শন এবং কেন আমরা বিশ্বাস করি যে Android প্রোজেক্টগুলি কীভাবে কনফিগার করা হয় তা পুনর্বিবেচনা করার এখনই সঠিক সময় তা নিয়ে আলোচনা করব।

  • এছাড়াও, এই নতুন পদ্ধতি কীভাবে Android অ্যাপ ডেভেলপমেন্টের ভবিষ্যতের জন্য আমাদের প্রস্তুত করে, সেই বিষয়েও আলোচনা করব।

  • বর্তমানে কীভাবে কাজ হয় সেই সম্পর্কে কিছু তথ্য দিয়ে শুরু করা যাক।

  • Gradle এবং ইম্পারেটিভ বিল্ড স্ক্রিপ্ট ডেভেলপারদের তাদের বিল্ড সম্পর্কে প্রায় যেকোনো কিছু প্রোগ্রাম্যাটিকভাবে সংজ্ঞায়িত করার ক্ষমতা দেয়।

  • যেমন, আপনার কাছে এমন লজিক থাকতে পারে যা Git ইতিহাসের উপর ভিত্তি করে ভার্সন কোড ডাইনামিকভাবে গণনা করে অথবা অ্যাসেট ট্রান্সফর্ম করে এমন কাস্টম টাস্ক নির্ধারণ করে।

    // build.gradle.kts
    android {
    
      compileSdk = 37
    
      buildTypes {
    
        debug {
    
          // Custom logic in build script
          val commit = providers.exec {
            commandLine("git", "rev-parse",
                        "--short", "HEAD")
          }.standardOutput.asText.get()
           .trim()
    
          versionNameSuffix = "-$commit"
    
        }
    
      }
    
    }
  • Gradle-এর পাশাপাশি, AGP বা Android Gradle প্লাগ-ইন আছে, যা Gradle-এর সাধারণ-উদ্দেশ্য ইঞ্জিন নেয় এবং এটিকে Android টুলচেনে মানিয়ে নেয়।

  • Gradle এবং AGP একসাথে একটি ডায়নামিক সিস্টেম তৈরি করে যা বর্তমানে লক্ষ লক্ষ প্রোডাকশন অ্যাপের জন্য বিল্ড কনফিগারেশন অভিজ্ঞতাকে শক্তিশালী করে।

  • এই নমনীয়তার কারণে, আমাদের ডেভেলপমেন্ট টুল একটি নির্দিষ্ট আর্কিটেকচারাল লাইফ সাইকেলের মধ্যে কাজ করে।

  • আপনি কোনও প্রোজেক্ট খুললে, ব্রাঞ্চ পরিবর্তন করলে বা বিল্ড ফাইল এডিট করলে, IDE-এর কাছে আপনার প্রোজেক্ট কনফিগারেশনের একটি স্পষ্ট ম্যাপ বা স্পষ্ট ধারণা থাকা প্রয়োজন, যাতে এটি কোড সম্পূর্ণ করা এবং কোড নেভিগেশনের মতো ফিচারগুলি চালাতে পারে।

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

  • IDE সিঙ্ক করার সময়, বিল্ড সিস্টেম কনফিগারেশন ফেজের মধ্যে দিয়ে যায়।

  • এটি আপনার বিল্ড স্ক্রিপ্ট মূল্যায়ন করে, এটি প্লাগ-ইন লজিক এক্সিকিউট করে এবং এটি প্রোজেক্ট মডেল তৈরি করে।

  • এটি আপনার প্রোজেক্টের Android Studio ভিউকে আপনার প্রোজেক্টের আসল কনফিগারেশনের সাথে অ্যালাইন করে।

  • ডেভেলপার হিসেবে, আপনি সবচেয়ে বেশি যে বিষয়ে যত্নশীল তা হল একটি দুর্দান্ত Android অ্যাপ প্রদান করা এবং এটি আপনার ব্যবহারকারীদের কাছে পৌঁছে দেওয়া।

  • তবে, বিল্ড স্ক্রিপ্ট ম্যানেজ করা, AGP আপ-টু-ডেট রাখা এবং IDE-এর সাথে প্রোজেক্ট সিঙ্ক করে রাখার জন্য সময় ও পরিশ্রম লাগে।

  • এই ক্ষেত্রে ডেভেলপারদের অভিজ্ঞতা উন্নত করার জন্য Google এবং বৃহত্তর ইকোসিস্টেম জুড়ে বেশ কয়েকটি উদ্যোগ নেওয়া হয়েছে।

  • ডিক্লারেটিভ গ্রেডেল এবং কোটলিন টুলচেনের মতো উদ্যোগের লক্ষ্য হল এক্সিকিউটেবল বিল্ড স্ক্রিপ্টগুলিকে ডিক্লারেটিভ বিল্ড কনফিগারেশন দিয়ে প্রতিস্থাপন করা।

  • Android Studio-তে, আমাদের কাছে AGP আপগ্রেড অ্যাসিস্ট্যান্ট আছে, যা আপনাকে AGP-এর এক ভার্সন থেকে অন্য ভার্সনে যাওয়ার জন্য প্রয়োজনীয় পরিবর্তনের মাধ্যমে গাইড করে।

  • এছাড়াও, আমরা একটি আপগ্রেড স্কিল প্রদান করি যা এজেন্টরা AGP আপগ্রেড করার জন্য ইনস্টল এবং অনুসরণ করতে পারে।

  • এছাড়াও, আমরা ফেজড সিঙ্ক এবং রেজিলিয়েন্ট সিঙ্কের মতো ক্ষেত্রে বিনিয়োগ করছি, যাতে ডেভেলপাররা তাদের প্রোজেক্ট সিঙ্ক এবং ইম্পোর্ট করার সময় আরও ভালো অভিজ্ঞতা পান।

  • এইসব প্রচেষ্টার প্রতিটিই সমস্যার একটি অংশকে টার্গেট করে যাতে ডেভেলপাররা তাদের অ্যাপ তৈরি করতে আরও বেশি সময় ব্যয় করতে পারেন এবং তাদের প্রোজেক্ট তৈরি করতে, তাদের বিল্ড ফাইল ম্যানেজ করতে এবং তাদের প্রোজেক্ট সিঙ্ক করতে কম সময় ব্যয় করতে পারেন।

  • এই প্রচেষ্টার পাশাপাশি, আমরা নিজেদের আরও একটি প্রশ্ন করেছি।

  • প্রজেক্ট কনফিগার করার পদ্ধতিকে যদি আমরা একদম শুরু থেকে নতুন রূপ দিই, তাহলে কেমন হয়?

  • আজকের দিনে আধুনিক Android অ্যাপের আর্কিটেকচার লক্ষ্য করলে দেখা যায় যে, হেভি মডিউলারাইজেশনের দিকে একটি বড় পরিবর্তন হয়েছে।

  • বড় কোড বেসে প্রায়ই ডজন বা এমনকি শত শত মডিউল থাকে: UI মডিউল, ফিচার মডিউল, ডোমেন মডিউল এবং ডেটা মডিউল।

  • যদিও রুট অ্যাপ্লিকেশনের মাঝে মাঝে কাস্টম প্যাকেজিংয়ের প্রয়োজন হতে পারে, তবে এই লাইব্রেরি মডিউলের বেশিরভাগই একটি স্ট্যান্ডার্ডাইজড রিপিটেবল প্যাটার্ন অনুসরণ করে।

  • তাদের বিল্ড ফাইলে আসলে কোনও নির্বিচারে এক্সিকিউটেবল কোড থাকার প্রয়োজন নেই।

  • তাদের শুধু স্ট্রাকচার ও ডিপেন্ডেন্সি স্পষ্টভাবে উল্লেখ করতে হবে।

Lightbuild-এর মূল স্তম্ভ

  • সেই পর্যবেক্ষণ থেকেই আমরা Lightbuild তৈরি করার সিদ্ধান্ত নিই।

  • Lightbuild দুটি স্তম্ভের উপর নির্ভর করে।

  • প্রথমত, এটি কনফিগারেশনের জন্য ডিক্লারেটিভ সিনট্যাক্স ব্যবহার করে, যা বিল্ড কনফিগারেশন এবং লজিকের মধ্যে একটি স্পষ্ট পার্থক্য প্রদান করে।

  • দ্বিতীয়ত, এটি সময়ের আগেই ডিপেন্ডেন্সি রেজোলিউশনের মাধ্যমে দ্রুত IDE সিঙ্ক করার অভিজ্ঞতা প্রদান করে।

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

  • ডিক্লেরেটিভ বিল্ড কনফিগারেশনের স্তম্ভ দিয়ে শুরু করা যাক।

  • স্ক্রিনের বাঁদিকে থাকা ফাইলটি দেখুন।

  • এটি আজকের জন্য কোনও মডিউলের কনফিগারেশন দেখায়।

    // build.gradle.kts
    
    plugins {
       alias(libs.plugins.android.library)
       alias(libs.plugins.kotlin.compose)
    }
    
    val gitCommit = providers.exec {
       commandLine("git", "rev-parse", "--short", "HEAD")
    }.standardOutput.asText.get().trim()
    
    android {
       namespace = "com.example.app"
       compileSdk = 37
    
       defaultConfig {
           minSdk = 24
           buildConfigField("String", "GIT_COMMIT",
                            "\"$gitCommit\"")
       }
       buildFeatures {
            compose = true
            buildConfig = true
       }
    }
    
    dependencies {
      implementation(platform(libs.androidx.compose.bom))
      implementation(libs.androidx.compose.ui)
      implementation(libs.androidx.compose.ui.graphics)
      ...
  • এই ফাইলটি এক্সিকিউটেবল কোড হওয়ার কারণে, এতে লোকাল ভেরিয়েবল ডেফিনেশন, কাস্টম হেল্পার ফাংশন বা কনভেনশন প্লাগ-ইন, কন্ডিশনাল স্টেটমেন্ট এবং ইন-লাইন টাস্ক ডেফিনেশন থাকতে পারে।

  • এই কনফিগারেশন কী সমাধান করে তা IDE-কে জানতে হলে, এটিকে আসলে স্ক্রিপ্ট রান করতে হবে।

  • এখন স্ক্রিনের ডানদিকে ফাইলটি দেখুন।

  • এটি একই ধরনের মডিউলের জন্য Lightbuild কনফিগারেশন।

    # lightbuild.yaml
    
    group: "com.example"
    version: "1.0.0"
    
    platform: android
    type: library
    
    android:
     namespace: "com.example.app"
     compileSdk:
       version:
         release:
           apiLevel: 37
     minSdk:
       version:
         release:
           apiLevel: 24
     dependencies:
       maven:
         - androidx.core:core-ktx:1.10.1
         - androidx.lifecycle:lifecycle-runtime-ktx:2.6.1
         - androidx.activity:activity-compose:1.8.0
  • এই ফাইলটি সম্পূর্ণভাবে ঘোষণামূলক ডেটা।

  • কোনও লোকাল ভেরিয়েবেল সংজ্ঞা, কাস্টম হেল্পার ফাংশনে কোনও কল এবং কোনও শর্তাধীন স্টেটমেন্ট বা ইনলাইন টাস্ক সংজ্ঞা নেই।

  • এটি মডিউলের ধরন, এর SDK টার্গেট এবং এর ডিপেন্ডেন্সি স্পষ্টভাবে উল্লেখ করে।

  • আপনার টিমে কোনও নতুন ইঞ্জিনিয়ার যোগ দিয়ে এই ফাইল খুললে, তাকে কাস্টম বিল্ড ইডিয়ম বুঝতে হবে না এবং প্রতিটি Lightbuild প্রোজেক্টের প্রতিটি Lightbuild মডিউল একই সহজে পাঠযোগ্য ভাষা ব্যবহার করে।

  • কনফিগারেশন ও লজিকের মধ্যে পার্থক্য মানুষের-পঠনযোগ্যতার জন্য দারুণ হলেও, এজেন্ট-সহায়তা প্রাপ্ত ওয়ার্কফ্লোর জন্য এটি আরও বেশি পরিবর্তনশীল।

  • ডেভেলপাররা তাদের ওয়ার্কফ্লোর অংশ হিসেবে এজেন্ট গ্রহণ করার সাথে সাথে, সেইসব এজেন্টকে বিল্ড কনফিগারেশন পড়তে ও পরিবর্তন করতে পারতে হবে।

  • তবে, প্রোজেক্ট তৈরি করা ছাড়া কনফিগারেশন পরিবর্তনের পার্শ্বপ্রতিক্রিয়া অনুমান করার কোনও উপায় তাদের কাছে নেই।

  • কনফিগারেশন ফাইলে একটি লাইন যোগ করলে, প্রোজেক্টের অন্য কোথাও ডায়নামিকভাবে গণনা করা ভেরিয়েবল বা কনভেনশন প্লাগ-ইনের সাথে কনফ্লিক্ট হতে পারে।

  • Lightbuild-এ, আপনার প্রোজেক্টের কনফিগারেশন হল একটি নির্ধারক, স্ট্যাটিক ডেটা গ্রাফ।

  • এর অর্থ হল, এজেন্টরা সেই গ্রাফটি পরীক্ষা করতে, মডিউল টপোলজি বুঝতে এবং পরিচিত স্কিমা ব্যবহার করে এটি পরিবর্তন করতে পারে।

  • একজন এজেন্ট মডিউলের তালিকা, ডিপেন্ডেন্সির তালিকা এবং তাদের ভার্সন দেখতে, ডিপেন্ডেন্সি আপডেট করতে বা এমনকি স্ট্রাকচার্ড ডেটা পড়ে এবং লিখে একটি সম্পূর্ণ নতুন ফিচার মডিউল যোগ করতে পারে।

  • এটি এজেন্ট-সহায়তা প্রাপ্ত ওয়ার্কফ্লোর জন্য আপনার প্রোজেক্টের কনফিগারেশনকে ফার্স্ট-ক্লাস সিটিজেন করে তোলে।

  • এই মুহূর্তে আমি আরও একটি বিষয় হাইলাইট করতে চাই, সেটি হল Lightbuild কোনও বিল্ড সিস্টেমের প্লাগ-ইন নয়, এটি হল বিল্ড ইঞ্জিনের ইন্টারফেস।

  • Lightbuild-এর যে ভার্সন, অর্থাৎ প্রিভিউ আমরা আজ রিলিজ করছি, সেটি এক্সিকিউশন ইঞ্জিন হিসেবে Gradle ব্যবহার করে।

  • তবে, Lightbuild-এর ক্ষেত্রে আমরা যে আর্কিটেকচারাল পদ্ধতি অনুসরণ করেছি, তার ফলে Android Studio, IDE, প্রোজেক্টটিকে Lightbuild প্রোজেক্ট হিসেবে দেখে ও বিবেচনা করে।

  • এবার দ্বিতীয় স্তম্ভটি নিয়ে আলোচনা করা যাক, যা ডেভেলপার প্রোডাক্টিভিটি ও ফ্লো সম্পর্কিত: দ্রুত IDE সিঙ্ক।

  • এমনকি ডেভেলপাররা তাদের ওয়ার্কফ্লোর অংশ হিসেবে এজেন্ট গ্রহণ করলেও, ইন্টার‍্যাক্টিভ টাস্কের জন্য Android Studio একটি অপরিহার্য টুল হিসেবে থেকে যায়, যেমন, কম্পোজ UI প্রিভিউ পর্যালোচনা করা বা কোনও সমস্যা তদন্ত করার অংশ হিসেবে ডিবাগারে কোডের মাধ্যমে ধাপে ধাপে যাওয়া, বা প্রোফাইলারের সাথে পারফর্ম্যান্স বিশ্লেষণ করা।

  • আপনার প্রোজেক্টের কনফিগারেশন একটি নির্ধারক, স্ট্যাটিক ডেটা গ্রাফ হওয়ার কারণে, IDE-কে আপনার প্রোজেক্ট বোঝার জন্য স্ক্রিপ্ট মূল্যায়ন পর্বের মধ্য দিয়ে যেতে বা প্লাগ-ইন কোড এক্সিকিউট করতে হয় না।

  • আপনি কোনও প্রোজেক্ট খুলুন, বিল্ড ফাইল এডিট করুন বা ব্রাঞ্চ পরিবর্তন করুন, IDE সেই তথ্য দ্রুত প্রসেস করতে পারে এবং আপনাকে সরাসরি আপনার টুলে নিয়ে যেতে পারে।

  • এই গতি ও নির্ভরযোগ্যতা সম্ভব হওয়ার অন্যতম কারণ হল Lightbuild যেভাবে ডিপেন্ডেন্সি ম্যানেজ করে।

  • সাধারণত, আপনি কোনও ডিপেন্ডেন্সি ঘোষণা করলে, ভার্সন সংক্রান্ত তথ্য সংগ্রহ করতে এবং বিরোধ সমাধান করতে, বিল্ড সিস্টেমকে ট্রানজিটিভ ডিপেন্ডেন্সির ট্রি-এর মাধ্যমে যেতে হয়।

  • Lightbuild-এ, আপনার ডিপেন্ডেন্সি পরিবর্তন হলে, টুলটি অটোমেটিক ট্রানজিটিভ ডিপেন্ডেন্সি তথ্য গণনা করে এবং প্রতিটি মডিউল ডিরেক্টরির মধ্যে একটি resolved.deps ফাইলে এটি লেখে।

  • এর ফলে, ভবিষ্যতে প্রোজেক্টটি আবার খোলা হলে বা আবার তৈরি করা হলে, IDE বা বিল্ড টুলকে ট্রানজিটিভ ডিপেন্ডেন্সি সংক্রান্ত তথ্য আবার গণনা করতে হয় না।

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

  • এছাড়াও, সোর্স কন্ট্রোলে এই তথ্য চেক করার মাধ্যমে আপনি এটি নিশ্চিত করেন যে আপনি, আপনার টিমমেট এবং আপনার CI/CD পাইপলাইন প্রতিবার একই ডিপেন্ডেন্সি ভার্সন ব্যবহার করে বিল্ড করতে পারে।

  • আমরা অত্যন্ত আনন্দের সাথে ঘোষণা করছি যে Lightbuild এখন Android Studio Canary-তে আগাম প্রিভিউ হিসেবে এবং স্ট্যান্ডঅ্যালোন CLI টুলের মাধ্যমেও উপলভ্য।

  • মনে রাখবেন যে Lightbuild-এর এই ভার্সনটি পরীক্ষামূলক, তাই এতে প্রোডাকশন অ্যাপ্লিকেশন তৈরি ও রক্ষণাবেক্ষণের জন্য প্রয়োজনীয় সব ফিচার নেই।

  • ডেমো এবং পরীক্ষামূলক প্রোজেক্টে Lightbuild ব্যবহার করার সময় আপনার প্রোডাকশন অ্যাপ্লিকেশনের জন্য AGP এবং Gradle ব্যবহার করা চালিয়ে যান।

  • আপনি আজই goo.gle/lightbuild লিঙ্কে গিয়ে শুরু করতে পারেন এবং আমরা আপনার মতামত পাওয়ার জন্য অপেক্ষা করছি যাতে আপনি প্রোডাক্টটি আরও উন্নত করতে আমাদের সাহায্য করতে পারেন।

  • এখন, আমি প্রেজেন্টেশনটি স্কটকে দেব যাতে তিনি আপনাকে Lightbuild-এর কাজ দেখাতে পারেন।

Android Studio-তে Lightbuild ব্যবহার শুরু করা

  • ধন্যবাদ, জুয়ান।

  • আমার নাম স্কট মেয়ার্স।

  • আমি একজন Android Developer Relations Engineer এবং আমরা বেশ কিছুদিন ধরে Lightbuild-এর উপর কাজ করছি। আজ আপনি কীভাবে এটি ব্যবহার করতে পারবেন তা দেখাতে পেরে আমরা খুবই আনন্দিত।

  • তাই, প্রথমে আপনাকে জুয়ানের উল্লেখ করা লিঙ্কে যেতে হবে, goo.gle/lightbuild অথবা Lightbuild-এর জন্য সার্চ করতে হবে।

  • এবং এটি আপনাকে এই ডকুমেন্টেশন পৃষ্ঠায় নিয়ে যাবে যেখানে শুরু করার জন্য আপনার প্রয়োজনীয় সমস্ত ধাপ থাকবে, যার মধ্যে Android Studio-র Canary ভার্সন ইনস্টল করাও রয়েছে, কারণ মনে রাখবেন এটি এখনও প্রিভিউতে রয়েছে, এটি এখনও Android Studio-র স্টেবল ভার্সনে নেই।

  • এছাড়াও, Lightbuild CLI আছে যা আপনি ইনস্টল করতে পারেন এবং Lightbuild-এর সাথে এজেন্টিক অভিজ্ঞতার সম্পূর্ণ সুবিধা পেতে পারেন।

  • তাই, একবার আপনি এটি সেট-আপ করে নিলে, যেমন আমি এখানে আমার মেশিনে করেছি, আমি লেটেস্ট Android Studio Canary চালাচ্ছি।

  • আর এখন আমি একটি ডেমো Lightbuild প্রোজেক্ট তৈরি করার প্রতিটি ধাপ দেখাব এবং আপনি কীভাবে এটি করতে পারেন তা দেখাব, এমনকি আজই।

  • তাই, প্রথমে আমি নতুন প্রোজেক্ট উইজার্ডে যাব।

  • আমি 'খালি অ্যাক্টিভিটি' বেছে নিয়ে 'পরবর্তী' বিকল্পে ক্লিক করব।

  • এবং এখন আপনি দেখতে পাবেন যে এটি সাধারণ, প্রোজেক্টের বিবরণ স্ক্রিন, তবে এখানে নিচে একটি নতুন বিকল্প রয়েছে।

  • বিল্ড কনফিগারেশন ভাষার অধীনে, আপনি Lightbuild বেছে নিতে পারবেন।

  • এবং আপনি 'শেষ করুন' বোতামে ক্লিক করার আগে এটি আপনাকে মনে করিয়ে দেবে যে এটি এক্সপেরিমেন্টাল।

  • এবং আপনি এখনই দেখতে পাবেন যে আমাদের প্রোজেক্ট IDE-এর সাথে সিঙ্ক হয়ে গেছে এবং চালু হয়ে গেছে, আমরা এখন কাজ শুরু করতে পারি।

  • এখন, একটি সাধারণ Lightbuild প্রোজেক্টের প্রোজেক্ট স্ট্রাকচার দেখে নেওয়া যাক।

  • সুতরাং, এটি হল ডিফল্ট Android টেমপ্লেট যা আপনি নতুন অ্যাপ্লিকেশন তৈরি করার সময় পান।

  • এতে শুধু লেখা আছে, "হ্যালো, পৃথিবী!"

  • তাই এটি শুরু করার একটি সহজ উপায়।

  • এবং আপনি দেখতে পাবেন যে আমাদের প্রোজেক্টের রুট লেভেলে এখানে, আমাদের কাছে project.lightbuild.yaml নামে একটি ফাইল আছে।

  • এটি আমাদের সম্পূর্ণ প্রোজেক্টের জন্য গ্লোবাল সেটিংস প্রদান করে।

  • তাই, আপনি নিজের প্রোজেক্টের নাম দিতে পারেন, প্রোজেক্টের সব মডিউল তালিকাভুক্ত করতে পারেন, কোন এক্সটার্নাল রিপোজিটরি থেকে ডিপেন্ডেন্সি পুল করছেন তা বলতে পারেন এবং তারপর প্রোজেক্টের বিভিন্ন অংশে গ্লোবালি প্রয়োগ করা ভার্সন এখানে উল্লেখ করতে পারেন।

  • সুতরাং, আমরা দেখতে পাচ্ছি যে এখানে আমাদের দুটি মডিউল আছে, app এবং app-core।

  • আর এর কারণ হল, সব Lightbuild প্রোজেক্টে অন্তত দুটি মডিউল থাকে।

  • কারণ, অন্তত একটি অ্যাপ মডিউল ও অন্তত একটি লাইব্রেরি মডিউল থাকা আবশ্যক।

  • এবং আমি এক সেকেন্ডের মধ্যে কেন তা জানাব।

  • তাই, প্রথমে এই অ্যাপ মডিউলটি দেখে নেওয়া যাক।

  • আমি যদি এখানে এটি বড় করি, তাহলে আপনি দেখতে পাবেন যে মডিউলের রুট লেভেলে একটি lightbuild.yaml ফাইল আছে, যা প্রতিটি মডিউলে থাকবে।

  • এখানে কিছু প্রাথমিক তথ্য আছে।

  • আমরা Android প্ল্যাটফর্ম নিয়ে কাজ করছি, অবশ্যই।

  • এবং এই মডিউলটি অ্যাপ্লিকেশন ধরনের।

  • আপনি SDK টার্গেট ভার্সন, অ্যাপ্লিকেশন আইডি ইত্যাদি তালিকাভুক্ত করতে পারেন এবং তারপরে এই অ্যাপ্লিকেশন মডিউল যেসব মডিউলের উপর নির্ভর করে সেগুলি তালিকাভুক্ত করতে পারেন।

  • এখন, এই অ্যাপ্লিকেশন মডিউলের ব্যাপারে যা আকর্ষণীয় তা হল, এটি স্ট্যান্ডার্ড Android টেমপ্লেট থেকে কিছুটা আলাদা, কারণ সোর্স ফোল্ডারে কিছুই নেই।

  • তাই, Lightbuild-এ, অ্যাপ্লিকেশন মডিউলে কোনও সোর্স কোড থাকে না।

  • এর কারণ হল, এই অ্যাপ মডিউলটি খুব ঘন ঘন পরিবর্তন করা হবে না, তবে এটি তৈরি করতে কিছুটা সময় লাগে।

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

  • তাহলে, এরপর অ্যাপ-কোর মডিউলটি দেখে নেওয়া যাক, অর্থাৎ, লাইব্রেরি মডিউল যার উপর এই অ্যাপ্লিকেশন মডিউল নির্ভর করে।

  • এবং আপনি দেখতে পাচ্ছেন যে এই মডিউলে আসলে সোর্স কোড আছে।

  • এখানে আমাদের মূল লজিক আছে।

  • এতে শুধু লেখা আছে, "হ্যালো, পৃথিবী!"

  • এবং আমি যদি এই মডিউলের lightbuild.yaml ফাইলটি দেখি, তাহলে আপনি দেখতে পাবেন যে এটি লাইব্রেরি ধরনের।

  • এবং এখানে এটি কিছু SDK ভার্সন নম্বরও সেট করছে, তবে এটি এই মডিউলের মধ্যে আমাদের সমস্ত এক্সটার্নাল ডিপেন্ডেন্সি তালিকাভুক্ত করছে।

  • এবং এটি আমাদের ইউনিট এবং ইন্সট্রুমেন্টেড টেস্টও ঘোষণা করছে।

  • তাহলে, এর পরে, আপনি এখানে লক্ষ্য করে থাকতে পারেন এমন আরেকটি ফাইল দেখে নেওয়া যাক এবং জুয়ান এই বিষয়ে কিছুটা বলেছেন, প্রতিটি মডিউলের মধ্যে একটি resolved.deps ফাইল আছে।

  • এবং এটি এমন একটি ফাইল যা Lightbuild-এর মাধ্যমে অটোমেটিক জেনারেট করা হয়।

  • তাই, এর অর্থ হল, আপনাকে এটি ম্যানুয়ালি এডিট করতে হবে না, তবে এই মডিউলের মধ্যে সমাধান করা সব ডিপেন্ডেন্সির তালিকা এতে থাকবে।

  • তাই, আপনার সব ডিপেন্ডেন্সি ও ট্রানজিটিভ ডিপেন্ডেন্সি আগে থেকেই এখানে আছে।

  • সুতরাং, এর অর্থ হল IDE-তে আপনার অ্যাপ্লিকেশন খোলা হলে বা আপনি যখন কোনও বিল্ড তৈরি করতে যান, তখন আপনাকে এটি খুঁজে বের করতে হবে না, কারণ এটি আগেই খুঁজে বের করা হয়েছে এবং আপনার প্রোজেক্টে চেক করা হয়েছে।

  • এরপর, প্রোজেক্ট সিঙ্ক করার মাধ্যমে Lightbuild কীভাবে ডেভেলপারের অভিজ্ঞতা উন্নত করে তার একটি উদাহরণ দেখা যাক।

  • তাই, এখন আমি রুট লেভেল project.lightbuild.yaml-এ ফিরে এসেছি, এখানে গ্লোবাল সেটিংস আছে যা আমার অ্যাপ্লিকেশনের সব মডিউল তালিকাভুক্ত করে।

  • এবং সাধারণত, আপনি যখন কনফিগারেশন বা বিল্ড কনফিগারেশন ফাইল এডিট করছেন, তখন আপনি লক্ষ্য করবেন যে একটি সিঙ্ক বোতাম রয়েছে যা দেখায় যে এই সমস্ত প্রসেস করতে কিছুটা সময় লাগে কারণ জুয়ান যে প্রসেসগুলি বর্ণনা করছিলেন যেখানে আপনার সমস্ত বিল্ড স্ক্রিপ্ট এক্সিকিউট করে এবং তারপরে IDE-এর সাথে সেই মডেলটি সিঙ্ক করে এটিকে একটি আংশিক বিল্ড করতে হবে।

  • তাহলে, এই ছোট প্রজেক্টের জন্য বেশ বড়সড় পরিবর্তন করা যাক।

  • আমরা শুধু একটি মডিউল মুছে দেব।

  • এবং আপনি দেখতে পাচ্ছেন যে এই মডিউলটি, আমি সেভ বোতামে ক্লিক করার আগে, IDE দ্বারা স্বীকৃত হয়েছে কারণ আপনি বলতে পারেন যে এটি এখানে বোল্ড করা আছে।

  • এটি সোর্স ডিরেক্টরি, টেস্ট ডিরেক্টরি শনাক্ত করেছে।

  • এবং আমি পরিবর্তন করার পরে সেভ বোতামে ক্লিক করার সাথে সাথেই আপনি দেখতে পাবেন যে এই মডিউলটি প্রোজেক্ট থেকে সাথে সাথে চলে গেছে।

  • আমি যদি আবার সেই পরিবর্তনটি আগের অবস্থায় ফিরিয়ে আনি এবং সেভ করি, তাহলে এটি আগের মতোই দ্রুত ফিরে আসে।

  • সুতরাং, এটি হল দ্রুত IDE সিঙ্কের উদাহরণ যা Lightbuild আপনার প্রোজেক্টে নিয়ে আসে।

  • তাই, Android Studio-তে আপনি যেসব সাধারণ কমান্ড ব্যবহার করেন, সেগুলিও ব্যবহার করতে পারবেন।

  • আপনি রান বোতামে ক্লিক করতে পারেন।

  • এটি আপনার অ্যাপ কম্পাইল করবে এবং এখানে রান করবে।

  • এই নির্দিষ্ট ডেমো অ্যাপটি খুব বড় নয়, তবে আমি এটি জুম করে দেখাব যে এটি হ্যালো Android বলছে।

  • আপনি টেস্ট ফাইলে গিয়ে, এইভাবে গাটার থেকে রান করে, সাধারণত যেভাবে টেস্ট রান করেন সেভাবেই টেস্ট রান করতে পারবেন।

  • এবং এটি আসলে এই পরীক্ষাগুলি চালানোর জন্য পর্দার আড়ালে এখানে Lightbuild-কে আহ্বান করছে।

  • সুতরাং, এই সমস্ত কিছু আপনার প্রত্যাশা অনুযায়ী কাজ করে।

  • কিন্তু এর পরে আমি দেখাতে চাই যে আপনি Android Studio-তে না থাকলে, অন্য কোনও এজেন্টিক ফ্লো ব্যবহার করলে, কীভাবে Lightbuild ব্যবহার করবেন।

Lightbuild কমান্ড-লাইন ইন্টারফেস ডেমো

  • আর তার জন্য, আমাদের কাছে কমান্ড-লাইন আছে।

  • তাই, Lightbuild-এর CLI-তে, আমি শুধু বেসিক হেল্প কমান্ড রান করব।

  • আর হ্যাঁ, এই প্রোজেক্টে আজ আপনি যত টাইপো দেখতে পাচ্ছেন, সেগুলি সবই আমার করা।

  • সুতরাং, Lightbuild-এ বেশ কয়েকটি ভিন্ন কমান্ড থাকবে যা এতে তৈরি করা হয়েছে যেমন ওহ, দুঃখিত, আমি এটি একটি প্রোজেক্টের বাইরে চালাচ্ছি।

  • এটি আমাকে সেটাই বলতে থাকে।

  • হ্যাঁ, লাইভ ডেমো।

  • তাই, প্রথমে, আমি কোনও Lightbuild কমান্ড রান করার আগে, আমাকে একটি Lightbuild প্রোজেক্ট তৈরি করতে দাও।

  • আর তার জন্য, আমি android create ব্যবহার করতে চলেছি, যা নতুন প্রোজেক্ট টেমপ্লেট তৈরি করার জন্য আমাদের স্ট্যান্ডার্ড কমান্ড-লাইন টুল।

  • আমি empty-activity-lightbuild টেমপ্লেট ব্যবহার করব এবং আমার অ্যাপের নাম দেব, Lightbuild Demo এবং এটি ডেমো আউটপুট ডিরেক্টরিতে রাখব।

  • ঠিক আছে, এখন আমি যদি সেই ডিরেক্টরিতে প্রবেশ করি এবং lightbuild -h টাইপ করি, তাহলে আমি Lightbuild-এ উপলভ্য সবকটি কমান্ড দেখতে পাব।

  • তাই আমাদের কাছে এমন অনেক কিছু আছে যা আপনি আশা করেন: বিল্ড, ক্লিন, টেস্ট।

  • তবে কিছু নতুন আছে।

  • একটি সমাধান কমান্ড আছে, যা আসলে আপনার প্রোজেক্টের ডিপেন্ডেন্সিগুলির মাধ্যমে চলে এবং আমি আগে যে resolved.deps ফাইলগুলি দেখিয়েছি সেগুলি তৈরি করে।

  • এছাড়াও, একটি কোয়েরি কমান্ড আছে, যা আপনাকে এবং আপনার এজেন্টদের আপনার প্রোজেক্টের গঠন আরও ভালোভাবে বুঝতে সাহায্য করে।

  • তাহলে, প্রথমে, আমি কেন সেই নতুন কোয়েরি কমান্ডটি দেখাই না?

  • তাই, আমি যদি কমান্ড লাইন ব্যবহার করে এই প্রোজেক্টের স্ট্রাকচার দেখি, তাহলে এটি Android Studio ডেমোতে আমার কাছে থাকা প্রোজেক্টের মতোই।

  • কিন্তু আমার প্রোজেক্টের লেআউট কেমন হবে সেই সম্পর্কে এটি আমাকে বেশি কিছু বলছে না।

  • তাই, আমি যদি lightbuild কোয়েরি করি এবং আমি যদি, ধরা যাক, এই অ্যাপ মডিউলটি দেখি, এবং আমি এই বিশেষ সিনট্যাক্স ব্যবহার করে বলব, "এই অ্যাপ মডিউলের অধীনে যা কিছু আছে তা আমাকে দেখান।"

  • এবং এটি আমাকে বিভিন্ন টার্গেটের এই সুন্দর টেবিলটি দেয় যা আমি অ্যাপ মডিউলের মধ্যে তৈরি করতে পারি।

  • তাই, এতে ডিবাগ ও রিলিজ বাইনারি, দুটির জন্যই APK ও AAB থাকে।

  • আর আমি যদি শুধু অ্যাপ টার্গেট রান করি, তাহলে এটি সবকিছু তৈরি করবে।

  • এছাড়াও, JSON হিসেবে আউটপুট নির্দিষ্ট করার উপায়ও আছে।

  • আর তাই ওহ, দুঃখিত।

  • আবারও বলছি, আজ আমার সব টাইপো আসল।

  • এখানে, আমি এটি সঠিকভাবে করছি কিনা তা নিশ্চিত করতে আমাকে ইন্টার‍্যাক্টিভ lightbuild সহায়তা ব্যবহার করতে দিন।

  • হুম…

  • হ্যাঁ, এটি কাজ করা উচিত।

  • ঠিক আছে।

  • যাই হোক, আমি কী ভুল করছি তা যদি কেউ বলতে পারেন, তাহলে এই টকের পরে আমার সাথে কথা বলুন।

  • তবে যাই হোক, এই টেবিলের পরিবর্তে, আপনি JSON হিসেবেও আপনার Lightbuild কমান্ড আউটপুট করতে পারেন, যা আপনার এজেন্টের জন্য সহজ।

  • --format json…

  • ওহ, ফর্ম্যাট।

  • ওহ, দুঃখিত।

  • ধন্যবাদ।

  • এটি হল লাইভ ডেভেলপার ফিডব্যাক।

  • ধন্যবাদ।

  • ঠিক আছে, হ্যাঁ, এবং সেখানে আউটপুট কমান্ডও আছে যা আমি ডেমো করতে পারি, হয়ত আপনার সাহায্যে।

  • তাই আমি যদি টার্গেটের পরিবর্তে ফাইল আউটপুট করি, তাহলে এটি আমাকে আমার বিল্ডের মধ্যে থাকা সমস্ত বিভিন্ন বাইনারির লোকেশন দেখাবে।

  • তাই, Lightbuild ব্যবহার করে কমান্ড লাইন থেকে আপনার প্রোজেক্ট আরও ভালোভাবে এক্সপ্লোর ও বোঝার জন্য এটি আপনার ও আপনার এজেন্টের জন্য একটি উপায় মাত্র।

  • তারপর, অবশ্যই, সেই lightbuild resolve কমান্ড আছে যা আমি আগে উল্লেখ করেছি, যা আপনার সমস্ত resolved.deps ফাইল তৈরি করবে।

  • এতে কিছু অতিরিক্ত ফিচারও আছে।

  • যেমন, এই লক করা ডিপেন্ডেন্সি প্যারামিটার আছে এবং তাই, শুধু এই ফাইলগুলি তৈরি করার পরিবর্তে, এটি আসলে আপনার বিল্ড কনফিগারেশনে ঘোষণা করা ডিপেন্ডেন্সির সাথে ফাইলের কন্টেন্ট তুলনা করবে।

  • এবং কোনও পার্থক্য থাকলে, এটি আপনাকে জানাবে এবং বিল্ড ব্যর্থ হবে।

  • তাই, এইভাবে, এই সমাধান করা ডিপেন্ডেন্সি ফাইলগুলি লক ফাইল হিসেবে কাজ করতে পারে, যেমন, আপনি যদি প্রোডাকশনের জন্য CI/CD সিস্টেমে আপনার অ্যাপ তৈরি করেন, তাহলে সেই বিল্ডের সময় কোনও ডিপেন্ডেন্সি পরিবর্তন হচ্ছে কিনা তা আপনি জানতে চাইবেন।

  • এছাড়াও, Lightbuild-এ একটি টেস্ট ফিচার বিল্ট-ইন আছে এবং আপনি এই লাইব্রেরি মডিউলের অধীনে সব টেস্ট চালাতে পারবেন, যেমন, কমান্ড লাইন থেকে।

  • এবং আমি আরও একটি জিনিস দেখাতে চাই।

  • শুধু তাই নয়, এতে সহায়তাও উপলভ্য আছে যা আপনাকে সমস্ত প্যারামিটার এবং সাব কমান্ডের সমস্ত বিল্ডিংয়ের একটি সম্পূর্ণ তালিকা দেবে যা আপনি ব্যবহার করতে পারবেন।

  • এটি আপনার এজেন্টের জন্য উপলভ্য, তাই এটি এজেন্টের জন্য আউটপুট।

  • ঠিক আছে।

  • তাহলে, এখন আমরা Lightbuild-এর মাধ্যমে কিছু সহজ প্রজেক্ট দেখেছি, আমি একটু বেশি উচ্চাকাঙ্ক্ষী প্রজেক্ট কেমন দেখতে হয় তা দেখাতে চাই।

Now in Android স্যাম্পেল অ্যাপ ডেমো

  • তাই আমাদের কাছে একটি স্যাম্পেল অ্যাপ আছে যা Android টিম উপলভ্য করেছে, যার নাম Now in Android, এটি আপনাকে কিছু লেটেস্ট Android ফিচার দেয়, সেগুলি কীভাবে ব্যবহার করতে হয় তা দেখায়, কিছু পেশাদার পদ্ধতি দেখায়।

  • এটি একটি অত্যন্ত মডুলার অ্যাপ্লিকেশন।

  • আমার মনে হয় এটি ৩২টি আলাদা মডিউলে বিভক্ত।

  • তাহলে, GitHub-এ এটি দেখতে এমন হয়।

  • তবে আমি Android Studio-তে ফিরে যাব, যেখানে আমি আগেই আমার এজেন্ট ব্যবহার করেছি।

  • আমি Now in Android প্রোজেক্টকে Lightbuild-এ কনভার্ট করার জন্য Gemini Argon ব্যবহার করছিলাম।

  • তাই, এটি এমন কিছু নয় যা আমরা প্রকাশ করেছি, এটি আমি নিজের থেকে করেছি।

  • এবং আপনি দেখতে পাচ্ছেন যে আমার project.lightbuild.yaml-এ এই প্রোজেক্টে এইসব আলাদা আলাদা মডিউল থাকলেও, এটি এখনও অবিশ্বাস্যভাবে দ্রুত খোলা হয়েছে এবং এই IDE-এর সাথে খুব দ্রুত সিঙ্ক হয়েছে।

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

  • ডেমো ভার্সনটি বিল্ট-ইন ডেটা সোর্স ব্যবহার করবে এবং প্রোডাকশন ভার্সনটি আসলে নেটওয়ার্কে গিয়ে ডেটা সংগ্রহ করবে।

  • আর তাই Lightbuild-এর মাধ্যমে এটি করার জন্য, বিভিন্ন বিল্ড কনফিগারেশন বা প্রোডাক্ট ফ্লেভারের মতো জিনিসগুলি যেভাবে এটি ম্যানেজ করে, তা হল আপনি নিজের অ্যাপ্লিকেশন মডিউলে যান এবং উল্লেখ করেন যে এই অ্যাপ্লিকেশন মডিউলটি, উদাহরণস্বরূপ, ডেমো অ্যাপ্লিকেশন।

  • তাই, এটি সব মূল কম্পোনেন্টের উপর নির্ভর করবে, তবে এটি অ্যাপের ডেমো ভার্সনের জন্য বিশেষ সেটিংসও নিয়ে আসবে।

  • সুতরাং, এইভাবে, আপনার একাধিক অ্যাপ্লিকেশন মডিউল থাকতে পারে।

  • যেমন, প্রতিটি আপনার অ্যাপের পেড বা ফ্রি ভার্সন দেখাতে পারে।

  • এছাড়াও, আপনি অ্যাপ্লিকেশন মডিউলের সুবিধা পান যা কোনও কোড ছাড়াই একটি খালি শেল হিসেবে কাজ করে এবং অনেক দ্রুত তৈরি হয়। আপনার লাইব্রেরি পরিবর্তন হলে, আপনার অ্যাপ আবার তৈরি করার জন্য শুধুমাত্র সেগুলি রিকম্পাইল করতে হয়।

  • এবং আসুন আমরা একবার দেখে নিই যে এই Now in Android অ্যাপটি Lightbuild-এর মাধ্যমে এর সমস্ত ৩২টি ভিন্ন মডিউল সহ সফলভাবে তৈরি করা হচ্ছে কিনা।

  • হ্যাঁ, এই তো।

  • আমি আরও বলতে চাই যে এই ধরনের পরীক্ষা থেকে আমরা আরও যা শিখেছি তা হল Lightbuild সবসময় আপনার প্রয়োজন হতে পারে এমন প্রতিটি বিল্ড ফিচারকে সাপোর্ট করে না।

  • যেমন, Now in Android অ্যাপ Hilt ব্যবহার করার জন্য Hilt প্লাগ-ইনের উপর নির্ভর করে এবং Lightbuild-এ এখনও এই ধরনের জিনিস কাজ করে না।

  • তাই, আমার এজেন্ট এর জন্য একটি বিকল্প সমাধান খুঁজে বের করতে পেরেছে এবং প্রোজেক্টের কোডে খুব বেশি পরিবর্তন না করেই সেখানে Hilt-এর সহায়তা পেতে পেরেছে।

  • যেমন, এই সব মডিউলের সব কোড আসল রেপোতে থাকা কোডের মতোই।

  • তবে, আপনি যখন নিজে Lightbuild নিয়ে এক্সপেরিমেন্ট ও ডেমো করছেন, তখন এটি অবশ্যই মনে রাখবেন যে আপনার বর্তমান প্রোজেক্টের সবকিছু বিল্ড কনফিগারেশনের ক্ষেত্রে কাজ করবে না।

  • তাই, Lightbuild এখনও প্রিভিউতে আছে, এখনও Android Studio Canary-তে আছে।

সারসংক্ষেপ ও সমাপ্তি

  • আর এর সাথে, আমি স্লাইডে ফিরে যেতে চাই।

  • আর হ্যাঁ, আমরা এখানে যা যা আলোচনা করেছি, তার সারসংক্ষেপ হিসেবে মনে রাখবেন যে Lightbuild হল Android-এর জন্য একটি নতুন বিল্ড প্ল্যাটফর্ম, যা এখন পরীক্ষামূলক পর্যায়ে রয়েছে।

  • এতে একটি ডিক্লারেটিভ বিল্ড কনফিগারেশন আছে, তাই আপনি নিজের বিল্ড কনফিগে কোনও এক্সিকিউটেবল কোড রান করছেন না এবং এটি দ্রুত IDE সিঙ্ক এবং আরও দক্ষ বিল্ড সহ অনেক দুর্দান্ত ফিচার আনলক করে।

  • এতে ফার্স্ট-ক্লাস AI এজেন্ট সাপোর্ট আছে, কমান্ড লাইনে, এতে সেই সব ফিচার আছে যা আপনি আজ আমাকে ডেমো করতে সাহায্য করেছেন।

  • তাই, আমরা আপনাকে এটি ব্যবহার করে দেখতে এবং ডেমো ও এক্সপেরিমেন্টাল প্রোজেক্টের জন্য ব্যবহার করতে আমন্ত্রণ জানাচ্ছি।

  • এছাড়াও, আপনার কোনও প্রশ্ন থাকলে, আমি, জুয়ান এবং টিমের কিছু ইঞ্জিনিয়ার Agentic AI বুথে থাকব।

  • তাই আপনাকে অনেক ধন্যবাদ।

কোড

কোড স্নিপেট

"Introduction to Lightbuild" ভিডিওর 00:51-এ Kotlin Script স্নিপেট
// build.gradle.kts
android {

  compileSdk = 37

  buildTypes {

    debug {

      // Custom logic in build script
      val commit = providers.exec {
        commandLine("git", "rev-parse",
                    "--short", "HEAD")
      }.standardOutput.asText.get()
       .trim()

      versionNameSuffix = "-$commit"

    }

  }

}
"Lightbuild-এর মূল স্তম্ভ" ভিডিওর 04:55-এ Kotlin Script স্নিপেট
// build.gradle.kts

plugins {
   alias(libs.plugins.android.library)
   alias(libs.plugins.kotlin.compose)
}

val gitCommit = providers.exec {
   commandLine("git", "rev-parse", "--short", "HEAD")
}.standardOutput.asText.get().trim()

android {
   namespace = "com.example.app"
   compileSdk = 37

   defaultConfig {
       minSdk = 24
       buildConfigField("String", "GIT_COMMIT",
                        "\"$gitCommit\"")
   }
   buildFeatures {
        compose = true
        buildConfig = true
   }
}

dependencies {
  implementation(platform(libs.androidx.compose.bom))
  implementation(libs.androidx.compose.ui)
  implementation(libs.androidx.compose.ui.graphics)
  ...
"Lightbuild-এর মূল স্তম্ভ" ভিডিওর 05:22-এ YAML স্নিপেট
# lightbuild.yaml

group: "com.example"
version: "1.0.0"

platform: android
type: library

android:
 namespace: "com.example.app"
 compileSdk:
   version:
     release:
       apiLevel: 37
 minSdk:
   version:
     release:
       apiLevel: 24
 dependencies:
   maven:
     - androidx.core:core-ktx:1.10.1
     - androidx.lifecycle:lifecycle-runtime-ktx:2.6.1
     - androidx.activity:activity-compose:1.8.0