View Full Version : خطا در کاهش API برنامه در اندروید استدیو
mohammad1408
سه شنبه 18 مهر 1396, 17:21 عصر
سلام
من برنامه ایی رو طراحی کردم که در قسمتی از آن لاگین و ثبت نام و ارسال اس ام اس داره
وقتی روی گوشی های مختلف اجراش میکردم دیدم روی گوشی هایی که اندرویدشون کمتر از 6 هست برنامه باز میشه ولی قسمت ارسال اس ام اس کار نمیکنه و از برنامه میاد بیرون
خب فهمیدیم که مال ورژن برنامه است که توی برنامه زده sdk 25 من وقتی برنامه رو ایجاد کردم از همون اول sdk رو روی 15 تنظیم کردم حالا روی 25 داخل فایل gradel تنظیم شده و فقط min sdkversion روی 15 تنظیم شده، وقتی اومدم ورژن رو تغییر بدم به من میگه که سینک بکن و باید دانلود بکنم فایل ها sdk15 رو که دانلود میکنم ولی بعدش خطا میده همه چی میریزه به هم
جالبیش اینه که اومدم یه پروژه جدید ایجاد کردم و به اون هم گفتم API 19 که اندروید ورژن 4.4 میشه برام بساز وقتی ساختم دیدیم باز هم غیر از min sdkversin ما بقی مولفه ها روی 25 تنظیم شده و باز هم وقتی خواستم با کلید های ترکیبی ctrl+alt+shift+s ورژن رو تغییر بدم بعد از درخواست سینک کردن برنامه، به برنامه ایی که هیچ کدی نداره هم خطا میده
نمیدونم والا چیکار کنم ممنون میشم کمکم کنین
با تشکر
#root#
چهارشنبه 19 مهر 1396, 06:03 صبح
ببینید شما وقتی پروژه ایجاد می کنید در Wizard مربوط Min SDK رو تعیین می کنید نه چیز دیگه، Target SDK هم بصورت خودکار تنظیم میشه، که اصولا باید رو آخرین نسخه از API اندروید باشه.
به نظرم شما راه اشتباهی برای حل مشکلتون انتخاب کردید، اینکه خطای برنامه با تغییر Target SDK یا امثالش حل بشه یعنی پاک کردن صورت مسئله، بهتره با توجه به Logcat در پی یافتن راه حل مناسب باشید.
mohammad1408
چهارشنبه 19 مهر 1396, 18:26 عصر
سلام
ممنون از وقتی که گذاشتین، حرف شما صحیحه پس با این تفاسیر ما چه جوری باید برای اندروید هایی ورژن پایین تر برنامه بنویسیم؟
اگر بلافاصله بعد از ایجاد پروژه باید target ورژن رو تغییر داد بنده نیز این کار رو کردم در یک پروژه جدید ولی باز هم خطا میده به کتابخونه هاش
و سوال دیگه اینکه الان برنامه ایی رو نوشتم وقت هم گذاشتم براش الان راه چاره ایی هست یا الفاتحه ؟
به فایل های gradle خطا میگیره چه در پروژه خودم و چه در پروژه جدیدی که اجرا میکنم
#root#
پنج شنبه 20 مهر 1396, 08:23 صبح
با این تفاسیر ما چه جوری باید برای اندروید هایی ورژن پایین تر برنامه بنویسیم؟
Min SDK یعنی حداقل API ی که برنامه شما میتونه روی اون نصب و اجرا بشه.
اگر بلافاصله بعد از ایجاد پروژه باید target ورژن رو تغییر داد بنده نیز این کار رو کردم
چرا این کار رو می کنید؟ با کدوم منبع دارید پیش میرید؟
اگر بلافاصله بعد از ایجاد پروژه باید target ورژن رو تغییر داد بنده نیز این کار رو کردم در یک پروژه جدید ولی باز هم خطا میده به کتابخونه هاش
و سوال دیگه اینکه الان برنامه ایی رو نوشتم وقت هم گذاشتم براش الان راه چاره ایی هست یا الفاتحه ؟
نسخه کتابخونه های Support و TargetSDK باید یکی باشه.
mohammad1408
پنج شنبه 20 مهر 1396, 23:02 عصر
Min SDK
یعنی حداقل API ی که برنامه شما میتونه روی اون نصب و اجرا بشه.
بله تو برنامه من 15 هستش ولی خب تغیرش دادم کردمش 19 در gradle
Min SDK
چرا این کار رو می کنید؟ با کدوم منبع دارید پیش میرید؟
پس چه کاری بکنم؟ راه حل بهتری دارین؟راستش من چند تا فیلم آموزشی دارم میبینم و توی اون فیلم نگفته برای نسخه های پایین اندروید در اندروید استدیو چه کاری باید بکنم این قضیه کاهش نسخه هم توی اینترنت بهم پیشنهاد دادن اگه کار دیگه ایی میشه کرد بفرمایید من انجام میدم ممنون میشم
Min SDK
نسخه کتابخونه های Support و TargetSDK باید یکی باشه.
دستی تغییر بدم؟ فرمت خاصی داره مثل اینکه این فرمتی که داره رو نمیدونم چه جور تغییر بدم برای مثال در خط زیر نوشته شده 25.3.1 اگه target روی 19 باشه کلا بنویسم 19 و بعد نقطه ها چیزی نذارم؟ اگر چیزی نذارم به غیر از عدد 19 ،خط قرمز زیر این عبارت از بین میره ولی سینک نمیکنه با این که با فیلتر شکن به اینترنت وصلم خطا میده که هیچ پکیجی فعال نیست و...
compile 'com.android.support:appcompat-v7:25.3.1'
#root#
جمعه 21 مهر 1396, 07:27 صبح
پس چه کاری بکنم؟ راه حل بهتری دارین؟راستش من چند تا فیلم آموزشی دارم میبینم و توی اون فیلم نگفته برای نسخه های پایین اندروید در اندروید استدیو چه کاری باید بکنم این قضیه کاهش نسخه هم توی اینترنت بهم پیشنهاد دادن اگه کار دیگه ایی میشه کرد بفرمایید من انجام میدم ممنون میشم
دوست من دیدید راجب Min SDK چی گفتم؟ اون یعنی پشتیبانی از نسخه های پایین. وقتی مثلا ۱۷ باشه برنامه شما میتونه روی نسخه های ۱۷ و بالاتر نصب بشه.
البته این صرفا در بحث نصب شدن برنامه هست، در بحث کدنوشتن یک سری جزئیات هست که ممکنه نیاز باشه رعایت کنید، مثلا از API 23 دسترسی ها باید بصورت Runtime از کاربر گرفته بشن و یا موارد دیگه.
منبع هم گفتید توی اینترنت، خب منبع همه اغلب اینترنت هست، اگر لینکی دارید قرار بدید بخونیم.
دستی تغییر بدم؟ فرمت خاصی داره مثل اینکه این فرمتی که داره رو نمیدونم چه جور تغییر بدم برای مثال در خط زیر نوشته شده 25.3.1 اگه target روی 19 باشه کلا بنویسم 19 و بعد نقطه ها چیزی نذارم؟ اگر چیزی نذارم به غیر از عدد 19 ،خط قرمز زیر این عبارت از بین میره ولی سینک نمیکنه با این که با فیلتر شکن به اینترنت وصلم خطا میده که هیچ پکیجی فعال نیست و...
compile 'com.android.support:appcompat-v7:25.3.1'
ببینید قبلا هم گفتم Target باید روی آخرین API باشه، الان که برای شما ۲۵ هست و نسخه SupportLib هم ۲۵.۳.۱ هست درسته، در نسخه SupportLib اون عدد اول مد نظر هست.
حالا شما Target رو اگر روی ۱۹ قرار بدید یعنی مجبورید از SupportLib نسخه قدیمی استفاده کنید که یک سری امکانات رو در مقایسه با نسخه های جدید نداره + مواجهه با ایرادات و باگ های بیشتر.
این مقاله رو هم بخونید:
https://medium.com/google-developers/picking-your-compilesdkversion-minsdkversion-targetsdkversion-a098a0341ebd
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.