Android app Development Bangla Tutorial: 
(ভিত্তি এবং কিছু কথা)

(Android app development Bangla tutorial) Android নিয়ে এই সিরিজটি একটি অনুবাদ লিখা। আমি আমার মতো করে অনুবাদ করার চেষ্টা করেছি। আমি নিজে অ্যানড্রয়েড শিখছি, তাই আমি যা শিখতে পারি, তাই এখানে নোট আকারে লিখে রাখবো। আর আপনারা যারা অ্যানড্রয়েড নিয়ে শিখতে আগ্রহী, তাদের জন্য এই বাংলা কন্টেন্টটি উপকারে আসবে আশা করি।

Android app Developmet: শুরুর আগে আপনাকে যা যা জানতে হবে

আপনি এই সিরিজটি শুরু করতে পারবেন যদি আপনার ইতোমধ্যেই জাভা প্রোগ্রামিং ল্যাঙ্গুয়েজ নিয়ে প্রাথমিক জ্ঞান থাকে এবং এখন অ্যানড্রয়েড অ্যাপ বানাতে আগ্রহী। সাথে একটু XML নিয়ে ধারনা থাকলে ভালো হয়।

Android app development Bangla tutorial: অ্যানড্রয়েড নিয়ে কিছু কথা

অ্যানড্রয়েড হলো গুগলের ডেভেলপ করা একটি অপারেটিং সিস্টেম এবং প্রোগ্রামিং প্লাটফর্ম যা বিভিন্ন স্মার্টফোন এবং মোবাইল ডিভাইস (ট্যাবলেট) গুলোর জন্য তৈরি। এটা বিভিন্ন প্রস্তুতকারকের (manufacturer) তৈরি করা ডিভাইস সমূহে রান করতে সক্ষম। অ্যানড্রয়েড একটি সফটওয়ার ডেভলপমেন্ট কিট (Software development kit) বা SDK যুক্ত থাকে যাতে আমরা কোড লিখা এবং সফটওয়ার মডিউল গুলো একত্রিত করে অ্যাপ বানাতে পারি। আমাদের বানানো অ্যাপ গুলো সবার ডাওনলোড করার জন্য একটি মার্কেটপ্লেস (Play store) ও আছে অ্যানড্রয়েডের। সুতরাংআমরা বলতেই পারি অ্যানড্রয়েড হলো মোবাইল অ্যাপ গুলোর জন্য একটি ইকসিস্টেম (Mobile app ecosystem) ।

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

বেশির ভাগ আন্ড্রয়েড ডিভাসগুলোই টাচস্ক্রিন ইউজার ইন্টারফেস (UI) ব্যবহার করে অ্যাপ গুলোর সাথে ইউজারের interact করার বাবস্থা করে। টাচস্ক্রিন এর মধ্যে আমরা swiping, tapping, pinching ইত্যাদি ভাবে বিভিন্ন টাচ একশন (Touch action) করতে পারি। Android এ একটি ভারচুয়াল কিবোর্ড (Virtual keyboard) আছে যাতে আমরা টেক্সট ইনপুট দিতে পারি। অ্যানড্রয়েড আমরা গেম কন্ট্রোলার ডিভাইস, যান্ত্রিক কিবোর্ড (Mechanical keyboard/ Physical keyboard) ব্যবহার ব্যবহার করতে পারি (Bluetooth/USB) এর মাধ্যমে।

