ইটারেটিভ কোড ডেভেলপমেন্ট

মোবাইল ডেভেলপার হিসেবে, আপনি প্রায়ই আপনার অ্যাপের UI একবারে সব ডেভেলপ করার পরিবর্তে ধাপে ধাপে ডেভেলপ করেন। Android Studio এই পদ্ধতিটি Jetpack Compose-এর সাথে গ্রহণ করে, এমন টুল প্রদান করে যা ইন্সপেক্ট, ভ্যালু পরিবর্তন এবং চূড়ান্ত ফলাফল যাচাই করার জন্য সম্পূর্ণ বিল্ডের প্রয়োজন হয় না।

AI-সহায়তা UI ইটারেশন

আপনি Android Studio-তে AI এজেন্ট ব্যবহার করে ডিজাইন প্রিভিউ থেকে সরাসরি আপনার Compose UI-কে বারবার রিফাইন ও ট্রান্সফর্ম করতে পারবেন। Compose প্রিভিউতে ডানদিকের বোতামে ক্লিক করে নিম্নলিখিত AI অ্যাকশন-এর মধ্যে থেকে একটি বেছে নিন:

  • টার্গেট ইমেজের সাথে UI ম্যাচ করুন: রেফারেন্স ডিজাইন মক আপলোড করতে বেছে নিন। এজেন্ট তখন কোড পরিবর্তনের সাজেশন দেয় যাতে আপনার প্রয়োগ করা কোড ডিজাইনের সাথে যতটা সম্ভব মিলে যায়।
ছবি ১. টার্গেট ছবির সাথে ম্যাচ করার জন্য UI আপডেট করুন।
  • UI ট্রান্সফর্ম করা: আপনার UI-তে আপনি যে নির্দিষ্ট পরিবর্তন করতে চান তা বর্ণনা করতে ন্যাচারাল ল্যাঙ্গুয়েজ প্রম্পট (যেমন, "বোতামের রঙ পরিবর্তন করে নীল করো") ব্যবহার করুন।
ছবি ২. এজেন্টকে UI পরিবর্তন করতে বলুন।

লাইভ এডিট

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

লাইভ এডিটের তিনটি মোড আছে:

  • ম্যানুয়াল: Control+' (macOS-এ Command+') ব্যবহার করে ম্যানুয়ালি পুশ করা হলে কোডে পরিবর্তন প্রয়োগ করা হয়
  • সেভ করার সময় ম্যানুয়ালি: Control+S (macOS-এ Command+S) ব্যবহার করে ম্যানুয়ালি সেভ করা হলে কোডে করা পরিবর্তন প্রয়োগ করা হয়।
  • অটোমেটিক: আপনি কম্পোজেবল ফাংশন আপডেট করলে আপনার ডিভাইস বা এমুলেটরে পরিবর্তনগুলি প্রয়োগ করা হয়।

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

এই ফিচারটি আপনার অ্যাপ তৈরি ও চালানোর জন্য বা পরিবর্তন প্রয়োগ করুন বিকল্পের জন্য কোনও বিকল্প নয়। পরিবর্তে, Compose UI ডেভেলপ করার জন্য আপনি যখন বিল্ড, ডিপ্লয় ও আইটারেট করেন, তখন আপনার ওয়ার্কফ্লো অপ্টিমাইজ করার জন্য এটি ডিজাইন করা হয়েছে।

পেশাদার পদ্ধতি সংক্রান্ত ওয়ার্কফ্লো নিচে দেওয়া হল:

  1. আপনার অ্যাপ্লিকেশন সেট-আপ করুন যাতে এটি রান করা যায়।
  2. যতটা সম্ভব লাইভ এডিট ব্যবহার করুন, যতক্ষণ না আপনাকে এমন কোনও পরিবর্তন করতে হচ্ছে যা লাইভ এডিট সাপোর্ট করে না, যেমন অ্যাপ চলাকালীন নতুন মেথড যোগ করা।
  3. আপনি কাজ করে না এমন কোনও পরিবর্তন করার পরে, আপনার অ্যাপ রিস্টার্ট করতে এবং লাইভ এডিট আবার শুরু করতে রান করুন রান
আইকন বিকল্পে ক্লিক করুন।

লাইভ এডিট ব্যবহার শুরু করা

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

