برخلاف سری قبلی که خیلی طول کشید تا نسخهی جدیدی از حِلما منتشر بشه، ایندفعه توی کمتر از یک هفته نسخهی ۰٫۲٫۰ هم منتشر شد. دلیلش اینه که در نسخهی قبلی، داخل پروژه اندرویدی که حِلما تولید میکرد از قابلیتهای آخرین نسخهی کتابخونهی دگر۲ (نسخهی ۲.۱۱) استفاده نمیشد و نیاز بود تا حِلما بهروز بشه. مهمترین تغییر این نسخهی حلما استفاده از ماژول اندروید کتابخونه دگر هست که شکل تزریق وابستگیها به اکتیویتی و فرگمنت رو کاملا عوض میکنه. در ادامه میتونید لیست تغییرات جدید رو ببینید. ادامه …
اگر پروژههاتون رو براساس الگوی معماری MVP درست میکنید، احتمالا از ساخت فایلهای اضافه برای هر اکتیویتی یا فرگمنت خسته شدید. اینجاس جنریتور میتونه کلی از کارتون کم کنه! و این وظیفه رو به عهده بگیره. خودم از وقتی که نسخهی خیلی اولیه جنریتور رو منتشر کردم، ازش استفاده میکنم. مزیت جنریتور در ساخت فایلهای مرتبط با MVP و … نسبت به روشهای دیگه اینه هم سریعتر هست و هم اینکه مثل روش کپی پیست باگ تولید نمیکنه (مثلا پیش نمیاد یادتون بره یه فیلد رو rename کنید).
توی این مدت یه سری مشکلات داخلش پیدا کردم. بین پروژهها دو روزی فرصت شد تا برای بهبود و توسعهاش وقت بذارم. البته مهمترین مشکل نسخهی قبل نداشتن راهنما برای استفاده بود. در ادامه تغییرات جدید و نحوهی استفاده از جنریتور رو براتون توضیح میدم. ادامه …
همینطور که از عنوان پست معلومه، اسم جنریتور حِلما هست و نسخهی ۰٫۰٫۱ با نام generator-helma-mvp در npm منتشر شده. پروژه opensource هست و سورسش رو هم توی گیتهابم گذاشتم:
https://github.com/abbas-oveissi/generator-helma-mvp
اول تصمیمم این بود که تا مدت زیادی خودم استفاده کنم و بعد که دیگه هیچ مشکلی نداشت، منتشرش کنم. ولی بعد نظرم عوض شد، چون الان اگه کسی دوست داشت میتونه از روی سورس برای خودش جنریتور دیگهای درست کنه و یا حتی توی همین پروژه همکاری کنه. مورد دوم رو در بخش همکاری بیشتر توضیح میدم. ادامه …
وقتی برنامهنویسی اندروید رو تازه شروع کرده بودم، برای انجام پروژهها از گزینهی new project اندروید استودیو استفاده میکردم. بعد از مدتی احساس کردم که اینجوری زمان زیادی رو الکی هدر میدم، چون موقع شروع هر پروژه باید کارهای تکراری زیادی مثل اضافه کردن dependencyها، تغییر فایل build.gradle، کپی کردن کلاسهای کمکی مثل تاریخ شمسی و … رو انجام میدادم.
برای حل این مشکل، یک پروژه ساختم و همهی کارهای مقدماتی رو داخلش انجام دادم. در ادامه از این پروژه به عنوان پایهی پروژههای جدید بعدی استفاده میکردم. یعنی ازش یک نسخه کپی میگرفتم و اسامی داخل پروژه مثل package name رو عوض میکردم. این روش دو تا ضعف داشت:
- خود این راهحل زمانگیر بود و باید اسامی رو همه جای پروژه تغییر داد.
- گاهی پیش میاد یکی دو جا از دست آدم در بره و همهی اسامی درست تغییر نکنند که باعث میشه اپ کرش کنه و نیاز به عیبیابی داشته باشه.