یک SDK با قابلیت زمان اجرا بسازید و مصرف کنید

1
مفاهیم کلیدی
2
محیط توسعه خود را تنظیم کنید
3
یک RE SDK بسازید
4
RE SDK را مصرف کنید
5
آزمایش و ساخت برای توزیع
،
1
مفاهیم کلیدی
2
محیط توسعه خود را تنظیم کنید
3
یک RE SDK بسازید
4
RE SDK را مصرف کنید
5
آزمایش و ساخت برای توزیع

مفاهیم کلیدی

این بخش معماری SDK Runtime، نحوه نصب SDK های دارای قابلیت Runtime، سازگاری با نسخه‌های قبلی و نحوه انتقال SDK های موجود به SDK Runtime را توضیح می‌دهد.

واژه‌نامه

  • SDK با قابلیت اجرا (RE SDK) : SDK ای که برای اجرا در محیط SDK Runtime و ارتباط با برنامه از طریق ارتباط بین فرآیندی (IPC) ساخته شده است.
  • SDK آگاه از زمان اجرا (RA SDK) : یک SDK بدون قابلیت اجرا که به صورت ایستا به برنامه متصل شده است و ممکن است شامل کد SDK موجود شما و همچنین کد جدیدی برای فراخوانی در SDK فعال شده در زمان اجرا باشد.
    • این گاهی اوقات به عنوان SDK استاتیک یا استاتیک نیز شناخته می‌شود.
  • Shim : یک کتابخانه Jetpack که به انتزاعی‌سازی ارتباطات بین فرآیندها یا ارتباطات بین فرآیندی (IPC) کمک می‌کند و رابط برنامه-SDK یکسانی را حفظ می‌کند.

معماری زمان اجرای SDK

SDK Runtime از یک مدل کلاینت-سرور استفاده می‌کند.

تفاوت اصلی این است که «کلاینت» (اپلیکیشن) و «سرور» (SDKهای فعال‌شده در زمان اجرا) روی یک دستگاه اجرا می‌شوند و این ارتباط بین فرآیندها اتفاق می‌افتد.

برای کمک به رفع این چالش‌ها، ما کتابخانه‌ها و ابزارهای Jetpack زیر را برای ساده‌سازی ادغام برنامه-SDK در زمان اجرای SDK ساخته‌ایم:

  • کتابخانه Shim: کتابخانه پوششی (یا shim ) به انتزاعی کردن ارتباطات بین فرآیندها یا ارتباطات بین فرآیندی (IPC) کمک می‌کند. همچنین به حفظ رابط برنامه-SDK یکسان کمک می‌کند.
  • کتابخانه Backcompat: این کتابخانه سازگاری معکوس را مدیریت می‌کند و مطمئن می‌شود که SDK شما صرف نظر از اینکه SDK Runtime در دسترس باشد یا خیر، سازگار است.
  • کتابخانه رابط کاربری: ما همچنین کتابخانه‌هایی را برای مدیریت ارائه از راه دور، مانند دریافت رابط کاربری از SDK با قابلیت اجرا یا تغییر اندازه و رله کردن نماها، ارائه می‌دهیم.
مرور کلی معماری SDK Runtime
نموداری که تعامل یک برنامه با SDK فعال‌شده در زمان اجرا را از طریق کتابخانه‌های مختلف نشان می‌دهد.

تغییرات در جریان نصب

وقتی SDK با قابلیت اجرا (runtime-enabled SDK) خود را در اندروید استودیو یا ابزارهای دیگر می‌سازید، یک Android SDK Bundle (ASB) ایجاد می‌کنید که یک قالب انتشار برای SDK های با قابلیت اجرا (runtime-enabled SDK) است.

bundletool فایل ASB را پردازش می‌کند تا یک APK برای SDK فعال‌شده در زمان اجرا (runtime-enabled SDK) شما تولید کند: این APK جداگانه حاوی کد SDK شماست اما کد برنامه را ندارد.