আপনার নতুন প্রোজেক্ট সেট-আপ করুন

  1. শুরু করার আগে, আপনার ডিভাইসে Android Studio Giraffe বা তার পরবর্তী কোনও ভার্সন ইনস্টল করা আছে কিনা এবং আপনার ফিজিক্যাল ডিভাইস বা এমুলেটরের API লেভেল অন্তত ৩০ কিনা তা নিশ্চিত করুন।

  2. Android Studio খুলুন এবং Android Studio-তে স্বাগতম ডায়ালগে নতুন প্রোজেক্ট বিকল্প বেছে নিন। আপনার আগে থেকেই কোনও প্রোজেক্ট খোলা থাকলে, ফাইল > নতুন > নতুন প্রোজেক্ট বিকল্পে গিয়ে নতুন প্রোজেক্ট তৈরি করতে পারবেন।

  3. ফোন ও ট্যাবলেটের জন্য Empty Compose Activity টেমপ্লেট বেছে নিন এবং তারপর পরবর্তী বিকল্পে ক্লিক করুন।

    Android Studio-তে টেমপ্লেট বেছে নেওয়া
    ছবি ৩. আপনি বেছে নিতে পারেন এমন টেমপ্লেট। লাইভ এডিটের জন্য, Empty Compose Activity বেছে নিন।
  4. প্রয়োজনীয় তথ্য দিয়ে নতুন প্রোজেক্ট ডায়ালগ সম্পূর্ণ করুন: নাম, প্যাকেজের নাম, সেভ করার লোকেশন, ন্যূনতম SDK এবং বিল্ড কনফিগারেশন ভাষা।

    Android Studio-তে ধাপ ৪ থেকে প্রোজেক্ট সেটিংসের উদাহরণ লেখা হয়েছে
    ছবি ৪. উদাহরণ প্রোজেক্ট সেটিংস।
  5. সম্পূর্ণ করুন বিকল্পে ক্লিক করুন।

লাইভ এডিট চালু করুন

  1. লাইভ এডিট চালু করতে সেটিংসে যান।

    • Windows বা Linux-এ, ফাইল > সেটিংস > এডিটর > লাইভ এডিট বিকল্পে যান।
    • macOS-এ, Android Studio > সেটিংস > এডিটর > লাইভ এডিট বিকল্পে নেভিগেট করুন।
  2. সেটিংস থেকে লাইভ এডিট বিকল্প এবং আপনি যে মোড চালাতে চান সেটি বেছে নিন।

    ম্যানুয়াল মোডে, আপনি যখনই Control+' (macOS-এ Command+') প্রেস করেন, তখনই আপনার কোডে করা পরিবর্তন পুশ করা হয়। সেভ করার ম্যানুয়াল মোডে, আপনি যখনই Control+S (macOS-এ Command+S) ব্যবহার করে ম্যানুয়ালি সেভ করেন, তখনই আপনার কোডে করা পরিবর্তন প্রয়োগ করা হয়। অটোমেটিক মোডে, আপনার কোডে করা পরিবর্তন আপনার ডিভাইস বা এমুলেটরে প্রয়োগ করা হয়।

    Android Studio সেটিংসে লাইভ এডিট চেকবক্স UI
    ছবি ৫. লাইভ এডিট সেটিংস।
  3. এডিটরে, MainActivity ফাইলটি খুলুন, যা আপনার অ্যাপের জন্য এন্ট্রি পয়েন্ট।

  4. আপনার অ্যাপ ডিপ্লয় করতে রান করুন UI বোতাম বিকল্পে ক্লিক করুন।

  5. আপনি লাইভ এডিট চালু করার পরে, আপ-টু-ডেট সবুজ টিক চিহ্ন রানিং ডিভাইস টুল উইন্ডোর উপরে ডানদিকে দেখা যায়:

    লাইভ এডিট সবুজ টিক চিহ্ন UI

পরিবর্তন করা ও পর্যালোচনা করা

এডিটরে কাজ করে এমন পরিবর্তন করলে, ভার্চুয়াল বা ফিজিক্যাল টেস্ট ডিভাইস অটোমেটিক আপডেট হয়ে যায়।

যেমন, MainActivity-এ আগে থেকে থাকা Greeting পদ্ধতি এডিট করে নিম্নলিখিত পদ্ধতিতে পরিবর্তন করুন:

@Composable
fun Greeting(name: String) {
    Text(
        text = "Hello $name!",
        Modifier
            .padding(80.dp) // Outer padding; outside background
            .background(color = Color.Cyan) // Solid element background color
            .padding(16.dp) // Inner padding; inside background, around text)
    )
}

আপনার করা পরিবর্তনগুলি টেস্ট ডিভাইসে সাথে সাথে দেখা যায়, যেমনটি চিত্র ৬-এ দেখানো হয়েছে।

