راهکار خودکار برای تبدیل اپلیکیشن موبایل به حالت آنی (Instant App)

  • نویسنده: میلاد یداللهی
  • تاریخ انتشار: چهارشنبه ، ۲۹ آذر ماه ۹۶
  • تعداد بازدید: 2777
  • تعداد نظرها: 0
  • دسته بندی: امنیت برنامه های موبایل

حدود یک سال پیش، گوگل از قابلیت جدیدی در اندروید رونمایی کرد که موجب ایجاد تحولی بزرگ در خصوص فرآیند نصب و اجرای برنامه های موبایلی شد. این قابلیت که با عنوان اپلیکیشن های آنی یا Instant App شناخته می شود این امکان را به کاربر می دهد که بدون نیاز به نصب کامل نرم افزار در گوشی خود از امکانات آن استفاده نماید. همان طور که می دانید در ساختار فعلی و متداول برنامه ها و اپلیکیشن های موبایلی اندروید، روند به این شکل است که کاربر برای استفاده از یک نرم افزار در گوشی خود، ابتدا باید با مراجه به Google Play Store و یا دریافت فایل نصبی نرم افزار از دیگر فروشگاه های اپلیکیشن های موبایل، اقدام به اجرای فایل نصبی کرده و پس از تایید دسترسی های مورد نیاز و درخواستی از سوی نرم افزار اقدام به نصب و اجرا آن نماید. با قابلیت جدید آنی دیگر کاربرها نیازی به طی این مسیر ندارند و به راحتی می توانند از طریق آدرس های اینترنتی (URL) در صفخات وب بدون اینکه حتی متوجه شوند، به امکانات یک نرم افزار دسترسی پیدا کنند. در واقع در این مکانیزم، سیستم عامل اندروید در پشت صحنه نرم افزار را دریافت کرده و برای کاربر اجرا می نماید. در این شرایط تجربه کاربری بسیار راحت تر خواهد بود و همین موضوع موجب شده است بسیاری از شرکت ها و سازمان ها به سراغ استفاده از این مکانیزم در نرم افزارها و اپلیکیشن های موبایلی خود بروند.

اما از منظر تولید و توسعه نرم افزارهایی با قابلیت مذکور، کار به این سادگی نیست و نیازمند صرف منابع نسبتا زیادی هستیم. در واقع فرآیند تبدیل نرم افزارهای فعلی به اپلیکیشن های Instant  یا آنی باید توسط برنامه نویسان از طریق تجزیه و بخش بندی برنامه و صرف زمان نسبتا طولانی صورت پذیرد. برنامه نویسان زمان 4 تا 6 هفته ای را برای انجام این عملیات تبدیل در خصوص یک اپلیکیشن تجربه کرده اند.

در این مقاله ابتدا در خصوص ماهیت و ساختار اپلیکیشن های آنی صحبت خواهیم نمود و در ادامه روش و چگونگی تبدیل اپلیکیشن های فعلی به برنامه هایی با قابلیت Instant App را بررسی خواهیم نمود. در پایان راهکار خودکار این عملیات توسط ابزار DexGuard را که موجب کاهش شگفت انگیز زمان این فرآیند تبدیل از چند هفته به چند دقیقه شده است را معرفی خواهیم نمود.

 اپلیکیشن آنی (Instant App) چیست؟

اپلیکیشن و برنامه های اندرویدی به صورت عادی شامل یک بسته کدمحور حاوی فایل های منیفست، کدهای برنامه نویسی، منابع و غیره هستند که در قالب یک برنامه مستقل و کامل پکیج شده اند. در این حالت تولیدکننده برنامه، آن را بر روی فروشگاه های اپلیکیشن های موبایل نظیر Google Play Store قرار داده و کاربران از این طریق برنامه را دانلود، نصب و اجرا می نمایند.

اما اپلیکیشن های آنی مفهوم قابلیت (Feature) را مطرح نموده اند. در واقع در این نوع اپ ها، کاربردها و قابلیت های مختلف و متنوع یک نرم افزار به بخش های مختلفی تقسیم بندی شده و تشکیل پکیج های کوچک تری از آن نرم افزار را به صورت مستقل می دهند.

 

 

 

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

در واقع توسعه دهندگان می توانند با استفاده از اپلیکیشن های آنی آن دسته از کاربرانی را که در حال حاضر اپلیکیشن آنها را بر روی گوشی خود نصب نکرده اند جذب نمایند. به طوری که اپلیکیشن تنها با آدرس اینترنتی قابل کشف و دسترسی میشود و به راحتی میتوان از طرق مختلف نظیر ایمیل، نتایج جستجوی گوگل، پست های منتشر شده در شبکه های اجتماعی یا هر جایی که از URL پشتیبانی میکند، به اپلیکیشن دسترسی داشت.

