Android 17 برای برنامه نویس ها؛ 17 تغییر مهم و چک لیست مهاجرت

Android 17 برای برنامه نویس ها؛ 17 تغییر مهم و چک لیست مهاجرت

Android 17 فقط چند API تازه اضافه نکرده است. این نسخه روی حافظه، شبکه محلی، OTP، TLS، اعلان سفارشی، WebView، MessageQueue، دستگاه های بزرگ و ارتباط میان دستگاه ها تغییراتی دارد که می توانند برنامه موجود را حتی قبل از افزایش targetSdkVersion تحت تأثیر قرار دهند. این راهنما تغییرهای مهم و مسیر مهاجرت را روشن می کند.

Android 17 چه زمانی منتشر شد و چرا مهم است؟

گوگل Android 17 را در 16 ژوئن 2026 منتشر کرد و آن را روی بیشتر Pixelهای پشتیبانی شده ارائه داد. برای توسعه دهنده، انتشار آغاز مرحله سازگاری است؛ چون برنامه باید روی ترکیب های مختلف RAM، صفحه، پوسته و سخت افزار سازندگان آزمایش شود.

Android 17 دو گروه تغییر دارد: تغییرات All Apps و تغییرات برنامه های Target API 37. اشتباه رایج این است که تیم تا زمان افزایش targetSdk تست را عقب بیندازد؛ درحالی که محدودیت حافظه و بعضی رفتارهای سیستم می توانند نسخه فعلی را نیز تحت تأثیر قرار دهند.

1) مجوز شبکه محلی

برنامه های Target 17 برای دسترسی به دستگاه های شبکه محلی به مجوز مناسب در گروه Nearby Devices نیاز دارند. این تغییر برای IoT، چاپگر، Cast، دوربین، بازی LAN و مدیریت شبکه حیاتی است. اتصال به IP داخلی یا Discovery سرویس دیگر نباید دسترسی عادی شبکه فرض شود.

مجوز را هنگام استفاده واقعی درخواست کنید، نه ابتدای برنامه. حالت رد، رد دائمی، لغو از Settings و نبود دستگاه را جدا مدیریت کنید. Hotspot، شبکه مهمان، IPv6 و Router دارای Client Isolation را نیز تست کنید.

2) محافظت بیشتر از OTP

Android 17 دسترسی فوری برنامه های غیر اولویت دار به رمز یک بارمصرف SMS را محدودتر می کند؛ حتی اگر مجوز پیامک داشته باشند. هدف کاهش سرقت OTP است. برنامه بانکی، فروشگاهی و احراز هویت باید این تغییر را در جریان Login ببیند.

به خواندن مستقیم SMS وابسته نباشید. از API رسمی بازیابی، Autofill و Passkey استفاده کنید و ورودی دستی را حفظ کنید. Timeout، ارسال مجدد و دستگاه های مختلف باید آزمایش شوند.

3) ECH و Certificate Transparency

ECH بخشی از اطلاعات اولیه TLS مانند نام دامنه را رمز می کند تا مشاهده گر شبکه مقصد را آسان تشخیص ندهد. این تغییر حریم خصوصی را بهبود می دهد، اما ممکن است Proxy سازمانی یا Inspection قدیمی را تحت تأثیر قرار دهد.

Certificate Transparency نیز جدی تر می شود. تیم های دارای Pinning، TLS Inspection و دامنه خصوصی باید Stage را بررسی کنند. خطای TLS را با Trust-all حل نکنید؛ زنجیره گواهی، زمان دستگاه و Network Security Configuration را اصلاح کنید.

4) محدودیت حافظه

Android 17 محدودیت حافظه را متناسب با RAM دستگاه جدی تر اعمال می کند. برنامه ای که روی گوشی پرچم دار سالم است ممکن است روی میان رده Crash کند. Bitmap بزرگ، Cache بدون سقف، WebView و نگه داری Context عوامل رایج اند.

Peak Memory، Native و GPU Memory و Heap Growth پس از Navigation را اندازه بگیرید. مسیرهای تصویر، ویدئو، نقشه و چندبار بازوبسته کردن صفحه را روی دستگاه ضعیف تست کنید.

5) MessageQueue بدون Lock

Target 17 یک پیاده سازی Lock-free از MessageQueue می گیرد که برای کاهش Frame از دست رفته طراحی شده است. کد استاندارد باید سالم باشد، ولی Library وابسته به Reflection روی فیلد خصوصی ممکن است بشکند.