ডিভাইসে অভিবাদন জানানোর পদ্ধতিতে পরিবর্তন করা হয়েছে
ছবি ৬. টেস্ট ডিভাইসে Greeting পদ্ধতিতে লাইভ এডিট পরিবর্তন দেখানো হচ্ছে।

লাইভ এডিট সংক্রান্ত সমস্যার সমাধান করা

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

লাইভ এডিট আউট অফ ডেট আইকন
ছবি ৭. লাইভ এডিট স্ট্যাটাস ইন্ডিকেটর।

লাইভ এডিটের সীমাবদ্ধতা

বর্তমানে যেসব সীমাবদ্ধতা রয়েছে তার তালিকা নিচে দেওয়া হল।

  • [শুধুমাত্র Android Studio Giraffe এবং তার পরবর্তী ভার্সনের ক্ষেত্রে প্রযোজ্য] লাইভ এডিট করার জন্য Compose Runtime 1.3.0 বা তার পরবর্তী ভার্সন প্রয়োজন। আপনার প্রোজেক্টে Compose-এর পুরনো ভার্সন ব্যবহার করা হলে, লাইভ এডিট বন্ধ করা থাকে।

  • [শুধুমাত্র Android Studio Giraffe এবং তার পরবর্তী ভার্সনের ক্ষেত্রে প্রযোজ্য] লাইভ এডিট করার জন্য AGP 8.1.0-alpha05 বা তার পরবর্তী ভার্সন প্রয়োজন। আপনার প্রোজেক্টে AGP-এর পুরনো ভার্সন ব্যবহার করা হলে, লাইভ এডিট বন্ধ হয়ে যায়।

  • লাইভ এডিট করার জন্য এমন ফিজিক্যাল ডিভাইস বা এমুলেটর প্রয়োজন যাতে API লেভেল 30 বা তার পরবর্তী যেকোনও ভার্সন রান করছে।

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

  • আপনি কোনও ফাইলে প্রথমবার কম্পোজ ফাংশন পরিবর্তন করলে, লাইভ এডিট অ্যাপের অবস্থা রিসেট করে। এটি শুধুমাত্র প্রথমবার কোড পরিবর্তন করার পরেই ঘটে—পরবর্তীকালে আপনি সেই ফাইলের কম্পোজ ফাংশনে কোড পরিবর্তন করলে অ্যাপের স্টেট রিসেট হয় না।

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

  • আপনি Live Edit-এর মাধ্যমে যেসব ক্লাস পরিবর্তন করেছেন, সেগুলিতে ডিবাগার অপারেট করার জন্য আপনাকে অবশ্যই সম্পূর্ণ রান করতে হবে।

  • কোনও অ্যাপ চলাকালীন আপনি লাইভ এডিট ব্যবহার করে সেটি এডিট করলে, অ্যাপটি ক্র্যাশ করতে পারে। এমন হলে, আপনি রান করুন UI
বোতাম বোতামের সাহায্যে অ্যাপটি আবার ডিপ্লয় করতে পারবেন।

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

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

  • অ্যাপ রিস্টার্ট করলে লাইভ এডিট আবার চালু হয় না। আপনাকে আবার অ্যাপটি চালাতে হবে।

  • Live Edit শুধুমাত্র ডিবাগ করা যায় এমন প্রসেস সাপোর্ট করে।

  • বিল্ড কনফিগারেশনে kotlinOptions-এর অধীনে moduleName-এর জন্য কাস্টম ভ্যালু ব্যবহার করে এমন প্রোজেক্টে লাইভ এডিট কাজ করে না।

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

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

  • পরিবর্তন প্রয়োগ করা/কোড পরিবর্তন প্রয়োগ করা Live Edit-এর সাথে মানানসই নয় এবং চালু থাকা অ্যাপ রিস্টার্ট করতে হবে।

  • লাইভ এডিট বর্তমানে Android Automotive প্রোজেক্টে কাজ করে না।

লাইভ এডিট সম্পর্কে প্রায়শই জিজ্ঞাসিত প্রশ্ন

  • লাইভ এডিটের বর্তমান স্ট্যাটাস কী?

    Android Studio Giraffe-এ লাইভ এডিট উপলভ্য। এটি চালু করতে, ফাইল > সেটিংস > এডিটর > লাইভ এডিট (macOS-এ Android Studio > সেটিংস > এডিটর > লাইভ এডিট) বিকল্পে নেভিগেট করুন।

  • আমার কখন লাইভ এডিট ব্যবহার করা উচিত?

    UX এলিমেন্টে (যেমন মডিফায়ার আপডেট ও অ্যানিমেশন) আপডেটের প্রভাব সামগ্রিক অ্যাপ অভিজ্ঞতায় দ্রুত দেখতে চাইলে, লাইভ এডিট ব্যবহার করুন।

  • কখন আমার লাইভ এডিট ব্যবহার করা এড়িয়ে চলা উচিত?

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

  • আমার কখন কম্পোজ প্রিভিউ ব্যবহার করা উচিত?

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