আন্ড্রয়েড হোম স্ক্রিনে (Android home screen) অ্যাপ আইকন সহ বিভিন্ন পেজ থাকতে পারে যার মাধ্যমে আমরা অ্যাপ চালু করতে পারি। হোম স্কিনে উইজেট Widgets) গুলোও থাকে যাতে আমরা বিভিন্ন অটো আপডেটিং কন্টেন্ট যেমন ইমেইল, আবহাওয়া ইত্যাদি দেখাতে পারি। আন্ড্রয়েড এ আমরা বিভিন্ন মাল্টিমিডিয়া কন্টেন্ট যেমন মিউজিক, এনিমেশন, ভিডিও ইত্যাদি প্লে করতে পারি। উপরের ছবিটির প্রথমটি আন্ড্রয়েড হোম স্ক্রিন, মাঝেরটিতে মিউজিক প্লে হচ্ছে এবং ডানেরটিতে আমরা Widget দেখতে পাচ্ছি। স্ক্রিনের সবার উপরে একটি স্টেটাস বার আছে যেখানে আমরা ডিভাইস রিলেটেড বিভিন্ন ইনফরমেশন যেমন কানেক্সটিভিটি, টাইম, ব্যাটারি ইত্যাদির তথ্য দেখতে পাই। আন্ড্রয়েড হোম স্ক্রিনকে আমরা আগে পেছনে করতে পারি swipe করার মাধ্যমে।

বিভিন্ন টাচ অ্যাকশন

আন্ড্রয়েডকে এমনভাবে ডিজাইন করা হয়েছে যা ইউজারের ইনপুটের সাথে সাথে রেসপন্স বা সাড়া দিতে পারে। টাচ ইন্টারফেসের সাথে সাথে আন্ড্রয়েড এ ভাইব্রেশন করার ক্ষমতা দেয়া আছে যা হেপটিক ফিডব্যাক (Haptic feedback) করতে সক্ষম।

অভ্যন্তরীণ যন্ত্রাংশ যেমন gyroscopes এবং proximity sensors গুলোও বিভিন্ন ইউজার একশনের জন্য সাড়া দিতে ব্যবহার করা হয়। এগুলো স্ক্রিনের ঘুর্নন বা (Rotation) ডিটেক্ট করতে পারে। আমরা রেসিং গেম গুলোতে এই ঘুর্ননকে গাড়ির স্টিয়ারিং হুইল এর মতো ব্যবহার করতে পারি।

Gyroscope এর মাধ্যমে আমরা মোবাইল ডিভাইস সমূহের কৌণিক বেগ মাপতে পারি। আরও সহজ করে বলতে গেলে আমরা এর মাধ্যমে বের করতে পারি কত দ্রুত আমাদের অ্যানড্রয়েড ডিভাইস X,Y,Z অক্ষে ঘুরছে।

Proximity sensors এর মাধ্যমে আমরা বের করতে পারি কোন বস্তু থেকে আমাদের অ্যানড্রয়েড দূরত্ব কত হতে পারে। এর মাধ্যমে ডিভাইস গুলো বের করতে পারে স্ক্রিন থেকে ইউজারের ফেস কত দুরে।

Android Development Bangla Tutorial

অ্যানড্রয়েড প্লাটফর্ম লিনাক্স কার্নেল (Linux kernel) এর উপর ভিত্তি করে বানানো। প্রাথমিক ভাবে অ্যানড্রয়েডকে টাচস্ক্রিন (Touch screen) ডিভাইস এর জন্য ডিজাইন করা হয়েছে। যেহেতু অ্যানড্রয়েড ডিভাইস গুলো ব্যাটারি পাওয়ারের উপর নির্ভর করে তাই একে এমন করে ডিজাইন করা হয়েছে যাতে ব্যাটারি পাওয়ার ব্যবহার করার পরিমাণ মিনিমাম থাকে।

Android app development Bangla tutorial

অ্যানড্রয়েড সফটওয়্যার ডেভেলপমেট (Android software development kit) কিট বা SDK যার মাধ্যমে আমরা আমরা অ্যাপ ডেভেলপমেন্ট করবো। SDK তে থাকে একটি ডিবাগার, সফটওয়্যার লাইব্রেরিগুলো, একটি ডিভাইস এমুলেটর (AVD), ডকুমেন্টেশন, নমুনা কোড, টিউটোরিয়াল ইত্যাদি। আমরা এই টুল গুলো ব্যবহার করে এমন একটি অ্যাপ তৈরি করবো যা দেখতে হবে চমৎকার এবং ডিভাইস সমূহের হার্ডওয়্যার সক্ষমতা ব্যবহার করবে।

