اندروید ۱۷ از راه رسید

۱۳ دقیقه مطالعه
مشاهده پروفایل متیو مک‌کالو
Matthew McCullough معاون رئیس، مدیریت محصول، توسعه‌دهنده اندروید

امروز ما اندروید ۱۷ را منتشر می‌کنیم و آن را در اکثر دستگاه‌های پیکسل پشتیبانی‌شده در دسترس قرار می‌دهیم. در ماه‌های آینده منتظر دستگاه‌های جدیدی باشید که اندروید ۱۷ را اجرا می‌کنند.

AfD-Android-17.gif

اندروید ۱۷ آغاز گذار ما به یک سیستم هوشمند است که برنامه‌های شما را در مرکز توجه قرار می‌دهد. اندروید با معرفی قابلیت تغییر اندازه اجباری برای صفحه نمایش بزرگ، در حال گذار به استانداردهای توسعه تطبیقی ​​است، در حالی که همزمان حریم خصوصی، امنیت، رسانه، دوربین و عملکرد نسل بعدی را ارائه می‌دهد. ما در این پست به همه این موارد و همچنین نحوه گردآوری ابزارها، کتابخانه‌ها و مهارت‌های عامل نسل بعدی برای کمک به برنامه‌های شما در پذیرش این فرصت خواهیم پرداخت.

در طول سال گذشته، از کانال Canary گرفته تا نسخه‌های بتا، ما با بسیاری از شما در جامعه توسعه‌دهندگان همکاری کرده‌ایم تا پلتفرمی بسازیم که شما و کاربرانتان بتوانید به آن اعتماد کنید. به همین منظور، این لحظه، زمان در دسترس بودن کد منبع در پروژه متن‌باز اندروید (AOSP) است. این به شما امکان می‌دهدکد منبع را برای درک عمیق‌تر از نحوه عملکرد اندروید بررسی کنید .

بیایید عمیق‌تر به اندروید ۱۷ بپردازیم.

یک سیستم اطلاعاتی

با ادغام عمیق بین سخت‌افزار، نرم‌افزار و هوش مصنوعی، ما در حال تبدیل اندروید از یک سیستم عامل به یک سیستم هوشمند هستیم. این در مورد ارائه تجربیات مفید جدیدی است که نیازهای کاربر را پیش‌بینی می‌کند و فرصت‌های بیشتری را برای تعامل با برنامه‌های شما به ارمغان می‌آورد. برای این منظور، اندروید ۱۷ قابلیت‌های AppFunctions، یک API پلتفرم با کتابخانه Jetpack مربوطه را گسترش می‌دهد. این به شما امکان می‌دهد تا قابلیت‌های منحصر به فرد برنامه خود را به عنوان "ابزارهای" قابل تنظیم برای Android MCP، معادل روی دستگاه Model Context Protocol ، به اشتراک بگذارید. عوامل و دستیاران هوش مصنوعی (مانند Google Gemini) می‌توانند AppFunctions را برای انجام گردش‌های کاری از طرف کاربر با دسترسی مستقیم به وضعیت محلی برنامه، کشف و اجرا کنند.

کتابخانه Jetpack که در حال حاضر در نسخه آلفا است، اضافه کردن AppFunctions را به آسانی حاشیه‌نویسی یک کلاس و اضافه کردن نظرات KDoc می‌کند.

/**
 *   A note app's [AppFunction]s.
 */
class NoteFunctions(
    private val noteRepository: NoteRepository
) {
    /**
     *   Adds a new note to the app.
     *
     *   @param appFunctionContext The execution context.
     *   @param title The title of the note.
     *   @param content The note's content.
     */
    @AppFunction(isDescribedByKDoc = true)
    suspend fun createNote(
        appFunctionContext: AppFunctionContext,
        title: String,
        content: String
    ): Note {
        return noteRepository.createNote(title, content)
    }
}

ما همچنین یک مهارت عامل AppFunctions راه‌اندازی کرده‌ایم که گردش‌های کاری کلیدی برنامه شما را تجزیه و تحلیل می‌کند، به طور خودکار کد Kotlin مورد نیاز را تولید می‌کند، KDocs شما را برای فراخوانی ابزار LLM بهینه می‌کند و دستورات ADB را برای آزمایش و اشکال‌زدایی ارائه می‌دهد.

ادغام Gemini در حال حاضر در یک پیش‌نمایش خصوصی با آزمایش‌کنندگان معتبر است، اما می‌توانید از همین حالا آماده‌سازی برنامه‌های خود را شروع کنید. علاوه بر دستورات ADB برای اجرای AppFunctions شما، ما یک برنامه عامل تست ارائه داده‌ایم که شامل رابطی برای کشف و اجرای AppFunctions شما و شبیه‌سازی ادغام عامل هوش مصنوعی است. برای اینکه جزو اولین برنامه‌هایی باشید که AppFunctions را در محیط عملیاتی مستقر می‌کنند، به برنامه دسترسی زودهنگام ادغام ما درgoo.gle/eap-af بپیوندید.

تطبیقی-اولویت