Compose-এর মাধ্যমে আইটেরেটিভ কোড ডেভেলপমেন্ট

Compose Multiplatform-এর জন্য লাইভ এডিট ও হট রিলোড হল এমন ফিচার যা Compose-এর মাধ্যমে ডেভেলপ করার সময় আপনার সময় বাঁচাতে এবং প্রোডাক্টিভিটি বাড়াতে পারে। তবে, এগুলি বিভিন্ন ধরনের ডেভেলপমেন্টের প্রয়োজন পূরণ করে:

  • লাইভ এডিট Android অ্যাপ্লিকেশনের জন্য Jetpack Compose-এর সাথে ইটারেটিভ ডেভেলপমেন্টকে সাপোর্ট করে। এটি আপনাকে এমুলেটর এবং ফিজিক্যাল ডিভাইসে রিয়েল টাইমে কম্পোজেবল আপডেট করতে দেয়। এই ফাংশনালিটি আপনার অ্যাপ লেখা ও তৈরি করার মধ্যে কনটেক্সট সুইচিংয়ের প্রয়োজনীয়তা কম করে, যার ফলে আপনি কোনও বাধা ছাড়াই দীর্ঘ সময় ধরে কোড লেখার কাজে মনোযোগ দিতে পারেন।

  • Compose Hot Reload একই প্রয়োজন পূরণ করে, তবে Compose Multiplatform-এর মাধ্যমে তৈরি ডেস্কটপ অ্যাপ্লিকেশন-এর ক্ষেত্রে কাজ করে। এটি আপনাকে Compose Multiplatform অ্যাপ্লিকেশনে আপনার UI কোডে পরিবর্তন করতে এবং আপনার কোড পরিবর্তন করা হলে তা বুদ্ধিমত্তার সাথে রিলোড করে রিয়েল টাইমে ফলাফল দেখতে সাহায্য করে।

এই দুটি ফিচার Compose ইঞ্জিনের মধ্যে অনেক প্রযুক্তি শেয়ার করে এবং অনেক একই ধরনের ব্যবহারের ক্ষেত্রে সহায়তা করে, তবে তাদের একই ক্ষমতা নেই কারণ তারা বিভিন্ন ধরনের Compose ডেভেলপমেন্টে প্রযোজ্য।

আপনি Android অ্যাপ ডেভেলপ করলে, ডেভেলপমেন্ট প্রসেস দ্রুত করতে আপনার লাইভ এডিট ব্যবহার করা উচিত। আপনি যদি Compose Multiplatform ব্যবহার করে ডেস্কটপ অ্যাপ্লিকেশন ডেভেলপ করেন, তাহলে আপনার Compose Hot Reload ব্যবহার করা উচিত।

লিটারেলের লাইভ এডিট (বন্ধ করা হয়েছে)

Android Studio প্রিভিউ, এমুলেটর ও ফিজিক্যাল ডিভাইসের মধ্যে কম্পোজেবলে ব্যবহৃত কিছু কনস্ট্যান্ট লিটারেল রিয়েল-টাইমে আপডেট করতে পারে। এখানে কিছু কাজ করে এমন ধরনের ফাইল দেওয়া হল:

  • Int
  • String
  • Color
  • Dp
  • Boolean

ব্যবহারকারী সোর্স কোডে লিটারেল পরিবর্তন করছেন এবং প্রিভিউ
ডায়নামিক্যালি
আপডেট হচ্ছে, এমন ভিডিও

আপনি লিটারেল UI ইন্ডিকেটরের লাইভ এডিটের মাধ্যমে লিটারেল ডেকোরেশন চালু করে কম্পাইলেশন স্টেপ ছাড়াই রিয়েল টাইম আপডেট ট্রিগার করে এমন কনস্ট্যান্ট লিটারেল দেখতে পারেন:

Enabling Live Editing of
Literals

পরিবর্তন প্রয়োগ করা

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

আপনি যখনই কম্পোজেবল যোগ, পরিবর্তন বা মুছে ফেলবেন, তখন কোড পরিবর্তন প্রয়োগ করুন বোতামে ক্লিক করে আপনার অ্যাপটি আবার ডিপ্লয় না করেই আপডেট করতে পারবেন:

ব্যবহারকারী "পরিবর্তন প্রয়োগ করুন"
বোতামে ক্লিক করছেন