একটি রানটাইম-সক্ষম SDK তৈরি করুন এবং ব্যবহার করুন

1
মূল ধারণা
2
আপনার উন্নয়ন পরিবেশ সেট আপ করুন
3
একটি RE SDK তৈরি করুন
4
RE SDK ব্যবহার করুন
5
পরীক্ষা, এবং বিতরণের জন্য বিল্ডিং
,
1
মূল ধারণা
2
আপনার উন্নয়ন পরিবেশ সেট আপ করুন
3
একটি RE SDK তৈরি করুন
4
RE SDK ব্যবহার করুন
5
পরীক্ষা, এবং বিতরণের জন্য বিল্ডিং

মূল ধারণা

এই বিভাগটি SDK রানটাইম আর্কিটেকচার, রানটাইম-সক্ষম SDK গুলি কীভাবে ইনস্টল করা হয়, ব্যাকওয়ার্ড সামঞ্জস্যতা এবং বিদ্যমান SDK গুলিকে SDK রানটাইমে কীভাবে স্থানান্তর করা যায় তা ব্যাখ্যা করে।

শব্দকোষ

  • রানটাইম-সক্রিয় SDK (RE SDK) : SDK রানটাইম পরিবেশে চালানোর জন্য এবং ইন্টার-প্রসেস কমিউনিকেশন (IPC) এর মাধ্যমে অ্যাপের সাথে যোগাযোগ করার জন্য তৈরি একটি SDK।
  • রানটাইম-সচেতন SDK (RA SDK) : একটি নন-রানটাইম-সক্ষম SDK, যা স্ট্যাটিক্যালি অ্যাপের সাথে লিঙ্ক করা থাকে, যাতে আপনার বিদ্যমান SDK কোডের পাশাপাশি আপনার রানটাইম-সক্ষম SDK-তে কল করার জন্য নতুন কোড থাকতে পারে।
    • এটিকে কখনও কখনও স্ট্যাটিক্যালি-লিঙ্কড বা স্ট্যাটিক SDK হিসাবেও উল্লেখ করা হয়।
  • শিম : একটি জেটপ্যাক লাইব্রেরি যা বিভিন্ন প্রক্রিয়া বা আন্তঃ-প্রক্রিয়া যোগাযোগ (IPC) জুড়ে বিমূর্ত যোগাযোগে সহায়তা করে এবং একই অ্যাপ-SDK ইন্টারফেস বজায় রাখে।

SDK রানটাইম আর্কিটেকচার

SDK রানটাইম একটি ক্লায়েন্ট-সার্ভার ধরণের মডেল গ্রহণ করে।

প্রধান পার্থক্য হল "ক্লায়েন্ট" (অ্যাপ) এবং "সার্ভার" (রানটাইম-সক্ষম SDK) একই ডিভাইসে চলে এবং এই যোগাযোগ বিভিন্ন প্রক্রিয়ায় ঘটে।

এই চ্যালেঞ্জগুলি মোকাবেলায় সাহায্য করার জন্য, আমরা SDK রানটাইমের মধ্যে অ্যাপ-SDK ইন্টিগ্রেশন সহজ করার জন্য নিম্নলিখিত Jetpack লাইব্রেরি এবং সরঞ্জামগুলি তৈরি করেছি:

  • শিম লাইব্রেরি: র‍্যাপার লাইব্রেরি (অথবা শিম ) প্রক্রিয়া বা আন্তঃ-প্রক্রিয়া যোগাযোগ (IPC) জুড়ে বিমূর্ত যোগাযোগে সহায়তা করে। এটি একই অ্যাপ-SDK ইন্টারফেস বজায় রাখতেও সহায়তা করে।
  • ব্যাককম্প্যাট লাইব্রেরি: এই লাইব্রেরিটি ব্যাকওয়ার্ড কম্প্যাটিবিলিটি পরিচালনা করে, SDK রানটাইম উপলব্ধ থাকুক বা না থাকুক, আপনার SDK সামঞ্জস্যপূর্ণ কিনা তা নিশ্চিত করে।
  • UI লাইব্রেরি: আমরা দূরবর্তী উপস্থাপনা পরিচালনা করার জন্য লাইব্রেরিও প্রদান করি, যেমন রানটাইম-সক্ষম SDK থেকে UI আনা বা ভিউয়ের আকার পরিবর্তন এবং রিলেআউট করা।
SDK রানটাইম স্থাপত্য ওভারভিউ
বিভিন্ন লাইব্রেরির মাধ্যমে রানটাইম-সক্ষম SDK-এর সাথে ইন্টারঅ্যাক্ট করছে এমন একটি অ্যাপ দেখানো চিত্র।

ইনস্টলেশন প্রবাহে পরিবর্তন

যখন আপনি অ্যান্ড্রয়েড স্টুডিও বা অন্যান্য সরঞ্জামগুলিতে আপনার রানটাইম-সক্ষম SDK তৈরি করেন, তখন আপনি একটি অ্যান্ড্রয়েড SDK বান্ডেল (ASB) তৈরি করেন, যা রানটাইম-সক্ষম SDK-গুলির জন্য একটি প্রকাশনা ফর্ম্যাট।