از منظر فنی، سیستم عامل اندروید به همراه فروشگاه اپلیکیشن، به صورت در لحظه و در پشت صحنه قابلیت های مورد نیاز و درخواست کاربر را دانلود کرده و در اختیار وی قرار می دهند. بدین ترتیب کاربر بدون نیاز به نصب کامل کل پکیج یک نرم افزار تنها آن بخش از قسمت هایی را که نیاز دارد دریافت نموده و به صورت موقتی مورد استفاده قرار می دهد.

می توان گفت که قابلیت های مختلف در یک نرم افزار موبایلی ممکن است به یکدیگر وابسته نباشند، اما از سویی دیگر احتمال دارد برخی از کدها، منابع و غیره را با یکدیگر به صورت اشتراکی استفاده نمایند. برای مدیریت این موضوع، موارد اشتراکی میان قابلیت های مختلف با عنوان "قابلیت پایه" در یک نرم افزار تعریف و پکیج می شوند. در این حالت یک برنامه آنی در Android Studio شامل ماژول هایی است که مرتبط با قابلیت ها هستند. هر یک از ماژول ها مانند یک نرم افزار مستقل حاوی فایلهای منیفست، کدهای برنامه نویسی، منابع و غیره هستند و یک فایل apk جداگانه خواهند داشت. 

 محدودیت های اپلیکیشن های آنی

گوگل محدودیت هایی را برنامه های آنی درنظر گرفته که آنها را از طریق قوانین Google Play Store خود اعمال می نماید:

  • از منظر امنیت، اپلیکیشن باید از مدل مجوزدهی که در اندروید ۶.۰ معرفی شده است، استفاده کند. از آنجایی که کاربر اپلیکیشن را مستقیما نصب نمی کند، فرصتی برای درخواست مجوز وجود ندارد. اگر ماژول یا قابلیت اپلیکیشن آنی برای دسترسی به قابلیت های حساس گوشی به مجوز یا اطلاعات کاربر نیاز داشت، باید در زمان اجرا این مجوزها را از کابر بخواهد.
  • از منظر بهینگی و سرعت اجرا، اپلیکیشن مورد نظر می تواند حداکثر سایز 4 MB را داشته باشد. این حجم از طریق حاصلجمع سایز فایل apk قابلیت پایه و فایل apk بزرگترین قابلیت، محاسبه می گردد که البته این عدد (4 MB) به عنوان سایز کمی در اپلیکیشن های مدرن و استاندارد امروزی محسوب نمی شود. 

ساخت یک اپلیکیشن آنی

روش معمول

شاید شما هم با توجه به مزایای زیادی که اپلیکیشن های آنی می توانند برای کسب و کار شما داشته باشند به فکر تبدیل برنامه موبایلی موجود خود با قابلیت آنی افتاده باشید، مزایایی از قبیل:

  • حذف موانعی از قبیل نصب و رجوع به فروشگاه های اپ
  • بهره برداری از فناوری وب و سهولت در جذب کاربران جدید
  • امکان اشتراک گذاری بخش های مختلف اپ در فضای وب
  • کاهش حجم فایل های مورد نیاز به دانلود برای کاربران و درگیر نشدن آنها در این فرآیند

اما از لحاظ فنی این کار چگونه انجام خواهد شد؟ در خصوص تولید یک نرم افزار جدید از ابتدا، به صورت عادی زمانی که شما یک پروژه جدید در Android Studio تعریف می کنید، می توانید قابلیت اپلیکیشن آنی را فعال نمایید. بدین ترتیب با استفاده از مراحل تعریف شده می توانید روال تولید این نوع نرم افزار را طی نموده و در پایان نرم افزار خود را هم به صورت آنی و هم به صورت معمول تولید خروجی بگیرید.

 

 

اما چالش بیشتر زمانی است که شما می خواهید اپلیکیشن موجود خود را تبدیل به اپلیکیشن آنی نمایید. در این حالت شما باید خود، ماژول های مختلف را ایجاد نمایید، البته Android Studio هم شما را در این فرآیند از طریق ویزاردهای مختلف یاری می نماید.

 روش بهینه

