دوست عزیز! samiasoft خیلی تشکر اطلاعات مفیدی دادی! (یاشاسین!)
البته به گفته خود گوگل استفاده از + برای استفاده از کتابخانه ها میتونه به ساخت های غیر قابل پیش بینی و غیر قابل برگشت ممکن شود و البته توصیه هم نمی شود بهتر از نسخه ها با شماره معتبر استفاد بشه.!
Avoid using + in version numbers; can lead to unpredictable and unrepeatable builds (com.android.support:cardview-v7:+)
Using + in dependencies lets you automatically pick up the latest available version rather than a specific, named version. However, this is not recommended; your builds are not repeatable;
you may have tested with a slightly different version than what the build server used.
(Using a dynamic version as the major version number is more problematic than using it in the minor version position.)
واقعیت اش اینکه از api 27 برای کامپایل استفاده کنید و گریدل رو به روز کنی بستگی به پروژه شما و شرایط کاری تون داره.!
معمولا تو پروژه هایی که نسخه Final دارن و مثلا با sdk های پایینتر و حتی از جاوا 1.7 برای کامپایل استفاده کردن دیگه نمیان نسخه ای که stable شده رو بخوان مثلا با sdk27 دوباره کامپایل کنن که البته هزار تا warning و امثال هم بده.
ولی خوب اینکه به روز باشی و بتونی پروژه تونو با آخرین sdk کامپایل کنید و از جاوا 8 مثلا استفاده کنید حداقل اش این هست که فرض کنید برای اینکه رابط کاربری بهتری داشته باشید بیایی چند تا app که مطرح هستند البته تو خارجی هارو عرض میکنم از نظر UI/UX تست کنی و ایده بگیری و بعد دوست داری این تکنیکها رو تو app خودت هم استفاده کنی و شاید متریالهایی که اون برنامه استفاده کرده تو sdk های بالاتر باشه ویا برای استفاده بهینه تر از اونها از جاوا 8 استفاده کردن.!
خوب حالا شما میرید دنبال این که ببنید چطور این امکانات رو در برنامه خودتون که با sdk پایینتر هست استفاده کنید! در صورتی که تو همون sdk های بالاتر خود تیم اندروید برای شما اون تغییرات انجام داده پس درد سر کمتری خواهید داشت.
ویا فرض کنید که چقدر کدنویسی کمتری و تمیزتری دارید وقتی از جاوا 8 و sdk 26,27 استفاده میکنید مثلا استفاده از جویبارها در لیست های پیوندی(Stream Collection).
مثلا همین Casting Viewsهای بیخود که تا قبل از sdk26 وجود داشتند فکر کنید چقدر کدها شلوغ بودن حالا چقدر راحت تر شده...
/*findviewbyid syntax usage in sdk 25 */
EditText edtText = (EditText) findviewById(R.Id.myEditText);
/*findviewbyid syntax usage in sdk 26 or 27 */
EditText edtText = findviewById(R.Id.myEditText);
راستشو بخواهید من هم از این اندروید استودیو و اشکالاتی که داره خیلی خسته شدم برای همین دارم روی پروژ های کراس پلت فرم کار میکنم یکی از دلیل هاشم اینه که خیلی سرراست میتونی برنامه بنویسی البته پیچیدگی های خودشو داره البته الان دارم با Qt کار میکنم که البته باید شی گرایی و ++C رو خوب بلد باشید.
مثلا همونطور که میدونید چند خط باید کد بنویسیم تا یک list view رو تو اندروید نشون بدیم از کلاس آداپتر تا کلاس خود view و لایه ui...
حالا همون list view تو اندروید با QML تو فریم وورک Qt که خیلی سر راست هستش یعنی لایه ui رو با QML میسازید و لایه های دیگه رو با ++C ...
ScrollView {
anchors.fill: parent
ListView {
width: parent.width
model: 20
delegate: ItemDelegate {
text: "Item " + (index + 1)
width: parent.width
}
}
}
اینم تصویر اجرا شده اش...!
Untitled.png