Log مربوط به Reflection و IllegalAccess را بررسی و Library قدیمی را ارتقا دهید. تکیه بر API خصوصی قرارداد پایداری ندارد و با تغییر Static Final محدودتر شده است.

6) غیرقابل تغییرشدن static final

برنامه Target 17 نمی تواند static final را با Reflection تغییر دهد. Reflection خطای IllegalAccessException و JNI ممکن است Crash ایجاد کند. Framework تست یا Mock قدیمی می تواند به این رفتار وابسته باشد.

Mock را به Dependency Injection، Interface یا Configuration Provider منتقل کنید. Unit و Instrumentation Testها را قبل از افزایش Target کامل اجرا کنید.

7) Contacts Picker

Contacts Picker اجازه می دهد کاربر بدون مجوز کامل دفترچه تلفن، مخاطب محدود را انتخاب کند. برای دعوت دوست، انتخاب گیرنده و فرم ها مناسب است و برنامه فقط داده انتخاب شده را می گیرد.

حالت لغو، مخاطب بدون شماره، چند شماره، حذف مخاطب و داده بین المللی را مدیریت کنید. این روش اعتماد بیشتری از درخواست READ_CONTACTS برای یک کار کوچک ایجاد می کند.

8) Handoff میان دستگاه ها

Handoff اجازه می دهد کار روی یک دستگاه آغاز و روی دستگاه دیگر ادامه پیدا کند؛ مانند خواندن، خرید یا ویرایش سند. State باید کوچک، قابل انقضا و امن طراحی شود.

بهتر است شناسه کوتاه منتقل شود و دستگاه مقصد پس از احراز هویت داده را از سرور بگیرد. Conflict، نسخه متفاوت برنامه و قطع اتصال را در طراحی ببینید.

9) صفحه های بزرگ و Resize

Opt-out محدودیت Orientation و Resize روی صفحه بزرگ در Target 17 کمتر می شود. برنامه Portrait-only ممکن است روی تبلت و Foldable کشیده یا ناقص نمایش داده شود.

Window Size Class، Responsive Layout، Split-screen و تغییر اندازه زنده را تست کنید. صفحه Compileشده لزوماً تجربه قابل استفاده ندارد.

10) User-Agent کوتاه تر WebView

رشته User-Agent پیش فرض WebView کوتاه تر می شود. Backend وابسته به تشخیص مدل یا نسخه از UA ممکن است رفتار اشتباه داشته باشد.

Feature Detection و Protocol صریح را جایگزین Parsing UA کنید. Analytics و Fraud Detection را نیز برای False Positive بررسی کنید.

11) حافظه اعلان سفارشی

Custom View اعلان با تصویر یا Layout سنگین کنترل حافظه سخت گیرانه تری می گیرد. پیام رسان، موسیقی و حمل ونقل باید اعلان غنی را تست کنند.

از Template استاندارد، تصویر کوچک و Fallback ساده استفاده کنید. MetricStyle می تواند برای سلامت، تایمر و سفر جایگزین مناسب تری باشد.

12) ProfilingManager و JobDebugInfo

Triggerهای جدید ProfilingManager و JobDebugInfo عیب یابی Performance و JobScheduler را دقیق تر می کنند. برنامه دارای Sync، Upload و کار دوره ای از این ابزار سود می برد.

Telemetry را کنترل شده جمع کنید. هدف فهم دلیل Deferred یا Cancel شدن Job است، نه ذخیره بیش از حد داده دستگاه.

13) Bluetooth و RFCOMM

Android 17 بازسازی Bond در پس زمینه و رفتار سازگارتر BluetoothSocket با InputStream را ارائه می کند. تجهیزات پوشیدنی، صنعتی و خودرو باید Timeout و Reconnect را تست کنند.

فرض نکنید هر Read دقیقاً تعداد بایت درخواستی می دهد. Packet Framing و Loop اتصال مجدد را درست پیاده سازی کنید.

14) صدای مستقل Assistant

جریان صدای مستقل Assistant اجازه می دهد حجم دستیار از Media جدا شود. این موضوع برای دستیار صوتی، خودرو و ابزار دسترس پذیری مفید است.

Bluetooth، Headset، تماس، Alarm و Audio Focus را آزمایش کنید. پخش صوت بدون Lifecycle درست با برنامه های دیگر تداخل ایجاد می کند.

15) Advanced Protection و امضای پساکوانتومی

Advanced Protection Mode کنترل های قوی تر برای کاربر پرریسک و پشتیبانی امضای پساکوانتومی APK را ارائه می کند.

