ورود

View Full Version : نوشتن برنامه ای که همه گوشی ها و تبلت ها رو ساپورت کنه



ahmad_lovely
سه شنبه 17 بهمن 1391, 00:36 صبح
با سلام
من تازه برنامه نویسی آندروید رو شروع کردم، از اساتیدی که تجربه ی این برنامه نویسی رو دارن ممنون میشم کمکم کنن!
چطوری می تونم برنامه ای بنویسم که همه گوشی های آندروید و تبلت ها رو ساپورت کنه؟
لطفا مبتدی توضیح بدید
با تشکر

Nevercom
سه شنبه 17 بهمن 1391, 01:21 صبح
هنوز هم سهم زیادی از بازار مربوط به Gingerbread و Froyo هست (Froyo کمتر)، البته هر روز تعداد بیشتری از دستگاه ها از اندروید ۴ به بعد استفاده می کنن.
پس برای پشتیبانی همه ی دستگاه ها بهتره از API 8 به بعد رو ساپورت کنید.

بعضی از متد ها و قابلیت ها در نسخه های قبلتر وجود ندارن، باید نسبت به استفاده از این متدها و قابلیت ها دقت داشته باشید.
گرچه گوگل کتابخانه ای رو منتشر کرده که قابلیت هایی مثل Fragment رو برای ورژن های پایین تر مهیا میکنه، اما باز هم تمام امکانات پوشش داده نمیشه.

مثلاً ActionBar در نسخه های قبلتر وجود نداره، اما کتابخانه ی ActionBarSherlock این قابلیت رو برای نسخه های قبلتر فراهم میکنه.

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

ahmad_lovely
سه شنبه 17 بهمن 1391, 11:27 صبح
من برنامه ای که میخوام بنویسم طوری باشه روی همه نسخه های اندروید بشه نصب کرد، یعنی باید چند نسخه از برنامه م تولید کنم!
پیشنهاد شما چیه؟

Nevercom
سه شنبه 17 بهمن 1391, 12:33 عصر
اینجا رو ببینید: http://androiddev.ir/about/dashboards/index.html
سهم هر ورژن از اندروید رو تا نوامبر 2012 میتونید ببینید (چون دسترسی مستقیم به developer.android.com نمیشه داشت این لینک رو گذاشتم)
این گراف نشون میده که اگر API 8 رو هدف قرار بدید نزدیک به 98٪ دستگاه های موجود میتونن برنامه تون رو اجرا کنن.
گرچه میتونید برای نسخه های مختلف، apkهای متفاوتی ارائه کنید. اما این در صورتی هست نشه با امکانات موجود، در یک نسخه از برنامه همه ی گوشی ها رو ساپورت کرد.

به هرحال ممکنه برنامه ای بنویسید که تا نسخه های قبلتر از API 8 رو هم ساپورت کنه، چون عرض کردم، بستگی به این داره که از چه امکاناتی در برنامه تون استفاده کنید.
وقتی در مانبفست minSdkVersion رو تعیین کنید، در بیشتر مواقع حین کدنویسی اخطارهایی رو دریافت میکنید که قابلیتی که ازش استفاده کردید با minSdkVersion همخوانی نداره.

ahmad_lovely
سه شنبه 17 بهمن 1391, 13:44 عصر
ممنون از راهنماییتون، کم کم دارم به این نتیجه می رسم که چند نسخه تولید کنم بهتره، چون که قطعا ورژن های بالای اندروید، یه سری امکانات بهتری نسبت به قبلی ها دارن، حالا اگر من بخوام یه نسخه تولید کنم که توی همه ورژن های اندروید اجرا بشه، باید دور امکانات جدیدتر رو خط بکشم، پس بهتره که چند نسخه تولید کنم که بتونم از امکانات بهتره ورژن های بالاتر هم استفاده کنم



گرچه میتونید برای نسخه های مختلف، apkهای متفاوتی ارائه کنید. اما این در صورتی هست نشه با امکانات موجود، در یک نسخه از برنامه همه ی گوشی ها رو ساپورت کرد.
در این مورد بیشتر توضیح میدید، چون من تو این زمینه تازه کارم ممنون میشم توضیح بیشتری بدید

در ضمن، فرق یک ورژن اندروید روی گوشی و تبلت، فقط همون اندازه ی صفحه س یا فرق دیگری هم دارن؟ یعنی اگر ورژن های اندروید گوشی و تبلت یکی باشه، هردو رو باید به یک دید نگاه کرد؟

