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

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

AI-এর সাহায্যে UI ইটারেশন

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

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

লাইভ এডিট

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

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

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

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

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

পেশাদার পদ্ধতি অনুযায়ী ওয়ার্কফ্লো হল:

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

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

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

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

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

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

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

    Android Studio-তে টেমপ্লেট বেছে নেওয়া
    ছবি ৩. আপনি বেছে নিতে পারেন এমন টেমপ্লেট। লাইভ এডিটের জন্য, খালি কম্পোজ অ্যাক্টিভিটি বেছে নিন।
  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 লেভেল ৩০ বা তার পরবর্তী যেকোনও ভার্সন রান করে এমন কোনও ফিজিক্যাল ডিভাইস বা এমুলেটর প্রয়োজন।

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

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

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

  • লাইভ এডিট ব্যবহার করে আপনি যেসব ক্লাস পরিবর্তন করেছেন সেগুলিতে ডিবাগারকে অপারেট করতে হলে আপনাকে অবশ্যই একটি সম্পূর্ণ রান পারফর্ম করতে হবে।

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

  • আপনার প্রজেক্টের বিল্ড ফাইলে সংজ্ঞায়িত করা কোনও বাইটকোড ম্যানিপুলেশন Live Edit করে না—যেমন, বিল্ড মেনুতে থাকা বিকল্প ব্যবহার করে বা বিল্ড বা রান বোতামে ক্লিক করে প্রজেক্ট বিল্ড করার সময় প্রয়োগ করা বাইটকোড ম্যানিপুলেশন।

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

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

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

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

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

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

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

  • Live Edit বর্তমানে Android Automotive প্রোজেক্টে কাজ করে না।

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

লিটারেলের লাইভ এডিট (সঞ্চালনের অনুপযুক্ত)

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

  • Int
  • String
  • Color
  • Dp
  • Boolean

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

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


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

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

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

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

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