کاربران شما دیگر به یک فرم فاکتور واحد متکی نیستند؛ آنها بین تلفن‌ها، دستگاه‌های تاشو، تبلت‌ها، لپ‌تاپ‌ها، نمایشگرهای خودرو و محیط‌های فراگیر واقعیت افزوده (XR) در حال جابجایی هستند. اکنون، با بیش از ۵۸۰ میلیون دستگاه با صفحه نمایش بزرگ در دست کاربران و عرضه قریب‌الوقوع Googlebooks ، نسل بعدی ChromeOS که بر پایه اندروید ساخته شده است، تطبیق‌پذیری دیگر فقط یک هدف فنی نیست. این یک فرصت عظیم برای دستیابی به کاربران بسیار فعال است، که یکی از دلایلی است که ما به یک استاندارد توسعه با اولویت تطبیق‌پذیری روی آورده‌ایم.

بدون محدودیت تغییر اندازه/جهت در صفحه نمایش‌های بزرگ

برای اطمینان از اینکه برنامه‌ها در تمام فرم فاکتورها، از جمله دستگاه‌های تلفن همراه که در حالت دسکتاپ روی نمایشگرهای متصل اجرا می‌شوند، تجربه‌ای ممتاز ارائه می‌دهند، اندروید ۱۷ (سطح API ۳۷) گزینه عدم تمایل توسعه‌دهنده برای محدودیت‌های جهت‌گیری و تغییر اندازه در دستگاه‌های صفحه نمایش بزرگ (sw > 600 dp) را برای برنامه‌هایی که سطح API ۳۷ را هدف قرار می‌دهند، حذف می‌کند. سیستم ویژگی‌های مانیفست قدیمی و APIهای زمان اجرا، از جمله screenOrientation ، setRequestedOrientation() ، resizeableActivity=false و محدودیت‌های نسبت ابعاد (minAspectRatio/maxAspectRatio) را نادیده می‌گیرد. بازی‌ها (بر اساس دسته برنامه در Google Play) همچنان معاف هستند. برنامه شما باید آماده باشد تا با هر اندازه پنجره‌ای سازگار شود، به وضعیت دستگاه مورد نظر کاربر احترام بگذارد و از پنجره‌بندی فرم آزاد به صورت بومی پشتیبانی کند.

چندوظیفگی نسل بعدی: حباب‌های برنامه، نوار حباب و تصویر در تصویر تعاملی دسکتاپ

اندروید ۱۷ قابلیت‌های جدید و قدرتمندی برای پنجره‌بندی ارائه می‌دهد که نحوه‌ی انجام چند کار همزمان توسط کاربران را از نو تعریف می‌کند و انعطاف‌پذیری بیشتری را در طرح‌بندی برنامه‌ها می‌طلبد:

  • حباب‌های برنامه: با فراتر رفتن از API حباب‌های پیام‌رسانی، کاربران اکنون می‌توانند با فشار طولانی مدت روی آیکون هر برنامه در لانچر، آن را به یک حباب شناور تبدیل کنند. این ویژگی در تلفن‌ها، تبلت‌های تاشو و تبلت‌ها در دسترس است و امکان چندوظیفگی سبک را برای هر گردش کاری فراهم می‌کند.
  • نوار حبابی: در صفحه نمایش‌های بزرگ (تبلت‌ها و دستگاه‌های تاشو)، نوار وظیفه سیستم اکنون شامل یک نوار حبابی اختصاصی برای سازماندهی، جابجایی بین برنامه‌ها و اتصال این حباب‌های شناور است.
  • تصویر در تصویر تعاملی دسکتاپ: در محیط‌های دسکتاپ، اندروید ۱۷ قابلیت تصویر در تصویر تعاملی (PiP) را معرفی می‌کند. برخلاف پنجره‌های سنتی PiP که فقط خواندنی هستند، این پنجره‌های پین‌شده کاملاً تعاملی باقی می‌مانند و در عین حال همیشه بالای پنجره‌های برنامه‌های دیگر قرار دارند.
حباب‌ها (1).gif
حباب‌های برنامه و نوار حباب در عمل

به‌روزرسانی‌های فعالیت تفریحی

برای جلوگیری از از دست رفتن وضعیت و وقفه‌های ناگهانی، اندروید ۱۷ رفتار پیش‌فرض برای بازآفرینی فعالیت‌ها را به‌روزرسانی می‌کند. سیستم دیگر فعالیت‌ها را به‌طور پیش‌فرض برای تغییرات پیکربندی معمولی که نیازی به ترسیم مجدد کامل رابط کاربری ندارند (از جمله CONFIG_KEYBOARD ، CONFIG_KEYBOARD_HIDDEN ، CONFIG_NAVIGATION ، CONFIG_TOUCHSCREEN و CONFIG_COLOR_MODE ) مجدداً راه‌اندازی نمی‌کند.