Nevercom
سه شنبه 17 بهمن 1391, 22:39 عصر
تولید چند فایل apk هم دردسر خودش رو داره، حداقل اینکه چند نسخه ی مختلف رو باید ساپورت کنید.
ضمن اینکه شما می تونید تو کدنویسی چک کنید اگر ورژن خاصی بود یه سری کد دیگه اجرا بشه، یا نام فولدر های موجود در res رو به نحوی انتخاب کنید که برای نسخه های متفاوت از منابع متفاوتی استفاده بشه.

اول از همه ببینید چه قابلیتی رو باید استفاده کنید که در نسخه های قبلتر (تا API 8 یا API 10) موجود نیست، بعد از اون جستجو کنید که آیا راه حل جایگزین هست ؟
مثلاْ ActionBar رو مثال زدم، پروژه ی مشابهی برای استفاده از انیمیشن ها ی HoneyComb و بالاتر بر روی نسخه های قبلتر هست...
اگر کتابخانه ای برای کار شما موجود نیست، ببنید میتونید خودتون کدنویسیش رو انجام بدید ؟ مثلاً کلاس DownloadManager از نسخه ی API 10 (شایدم 11) ساپورت میشه، پس برای API 8 باید خودتون کلاسی برای دانلود بنویسید.

به هرحال قبل از هرچیز کامل تحقیق کنید که اگر مجبور بودید برنامه رو در چند بسته ی apk منتشر کنید، برای توضیحات بیشتر اینجا رو بخونید: http://developer.android.com/google/play/publishing/multiple-apks.html


در ضمن، فرق یک ورژن اندروید روی گوشی و تبلت، فقط همون اندازه ی صفحه س یا فرق دیگری هم دارن؟ یعنی اگر ورژن های اندروید گوشی و تبلت یکی باشه، هردو رو باید به یک دید نگاه کرد؟
فکر نمیکنم تفاوت خاصی داشته باشن، فقط تبلت ها لزوماْ قابلیت برقراری تماس و ارسال و دریافت SMS و این قبیل قابلیت ها رو ندارن.
برای توسعه ی برنامه برای تبلت یه سری توصیه ها و خط مشی ها وجود داره که تو developer.android.com مطالعه ش کنید، که بیشتر در مورد طراحی UI و استفاده بهینه از اندازه ی صفحه و این چیزهاست.

ahmad_lovely
چهارشنبه 18 بهمن 1391, 01:41 صبح
تولید چند فایل apk هم دردسر خودش رو داره، حداقل اینکه چند نسخه ی مختلف رو باید ساپورت کنید.
ضمن اینکه شما می تونید تو کدنویسی چک کنید اگر ورژن خاصی بود یه سری کد دیگه اجرا بشه، یا نام فولدر های موجود در res رو به نحوی انتخاب کنید که برای نسخه های متفاوت از منابع متفاوتی استفاده بشه.

اول از همه ببینید چه قابلیتی رو باید استفاده کنید که در نسخه های قبلتر (تا API 8 یا API 10) موجود نیست، بعد از اون جستجو کنید که آیا راه حل جایگزین هست ؟
مثلاْ ActionBar رو مثال زدم، پروژه ی مشابهی برای استفاده از انیمیشن ها ی HoneyComb و بالاتر بر روی نسخه های قبلتر هست...
اگر کتابخانه ای برای کار شما موجود نیست، ببنید میتونید خودتون کدنویسیش رو انجام بدید ؟ مثلاً کلاس DownloadManager از نسخه ی API 10 (شایدم 11) ساپورت میشه، پس برای API 8 باید خودتون کلاسی برای دانلود بنویسید.

به هرحال قبل از هرچیز کامل تحقیق کنید که اگر مجبور بودید برنامه رو در چند بسته ی apk منتشر کنید، برای توضیحات بیشتر اینجا رو بخونید: http://developer.android.com/google/play/publishing/multiple-apks.html


فکر نمیکنم تفاوت خاصی داشته باشن، فقط تبلت ها لزوماْ قابلیت برقراری تماس و ارسال و دریافت SMS و این قبیل قابلیت ها رو ندارن.
برای توسعه ی برنامه برای تبلت یه سری توصیه ها و خط مشی ها وجود داره که تو developer.android.com مطالعه ش کنید، که بیشتر در مورد طراحی UI و استفاده بهینه از اندازه ی صفحه و این چیزهاست.

خیلی خیلی ممنون از راهنمایی های مفیدتون