SDK ব্যবহার করে অ্যাপ ডেভেলপমেন্টের জন্য আমরা জাভা প্রোগ্রামিং ল্যাঙ্গুয়েজ ব্যবহার করবো। এবং Extensible Markup Language বা XML ব্যবহার করবো ডাটা রিসোর্স বর্ননা (Data resource definition) করার জন্য। আমরা জাভাতে কোড করার পড় একটি অ্যাপ তৈরি করবো যা ফোনে এবং ট্যাবলেট ডিভাইস উভয়টাতেই চলবে। আমাদের UI কোন ধরনের ডিভাইসে কেমন হবে তা XML রিসোর্সের মাধ্যমে বলে দিতে পারি। এর জন্য আমরা ট্যাবলেট এবং ফোনের জন্য আলাদা ভাবে XML তৈরি করবো। অ্যানড্রয়েড সিস্টেম রানটাইমে সঠিক ডিজাইন প্রয়োগ করবে।

দ্রুত অ্যানড্রয়েড অ্যাপ ডেভেলপমেন্ট করার জন্য গুগলের একটি Java Integrated Development Environment বা IDE আছে। যার নাম অ্যানড্রয়েড স্টুডিও। যার মাধ্যমে আমরা Development, Debugging, Packaging ইত্যাদি সুবিধা পাবো। আমরা অ্যানড্রয়েড স্টুডিও (Android studio) ব্যবহার করে যেকোনো ধরনের অ্যাপ বানাতে পারবো। AVD ব্যবহার করে করে আমরা কম্পিউটারেই ভারচুয়াল ডিভাইস সিমুলেট করতে পারবো। আমরা ইচ্ছে করলে বাস্তব ডিভাইসেও আমাদের তৈরি করা অ্যাপ পরীক্ষা করে দেখতে পারবো।

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