در عوض، فعالیت‌های در حال اجرا این به‌روزرسانی‌ها را از طریق onConfigurationChanged() دریافت می‌کنند و انتقال‌های روان را ممکن می‌سازند. اگر برنامه شما صریحاً به راه‌اندازی مجدد کامل برای بارگذاری مجدد منابع برای این تغییرات متکی است، اکنون باید صریحاً با استفاده از ویژگی جدید manifest در android:recreateOnConfigChanges، این گزینه را انتخاب کنید.

ادامه دهید

اندروید ۱۷ قابلیت «ادامه» (Continue On) را اضافه کرده است تا به کاربران کمک کند به راحتی بین دستگاه‌های اندروید خود جابه‌جا شوند. کاربر پیشنهادی برای آخرین برنامه باز شده از دستگاه تلفن همراه خود در نوار وظیفه تبلت خود می‌بیند و با یک لمس، برنامه را اجرا می‌کند و از جایی که متوقف شده، به طور عمیق به آن متصل می‌شود. «ادامه» می‌تواند از جابه‌جایی‌های برنامه به وب، از جمله بازگشت به استفاده از وب در صورت عدم نصب برنامه، پشتیبانی کند.

ادامه مطلب.png
پیشنهاد تعویض قطعه در تبلت
class MyHandoffActivity : Activity() {

    ...

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    // Do stuff
    ...
    // Enable handoff
    setHandoffEnabled(true, null)
  }

  // Override and implement onHandoffActivityDataRequested
  override fun onHandoffActivityDataRequested(handoffRequestInfo: HandoffActivityDataRequestInfo) : HandoffActivityData {
    // Create and return handoff data
  }
}

با Jetpack Compose، سازگاری را در اولویت قرار دهید

برای کمک به شما در تطبیق برنامه‌هایتان با الزامات جدید اندروید ۱۷، ما مهارت تطبیقی ​​Jetpack Compose را راه‌اندازی کرده‌ایم. این گردش کار توسعه‌دهنده مبتنی بر هوش مصنوعی به شما کمک می‌کند تا بهترین شیوه‌های تطبیقی ​​را پیاده‌سازی کنید:

  • ناوبری تطبیقی: با استفاده از NavigationSuiteScaffold از کتابخانه Material 3 Adaptive، به طور خودکار بین نوارهای ناوبری پایین در موبایل و ریل‌های ناوبری لبه‌دار در صفحات نمایش بزرگ جابجا شوید.
  • طرح‌بندی‌های چندبخشی: طرح‌بندی‌های list-detail و پشتیبانی از پنجره را به صورت بومی با استفاده از Navigation 3 Scenes ( ListDetailSceneStrategy و SupportingPaneSceneStrategy ) به جای تراکنش‌های شکننده‌ی fragment پیاده‌سازی کنید.
  • APIهای FlexBox و Grid: از اجزای طرح‌بندی پویای Compose 1.11 برای تنظیم آسان عرض سطرها و ستون‌ها در لحظه استفاده کنید و مطمئن شوید که محتوای شما همیشه به زیبایی فضا را پر می‌کند.
  • ورودی غیرلمسی پیشرفته: از پشتیبانی بهبود یافته ترک‌پد و ماوس در Compose 1.11، شامل حلقه‌های فوکوس بومی و APIهای جدید (مانند TrackpadInjectionScope و performTrackpadInput ) بهره ببرید تا به راحتی یک تجربه واقعی «در سطح لپ‌تاپ» را در Googlebooks و حالت دسکتاپ آزمایش و ارائه دهید.
  • حالت‌های پویای پنجره: از مدل حالت واکنشی Compose برای تطبیق یکپارچه رابط کاربری خود هنگام انتقال برنامه از حالت تمام صفحه به یک حباب برنامه شناور یا یک پنجره تعاملی PiP دسکتاپ استفاده کنید و حتی در ابعاد کوچک، یک تجربه عالی را تضمین کنید.

اندروید بر پایه Compose-first است

Compose ساده‌ترین راه برای ساخت برنامه‌های تطبیقی ​​را ارائه می‌دهد و این تنها یکی از دلایل زیادی است که ما معتقدیم تمام رابط کاربری اندروید باید با Compose ساخته شود . به همین منظور، توسعه اندروید اکنون Compose-first است . تمام APIهای جدید اندروید، کتابخانه‌ها، ابزارها و راهنمایی‌های توسعه‌دهندگان منحصراً برای Jetpack Compose ساخته خواهند شد. کامپوننت‌های Legacy View (در بسته android.widget) و کتابخانه‌های Jetpack مبتنی بر View (مانند Fragments ، RecyclerView و ViewPager ) اکنون در حالت تعمیر و نگهداری هستند. آنها فقط رفع اشکالات اساسی را دریافت می‌کنند و هیچ ویژگی جدیدی دریافت نخواهند کرد.


نکته آماده مهاجرت هستید؟ از مهارت مهاجرت XML مبتنی بر هوش مصنوعی ما برای نوشتن استفاده کنید تا طرح‌بندی‌های نمای قدیمی شما را به‌طور خودکار تجزیه‌وتحلیل کرده و آنها را به کد نوشتن با قابلیت انطباق بالا تبدیل کند.


عملکرد و کارایی