فایل مانیفست برنامه، وابستگی به نام و نسخه SDK فعال‌شده در زمان اجرا را اعلام می‌کند و این وابستگی توسط برنامه نصب‌کننده برطرف می‌شود.

به محض اینکه فایل APK مربوط به SDK توسط نصاب دریافت شد، نصب با نصب APK مربوط به SDK آغاز می‌شود. در صورت موفقیت‌آمیز بودن، نصب APK برنامه ادامه می‌یابد.

اگر برنامه روی اندروید ۱۳ و قبل از آن و در دستگاه‌هایی که از SDK Runtime پشتیبانی نمی‌کنند نصب شود، جریان متفاوت است. در این سناریو، فروشگاه یک APK واحد حاوی SDK فعال‌شده با runtime شما و کد برنامه نصب می‌کند. برای کسب اطلاعات بیشتر، بخش توزیع را مطالعه کنید.

هر زمان که یک برنامه در مرحله تولید به این SDK وابسته باشد، اپ استور فایل APK SDK صحیح را از این ASB ایجاد کرده و آن را نصب می‌کند.

سازگاری معکوس

از آنجایی که SDK Runtime در اندروید ۱۴ معرفی شده است، ما نیاز داشتیم که از نسخه‌های قبلی بدون ایجاد سربار برای توسعه‌دهندگان SDK یا برنامه پشتیبانی کنیم.

برای مدیریت سازگاری با نسخه‌های قبلی اندروید در اندروید ۱۳ و قبل از آن، ما یک کتابخانه Jetpack معرفی کرده‌ایم که می‌تواند SDK فعال‌شده با runtime شما را صرف‌نظر از پشتیبانی دستگاه از SDK Runtime، به‌طور یکپارچه اجرا کند.

پیروی از این راهنما، SDK شما را که در زمان اجرا فعال شده است، به طور پیش‌فرض با نسخه‌های قبلی سازگار می‌کند و هیچ اقدام دیگری لازم نیست انجام دهید.

ما در مراحل مربوطه، اقدامات مرتبط با سازگاری رو به عقب را برجسته می‌کنیم، اما به طور کلی، باید مطمئن شوید که وابستگی‌های صحیح را اعلام کرده‌اید و در صورت لزوم از کلاس‌های *Compat استفاده می‌کنید.

انتقال SDK های موجود

اگر یک SDK موجود دارید که می‌خواهید به Runtime منتقل کنید، لازم نیست کل کدبیس خود را یکجا تغییر دهید. در عوض، می‌توانید منطق SDK موجود را به صورت تدریجی به SDK جدید با قابلیت runtime منتقل کنید.

ما سه مرحله زیر را برای انتقال یک SDK موجود به SDK Runtime توصیه می‌کنیم:

  1. ساخت یک SDK با قابلیت اجرای دوره گذار به همراه یک SDK با قابلیت اجرای همزمان و ضخیم. این به شما امکان می‌دهد منطق کسب و کار را به صورت تدریجی از SDK موجود خود منتقل کنید و یک پلتفرم تست برای تست A/B در اختیار شما قرار می‌دهد.
  2. انتقال تمام منطق تجاری SDK موجود به حالت پایدار در کنار یک SDK مشابه و آگاه از زمان اجرا برای سهولت در مهاجرت برنامه
  3. پشتیبانی از برنامه‌های علاقه‌مند با مهاجرت کامل برای استفاده مستقیم از SDK فعال‌شده در زمان اجرا بدون نیاز به یک SDK کم‌حجم و آگاه از زمان اجرا

مرحله ۱ - دوره گذار: SDK با قابلیت اجرا در زمان اجرا (Runtime-aware)

می‌توانید با انتخاب نگه‌داشتن بخشی از منطق کسب‌وکارتان در SDK آگاه از زمان اجرا (runtime-aware SDK) شروع کنید. ما به این SDK آگاه از زمان اجرا (runtime-aware SDK) ضخیم یا بسته‌بندی درون‌برنامه‌ای (in-app wrapper) می‌گوییم.