bundletool আপনার রানটাইম-সক্ষম SDK-এর জন্য একটি APK তৈরি করতে ASB প্রক্রিয়া করে: এই পৃথক APK-তে আপনার SDK কোড আছে কিন্তু কোনও অ্যাপ কোড নেই।

অ্যাপের ম্যানিফেস্ট ফাইলটি আপনার রানটাইম-সক্ষম SDK নাম এবং সংস্করণের উপর নির্ভরতা ঘোষণা করে এবং এই নির্ভরতা ইনস্টলার অ্যাপ দ্বারা সমাধান করা হয়।

ইনস্টলার একবার SDK APK সংগ্রহ করলে, SDK APK ইনস্টলেশনের মাধ্যমে ইনস্টলেশন শুরু হয়। সফল হওয়ার পর, অ্যাপটির APK ইনস্টল করা হয়।

যদি অ্যাপটি Android 13 এবং তার আগের ভার্সনে ইনস্টল করা থাকে এবং SDK রানটাইম সমর্থন করে না এমন ডিভাইসে ইনস্টল করা থাকে, তাহলে প্রবাহ ভিন্ন হবে। এই পরিস্থিতিতে, স্টোরটি আপনার রানটাইম-সক্ষম SDK এবং অ্যাপ কোড উভয়ই ধারণ করে এমন একটি APK ইনস্টল করবে। আরও জানতে বিতরণ বিভাগটি পড়ুন।

যখনই কোনও অ্যাপ উৎপাদনের সময় এই SDK-এর উপর নির্ভর করে, অ্যাপ স্টোর এই ASB থেকে সঠিক SDK APK তৈরি করে এবং এটি ইনস্টল করে।

পিছনের দিকে সামঞ্জস্য

যেহেতু অ্যান্ড্রয়েড ১৪-তে SDK রানটাইম চালু করা হয়েছে, তাই SDK বা অ্যাপ ডেভেলপারদের জন্য ওভারহেড প্রবর্তন না করে আমাদের পূর্ববর্তী সংস্করণগুলিকে সমর্থন করার প্রয়োজন ছিল।

অ্যান্ড্রয়েড ১৩ এবং তার আগের ভার্সনগুলিতে ব্যাকওয়ার্ড কম্প্যাটিবিলিটি পরিচালনা করার জন্য, আমরা একটি জেটপ্যাক লাইব্রেরি চালু করেছি যা SDK রানটাইমের জন্য ডিভাইস সাপোর্ট নির্বিশেষে আপনার রানটাইম-সক্ষম SDK নির্বিঘ্নে চালাতে পারে।

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

আমরা প্রাসঙ্গিক পর্যায়ে ব্যাকওয়ার্ড কম্প্যাটিবিলিটির সাথে সম্পর্কিত ক্রিয়াগুলি তুলে ধরি, তবে সাধারণভাবে, আপনার নিশ্চিত করা উচিত যে আপনি সঠিক নির্ভরতা ঘোষণা করেছেন এবং প্রযোজ্য ক্ষেত্রে আপনি *Compat ক্লাসগুলি ব্যবহার করছেন।

বিদ্যমান SDK গুলি স্থানান্তর করুন

যদি আপনার কাছে একটি বিদ্যমান SDK থাকে যা আপনি রানটাইমে মাইগ্রেট করতে চান, তাহলে আপনাকে একবারে আপনার সম্পূর্ণ কোডবেস রিফ্যাক্টর করতে হবে না। পরিবর্তে, আপনি বিদ্যমান SDK লজিককে ক্রমবর্ধমানভাবে নতুন রানটাইম-সক্ষম SDK-তে মাইগ্রেট করতে পারেন।

একটি বিদ্যমান SDK কে SDK রানটাইমে স্থানান্তর করার জন্য আমরা নিম্নলিখিত তিনটি ধাপ অনুসরণ করার পরামর্শ দিচ্ছি:

  1. একটি ট্রানজিশন পিরিয়ড রানটাইম-সক্ষম SDK তৈরি করা এবং একটি কাউন্টারপার্ট পুরু রানটাইম-সচেতন SDK তৈরি করা। এটি আপনাকে আপনার বিদ্যমান SDK থেকে ব্যবসায়িক লজিক ক্রমবর্ধমানভাবে স্থানান্তর করতে দেয় এবং A/B পরীক্ষার জন্য একটি পরীক্ষামূলক প্ল্যাটফর্ম দেয়।
  2. অ্যাপ মাইগ্রেশন সহজ করার জন্য একটি পাতলা রানটাইম-সচেতন SDK সহ বিদ্যমান সমস্ত SDK ব্যবসায়িক যুক্তিকে একটি স্থিতিশীল অবস্থায় স্থানান্তর করা।
  3. একটি পাতলা রানটাইম-সচেতন SDK ছাড়াই সরাসরি আপনার রানটাইম-সক্ষম SDK ব্যবহার করার জন্য আগ্রহী অ্যাপগুলিকে সম্পূর্ণ মাইগ্রেশন সহ সমর্থন করা

প্রথম ধাপ - ট্রানজিশন পিরিয়ড: ঘন রানটাইম-সচেতন SDK