عملکرد برنامه به معنای رابط کاربری روان، زمان شروع سریع برنامه و چندوظیفگی کارآمد است؛ اندروید ۱۷ در همه این زمینه‌ها پیشرفت‌های چشمگیری داشته است.

محدودیت‌های حافظه برنامه

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

با شروع از اندروید ۱۷، سیستم محدودیت‌های سختگیرانه‌ای برای حافظه برنامه‌ها بر اساس کل رم دستگاه اعمال می‌کند و فرآیندهای متخلف را به طور ناگهانی متوقف می‌کند. موارد جدید برای کمک به شما در پیمایش این الزامات سختگیرانه‌تر:

  • بهینه‌ساز R8: بهینه‌ساز R8 با کوچک کردن کلاس‌ها، متدها و فیلدها به نام‌های کوتاه‌تر و حذف کد و منابع بلااستفاده، میزان اشغال حافظه توسط بایت‌کد برنامه شما را به میزان قابل توجهی کاهش می‌دهد. از R8 در حالت کامل به همراه تحلیلگر پیکربندی جدید R8 استفاده کنید تا مطمئن شوید برنامه شما بیشترین بهره را از R8 می‌برد.
تحلیلگر پیکربندی R8.png
تحلیلگر پیکربندی R8
  • LeakCanary در اندروید استودیو پاندا: این پروفایلر اکنون به عنوان یک وظیفه اختصاصی، ادغام بومی LeakCanary را ارائه می‌دهد که کاملاً با IDE و کد منبع شما یکپارچه شده است.
  • ApplicationExitInfo: اگر برنامه شما با این محدودیت‌ها خاتمه یابد، تابع getDescription() از ApplicationExitInfo عبارت "MemoryLimiter:AnonSwap" را برمی‌گرداند.
  • تشخیص ناهنجاری روی دستگاه: بخشی از ProfilingManager، شما می‌توانید با استفاده از TRIGGER_TYPE_ANOMALY از پروفایلینگ مبتنی بر trigger برای ثبت خودکار داده‌های هیپ در زمان رسیدن به محدودیت حافظه استفاده کنید.
val profilingManager = applicationContext
   .getSystemService(ProfilingManager::class.java)

val triggers = ArrayList<ProfilingTrigger>().apply {
  add(ProfilingTrigger.Builder(
    ProfilingTrigger.TRIGGER_TYPE_ANOMALY).build())
}
profilingManager.addProfilingTriggers(triggers)

و ما در حال تلاش برای ارائه معیارهای حافظه داخلی بیشتر به شما در کنسول گوگل پلی هستیم.

جمع‌آوری زباله نسلی

اندروید ۱۷، جمع‌آوری‌های نسل جوان را به طور مکررتر و با منابع کمتر به جمع‌کننده‌ی زباله‌ی همزمان Mark-Compact (GC) ART معرفی می‌کند. با جدا کردن اشیاء کوتاه‌مدت از اشیاء پایدار و طولانی‌مدت، سیستم به جای اسکن‌های پرهزینه‌ی تمام پشته، جاروهای مکرر و سبک «نسل جوان» را اجرا می‌کند و به طور چشمگیری استفاده از CPU، تخلیه‌ی برق و وقفه‌های رابط کاربری را کاهش می‌دهد. آزمایش‌های ما بهبودهای قابل توجهی در تداخل GC با رشته‌های برنامه و کاهش حداکثر اندازه‌ی مجموعه‌ی ساکن در حافظه (RSS) نشان داده است. بهبودهای ART همچنین از طریق به‌روزرسانی‌های سیستم Google Play برای بیش از یک میلیارد دستگاه که اندروید ۱۲ (سطح API ۳۱) و بالاتر را اجرا می‌کنند، در دسترس است.

صف پیام بدون قفل

برای برنامه‌هایی که SDK 37 یا بالاتر را هدف قرار می‌دهند، هسته android.os.MessageQueue اکنون یک معماری بدون قفل را پیاده‌سازی می‌کند که به طور قابل توجهی فریم‌های از دست رفته را کاهش می‌دهد، زمان راه‌اندازی برنامه را بهبود می‌بخشد و عملکرد صف‌های شلوغ را در سناریوهای چند رشته‌ای به طور اساسی بهبود می‌بخشد. توجه: این می‌تواند برنامه‌هایی را که از بازتاب در فیلدها و متدهای خصوصی MessageQueue استفاده می‌کنند، مختل کند. APIهای peekWhen و poll برای آزمایش ابزار دقیق بدون تکیه بر داخلی‌های MessageQueue به TestLooperManager اضافه شده‌اند.

فیلدهای نهایی استاتیک اکنون واقعاً نهایی هستند

از اندروید ۱۷ به بعد، برنامه‌هایی که SDK 37 یا بالاتر را هدف قرار می‌دهند، قادر به تغییر فیلدهای «static final» نخواهند بود و به runtime اجازه می‌دهند بهینه‌سازی‌های عملکرد را با شدت بیشتری اعمال کند. تلاش برای انجام این کار از طریق reflection (یا deep reflection) منجر به صدور IllegalAccessException خواهد شد.

