چند وقت پیش در بلاگم پستی با تیتر “سوالات متداول توسعه‌دهندگان تازه کار اندروید” نوشتم. سوال ۸ام اون پست “چطور میشه برنامه‌نویسی اندروید رو یاد گرفت؟” بود که جوابشو بصورت خلاصه نوشته بودم. این مقاله درواقع جواب کامل اون سوال هست و داخلش منابعی رو که خودم در سه سال گذشته ازشون استفاده کردم و برنامه‌نویسی اندروید یاد گرفتم رو بهتون معرفی میکنم. در طول این سه سال گذشته در هیچ شرکت یا تیم اندرویدی نبودم و فقط از منابع داخل این پست برای یادگیری اندروید استفاده کردم. در ادامه میتونید با این منابع و روشی که ازشون استفاده میکنم آشنا بشید.

train ادامه …

برای یادگرفتن برنامه‌نویسی روش‌های گوناگونی هست، مثلا میشه توی کلاس‌های حضوری و مجازی ثبت‌نام کرد یا بصورت خودخوان (self study) از منابع موجود در اینترنت استفاده کرد. اینکه کدوم روش برای شما مناسبه، بستگی به روحیات و سلیقتون داره. توی این پست قراره در رابطه با این صحبت کنیم که هر روش برای چه افرادی مناسب‌تر هست. چیزایی که در ادامه مینویسم چکیده‌ی تجربه‌‌ام از تعامل با برنامه‌نویسان تازه‌کار توی گروه‌های تلگرامی، فروم‌ها و کسایی که خصوصی بهشون درس دادم هست. منظورم اینه پشتوانه‌ی علمی نداره و فقط نظر تجربی و شخصیم هست.

1dd

ادامه …

شخصا برام درست کردن رابط کاربری خوشگل خیلی خیلی سخت هست. جدای اینکه بهترین کار اینه کسی باشه و بهش بگید براتون طرح کار رو بکشه😃 بعضی وقتا مجبورید خودتون اینکارو بکنید. در این مواقع یکی از راه‌ها اینه که از کارهای بقیه الگو بگیرید. امروز لیستی از سایت‌هایی که توی این راه بهتون کمک میکنند رو معرفی میکنم. ادامه …

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

گوگل توی همایش IO امسال ORM خودشو به اسم Room برای اندروید معرفی کرد. این ORM یه قسمت از پازل Architecture Components هست که شامل LiveData , ViewModel و … میشه. در ادامه نحوه‌ی استفاده شو توضیح میدم. ادامه …

آدم هر چقدر از مظلومیت برنامه‌نویسای اندروید بگه، کم گفته. حداقل یک روز کامل درگیر این بودم که چرا اکتیویتی پخش کننده‌ی ویدیو توو برنامه‌ام، موقع چرخش گوشی دوباره از اول ساخته میشه😐.  وقتی مشکل رو حل کردم، به سه دلیل تصمیم گرفتم که داستانش رو کامل بنویسم: ۱- با گفتنِ رنجی که کشیدم، آروم‌تر بشم😃 ۲- شاید به برنامه‌نویس‌های تازه‌کار کمک کنه که در مواجهه با مشکلات چیکار کنند ۳- اگر در آینده کسی همین مشکل منو داشت، بتونه با خوندن این پست درستش کنه.

ادامه …

همینطور که از عنوان پست معلومه، اسم جنریتور حِلما هست و نسخه‌ی ۰٫۰٫۱ با نام generator-helma-mvp در npm منتشر شده. پروژه opensource هست و سورسش رو هم توی گیت‌هابم گذاشتم:

https://github.com/abbas-oveissi/generator-helma-mvp

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

وقتی برنامه‌نویسی اندروید رو تازه شروع کرده بودم، برای انجام پروژه‌ها از گزینه‌ی new project اندروید استودیو استفاده می‌کردم. بعد از مدتی احساس کردم که اینجوری زمان زیادی رو الکی هدر میدم، چون موقع شروع هر پروژه باید کارهای تکراری زیادی مثل اضافه کردن dependencyها، تغییر فایل‌ build.gradle، کپی کردن کلاس‌های کمکی مثل تاریخ شمسی و … رو انجام می‌دادم.

برای حل این مشکل، یک پروژه‌ ساختم و همه‌ی کارهای مقدماتی رو داخلش انجام دادم. در ادامه از این پروژه به عنوان پایه‌ی پروژه‌های جدید بعدی استفاده می‌کردم. یعنی ازش‌ یک نسخه کپی می‌گرفتم و اسامی داخل پروژه مثل package name رو عوض می‌کردم. این روش دو تا ضعف داشت:

  1. خود این راه‌حل زمانگیر بود و باید اسامی رو همه جای پروژه تغییر داد.
  2. گاهی پیش میاد یکی دو جا از دست آدم در بره و همه‌ی اسامی درست تغییر نکنند که باعث میشه اپ کرش کنه و نیاز به عیب‌یابی داشته باشه.

ادامه …

تقریبا ۶ ماهی از نوشتن قسمت قبلی این پست می‌گذره. تو این مدت مثال‌های مختلفی از پیاده سازی معماری MVP توی اندروید رو بررسی کردم و با دیدن روش بقیه‌ی دولوپرها تغییراتی رو روی مثال MVPم در گیت هاب دادم. توی این پست به صورت خلاصه تغییرات و دلیل‌هاش رو براتون توضیح میدم. اینجوری هم شما می‌تونید راحت‌تر سورس پروژه رو بررسی کنید و هم اگه نظری در مورد دلیل تصیمیماتم داشتید، میتونید توی نظرات بنویسید.
اولین تغییری که با باز کردن سورس پروژه حتما متوجه می‌شید، اضافه شدن پکیچ‌های جدید به اسم di و interactors و pojos به پروژه هست. به ترتیب دلیل اضافه شدن و کارشون رو میگم. ادامه …

در حال حاضر بیشتر برنامه نویسان اندروید با ویژگی Instant Run که در اندروید استدیو۲ معرفی شد، آشنا هستند. با استفاده از این ویژگی زمان Build کردن پروژه ها بسیار کوتاهتر می شود. درواقع به جای اینکه با هر تغییر همه ی مراحل Build به صورت کامل انجام شود، کلاس هایی که تغییر یافته اند بعد از کامپایل شدن به گوشی منتقل شده و جایگزین کلاس های قدیمی می شوند. در شکل زیر به صورت کلی نحوه ی کارکرد Instant Run به تصویر کشیده شده است.

 

 

البته این قابلیت ایده ی نوینی نیست و در گذشته شرکت Zero Turnaround با تمرکز بر روی کاهش مدت زمان Build پروژه های Java EE، محصول خود با را با نام  JRebelعرضه کرده بود. همچنین این شرکت در تابستان سال ۹۴ نسخه ی آزمایشی محصول Jrebel for Android را در اختیار برنامه نویسان اندروید قرار داد. با توجه به اینکه شرکت Zero Turnaround زودتر از گوگل کار بر روی این ویژگی را آغاز کرده است، در حالات بیشتری می توانید از آن کمک بگیرید. برای اطلاعات بیشتر می توانید به این مقاله که در رابطه با مقایسه ی JRebel for android و Instant run است، رجوع کنید.

ادامه …