আপনি আপনার রানটাইম-সচেতন SDK-তে আপনার ব্যবসার কিছু যুক্তি রেখে শুরু করতে পারেন। আমরা এটিকে একটি ঘন রানটাইম-সচেতন SDK বা ইন-অ্যাপ র‍্যাপার বলি।

এই পদ্ধতির মাধ্যমে আপনি আপনার SDK-এর সমস্ত বা কিছু ক্ষমতা স্ট্যাটিক অ্যাপ লাইব্রেরিতে রাখতে পারবেন, পাশাপাশি একটি নতুন নির্মিত রানটাইম-সক্ষম SDKও রাখতে পারবেন।

এটি আপনাকে আপনার ব্যবহারের কেসগুলিকে ক্রমবর্ধমানভাবে রানটাইম-সক্ষম SDK-তে স্থানান্তর করতে এবং আপনার বিদ্যমান SDK-এর সাথে আপনার রানটাইম-সক্ষম SDK পরীক্ষা করতে দেয়।

এই পর্যায়ে, অ্যাপ ডেভেলপারকে আপনার SDK কীভাবে ব্যবহার করে তাতে কোনও পরিবর্তন করার প্রয়োজন নেই, কারণ এটি আপনার স্ট্যাটিক অ্যাপ লাইব্রেরি (রানটাইম-সচেতন SDK) যা আপনার রানটাইম-সচেতন SDK ব্যবহার করার জন্য প্রয়োজনীয় কাজ করে।

অ্যাপটি নিজের মধ্যে একটি স্ট্যাটিক, রানটাইম-সচেতন SDK কল করে যার মধ্যে একটি অনুবাদ স্তর থাকতে পারে যা রানটাইম-সক্ষম SDK এবং এর মধ্যে থাকা অন্যান্য ব্যবসায়িক যুক্তিকে কল করতে পারে।
অ্যাপটি নিজের মধ্যে একটি স্ট্যাটিক, রানটাইম-সচেতন SDK কল করে যার মধ্যে একটি অনুবাদ স্তর থাকতে পারে যা রানটাইম-সক্ষম SDK এবং এর মধ্যে থাকা অন্যান্য ব্যবসায়িক যুক্তিকে কল করতে পারে।

দ্বিতীয় ধাপ - স্থিতিশীল অবস্থা: পাতলা রানটাইম-সচেতন SDK

পুরু রানটাইম-সচেতন SDK এর বিপরীতে, একটি পাতলা র‍্যাপার, অথবা পাতলা রানটাইম-সচেতন SDK (thin RA_SDK), আপনার স্ট্যাটিক্যালি লিঙ্ক করা লাইব্রেরি SDK-তে শুধুমাত্র API অনুবাদ এবং রানটাইম-সক্ষম SDK কলিং কোড ধারণ করে।

এই পর্যায়ে, আপনার সমস্ত SDK কোড আপনার স্ট্যাটিক অ্যাপ লাইব্রেরি SDK থেকে বের করে আপনার রানটাইম-সক্ষম SDK-তে স্থানান্তরিত করা উচিত ছিল।

অ্যাপ ডেভেলপারদের প্রথম ধাপ থেকে কোনও পরিবর্তন করতে হবে না কারণ আপনার ইন-অ্যাপ থিন রানটাইম-অ্যাওয়ার SDK SDK রানটাইমের ভিতরে আপনার রানটাইম-সক্ষম SDK-তে কলিং পরিচালনা করে।

অ্যাপটি নিজের মধ্যে একটি স্ট্যাটিক SDK কল করে যাতে শুধুমাত্র একটি অনুবাদ স্তর থাকে।
অ্যাপটি নিজের মধ্যে একটি স্ট্যাটিক SDK কল করে যাতে শুধুমাত্র একটি অনুবাদ স্তর থাকে।

পর্যায় ৩ - সম্পূর্ণ স্থানান্তর

এই চূড়ান্ত পর্যায়ে, আপনি আপনার সমস্ত SDK এর ক্ষমতা রানটাইম-সক্ষম SDK-তে স্থানান্তরিত করেছেন এবং অ্যাপ থেকে সমস্ত স্ট্যাটিক লাইব্রেরি সরিয়ে ফেলেছেন।

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

SDK কলগুলি সিস্টেম দ্বারা SDK রানটাইমে পাঠানো হয়, যেখানে আপনার রানটাইম-সক্ষম SDK স্বয়ংক্রিয়ভাবে লোড হয়।

সম্পূর্ণ মাইগ্রেশন পর্বের আর্কিটেকচার, যেখানে অ্যাপের বিজ্ঞাপন কোড সরাসরি রানটাইম-সক্ষম SDK ব্যবহার করে।
সম্পূর্ণ মাইগ্রেশন পর্বের আর্কিটেকচার, যেখানে অ্যাপের বিজ্ঞাপন কোড সরাসরি রানটাইম-সক্ষম SDK ব্যবহার করে।


ভূমিকা

ধাপ ২ : আপনার ডেভেলপমেন্ট এনভায়রনমেন্ট সেট আপ করুন