تغییر آنها از طریق خانواده متدهای SetStatic<Type>Field در JNI، بلافاصله برنامه را از کار می‌اندازد.

محدودیت‌های سفارشی نمایش اعلان‌ها

برای کاهش استفاده از حافظه، ما اندازه نماهای اعلان سفارشی را بیشتر محدود می‌کنیم. این به‌روزرسانی، روزنه‌ی امنیتی را که به برنامه‌ها اجازه می‌دهد با استفاده از URIها، محدودیت‌های موجود را دور بزنند، می‌بندد. این رفتار توسط نسخه SDK هدف مسدود شده و برای برنامه‌هایی که API 37 و بالاتر را هدف قرار می‌دهند، اعمال می‌شود.

حریم خصوصی و امنیت

حفظ اعتماد کاربر در قلب اکوسیستم اندروید قرار دارد. اندروید ۱۷ ویژگی‌های قدرتمندی را معرفی می‌کند که از داده‌های حساس محافظت می‌کنند و در عین حال تجربیات کاربری را ساده‌تر می‌کنند.

گزینه‌های حفظ حریم خصوصی

از گذشته، برنامه‌ها برای دسترسی به اطلاعاتی مانند مخاطبین، موقعیت مکانی دقیق و فایل‌های رسانه‌ای به مجوزهای گسترده و دائمی نیاز داشتند. اندروید ۱۷ به سمت گزینه‌های حفظ حریم خصوصی حرکت می‌کند که دسترسی موقت و مبتنی بر جلسه را فقط به داده‌هایی که کاربر صریحاً انتخاب می‌کند، اعطا می‌کند:

  • انتخابگر تماس در سطح سیستم: با استفاده از ACTION_PICK_CONTACTS ، برنامه‌ها می‌توانند فقط به فیلدهای خاص (مثلاً ایمیل یا شماره تلفن) که توسط کاربر انتخاب می‌شوند، دسترسی موقت درخواست کنند و نیاز به مجوز گسترده READ_CONTACTS را از بین ببرند. همچنین از جداسازی پروفایل کاری/شخصی کاملاً پشتیبانی می‌کند.
  • نسبت ابعاد قابل تنظیم انتخابگر عکس: با استفاده از PhotoPickerUiCustomizationParams، می‌توانید انتخابگر عکس سیستم را طوری تنظیم کنید که تصاویر بندانگشتی را در حالت عمودی نشان دهد. این ویژگی برای برنامه‌هایی که همیشه عکس‌ها و ویدیوها را به صورت عمودی نمایش می‌دهند، مانند برنامه‌های رسانه‌های اجتماعی مبتنی بر ویدیو، عالی است.
  • دکمه موقعیت مکانی رندر شده توسط سیستم: یک دکمه موقعیت مکانی رندر شده توسط سیستم جدید که می‌توانید در برنامه خود جاسازی کنید، دسترسی دقیق به موقعیت مکانی را فقط برای جلسه فعلی اعطا می‌کند.
  • رابط برنامه‌نویسی EyeDropper: یک رابط برنامه‌نویسی کاربردی جدید در سطح سیستم، ACTION_OPEN_EYE_DROPPER ، به برنامه شما اجازه می‌دهد تا یک قطره‌چکان مبتنی بر سیستم ایجاد کند که کاربر را قادر می‌سازد رنگ را از هر پیکسلی روی صفحه نمایش انتخاب کند. این یک تجربه انتخاب رنگ امن و با حفظ حریم خصوصی را فراهم می‌کند که نیاز به مجوزهای گسترده و حساس ضبط صفحه یا نمایش رسانه را از بین می‌برد.
val eyeDropperLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
   if (result.resultCode == Activity.RESULT_OK) {
       val color = result.data?.getIntExtra(Intent.EXTRA_COLOR, Color.BLACK)
       // Use the picked color in your app
   }
}
fun launchColorPicker() {
   val intent = Intent(Intent.ACTION_OPEN_EYE_DROPPER)
   eyeDropperLauncher.launch(intent)
}
تستر قطره چکان.webp
انتخاب رنگ از هر نقطه روی صفحه نمایش با استفاده از EyeDropper سیستم

دسترسی به شبکه محلی

برنامه‌هایی که اندروید ۱۷ را هدف قرار می‌دهند، اکنون یا به مجوز زمان اجرا ACCESS_LOCAL_NETWORK نیاز دارند یا برای ارتباطات شبکه محلی، مانند ارتباط با دستگاه‌های خانه هوشمند یا ارسال گیرنده‌ها، از انتخابگرهای دستگاه با حفظ حریم خصوصی و با واسطه سیستم استفاده می‌کنند. از آنجا که ACCESS_LOCAL_NETWORK در گروه مجوزهای NEARBY_DEVICES موجود قرار می‌گیرد، کاربرانی که قبلاً مجوزهای NEARBY_DEVICES دیگری را اعطا کرده‌اند، دیگر از آنها درخواست نخواهد شد.

محافظت از طریق OTP در پیامک

