برنامهنویس
چطور به AndroidX مهاجرت کنیم؟
تو این مطلب میگم که چرا باید به اندرویدایکس مهاجرت کنید و چطور.
اگه ازJetPack و اندرویدایکس نمیدونید درموردش جستجو کنید و اطلاعات کسب کنید.
امروز دیدم که بازار آپدیت نهم اپلیکیشنام رو رد کرده بود (هشت تا ورژن قبلی رو چطوری تایید کرده بودین آخه؟) ، بعد که CrashLytics رو چک کردم دیدم که آره کتابخونه انتخاب عکس کرش داده بود. مشکل اون کتابخونه هم توی ورژن های بعدی حل شده بود ولی چون ورژن بالاتر از androidX استفاده کرده بود من از ورژن قبل از androidX اش استفاده کرده بودم.
اینکه چرا از ورژن قبلش استفاده کردم بخاطر این بود که چون توی ورژن های بعدی Dependency هاش از androidX استفاده کرده بود ولی من از SupportLibrary توی پروژم استفاده کرده بودم که دچار کانفلیکت میشد و مجبور میشدم به طور کامل مهاجرت کنم به androidX.
مشکل اینجاست که یک سری کتابخانه ها به androidX مهاجرت کردند و دیگه از SupportLibrary استفاده نمیکنند ولی بقیه مهاجرت نکردند و یک نوع دوگانگی به وجود اومده بود برام.
نمیدونم چرا زودتر به اندرویدایکس مهاجرت نکردم و میترسیدم ازش! فکر میکردم خیلی به مشکل بخورم ولی توی نصف روز کل یک پروژه رو refactor کردم.
خلاصه همونروز خیلی اتفاقی توی StackOverflow دیدم یکی به Jetifier اشاره کرده بود. حالا این Jetifier چی هست ؟ یک ابزار از JetPack که مشکل امثال من رو حل میکنه. کتابخانه هایی که مهاجرت نکرده بودن و به SupportLibrary وابستهان رو میگیره و اون SupportLibrary هارو به androidX تبدیل میکنه. و مشکل دوگانگی خیلی راحت حل میشه :) الان میتونم همه نوع کتابخانه ای به پروژه ام اضافه کنم چه جدید چه قدیم.
ولی باز هم مجبور بودم سورس خودم رو به androidX تغییر بدم ، یعنی وابستگیهای توی فایل build.gradle و import هارو از android.support به androidx.* تغییر میدادم.
برای این مشکل هم گوگل یک راه حل در نظر گرفته بود . در منوی Refactor توی اندروید استدیو گزینه ای به اسم Migrate to Androidx هم اضافه شده که بصورت خودکار وابستگی ها و import هارو عوض میکنه.
خب تا اینجا همهچی خیلی عالی و باحال به نظر میرسه ولی ریفکتور اندروید استدیو بی مشکل نیست!
راه حل اینه که پروژه رو بیلد بگیرید تا ارورها خودشون رو نشون بدن ، نترسید تقریبا کل فایل های پروژه قرمز میشن :)) ولی خیلی راحت میتونید با استفاده از شورت کات کنترل شیفت آر import ها رو توی کل پروژه تغییر بدید.
به این صورت که اول Import رو پاک کنید بعدش روی کلاس ها کلید آلت اینتر بزنید تا خودش اون کلاس رو Import کنه. بعد اون رو توی کل پروژه از طریق شورت کات قبلی عوض کنید.
یک سری کلاس هارو هم باید به صورت مجزا به dependency هاتون اضافه کنید مثلا کلاس TabLayout دیگه توی com.android.support:design نیست و باید بجاش از com.google.android.material:material استفاده کنید چون توی اندرویدایکس کامپوننت ها مجزا شدن.
ارور های دیگه ای هم خواهید داشت ولی نگران نباشید ، درست گوگل کنید و راه حل رو پیدا کنید.
خوشحال باشید و خندان :)
مطلبی دیگر از این انتشارات
وقت سفارت ایتالیا با رسول تراول
مطلبی دیگر از این انتشارات
مغزهای بزرگ زنگزده
مطلبی دیگر از این انتشارات
جدول نرخ دیه کامل سال ۱۳۹۹ چقدر است؟