از نسخه 5 تا نسخه 7.1 اپلیکیشن بخشنامه

سلام به همه بلاگر های عزیز، تو این مطلب میخام در مورد روند ساخت نسخه 6 و 7 اپلیکیشن بخشنامه صحبت کنم و همینطور تجربیاتی رو در اختیارتون بزارم.داستان از اینجا شروع میشه که نسخه 5 اپلیکیشن بخشنامه بدلیل پیچیدگی تو ساختار کدهای جاواش و همینطور کدهای xml برای رابط کاربریش، کدهای پیچیده و درهم فشرده سازی و... گزارش های زیادی رو در appcenter دریافت می کردم. همین باعث شد تا توی این تعطیلات شروع کنم به بازنویسی اپلیکیشن!استارت نسخه 6 رو زدم و کار خیلی خوب پیش رفت، سرعت دریافت اطلاعات تا 50 درصد بیشتر شد، از کدهای سی++ برای فشرده سازی استفاده کردم و همین باعث شد تا کلا برنامه افزایش سرعت چشمگیری داشته باشه و به انتشار عمومی رسیدم اما بعد از انتشار در کافه بازار نارضایتی کاربران شروع شد که اپلیکیشن یا اصلا اجرا نمیشه و یا اگرم اجرا بشه هیچ بخشنامه ای دریافت نمیشه!قضیه خیلی عجیب بود و یک هفته من رو مشغول خودش کرد تا تونستم ریشه مشکل رو پیدا کنم و بدلیل خرابکاری که نسخه 6 کرده بود مجبور شدم نسخه 7 رو با اصلاحیه منتشر کنم. اما مشکل کجا بود؟مشکل از اینجا نشات میگرفت که نسخه 5 بخشنامه با نسخه 2 اندروید استودیو نوشته شده بود. اما نسخه 6 بخشنامه با اندروید استودیو 3.4 همین کافی بود تا کلی مشکل ایجاد کنه برام! متاسفانه گوگل توی backward compatibility اصلا خوب کار نمیکنه.بعد از کلی تست و آزمایش مشخص شد که اپلیکیشن روی اندروید 4.4 به پایین کرش میکنه و روی اندروید 8 و 9 هم اصلا اطلاعاتی رو لود نمیکنه همینطور بعدا مشخص شد که روی اندروید 10 (کیو) که به تازگی منتشر شده هم کرش میکنه (اینو بعد از فیکس کردن 2 مشکل اول کشف کردم).اما مشکل چطور رفع شد؟ مثل اینکه یکی از کتابخانه های شخص ثالث برنامه به کتابخانه Multidex نیاز داشته (این نیاز تو نسخه 3.4 اندروید استودیو پدیدار شد) و من هم اضافه کرده بودم اما همین مولتی دکس روی اندروید 4.4 به پایین شناسایی نمیشه و باید بصورت دستی معرفیش کرد و من هم اطلاعی از این نداشتم واسه همین برنامه کرش میکرده پس به این صورت مشکل حل شد:public class app extends MultiDexApplication { @Override public void onCreate() { super.onCreate(); MultiDex.install(this); } }البته کلاس بالا باید تو مانیفست برنامه هم معرفی بشه!اما مشکل دوم عدم لود کردن اطلاعات! این مشکل هم علتش این بود که چون برنامه از شبکه اینترنت برای دریافت اطلاعات استفاده میکنه توی نسخه 8 اندروید بخش امنیتی جدیدی اضافه شده. تا قبل از نسخه 8 اندروید CleartextTraffic بصورت پیشفرض روی True بوده ولی از نسخه 8 به بعد False شده! همین باعث شده تا برنامه روی اندروید 8 به بعد با خطا مواجه بشه!راه حل هم این بود که CleartextTraffic رو بصورت پیشفرض True کنیم. با نوشتن کد زیر داخل مانیفست مشکل حل شد.android:usesCleartextTraffic="true"تا اینجا 2 تا مشکل رو تونستم فیکسشون کنم اما مشکل جدیدی پیدا شد برنامه روی اندروید کیو 10 کرش میکرد!خوشبختانه بعد از کلی بررسی مشخص شد که تنظیمات فونت اندروید 10 تغییر یافته و چون برنامه از کتابخانه Calligraphy برای تغییر فونت کل برنامه استفاده میکنه همین باعث ایجاد خطا میشه! (بازم دست گوگل درد نکنه بابت پشتیبانی از کدها و تنظیمات قبلی)راه حل؟ منتظرم تا سازنده کتابخانه اپدیت جدیدش رو منتشر کنه.بعد از حل کردن مشکلات دیدم که کاربران نارضایتی هایی رو هم در مورد رابط کاربری جدید دارن و زیاد راحت نیستن باهاش برای همین تصمیم گرفتم تا یه دستی هم به رابط کاربری بکشم و تجربه کاربری رو بهتر از قبل کنم.نتیجه شد تصویر زیر:خوشبختانه نسخه 7 تو بازار منتشر شد و مشکلات کاربران هم حل شد. اینو هم یادم رفت بگم که اپلیکیشن رو به نسخه جدید گوگل یعنی androidx تبدیل کردم که میگن یکپارچه هستش و بهینه تر از قبله و از نسخه 10 به بعد بصورت اجباری باید از androidx به جای support library استفاده بشه. پست بعدی رو از دست ندید که قراره نحوه ساخت این تب لایوت رو آموزش بدم.