اندروید ۱۷ با به تأخیر انداختن دسترسی به پیامک‌ها به مدت سه ساعت، محافظت از رمز عبور یکبار مصرف (OTP) پیامکی را گسترش می‌دهد:

استثنائات: برنامه‌های پیش‌فرض پیامک، دستیار و برنامه‌های همراه متصل از این قاعده مستثنی هستند. اکیداً به برنامه‌ها توصیه می‌شود که به رابط‌های برنامه‌نویسی کاربردی (API) مربوط به SMS Retriever یا SMS User Consent مهاجرت کنند.

رمزنگاری پساکوانتومی (PQC)

اندروید ۱۷ برای نسل بعدی امنیت رمزنگاری آماده است:

  • یکپارچه‌سازی کلید: دستگاه‌های پشتیبانی‌شده می‌توانند کلیدهای ML-DSA (الگوریتم امضای دیجیتال مبتنی بر ماژول-شبکه) را در سخت‌افزار امن تولید کنند تا امضاهای کوانتومی ایمن تولید کنند که از طریق APIهای استاندارد JCA در دسترس قرار می‌گیرند.
  • امضای ترکیبی APK: معرفی طرح امضای APK نسخه ۳.۲ که امضاهای کلاسیک را با امضاهای ML-DSA ترکیب می‌کند تا تحویل برنامه را ایمن سازد.

بارگذاری امن‌تر کد پویای بومی

اگر برنامه شما SDK 37 یا بالاتر را هدف قرار می‌دهد، محافظت Safer Dynamic Code Loading (DCL) که در اندروید ۱۴ برای فایل‌های DEX و JAR معرفی شد، اکنون به کتابخانه‌های بومی نیز گسترش می‌یابد. همه فایل‌های بومی که با استفاده از System.load بارگذاری می‌شوند باید به عنوان فقط خواندنی علامت‌گذاری شوند. در غیر این صورت، سیستم UnsatisfiedLinkError نمایش می‌دهد.

محافظت هوشمندانه‌تر از طریق رمز عبور برای ورودی‌های فیزیکی

با اندروید ۱۷، ما با نمایش ندادن آخرین کاراکتر تایپ شده به طور پیش‌فرض، وارد کردن رمزهای عبور، پین‌ها و سایر اطلاعات محرمانه هنگام استفاده از صفحه کلید فیزیکی را ایمن‌تر می‌کنیم.

کاربران همچنان می‌توانند به راحتی این تنظیمات نمایشگر را متناسب با ترجیحات خود سفارشی کنند (ممکن است در دسترس بودن این تنظیمات بسته به سازنده دستگاه متفاوت باشد).

این محافظت‌های حریم خصوصی بهبود یافته به طور خودکار توسط اجزای SDK داخلی اندروید پشتیبانی می‌شوند و در Compose 1.12 برای SecureTextFields نیز پشتیبانی خواهند شد.

پنهان کردن حرف اول.gif
محافظت هوشمندانه‌تر از طریق رمز عبور برای ورودی‌های فیزیکی

ویژگی‌های رسانه و دوربین که به خالقان قدرت می‌دهد و کاربران را خوشحال می‌کند

اندروید ۱۷ ویژگی‌های جدید سازنده را معرفی می‌کند که به دوربین‌ها و رسانه‌های حرفه‌ای دسترسی می‌دهد و در عین حال تجربه را برای مصرف‌کنندگان بهبود می‌بخشد.

  • Eclipsa Video : استاندارد ویدیوی HDR که بر اساس مشخصات SMPTE ST 2094-50 ساخته شده است و فراداده‌های جدیدی را معرفی می‌کند تا به دستگاه‌ها کمک کند محتوا را با فضای نمایشگر و شرایط نور محیط خود تطبیق دهند و همچنین نمایش همزمان محتوای استاندارد و HDR را بهبود بخشند.
  • فرمت تصویر RAW14: پشتیبانی جدید از فرمت تصویر RAW14 راهی را برای برنامه دوربین حرفه‌ای شما فراهم می‌کند تا بالاترین سطح جزئیات و عمق رنگ را از سنسورهای دوربین سازگار ثبت کند.
  • افزونه‌های دوربین تعریف‌شده توسط فروشنده: افزونه‌های تعریف‌شده توسط فروشنده، شرکای سخت‌افزاری را قادر می‌سازد تا حالت‌های افزونه دوربین سفارشی را تعریف و پیاده‌سازی کنند و دسترسی به بهترین و جدیدترین ویژگی‌های دوربین را فراهم کنند.
  • رمزگذار نرم‌افزاری توسعه‌یافته HE-AAC: یک رمزگذار نرم‌افزاری توسعه‌یافته HE-AAC جدید ارائه شده توسط سیستم، با استفاده از کدگذاری یکپارچه گفتار و صدا، از بیت‌ریت‌های پایین و بالا پشتیبانی می‌کند و کیفیت صدای بسیار بهتری را برای پیام‌های صوتی در شرایط پهنای باند کم، از جمله پشتیبانی از فراداده‌های بلندی صدا، فراهم می‌کند.
  • کدگذاری ویدیوی چندمنظوره (H.266) : به تولیدکنندگان اصلی تجهیزات (OEM) این امکان را می‌دهد که با تعریف نوع MIME ویدیو/vvc در MediaFormat ، افزودن پروفایل‌های VVC جدید در MediaCodecInfo و ادغام پشتیبانی در MediaExtractor ، پشتیبانی از کدک را اضافه کنند.
  • نوع دستگاه دوربین: APIهای جدید که نوع دستگاه اصلی را جستجو می‌کنند تا مشخص شود که آیا دوربین سخت‌افزار داخلی، وب‌کم USB خارجی یا یک دوربین مجازی است.
  • کیفیت ثابت برای ضبط ویدیو: setVideoEncodingQuality در MediaRecorder یک حالت کیفیت ثابت (CQ) را برای رمزگذارهای ویدیو پیکربندی می‌کند تا از صحت بصری یکنواخت در کل ویدیو اطمینان حاصل شود.