این رویکرد به شما امکان می‌دهد تمام یا برخی از قابلیت‌های SDK خود را در کتابخانه برنامه استاتیک، در کنار یک SDK با قابلیت اجرا که به تازگی ساخته شده است، نگه دارید.

این به شما امکان می‌دهد موارد استفاده خود را به صورت تدریجی به SDK فعال‌شده در زمان اجرا منتقل کنید و SDK فعال‌شده در زمان اجرا را در برابر SDK موجود خود آزمایش کنید.

در این مرحله، توسعه‌دهنده برنامه نیازی به تغییر چیزی در نحوه استفاده از SDK شما ندارد، زیرا این کتابخانه برنامه استاتیک شما (SDK آگاه از زمان اجرا) است که کار لازم برای استفاده از SDK آگاه از زمان اجرا را انجام می‌دهد.

این برنامه یک SDK ایستا و آگاه از زمان اجرا را درون خود فراخوانی می‌کند که می‌تواند شامل یک لایه ترجمه برای فراخوانی SDK فعال‌شده در زمان اجرا و همچنین سایر منطق‌های تجاری درون آن باشد.
این برنامه یک SDK ایستا و آگاه از زمان اجرا را درون خود فراخوانی می‌کند که می‌تواند شامل یک لایه ترجمه برای فراخوانی SDK فعال‌شده در زمان اجرا و همچنین سایر منطق‌های تجاری درون آن باشد.

مرحله ۲ - حالت پایدار: SDK با قابلیت اجرا و زمان‌بندی محدود

در مقابل SDK ضخیمِ آگاه از زمان اجرا، یک بسته‌بندی نازک یا SDK نازکِ آگاه از زمان اجرا (thin RA_SDK)، فقط شامل ترجمه API و کد فراخوانی SDK با قابلیت اجرا در زمان اجرا در SDK کتابخانه‌ایِ متصل به صورت ایستا است.

در این مرحله، شما باید تمام کد SDK خود را از SDK کتابخانه برنامه استاتیک خود به SDK فعال شده در زمان اجرا منتقل کرده باشید.

توسعه‌دهندگان برنامه نیازی به ایجاد هیچ تغییری از مرحله ۱ ندارند، زیرا SDK درون برنامه‌ای شما که از runtime-aware پشتیبانی می‌کند، فراخوانی SDK فعال‌شده در runtime شما را در داخل SDK Runtime مدیریت می‌کند.

این برنامه درون خود یک SDK استاتیک را فراخوانی می‌کند که فقط شامل یک لایه ترجمه است.
این برنامه درون خود یک SDK استاتیک را فراخوانی می‌کند که فقط شامل یک لایه ترجمه است.

مرحله ۳ - مهاجرت کامل

در این مرحله نهایی، شما تمام قابلیت‌های SDK خود را به SDK با قابلیت اجرا منتقل کرده‌اید و تمام کتابخانه‌های استاتیک را از برنامه حذف کرده‌اید.

در این مرحله، کلاینت‌های برنامه شما دیگر نیازی به گنجاندن کتابخانه‌های شما در نسخه‌های ساخته‌شده خود ندارند، بلکه فقط وابستگی‌های SDK را در مانیفست فهرست می‌کنند و فراخوانی‌های SDK را در کد برنامه خود لحاظ می‌کنند.

فراخوانی‌های SDK توسط سیستم به SDK Runtime هدایت می‌شوند، جایی که SDK فعال‌شده با runtime شما به‌طور خودکار بارگذاری می‌شود.

معماری مرحله مهاجرت کامل، که در آن کد تبلیغاتی برنامه مستقیماً SDK فعال شده در زمان اجرا را فراخوانی می‌کند.
معماری مرحله مهاجرت کامل، که در آن کد تبلیغاتی برنامه مستقیماً SDK فعال شده در زمان اجرا را فراخوانی می‌کند.


مقدمه

مرحله ۲ : محیط توسعه خود را تنظیم کنید