فرایند Build، نگه داری کلید، Play App Signing و Recovery را مستند کنید. برنامه را در حالت امنیتی سخت گیرانه نیز تست کنید.

16) بازسازی کمتر Activity

برای برخی تغییرات Configuration، سیستم Activity را کمتر Restart می کند تا State و Frame حفظ شود. برنامه وابسته به Restart برای Refresh ممکن است رفتار متفاوت ببیند.

State را با Lifecycle، ViewModel و منبع داده معتبر مدیریت کنید. Rotation، Keyboard و Color Mode را جدا تست کنید.

17) QPR و تست مستمر

انتشار اصلی پایان تغییرات نیست. QPRها اصلاح و قابلیت را دوره ای به AOSP و Pixel می آورند.

Matrix تست شامل نسخه پایدار، QPR، دستگاه کم حافظه، تبلت و یک سازنده دیگر بسازید و Crash و ANR را پس از Update سیستم رصد کنید.

جدول اولویت مهاجرت Android 17

حوزهریسکبرنامه حساساقدام فوری
شبکه محلیبالاIoT و LANمجوز Nearby Devices
OTPبالااحراز هویتAPI رسمی و ورود دستی
حافظهبالاتصویر و WebViewPeak Memory روی دستگاه ضعیف
Reflectionمتوسط تا بالاFramework قدیمیحذف API خصوصی
صفحه بزرگمتوسطPortrait-onlyResize و Foldable
WebView UAمتوسطDevice DetectionFeature Detection

اولویت را با Feature Usage و Crash واقعی برنامه تنظیم کنید. برنامه IoT با شبکه محلی درگیر است، اما برنامه محتوایی ممکن است بیشتر از WebView و صفحه بزرگ آسیب ببیند.

راهنمای اجرای حرفه ای

  1. یک مسئله واقعی و محدود از پروژه انتخاب کنید و نتیجه موردانتظار را مکتوب کنید.
  2. منبع رسمی، نسخه محصول و محدودیت منطقه یا حساب را ثبت کنید.
  3. آزمایش را با داده غیرحساس و دسترسی حداقلی اجرا کنید.
  4. معیارهای کیفیت، زمان، هزینه و خطا را قبل از اجرا تعیین کنید.
  5. نتیجه را با تست خودکار یا بررسی انسانی مستقل اعتبارسنجی کنید.
  6. برای شکست سرویس، رد مجوز یا پاسخ نامطمئن مسیر جایگزین داشته باشید.
  7. پس از Rollout، Telemetry و بازخورد کاربر را بررسی و مستندات را به روز کنید.
  8. compileSdk و targetSdk را در Branch جدا به 37 ارتقا دهید.
  9. روی تبلت، Foldable و دستگاه کم حافظه تست کنید.

مهاجرت را به Ticketهای مستقل تقسیم کنید: شبکه، OTP، حافظه، UI، Reflection و اتصال. Rollout مرحله ای و امکان توقف انتشار داشته باشید.

محدودیت ها و ریسک ها

پرسش های متداول

آیا بدون افزایش targetSdk برنامه تحت تأثیر قرار می گیرد؟

بله. تغییرات All Apps هنگام اجرا روی Android 17 اعمال می شوند.

مهم ترین ریسک مهاجرت چیست؟

شبکه محلی، OTP، حافظه و Reflection برای بسیاری از برنامه ها اولویت بالایی دارند.

API level Android 17 چیست؟

Android 17 از API level 37 استفاده می کند.

آیا Contacts Picker جای READ_CONTACTS را می گیرد؟

برای انتخاب محدود مخاطب گزینه خصوصی تر و مناسب تری است، اما همه سناریوها را پوشش نمی دهد.

چگونه Rollout کنیم؟

با Branch مهاجرت، تست Matrix، انتشار مرحله ای و Monitoring Crash و ANR.

نکات تکمیلی برای تصمیم گیری و نگه داری

برای تصمیم گیری حرفه ای، بهتر است قابلیت یا فناوری موردبحث را به یک آزمایش کوچک و قابل اندازه گیری تبدیل کنید. ورودی، انتظار، محدودیت، شرایط شکست و معیار پذیرش را پیش از اجرا بنویسید. نتیجه را فقط با ظاهر پاسخ یا جذابیت دمو نسنجید؛ اثر آن بر زمان تیم، نرخ خطا، هزینه، امنیت، نگه داری و تجربه کاربر باید ثبت شود.