پشتیبانی بهتر از سمعک

  • پشتیبانی از سمعک بلوتوث LE Audio: اندروید اکنون شامل یک دسته بندی خاص برای سمعک‌های بلوتوث کم مصرف (BLE) با ثابت جدید AudioDeviceInfo.TYPE_BLE_HEARING_AID است، بنابراین برنامه شما می‌تواند سمعک‌ها را از هدست‌های معمولی تشخیص دهد تا تجربه‌ای متناسب با نیازهای کاربران دارای دستگاه‌های کمکی شنوایی ارائه دهد.
  • مسیریابی صوتی جزئی برای سمعک‌ها: اندروید ۱۷ به کاربران اجازه می‌دهد تا به طور مستقل محل پخش صداهای خاص سیستم را مدیریت کنند. آن‌ها می‌توانند انتخاب کنند که اعلان‌ها، آهنگ‌های زنگ و آلارم‌ها به سمعک‌های متصل یا بلندگوی داخلی دستگاه هدایت شوند و در عین حال اتصال بلوتوث را برای برنامه‌های مدیریت سمعک حفظ کنند.

دوربینX و رسانه3

CameraX و Media3 برای اندروید ۱۷ به‌روزرسانی شده‌اند. آن‌ها برای انجام کارهای سنگین، هموار کردن لبه‌های ناهموار توسعه رسانه و ساده‌سازی ساخت ضبط دوربین قابل اعتماد، پخش روان رسانه و تجربیات ویرایش خلاقانه و پیچیده، وجود دارند.

ما یک مهارت عامل (agent) منتشر کرده‌ایم که می‌تواند پیاده‌سازی‌های قدیمی دوربین اندروید (Camera1 یا APIهای خام Camera2) را به CameraX منتقل کند.

توجه: برای جلوگیری از خرابی مربوط به حالت محدوده دینامیکی اضافه شده در دستگاه‌های اندروید ۱۷، باید نسخه CameraX خود را به ۱.۵.۲ یا ۱.۶.۰+ به‌روزرسانی کنید.

برنامه‌ها، کتابخانه‌ها، ابزارها و موتورهای بازی خود را آماده کنید!

اگر شما یک SDK، کتابخانه، ابزار یا موتور بازی اندروید توسعه می‌دهید، بسیار مهم است که اکنون هرگونه به‌روزرسانی لازم را آماده کنید تا از مسدود شدن توسعه‌دهندگان برنامه و بازی پایین‌دستی خود به دلیل مشکلات سازگاری جلوگیری کنید و به آنها اجازه دهید تا از جدیدترین ویژگی‌های SDK استفاده کنند. لطفاً در صورت نیاز به به‌روزرسانی برای پشتیبانی کامل از اندروید ۱۷، به توسعه‌دهندگان پایین‌دستی خود اطلاع دهید.