یک اپلیکیشن اندرویدی شامل بخش های مختلفی شامل: منیفست اندروید، کلاسهایی که به زبان جاوا یا کاتلین نوشته شده اند، منابع، فایل های منابع، فایل های دارایی و یا حتی برخی کتابخانه ها، است. شکل زیر نشان می دهد که چگونه این المان ها می توانند با یکدیگر در ارتباط باشند. به عنوان مثال کلاسها می توانند به منابع مرتبط شوند، منابع به فایل های منابع، خود فایل های منابع نیز می توانند به کلاسها مرتبط شوند و ارتباطات متنوعی را مشاهده نمود. در این شکل تنها چند بخش نمونه مشخص شده است در صورتیکه در یک اپلیکیشن واقعی می توان صدها و یا حتی هزاران ارتباط را مشاهده نمود.

 

 

 

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

 

 

 

 اما ابزارهای Proguard و DexGuard که به عنوان محصولات امنیتی با مقاصد خاص امنیت و حفاظت از اطلاعات تولید شده اند، به عنوان یکی از قابلیت های خود، برای اینکه بفهمند کدام کدها قابلیت حذف را دارند (به جهت کاهش حجم فایل و افزایش سرعت) این تحلیل را به صورت کامل انجام می دهند. بدین ترتیب اگر شما این نوع تحلیل را انجام دهید، قادر خواهید بود که به راحتی یک نمودار ارتباطی ون (Venn) میان بخش ها و المان های مختلف را ترسیم نمایید.

 

 

 

با ترسیم نمودار فوق به راحتی می توانید تشخیص دهید که کدامیک از المان ها و عناصر در ماژول های مختلف قرار بگیرند و کدامیک از آنها به عنوان عناصر مشترک باید در ماژول پایه وارد شوند.

این فرآیند دقیقا روندی است که بصورت منطقی برای تقسیم بندی ماژول ها به کار گرفته می شود. از آنجا که مراحل فرآیند مذکور کاملا قابل تعریف است، چرا آن را با استفاده از ابزارها خودکار انجام ندهیم؟ این دقیقا امکانی است در نسخه جدید Dexguard ارائه شده است.

 

  

ساخت سریع اپلیکیشن های آنی با استفاده از DexGuard

در عمل تنها کاری که باید بکنیم این است که تنها چند خط ساده به تنظیمات فعلی ProGuard/Dexguard در اپلیکیشن خود اضافه نماییم. با این قابلیت، می توانیم به راحتی ماژول ها را نام گذاری نموده و URL ها و اکتیویتی های مربوطه را مشخص نماییم. به عنوان مثال

 

 

 

  بعد از انجام این کار، DexGuard به صورت کاملا اتوماتیک اقدام به کوچک سازی، بهینه سازی، ارتباط دهی، درهم ریزی و بخش بندی کدها می نماید. خروجی این فرآیند مجموعه از فایل های apk مربوط به اپلیکیشن آنی شما خواهد بود. این روش حتی در زمانی که شما قصد تغییرات در اپلیکیشن های خود را دارید بسیار به شما کمک خواهد نمود. به عنوان مثال ممکن است شما بخواهید قسمتی از کد را تغییر دهید، ممکن است قصد اضافه کردن یک قابلیت جدید را داشته باشید و یا حتی بخواهید چند اکتیویتی را در یک قابلیت/ماژول مستقل دیگر بیاورید. ساخت سریع با استفاده از این ابزار شما را در تمامی این مراحل یاری می نماید.

با توجه به اعلام شرکت گارداسکوئر به عنوان خالق محصولات ProGuard/Dexguard، تا به حال بیش از 25 اپلیکیشن متن باز شامل مواردی چون فایرفاکس را از این طریق به صورت آنی تبدیل نموده اند. با وجود اینکه ممکن است برخی از اپلیکیشن ها حجم بالاتری از حجم تعیین شده 4 MB را داشته باشند و یا نیازمند دسترسی هایی باشند که خارج از دسترسی های مجاز تعیین شده می باشند، این فرآیند زمان تبدیل را تا حد زیادی کاهش می دهد.

 نتیجه گیری

ایجاد و ساخت اپلیکیشن های آنی در مقابل مزایای بسیاری که برای کسب و کارها دارد، بسیار زمانبر است. توسعه دهندگان مجبور هستند تا با صرف زمان زیادی اقدام به تحلیل و بخش بندی نرم افزار خود نمایند و از آن مهم تر، آن را تبدیل به ماژول هایی مستقل کنند. ابزار DexGuard این فرآیند را خودکار می کند، به طوریکه فرآیند تبدیل از حدود 4 هفته به 4 دقیقه کاهش پیدا خواهد کرد. این روش از منظر تنظیمات، تغییرات و اطلاحات و پشتیبانی بسیار راحت تر بوده و دارای انعطاف پذیری بالاتری است.