مهاجرت به AndroidX در اندروید استودیو
معرفی AndroidX در اندروید استودیو

در واقع AndroidX جدیدترین نسل بهینه شده‌ پکیج کتابخانه‌های Support اندروید استودیو میباشد . تیم توسعه اندروید قبلا کتابخانه‌های موردنیاز اندروید جهت توسعه برنامه‌های اندرویدی را توسط لایبرری‌های Support منتشر می‌کرد.

برای مثال کتابخانه Appcompat که بعد از ساخت پروژه در اندروید استودیو این لایبرری به صورت زیر در فایل build.gradle مربوط به ماژول app قرار می‌گرفت:

implementation ‘com.android.support:appcompat-v7’

اما هم اکنون این کتابخانه به صورت زیر به پروژه اضافه میشود :

implementation ‘androidx.appcompat:appcompat’

ازین به بعد نامگذاری کتابخانه‌های Support همگی با پیشوند androidx شروع می‌شود .

دلیل اصلی معرفی AndroidX، نحوه نامگذاری منسجم و یکپارچه پکیج‌ها بوده و کمتر باعث سردرگمی برنامه نویسان اندرویدی میشود .

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

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

معرفی Jetpack در اندروید :

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

به طور کلی ،Jetpack و پکیج ‌های آن یعنی AndroidX به دلیل بهبود ساخت پروژه توسط توسعه دهندگان اندروید در یک قالب مشترک معرفی شده‌اند.

میزان اهمیت مهاجرت به AndroidX در اندروید استودیو از Support Library :

هم اکنون شاید الزامی در این مهاجرت دیده نشود . امکان استفاده از کتابخانه‌های Support الان نیز وجود دارد. البته با محدودیت‌هایی که در ادامه آنها را بررسی میکنیم .

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

مهاجرت به AndroidX در اندروید استودیو

نکات مهاجرت به AndroidX در اندروید استودیو :

غیرفعال بودن گزینه Use androidx.* artifacts به عنوان یادوآری برای توسعه دهندگان میباشد و مسلما در نسخه‌های بعدی اندروید استودیو ، حذف خواهد شد.

اگر میخواهید پروژه جدید در اندروید استودیو ایجاد کنید ، کتابخانه جدید Appcompat در پروژه قرار دارد و هنگام اضافه کردن سایر کتابخانه‌های Support نیز پکیج‌های androidx در لیست نمایش داده میشوند.

ولی برای بروزرسانی پروژه‌های قدیمی ، هم به صورت دستی و هم با استفاده از قابلیتی که مختص همین موضوع در اندروید استودیو وجود دارد می‌توان اقدام کرد.

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

1 . بروزرسانی دستی :

برای مهاجرت به androidx به روش دستی احتمالا زمان زیادی را باید صرف کنیم.

بعد از تغییر نام کتابخانه‌ها در build.gradle مربوط به ماژول اپ باید import های موجود در اکتیویتی‌ها نیز تصحیح شوند . به عنوان مثال :

import android.support.v7.app.AppCompatActivity;

باید با :

import androidx.appcompat.app.AppCompatActivity;

جایگزین شود. همچنین این تغییرات باید در تگ‌های لایه xml نیز انجام شود .

برای مثال :

android.support.constraint.ConstraintLayout

با

androidx.constraintlayout.widget.ConstraintLayout

جایگزین میشود . علاوه بر آن باید دو خط زیر نیز به gradle.properties اضافه شود تا androidx فعال شود . روش دستی برای مهاجرت به androidx توصیه نمی‌شود.

android.useAndroidX=true

android.enableJetifier=true

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

در خط بعد، پلاگین اندروید بوسیله enableJetifier به صورت خودکار با بازنویسی دودویی (binary) کتابخانه‌های شخص سوم (کتابخانه‌هایی که توسط سایر افراد و تیم‌های غیر از تیم توسعه اندروید منتشر می‌شوند) آنها را برای استفاده از androidx آماده می‌کند.

توجه : برای استفاده از androidx ورژن اندروید استودیو باید حداقل ۳٫۲ باشد . همچنین (compileSdkVersion و targetSdkVersion) نیز باید ۲۸ و به بالا باشد. ضمنا از API 29 و به بعد فقط باید از androidx استفاده کرد .

1 . بروزرسانی خودکار :

از Android Studio ورژن 3.2 به بعد امکانی فراهم شده که پروژه‌های قبلی را بتوان به صورت خودکار و بدون نیاز به ویرایش دستی به پروژه‌ای بر پایه پکیج‌های androidx تبدیل کرد.

برای استفاده از این قابلیت بعد از باز کردن پروژه در محیط اندروید استودیو، در منوی Refactor گزینه Migrate to AndroidX را انتخاب کنید:

مهاجرت به AndroidX در اندروید استودیو

مهاجرت به AndroidX در اندروید استودیو

بعد از انتخاب این گزینه پیام زیر نمایش داده میشود :

مهاجرت به AndroidX در اندروید استودیو

در این پیغام توصیه شده قبل از شروع عملیات یک نسخه پشتیبان (backup) از پروژه تهیه شود که به راحتی می‌توان پوشه مربوط به پروژه را در جایی دیگر ذخیره کرد .

همچنین خود اندروید استودیو گزینه ای با عنوان Backup project as Zip file به انتهای این پنجره اضافه کرده که در صورت تایید ، یک بکاپ به صورت خودکار و با فرمت zip ایجاد می‌شود .

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

در ابتدا محل ذخیره بکاپ پروژه را مشخص می‌کنیم :

مهاجرت به AndroidX در اندروید استودیو

اندروید استودیو توضیحاتی از تغییرات پروژه برای مهاجرت به androidx را نمایش می‌دهد که با کلیک روی Do refactor تایید و عملیات اجرا می‌شود :

مهاجرت به AndroidX در اندروید استودیو
مهاجرت به AndroidX در اندروید استودیو

در این پروژه بدون هیچگونه خطایی تبدیل به راحتی انجام شد . البته این یک پروژه بسیار ساده بود .

در پروژه‌های سنگین که از کتابخانه‌های زیادی استفاده کرده اید ، احتمال بروز خطا و نیاز به تغییرات دستی بالاتر است .

نکته خیلی خیلی مهم : امکان دارد هنوز هم تعدادی از کتابخانه‌های سایر برنامه نویسان و توسعه دهندگان که در پروژه‌ خود استفاده کرده‌ایم یا در منابع موجود در اینترنت بکار رفته‌اند ، هنوز با androidx سازگاری نداشته باشند و نیاز به آپدیت کردن انها توسط توسعه دهندگان مربوطه باشد .

سوالات و نظرات خود را در این بخش مطرح کنید

avatar
فهرست