تست شامل نصب برنامه تولیدی یا یک برنامه آزمایشی است که از کتابخانه یا موتور شما با استفاده از Google Play یا روش‌های دیگر روی دستگاه یا شبیه‌ساز دارای Android 17 Beta 4 استفاده می‌کند. تمام جریان‌های برنامه خود را بررسی کنید و به دنبال مشکلات عملکردی یا رابط کاربری باشید. هر نسخه از اندروید شامل تغییرات پلتفرمی است که حریم خصوصی، امنیت و تجربه کلی کاربر را بهبود می‌بخشد. برای تمرکز تست خود، تغییرات رفتاری برنامه را که بر روی برنامه‌هایی که روی Android 17 اجرا می‌شوند و هدف قرار می‌گیرند، تأثیر می‌گذارند، بررسی کنید، از جمله موارد زیر:

  • قابلیت تغییر اندازه در صفحه نمایش‌های بزرگ: وقتی اندروید ۱۷ (SDK 37) را هدف قرار دهید، دیگر نمی‌توانید از حفظ محدودیت‌های جهت‌گیری، تغییر اندازه و نسبت ابعاد در صفحه نمایش‌های بزرگ صرف نظر کنید.
  • بارگذاری پویای کد: اگر برنامه شما SDK 37 یا بالاتر را هدف قرار می‌دهد، محافظت Safer Dynamic Code Loading (DCL) که در اندروید ۱۴ برای فایل‌های DEX و JAR معرفی شد، اکنون به کتابخانه‌های بومی نیز گسترش می‌یابد. همه فایل‌های بومی که با استفاده از System.load() بارگذاری می‌شوند باید به عنوان فقط خواندنی علامت‌گذاری شوند. در غیر این صورت، سیستم خطای UnsatisfiedLinkError را نمایش می‌دهد.
  • فعال کردن CT به صورت پیش‌فرض: شفافیت گواهی (CT) به صورت پیش‌فرض فعال است. (در اندروید ۱۶، CT در دسترس است اما برنامه‌ها باید آن را انتخاب می‌کردند .)
  • محافظت از شبکه محلی: برنامه‌هایی که SDK 37 یا بالاتر را هدف قرار می‌دهند، به طور پیش‌فرض دسترسی به شبکه محلی را مسدود کرده‌اند . در صورت امکان، به استفاده از انتخابگرهای حفظ حریم خصوصی روی بیاورید و از مجوز جدید ACCESS_LOCAL_NETWORK برای دسترسی گسترده و مداوم استفاده کنید.
  • مقاوم‌سازی صدای پس‌زمینه: از اندروید ۱۷، چارچوب صوتی محدودیت‌هایی را بر تعاملات صوتی پس‌زمینه از جمله پخش صدا، درخواست‌های فوکوس صوتی و APIهای تغییر صدا اعمال می‌کند. بر اساس بازخورد شما، ما از زمان بتا ۲ تغییراتی ایجاد کرده‌ایم، از جمله اعمال FGS در حین استفاده از targetSDK و معافیت صدای آلارم. جزئیات کامل در راهنمای به‌روز شده موجود است.
  • اعلام دسترسی به NPU: برنامه‌هایی که اندروید ۱۷ را هدف قرار می‌دهند و نیاز به دسترسی مستقیم به NPU دارند، باید این موضوع را اعلام کنند.  FEATURE_NEURAL_PROCESSING_UNIT در مانیفست خود قرار دهید تا از مسدود شدن دسترسی به NPU جلوگیری شود. این شامل برنامه‌هایی می‌شود که از نماینده LiteRT NPU ، SDK های مخصوص فروشنده و همچنین NNAPI منسوخ شده استفاده می‌کنند.

شروع کار با اندروید ۱۷

اگر هنوز نسخه بتای اندروید را دریافت نکرده‌اید، دستگاه پیکسل شما باید به‌زودی اندروید ۱۷ را دریافت کند. اگر دستگاه پیکسل ندارید، می‌توانید از ایمیج‌های سیستم ۶۴ بیتی با شبیه‌ساز اندروید در اندروید استودیو استفاده کنید . اگر در حال حاضر از نسخه بتای ۴.۱ اندروید ۱۷ استفاده می‌کنید و هنوز نسخه بتای QPR1 اندروید ۱۷ را دریافت نکرده‌اید، می‌توانید از برنامه انصراف دهید و سپس نسخه آزمایشی اندروید ۱۷ به‌صورت بی‌سیم (OTA) به شما ارائه خواهد شد.

دریافت نسخه بتا اندروید ۱۷ روی دستگاه‌های همکار

اندروید ۱۷ به صورت بتا برای گوشی، تبلت و گوشی‌های تاشو از شرکایی از جمله آنر، iQOO، لنوو، وان‌پلاس، اوپو، ریلمی، شارپ، ویوو و شیائومی در دسترس است.

شرکای اندروید-۱۷-بتا.jpg

برای بهترین تجربه توسعه با اندروید ۱۷، توصیه می‌کنیم از آخرین نسخه Canary از Android Studio Quail استفاده کنید. پس از راه‌اندازی، در اینجا برخی از کارهایی که باید انجام دهید آورده شده است:

  • برنامه فعلی خود را از نظر سازگاری آزمایش کنید، بفهمید که آیا برنامه شما تحت تأثیر تغییرات اندروید ۱۷ قرار می‌گیرد یا خیر، و برنامه خود را روی یک دستگاه یا شبیه‌ساز اندروید که اندروید ۱۷ را اجرا می‌کند نصب کنید و آن را به طور گسترده آزمایش کنید.

بار دیگر از همه کسانی که در برنامه پیش‌نمایش و بتای توسعه‌دهندگان اندروید ما شرکت کردند، سپاسگزاریم. ما مشتاقانه منتظریم ببینیم که برنامه‌های شما چگونه از به‌روزرسانی‌های اندروید ۱۷ بهره‌مند می‌شوند و قصد داریم به‌روزرسانی‌ها را با سرعت بیشتری در آینده برای شما ارائه دهیم.

برای اطلاعات کامل در مورد اندروید ۱۷، لطفاً بهسایت توسعه‌دهندگان اندروید ۱۷ مراجعه کنید.

نوشته شده توسط:
ادامه مطلب