مستندات رسمی نقطه شروع اند، اما رفتار واقعی می تواند به نسخه، منطقه، زبان، پلن، سخت افزار، سطح دسترسی یا تنظیمات سازمانی وابسته باشد. هر قابلیت تازه را ابتدا در محیط آزمایشی، با داده غیرحساس و دسترسی محدود فعال کنید و نسخه ابزار و تنظیمات را ثبت کنید تا اختلاف نتیجه قابل بازتولید باشد.

تیم باید برای حالت شکست طراحی داشته باشد. اگر سرویس در دسترس نبود، قابلیت پشتیبانی نشد، مدل پاسخ نامطمئن داد، مجوز رد شد یا اتصال ابزار شکست خورد، کاربر نباید در بن بست بماند. Fallback، پیام خطای روشن، تلاش مجدد کنترل شده و مسیر انسانی بخشی از طراحی محصول اند.

پس از انتشار نیز Monitoring را ادامه دهید. نرخ موفقیت، خطا، زمان، هزینه و بازخورد کاربران می تواند نشان دهد فرض اولیه دقیق نبوده است. مستندات داخلی و مقاله فنی باید با تغییر نسخه ها به روزرسانی شوند؛ راهنمای قدیمی در موضوعات سریع فناوری گاهی از نبود راهنما خطرناک تر است.

موضوع را از زاویه معماری نیز ببینید. قابلیت جدید ممکن است در سطح کاربر جذاب باشد، اما در Backend به مجوز، Audit، Queue، Retry، Idempotency، Cache، محدودیت Rate و کنترل داده نیاز داشته باشد. نادیده گرفتن این لایه ها باعث می شود نمونه اولیه خوب به سرویس Production ناپایدار تبدیل شود.

از منظر تیم، Ownership باید مشخص باشد. یک نفر یا واحد باید مسئول Policy، داده مرجع، کیفیت خروجی، رخدادها و تصمیم توقف قابلیت باشد. وقتی مالک مشخص نیست، خطا میان تیم فنی، محصول، امنیت و عملیات جابه جا می شود و اصلاح پایدار رخ نمی دهد.

جمع بندی سریع

  • تغییرات All Apps را همین حالا تست کنید.
  • شبکه محلی، OTP، حافظه و Reflection را اولویت دهید.
  • روی تبلت و دستگاه ضعیف آزمایش واقعی انجام دهید.
  • مهاجرت را مرحله ای و قابل برگشت اجرا کنید.

یک Branch مهاجرت بسازید و چک لیست این مقاله را روی برنامه واقعی اجرا کنید.

منابع رسمی

فهرست رسمی تغییرات Android 17 — مرجع Feature و Behavior Change

تغییرات همه برنامه ها — تغییرات مستقل از targetSdk

تغییرات Target 17 — مرجع API level 37

اعلام انتشار Android 17 — زمان انتشار و نکات اصلی

مطالب پیشنهادی

GitHub Code Quality چیست؟ راهنمای کامل کنترل کیفیت کد قبل از Merge

GitHub Code Quality چیست؟ راهنمای کامل کنترل کیفیت کد قبل از Merge

GitHub Code Quality را از تحلیل CodeQL و هوش مصنوعی تا Coverage، Quality Gate، هزینه ها و روش فعال سازی مرحله ای در تیم، دقیق و کاربردی بشناسید.

Secret Scanning گیت هاب چیست؟ راهنمای کامل Public Monitoring و واکنش به نشت کلید

Secret Scanning گیت هاب چیست؟ راهنمای کامل Public Monitoring و واکنش به نشت کلید

راهنمای کامل Secret Scanning و Public Monitoring گیت هاب؛ دامنه اسکن، Attribution، واکنش صحیح به نشت کلید، Push Protection و فعال سازی Enterprise.

ابزار مرورگر GitHub Copilot در VS Code چیست؟ راهنمای تست و دیباگ واقعی

ابزار مرورگر GitHub Copilot در VS Code چیست؟ راهنمای تست و دیباگ واقعی

راهنمای کامل Browser Tools گیت هاب کوپایلت در VS Code؛ از کلیک و Console تا Screenshot، Playwright، تست Flow واقعی، امنیت و محیط های Remote.

برنامه نویسی چیست؟ توضیح ساده

برنامه نویسی چیست؟ توضیح ساده

برنامه نویسی یعنی گفت وگو با رایانه با زبان دقیق. ما گام به گام می آموزیم دستور بنویسیم، خطا بگیریم و برنامه بسازیم. با مثال های مدرسه و بازی ها، مفاهیم پایه مثل الگوریتم، کُد، دیباگ و کامپایلر را ساده می شناسیم و یک مسیر تمرینی کوتاه شروع می کنیم.