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

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

مفاهیم کلیدی

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

واژه نامه

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

معماری SDK Runtime

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

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

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

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

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

هنگامی که SDK با قابلیت زمان اجرا را در Android Studio یا ابزارهای دیگر می‌سازید، یک Android SDK Bundle (ASB) ایجاد می‌کنید، یک قالب انتشار برای SDK‌های دارای زمان اجرا فعال.

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

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

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

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

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

سازگاری با عقب

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

برای مدیریت سازگاری به عقب در Android 13 و نسخه‌های قبلی، کتابخانه Jetpack را معرفی کرده‌ایم که می‌تواند بدون در نظر گرفتن پشتیبانی دستگاه از SDK Runtime، بدون در نظر گرفتن پشتیبانی دستگاه از SDK Runtime، SDK فعال با زمان اجرا را اجرا کند.

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

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

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

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

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

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

فاز 1 - دوره انتقال: SDK آگاه از زمان اجرا ضخیم

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

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

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

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

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

فاز 2 - حالت ثابت: SDK با آگاهی از زمان اجرا نازک

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

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

توسعه دهندگان برنامه نیازی به ایجاد هیچ تغییری از فاز 1 ندارند، زیرا SDK با زمان اجرا نازک درون برنامه ای شما، تماس با SDK فعال با زمان اجرا را در داخل SDK Runtime کنترل می کند.

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

فاز 3 - مهاجرت کامل

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

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

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

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


مقدمه

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