উপরের চিত্রে আমরা দেখতে পাচ্ছি,

  1. অ্যাপ: কোর সিস্টেম অ্যাপ গুলোর পাশাপাশি আমাদের বানানো অ্যাপ গুলো এই লেভেলে থাকবে।
  2. অ্যানড্রয়েড API ফ্রেমওয়ার্ক: অ্যানড্রয়েড সকল ফিচার গুলো Application Programming Interface বা API এর মাধেমে আনরা ব্যবহার করতে পারি। অ্যাপ বানানোর জন্য এই API এর বিস্তারিত আমাদের জানার দরকার নেই। তবুও আরও জানার জন্য নিচের API গুলো পরতে পারেন।
    • View System এই API দিয়ে আমরা অ্যাপ এর UI বা User interface যেমন লিস্ট, বাটন এবং মেনু তৈরি করি।
    • Resource Manager কে দিয়ে আমরা বিভিন্ন রিসোর্স অ্যাক্সেস করতে পারি যেমন স্ট্রিং, গ্রাফিক্স, লেআউট ইত্যাদি।
    • Notification Manager দিয়ে আমরা স্ট্যাটাস বারে কাস্টম নোটিফিকেশন দেখাতে পারি।
    • Activity Manager একটি অ্যাপ এর লাইফসাইকেল মেনেজ করে।
    • Content Providers অন্য কোনও অ্যাপ থেকে ডেটা নিতে ব্যবহার করা হয়।
    • এখানে সকল framework APIs আছে যা সিস্টেম অ্যাপ ব্যবহার করে।
    • 3. লাইব্রেরি এবং অ্যানড্রয়েড রানটাইম: প্রতিটি অ্যাপ অ্যানড্রয়েড রানটাইমে তাদের নিজস্ব প্রসেস এবং ইন্সটেন্সে (Instance) এ রান করে। যার জন্য কম র‍্যামের ডিভাইস গুলোতে একধিক ভার্চুয়াল মেশিন রান করানো যায়। অ্যানড্রয়েডে একটি কোর রানটাইম লাইব্রেরি রয়েছে যার মাধ্যমে আমরা জাভা ৮ এর কিছু ফিচার সহ জাভা প্রোগ্রামিং ল্যাঙ্গুয়েজের প্রায় সমস্ত ফাংশনালিটির অ্যাক্সেস পেতে পারি। অনেক কোর কম্পোনেন্ট এবং সার্ভিস নেটিভ কোড ব্যবহার করে যার জন্য C এবং C++ লিখা লাইব্রেরি দরকার পরে। এই নেটিভ লাইব্রেরি গুলোও জাভা API ফ্রেমওয়ার্ক এর মাধ্যমে ব্যবহার করা যাবে।
    • 4. Hardware Abstraction Layer ব (HAL): ডিভাইস এর হার্ডওয়ারকে জাভা Higher লেভেল API ফ্রেমওয়ার্ক দিয়ে অ্যাক্সেস করার জন্য এর লেয়ার আমাদেরকে ইন্টারফেস প্রদান করে। HAL এ একাধিক লাইব্রেরি মডিউল থাকে যাদের প্রতিটি আলদা আলদা হার্ডওয়্যারের জন্য কোড ইমপ্লিমেন্ট করেছে।
    • 5. লিনাক্স কার্নেল: অ্যানড্রয়েডের ভিত্তি হলো লিনাক্স কার্নেল। উপরের সমস্ত লেয়ার থ্রেডিং (Threading) , লো লেভেল মেমোরি ম্যানেজমেন্টের (Low level memory management) জন্য লিনাক্স কার্নেলের উপর নির্ভর করে। লিনাক্স কার্নেল এর জন্য আমরা অ্যানড্রয়েডে গুরুত্বপূর্ণ সিকিউরিটি ফিচার গুলোর সুবিধা নিতে পারি, এবং ডিভাইস প্রস্তুতকারিরা সহজে ডিভাইস ড্রাইভার (Device driver) তৈরি করতে পারেন।
    • অ্যানড্রয়েড ভার্সন

      গুগল প্রতি ৬ থেকে ৯ মাসে অ্যানড্রয়েড এর নতুন বড় আপডেট প্রদান করে। নাম গুলো মজার। নামসমুহ বিভিন্ন ব্যাকেরি পণ্যের নামের উপর ভিত্তি করে করা।

      NameVersion number(s)Initial stable
      release date
      API level
      No official codename1.0September 23, 20081
      1.1February 9, 2009No
      Cupcake1.5April 27, 20093
      Donut1.6September 15, 20094
      Eclair2.0 – 2.1October 26, 20095 – 7
      Froyo2.2 – 2.2.3May 20, 20108
      Gingerbread2.3 – 2.3.7December 6, 20109 – 10
      Honeycomb3.0 – 3.2.6February 22, 201111 – 13
      Ice Cream Sandwich4.0 – 4.0.4October 18, 201114 – 15
      Jelly Bean4.1 – 4.3.1July 9, 201216 – 18
      KitKat4.4 – 4.4.4October 31, 201319 – 20
      Lollipop5.0 – 5.1.1November 12, 201421 – 22
      Marshmallow6.0 – 6.0.1October 5, 201523
      Nougat7.0 – 7.1.2August 22, 201624 – 25
      Oreo8.0August 21, 201726
      8.1December 5, 2017Yes
      Pie9August 6, 201828
      Android 1010September 3, 201929
      Android 1111September 8, 202030
      Android 1212TBA31

      Android app development: অ্যানড্রয়েড অ্যাপ ডেভেলপমেন্ট করার চ্যালেঞ্জ

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

      • বিভিন্ন ধরনের স্ক্রিন সাইজের সাথে মানিয়ে নেয়া
      • পারফরমেন্স বজায় রাখা
      • ইউজার এবং কোডকে সিকিউর রাখা
      • আগের ভার্শনগুলোতেও যাতে চলে তা লক্ষ রাখা
      • মার্কেটের ইউজার বিহেভিয়ার বুঝা

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