پشتیبانی از معماری‌های ۶۴ بیتی

برنامه‌های منتشرشده در Google Play باید از معماری‌های ۶۴ بیتی پشتیبانی کنند. افزودن نسخه ۶۴ بیتی برنامه‌تان عملکرد را بهبود می‌بخشد و شما را برای دستگاه‌هایی که فقط سخت‌افزار ۶۴ بیتی دارند آماده می‌کند.

مراحل زیر تضمین می‌کند که برنامه ۳۲ بیتی شما از دستگاه‌های ۶۴ بیتی پشتیبانی می‌کند.

ارزیابی برنامه

اگر برنامه‌تان فقط از کدی استفاده می‌کند که به زبان برنامه‌نویسی Java یا Kotlin نوشته شده است، ازجمله همه کتابخانه‌ها یا کیت‌های توسعه نرم‌افزار، دراین‌صورت برنامه‌تان از دستگاه‌های ۶۴ بیتی پشتیبانی می‌کند. اگر برنامه‌تان از کد بومی استفاده می‌کند، یا مطمئن نیستید که استفاده می‌کند یا نه، برنامه‌تان را ارزیابی کنید.

بررسی سریع وضعیت

به «کنسول Play» بروید و نسخه‌های پخش موجود را بررسی کنید تا ببینید آیا مطابقت دارند یا نه.

«کنسول Play» همچنین هشدارهایی را نشان می‌دهد که درصورت وجود هرگونه مشکل مربوط به الزام ۶۴ بیتی، برای نسخه‌های پیش‌نویس شما اعمال می‌شود. تصویر زیر نمونه‌ای از آن است.

اگر هشداری نشان داده شد، مراحل زیر را برای سازگار کردن برنامه‌تان با دستگاه‌های ۶۴ بیتی ببینید.

آیا برنامه شما از کد بومی استفاده می‌کند؟

برنامه شما از کد بومی استفاده می‌کند اگر:

  • از هر کد C/C++‎ (بومی) در برنامه‌تان استفاده می‌کند.
  • با هر کتابخانه بومی طرف سوم پیوند برقرار می‌کند.
  • توسط یک سازنده برنامه طرف سوم که از کتابخانه‌های بومی استفاده می‌کند ساخته شده باشد.

آیا برنامه‌تان حاوی کتابخانه‌های ۶۴ بیتی است؟

ساختار فایل APK خود را بازرسی کنید. هنگام ساخت، APK با هر کتابخانه بومی موردنیاز برنامه بسته‌بندی می‌شود. کتابخانه‌های بومی براساس ABI در پوشه‌های مختلفی ذخیره می‌شوند. لازم نیست از همه معماری‌های ۶۴ بیتی پشتیبانی کنید، اما برای هر معماری ۳۲ بیتی بومی که پشتیبانی می‌کنید، باید معماری ۶۴ بیتی مربوطه را نیز اضافه کنید.

برای معماری ARM، کتابخانه‌های ۳۲ بیتی در armeabi-v7a قرار دارند. معادل ۶۴ بیتی آن arm64-v8a است.

برای معماری x86، به‌دنبال x86 برای ۳۲ بیتی و x86_64 برای ۶۴ بیتی بگردید.

مطمئن شوید که در هر دوی این پوشه‌ها کتابخانه‌های بومی دارید. به‌طور خلاصه:

پلاتفرم پوشه کتابخانه‌های ۳۲ بیتی پوشه کتابخانه‌های ۶۴ بیتی
مجهز کردن lib/armeabi-v7a lib/arm64-v8a
x86 lib/x86 lib/x86_64

توجه داشته باشید که بسته به برنامه‌تان، ممکن است دقیقاً همان مجموعه کتابخانه‌ها در هر پوشه وجود داشته باشد یا نداشته باشد. هدف این است که مطمئن شوید برنامه‌تان در محیطی که فقط ۶۴ بیتی است به‌درستی اجرا می‌شود.

در حالت معمول، APK یا دسته‌ای که برای هر دو معماری ۳۲ بیتی و ۶۴ بیتی ساخته شده است، پوشه‌هایی برای هر دو ABI دارد که هرکدام مجموعه متناظری از کتابخانه‌های بومی دارند. اگر از ۶۴ بیتی پشتیبانی نشود، ممکن است پوشه ABI‏ ۳۲ بیتی را ببینید اما پوشه ۶۴ بیتی را نبینید.

جستجوی کتابخانه‌های بومی بااستفاده از «تحلیل‌کننده APK»

تحلیل‌کننده APK ابزاری است که به شما امکان می‌دهد جنبه‌های مختلف APK ساخته‌شده را ارزیابی کنید. از آن برای پیدا کردن کتابخانه‌های بومی استفاده کنید و مطمئن شوید کتابخانه‌های ۶۴ بیتی وجود داشته باشند.

  1. Android Studio را باز کنید و پروژه‌ای را باز کنید.
  2. از منو، Build > Analyze APK… را انتخاب کنید.

    راه‌اندازی تحلیل‌کننده APK

  3. APK موردنظرتان را برای ارزیابی انتخاب کنید.

  4. در پوشه lib که فایل‌های «so.» را درصورت وجود میزبانی می‌کند جستجو کنید. اگر هیچ موردی وجود ندارد، برنامه‌تان از دستگاه‌های ۶۴ بیتی پشتیبانی می‌کند و اقدام دیگری لازم نیست. اگر armeabi-v7a یا x86 را می‌بینید، کتابخانه‌های ۳۲ بیتی دارید.

  5. بررسی کنید که آیا فایل‌های «‎.so» مشابهی در پوشه arm64-v8a یا x86_64 دارید یا نه.

    راه‌اندازی تحلیل‌کننده APK

  6. اگر هیچ کتابخانه arm64-v8a یا x86_64 ندارید، فرایند ساختتان را به‌روز کنید تا ساخت و بسته‌بندی آن آرتیفکت‌ها را در APK شروع کنید.

  7. اگر می‌بینید که هر دو کتابخانه قبلاً بسته‌بندی شده‌اند، می‌توانید از این مرحله رد شوید و به آزمایش کردن برنامه در سخت‌افزار ۶۴ بیتی بروید.

با از حالت فشرده خارج کردن فایل‌های APK، کتابخانه‌های بومی را پیدا کنید

فایل‌های APK ساختاری شبیه فایل‌های zip دارند. با خط فرمان یا هر ابزار استخراج دیگری، فایل APK را استخراج کنید. بسته به ابزار استخراج، ممکن است لازم باشد نام فایل را به zip .تغییر دهید.

فایل‌های استخراج‌شده را مرور کنید و با دنبال کردن راهنمایی‌های بالا تعیین کنید آیا برنامه‌تان از دستگاه‌های ۶۴ بیتی پشتیبانی می‌کند یا نه. می‌توانید فرمان نمونه زیر را از خط فرمان اجرا کنید:

:: Command Line
> zipinfo -1 YOUR_APK_FILE.apk | grep \.so$
lib/armeabi-v7a/libmain.so
lib/armeabi-v7a/libmono.so
lib/armeabi-v7a/libunity.so
lib/arm64-v8a/libmain.so
lib/arm64-v8a/libmono.so
lib/arm64-v8a/libunity.so

در این مثال، به وجود کتابخانه‌های armeabi-v7a و arm64-v8a توجه کنید، که یعنی برنامه از معماری‌های ۶۴ بیتی پشتیبانی می‌کند.

برنامه‌تان را با کتابخانه‌های ۶۴ بیتی بسازید

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

ساختن با «استودیو Android» یا Gradle

اکثر پروژه‌های Android Studio از Gradle به‌عنوان سیستم ساخت زیربنایی استفاده می‌کنند، بنابراین این بخش برای هر دو مورد اعمال می‌شود. برای فعال کردن ساخت‌ها برای کد بومی‌تان، بسته به معماری‌هایی که می‌خواهید پشتیبانی کنید، arm64-v8a و/یا x86_64 را به تنظیم ndk.abiFilters در فایل build.gradle برنامه‌تان اضافه کنید:

شیک

// Your app's build.gradle
plugins {
  id 'com.android.app'
}

android {
   compileSdkVersion 27
   defaultConfig {
       appId "com.google.example.64bit"
       minSdkVersion 15
       targetSdkVersion 28
       versionCode 1
       versionName "1.0"
       ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
// ...

کاتلین

// Your app's build.gradle
plugins {
    id("com.android.app")
}

android {
    compileSdkVersion(27)
    defaultConfig {
        appId = "com.google.example.64bit"
        minSdkVersion(15)
        targetSdkVersion(28)
        versionCode = 1
        versionName = "1.0"
        ndk {
            abiFilters += listOf("armeabi-v7a","arm64-v8a","x86","x86_64")
        }
// ...

ساختن با CMake

اگر برنامه‌تان بااستفاده از CMake ساخته شده است، می‌توانید با ارسال arm64-v8a به پارامتر «-DANDROID_ABI»، برای رابط‌های دودویی کاربردی ۶۴ بیتی بسازید:

:: Command Line
> cmake -DANDROID_ABI=arm64-v8a … or
> cmake -DANDROID_ABI=x86_64 …

ساختن با ndk-build

اگر برنامه‌تان با ndk-build ساخته شده است، می‌توانید با اصلاح فایل Application.mk بااستفاده از متغیر APP_ABI، برای رابط‌های دودویی نرم‌افزار ۶۴ بیتی بسازید:

APP_ABI := armeabi-v7a arm64-v8a x86 x86_64

انتقال کد ۳۲ بیتی به ۶۴ بیتی

اگر کدتان ازقبل در رایانه یا iOS اجرا می‌شود، نباید نیاز به انجام کار اضافی برای Android داشته باشید. اگر این اولین‌باری است که کد شما برای سیستم ۶۴ بیتی ساخته شده است، مشکل اصلی که باید به آن رسیدگی کنید این است که اشاره‌گرها دیگر در انواع عدد صحیح ۳۲ بیتی مانند int جا نمی‌شوند.

کدی را که اشاره‌گرها را در انواع int، unsigned، یا uint32_t ذخیره می‌کند به‌روز کنید. در سیستم‌های Unix، long با اندازه اشاره‌گر مطابقت دارد، اما این موضوع در Windows صادق نیست. درعوض، از انواع آشکارکننده قصد uintptr_t یا intptr_t استفاده کنید. برای ذخیره کردن تفاوت بین دو اشاره‌گر، از نوع ptrdiff_t استفاده کنید.

همیشه باید انواع عدد صحیح با عرض ثابت و مشخص تعریف‌شده در <stdint.h> را به انواع با عرض غیرثابت مانند int یا long ترجیح دهید، حتی برای غیرنشانگرها.

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

-Werror=pointer-to-int-cast
-Werror=int-to-pointer-cast
-Werror=shorten-64-to-32

کلاس‌های Java با فیلدهای int که اشاره‌گرهایی به اشیای C/C++‎ دارند نیز همین مشکل را دارند. jint را در منبع JNI خود جستجو کنید و مطمئن شوید که به long در سمت Java و jlong در سمت C++‎ تغییر می‌دهید.

اعلام‌های تابع ضمنی برای کد ۶۴ بیتی بسیار خطرناک‌تر هستند. C/C++‎ فرض می‌کند که نوع پاسخ تابع اعلام‌شده به‌طور ضمنی (یعنی تابعی که کامپایلر اعلامیه‌ای برای آن ندیده است) int است. اگر نوع پاسخ واقعی تابع شما اشاره‌گر باشد، این در سیستم ۳۲ بیتی که اشاره‌گر شما در int جا می‌شود به‌خوبی کار می‌کند. اما در سیستم ۶۴ بیتی، کامپایلر نیمه بالایی اشاره‌گر شما را حذف می‌کند. برای مثال:

// This function returns a pointer:
// extern char* foo();

// If you don't include a header that declares it,
// when the compiler sees this:
char* result = foo();

// Instead of compiling that to:
result = foo();

// It compiles to something equivalent to:
result = foo() & 0xffffffff;

// Which will then cause a SIGSEGV if you try to dereference `result`.

پرچم کامپایلر زیر هشدارهای اعلان تابع ضمنی را به خطا تبدیل می‌کند تا بتوانید این مشکل را راحت‌تر پیدا و برطرف کنید:

-Werror=implicit-function-declaration

اگر اسمبلر درون‌خطی دارید، آن را بازنویسی کنید یا از پیاده‌سازی C/C++‎ ساده استفاده کنید.

اگر اندازه‌های کدگذاری‌شده سخت از انواع (مثلاً ۸ یا ۱۶ بایت) دارید، آن‌ها را با عبارت معادل sizeof(T)، مانند sizeof(void*)، جایگزین کنید.

اگر لازم است کد متفاوتی را برای نسخه ۳۲ بیتی نسبت به نسخه ۶۴ بیتی به‌صورت شرطی کامپایل کنید، می‌توانید از #if defined(__LP64__) برای تفاوت‌های عمومی ۳۲/۶۴، یا __arm__، __aarch64__ (arm64)،‏ __i386__ (x86)، و __x86_64__ برای معماری‌های خاص پشتیبانی‌شده توسط Android استفاده کنید.

رشته‌های قالب را برای توابع شبیه printf یا scanf تنظیم کنید، زیرا مشخص‌کننده‌های قالب سنتی به شما اجازه نمی‌دهند انواع ۶۴ بیتی را به‌گونه‌ای مشخص کنید که هم برای دستگاه‌های ۳۲ بیتی و هم برای دستگاه‌های ۶۴ بیتی صحیح باشد. ماکروهای PRI و SCN در <inttypes.h> این مشکل را حل می‌کنند، PRIxPTR و SCNxPTR برای نوشتن و خواندن اشاره‌گرهای شانزده‌شانزدهی؛ و PRId64 و SCNd64 برای نوشتن و خواندن مقادیر ۶۴ بیتی به‌صورت قابل‌حمل.

هنگام جابه‌جایی، ممکن است لازم باشد از 1ULL استفاده کنید تا ثابت ۶۴ بیتی برای جابه‌جایی دریافت کنید به‌جای استفاده از 1 که فقط ۳۲ بیت است.

کاهش افزایش اندازه با Android App Bundle

افزودن پشتیبانی از معماری ۶۴ بیتی به برنامه‌تان می‌تواند باعث افزایش اندازه APK شود. اکیداً توصیه می‌کنیم از ویژگی Android App Bundle استفاده کنید تا تأثیر اندازه گنجاندن کد بومی ۳۲ بیتی و ۶۴ بیتی در یک APK را به‌حداقل برسانید.

توسعه‌دهندگان بازی

سه موتور پرکاربرد از نسخه ۶۴ بیتی پشتیبانی می‌کنند:

  • Unreal از ۲۰۱۵
  • Cocos2d از ۲۰۱۵
  • Unity از ۲۰۱۸

توسعه‌دهندگان Unity

ارتقا به نسخه‌های توانمند

Unity در نسخه‌های 2018.2 و 2017.4.16 از نسخه ۶۴ بیتی پشتیبانی می‌کند.

اگر از نسخه‌ای از Unity استفاده می‌کنید که از ۶۴ بیتی پشتیبانی نمی‌کند، نسخه‌ای را که می‌خواهید به آن ارتقا دهید تعیین کنید و راهنماهایی را که Unity برای انتقال محیطتان ارائه می‌دهد دنبال کنید و مطمئن شوید برنامه‌تان به نسخه‌ای ارتقا داده می‌شود که می‌تواند کتابخانه‌های ۶۴ بیتی بسازد. Unity توصیه می‌کند با ارتقا دادن به جدیدترین نسخه LTS ویرایشگر، به جدیدترین ویژگی‌ها و به‌روزرسانی‌ها دسترسی داشته باشید.

در اینجا جدولی ارائه شده است که نسخه‌های مختلف Unity و کارهایی را که باید انجام دهید نشان می‌دهد:

نسخه Unity نسخه از ۶۴ بیتی پشتیبانی می‌کند؟ اقدام توصیه‌شده

2020.x

✔️

مطمئن شوید تنظیمات ساخت شما کتابخانه‌های ۶۴ بیتی را خروجی می‌دهد.

2019.x

✔️

مطمئن شوید تنظیمات ساخت شما کتابخانه‌های ۶۴ بیتی را خروجی می‌دهد.

2018.4 (LTS)

✔️

مطمئن شوید تنظیمات ساخت شما کتابخانه‌های ۶۴ بیتی را خروجی می‌دهد.

2018.3

✔️

مطمئن شوید تنظیمات ساخت شما کتابخانه‌های ۶۴ بیتی را برونداد می‌کند.

2018.2

✔️

مطمئن شوید تنظیمات ساخت شما کتابخانه‌های ۶۴ بیتی را برونداد می‌کند.

2018.1

➖

دارای پشتیبانی آزمایشی ۶۴ بیتی است.

2017.4 (LTS)

✔️

از ۲۰۱۷.۴.۱۶ پشتیبانی می‌شود. مطمئن شوید تنظیمات ساخت شما کتابخانه‌های ۶۴ بیتی را خروجی می‌دهد.

‫۲۰۱۷.۳

✖️

به نسخه‌ای که از ۶۴ بیتی پشتیبانی می‌کند ارتقا دهید.

2017.2

✖️

به نسخه‌ای که از ۶۴ بیتی پشتیبانی می‌کند ارتقا دهید.

2017.1

✖️

به نسخه‌ای که از ۶۴ بیتی پشتیبانی می‌کند ارتقا دهید.

<=۵٫۶

✖️

به نسخه‌ای که از ۶۴ بیتی پشتیبانی می‌کند ارتقا دهید.

تغییر تنظیمات ساخت برای خروجی کتابخانه‌های ۶۴ بیتی

اگر از نسخه‌ای از Unity استفاده می‌کنید که از کتابخانه‌های Android‏ ۶۴ بیتی پشتیبانی می‌کند، می‌توانید با اصلاح تنظیمات ساخت، نسخه ۶۴ بیتی برنامه‌تان را تولید کنید. از باطن IL2CPP به‌عنوان «باطن اسکریپت‌سازی» استفاده کنید. برای راه‌اندازی پروژه Unity خود برای ساخت معماری ۶۴ بیتی، موارد زیر را انجام دهید:

  1. به تنظیمات ساخت بروید و با بررسی اینکه نماد Unity در کنار Android در بخش پلاتفرم قرار دارد، مطمئن شوید که برای Android می‌سازید. ۱. اگر نماد Unity در کنار پلاتفرم Android نیست، Android را انتخاب کنید و روی Switch Platform (تغییر پلاتفرم) کلیک کنید.
  2. روی تنظیمات پخش‌کننده کلیک کنید.

    تنظیمات پخش‌کننده در Unity

  3. به پانل تنظیمات پخش‌کننده > تنظیمات Android > تنظیمات دیگر > پیکربندی بروید

  4. Scripting Backend را روی IL2CPP تنظیم کنید.

  5. چارگوش انتخاب Target Architecture > ARM64 را انتخاب کنید.

    تنظیم معماری‌های هدف در Unity

  6. مثل همیشه بسازید!

توجه داشته باشید که ساختن برای ARM64 مستلزم این است که همه دارایی‌هایتان به‌طور خاص برای آن پلاتفرم ساخته شده باشد. راهنمای Unity را برای کاهش اندازه APK دنبال کنید و برای کمک به کاهش این افزایش اندازه، از ویژگی Android App Bundle استفاده کنید.

رعایت استانداردهای چند APK و ۶۴ بیتی

اگر از پشتیبانی چند APK Google Play برای انتشار برنامه‌تان استفاده می‌کنید، توجه داشته باشید که مطابقت با الزام ۶۴ بیتی در سطح انتشار ارزیابی می‌شود. بااین‌حال، الزام ۶۴ بیتی برای فایل‌های APK یا دسته‌های برنامه‌ای که در دستگاه‌های دارای Android 9 Pie یا نسخه‌های جدیدتر توزیع نمی‌شوند اعمال نمی‌شود.

اگر یکی‌از فایل‌های APK شما به‌عنوان ناسازگار علامت‌گذاری شده است، اما نسخه قبلی است و امکان سازگار کردن آن وجود ندارد، یک راهبرد این است که مشخصه maxSdkVersion="27" را در عنصر uses-sdk در مانیفست آن فایل APK اضافه کنید. این APK به دستگاه‌های دارای Android 9 Pie یا نسخه‌های جدیدتر ارائه نمی‌شود و دیگر مانع مطابقت نیست.

مطابقت RenderScript و ۶۴ بیتی

اگر برنامه‌تان از RenderScript استفاده می‌کند و با نسخه قدیمی‌تری از ابزارهای Android ساخته شده است، ممکن است مشکلات سازگاری ۶۴ بیتی برای برنامه مشاهده کنید. با ابزارهای ساخت قدیمی‌تر از ۲۱.۰.۰، کامپایلر ممکن است بیت‌کد را در فایل خارجی .bc تولید کند. این فایل‌های قدیمی .bc دیگر برای معماری‌های ۶۴ بیتی پشتیبانی نمی‌شوند، بنابراین وجود این فایل در APK شما باعث مشکل عدم مطابقت می‌شود.

برای رفع مشکل، هرگونه فایل .bc را در پروژه‌تان بردارید، محیطتان را به build-tools-21.0.0 یا جدیدتر ارتقا دهید، و renderscriptTargetApi را در «استودیو Android» روی ۲۱+ تنظیم کنید تا به کامپایلر بگویید فایل‌های .bc را منتشر نکند. سپس، برنامه‌تان را بازسازی کنید، فایل‌های .bc را بررسی کنید، و در «کنسول Play» بارگذاری کنید.

آزمایش کردن برنامه در سخت‌افزار ۶۴ بیتی

نسخه ۶۴ بیتی برنامه‌تان باید همان کیفیت و مجموعه ویژگی‌های نسخه ۳۲ بیتی را ارائه دهد. برنامه‌تان را آزمایش کنید تا مطمئن شوید کاربران جدیدترین دستگاه‌های ۶۴ بیتی تجربه خوبی در برنامه‌تان دارند.

دستگاه‌های فقط ۶۴ بیتی

هرزمان ممکن بود، توصیه می‌کنیم برنامه‌تان را در محیطی که فقط ۶۴ بیتی است بااستفاده از یکی از گزینه‌های زیر آزمایش کنید:

‫Google Pixel با تصویر سیستم فقط ۶۴ بیتی

برای تسهیل توسعه و آزمایش برنامه، تصاویر سیستم ویژه‌ای با محیط صرفاً ۶۴ بیتی سخت‌گیرانه برای برخی‌از دستگاه‌های Pixel ارائه کرده‌ایم. این تصویرهای فقط ۶۴ بیتی در ابتدا هم‌زمان با تصویرهای سیستم کارخانه‌ای استاندارد برای نسخه‌های پیش‌نمایش Android 13 و 14 ارائه شدند، اما می‌توانید همچنان از آن‌ها برای آزمایش سازگاری برنامه‌تان با نسخه ۶۴ بیتی استفاده کنید.

دریافت تصویر فقط ۶۴ بیتی

مشابه ایمیج‌های سیستم کارخانه، می‌توانید ایمیج فقط ۶۴ بیتی را بااستفاده از Android Flash Tool یا با فلش کردن دستی دستگاه، همان‌طور که در بخش‌های زیر توضیح داده شده است، در دستگاهتان فلش کنید.

فلش کردن دستگاه بااستفاده از Android Flash Tool

Android Flash Tool به شما امکان می‌دهد تصویر سیستم را به‌طور ایمن در دستگاه Pixel پشتیبانی‌شده‌تان فلاش کنید. Android Flash Tool با هر مرورگر وبی که از WebUSB پشتیبانی کند، مثل Chrome یا Edge نسخه ۷۹ به بالا، کار می‌کند.

Android Flash Tool شما را گام‌به‌گام در فرایند فلش کردن دستگاهتان راهنمایی می‌کند—نیازی به نصب ابزار نیست—اما باید قفل دستگاهتان را باز کنید و «اشکال‌زدایی USB» را در «گزینه‌های توسعه‌دهندگان» فعال کنید. برای دستورالعمل‌های کامل، به اسناد Android Flash Tool مراجعه کنید.

دستگاهتان را ازطریق USB متصل کنید، سپس بسته به نوع ایمیج سیستمی که می‌خواهید فلش کنید، بااستفاده از یکی از پیوندهای زیر به Android Flash Tool بروید و راهنمایی‌های روی صفحه را دنبال کنید:

  • تصاویر سیستم فقط ۶۴ بیتی Android 14 (نسخه بتای ۵.۲)

    دستگاهی را که می‌خواهید فلش کنید انتخاب کنید:

  • تصاویر سیستم فقط ۶۴ بیتی Android 13 (QPR3 Beta 3.2)

    دستگاهی را که می‌خواهید فلش کنید انتخاب کنید:

فلش کردن دستی دستگاه

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

پس‌از پشتیبان‌گیری از داده‌های دستگاه و بارگیری ایمیج سیستم منطبق، می‌توانید ایمیج را در دستگاهتان فلش کنید.

هرزمان بخواهید می‌توانید به جدیدترین ساخت عمومی برگردید.

تصاویر تنظیمات کارخانه فقط ۶۴ بیتی برای Android 14 (نسخه بتای ۵.۳)

این ایمیج‌ها محیطی کاملاً ۶۴ بیتی برای آزمایش سازگاری برنامه ۶۴ بیتی ارائه می‌دهند. این پیکربندی‌های فقط ۶۴ بیتی فقط برای استفاده توسعه‌دهندگان است.

دستگاه بارگیری پیوند جمع‌آزمای SHA-256
Pixel 4a (5G)‎ 7e6731fab811ae389f5ff882d5c5a2b8b942b8363b22bbcc038b39d7c539e60a
Pixel 5 c4da6a19086a02f2cd2fa7a4054e870916954b8e5a61e9a07ee942c537e4b45a
Pixel 6 98943384284cbc7323b8867d84c36151757f67ae7633012fb69cb5d6bec2b554
Pixel 6 Pro 67ec40be5bd05a40fa5dabc1ce6795aae75d1904193d52e2da00425ed7cb895b
تصاویر تنظیمات کارخانه فقط ۶۴ بیتی برای Android 13‏ (QPR3 Beta 3.2)

این ایمیج‌ها محیطی کاملاً ۶۴ بیتی برای آزمایش سازگاری برنامه ۶۴ بیتی ارائه می‌دهند. این پیکربندی‌های فقط ۶۴ بیتی فقط برای استفاده توسعه‌دهندگان است.

دستگاه بارگیری پیوند جمع‌آزمای SHA-256
Pixel 4a (5G)‎ b4be40924f62c3c2b3ed20a9f7fa4303aa9c39649d778eb96f86c867fe3ae59a
Pixel 5 6e5e027a4f64f9f786db9bb69d50d1a551c3f6aad893ae450e1f8279ea1b761a
Pixel 6 becb9b81a5bddad67a4ac32d30a50dcb372b9d083cb7c046e5180510e479a0b8
Pixel 6 Pro b0ef544ed2312ac44dc827f24999281b147c11d76356c2d06b2c57a191c60480
برگشتن به ساخت عمومی

می‌توانید از Android Flash Tool برای فلش کردن تصویر کارخانه استفاده کنید یا تصویر سیستم با مشخصات کارخانه را از صفحه تصاویر کارخانه برای دستگاه‌های Nexus و Pixel دریافت کنید و سپس آن را به‌صورت دستی در دستگاه فلش کنید.

شبیه‌ساز Android

از Android نسخه ۱۲ (سطح میانای برنامه‌سازی کاربردی ۳۱)، تصاویر سیستم «شبیه‌ساز Android» فقط ۶۴ بیتی هستند. یک دستگاه مجازی Android‏ (AVD) ایجاد کنید و از تصویر سیستم با Android 12 (سطح میانای برنامه‌سازی کاربردی ۳۱) یا بالاتر استفاده کنید تا محیطی کاملاً ۶۴ بیتی برای آزمایش برنامه داشته باشید.

گزینه‌های دیگر دستگاه

اگر یکی از این دستگاه‌ها را ندارید یا نمی‌توانید از «شبیه‌ساز Android» استفاده کنید، گزینه خوب بعدی استفاده از دستگاهی است که قابلیت ۶۴ بیتی داشته باشد، مثل Google Pixel یا دیگر دستگاه‌های پرچم‌دار اخیر از سازندگان دستگاه‌های دیگر.

نصب و آزمایش برنامه

آسان‌ترین راه برای آزمایش APK، نصب برنامه بااستفاده از Android Debug Bridge (adb) است. در بیشتر موارد، می‌توانید --abi را به‌عنوان پارامتری برای نشان دادن کتابخانه‌هایی که باید در دستگاه نصب شوند ارائه دهید. این کار برنامه را فقط با کتابخانه‌های ۶۴ بیتی در دستگاه نصب می‌کند.

:: Command Line
# A successful install:
> adb install --abi armeabi-v7a YOUR_APK_FILE.apk
Success

# If your APK does not have the 64-bit libraries:
> adb install --abi arm64-v8a YOUR_APK_FILE.apk
adb: failed to install YOUR_APK_FILE.apk: Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]

# If your device does not support 64-bit, an emulator, for example:
> adb install --abi arm64-v8a YOUR_APK_FILE.apk
ABI arm64-v8a not supported on this device

پس‌از نصب موفقیت‌آمیز، برنامه‌تان را مثل همیشه آزمایش کنید تا مطمئن شوید کیفیت آن با نسخه ۳۲ بیتی یکسان است.

بررسی مشکلات شناخته‌شده مربوط به سازگاری

هنگام آزمایش، برنامه‌تان را ازنظر مشکلات زیر که بر برنامه‌ها هنگام اجرا در دستگاه‌های ۶۴ بیتی تأثیر می‌گذارد بررسی کنید. حتی اگر برنامه‌تان مستقیماً به کتابخانه‌های تحت‌تأثیرقرارگرفته وابسته نیست، کتابخانه‌ها و کیت‌های توسعه نرم‌افزار شخص ثالث در وابستگی‌های برنامه‌تان ممکن است اینگونه عمل کنند.

SoLoader

اگر از کیت توسعه نرم‌افزار بارکننده کد بومی SoLoader استفاده می‌کنید، به نسخه ۰.۱۰.۴ یا بالاتر به‌روزرسانی کنید. اگر برنامه‌تان از کیت‌های توسعه نرم‌افزاری استفاده می‌کند که به SoLoader وابسته هستند، حتماً به جدیدترین نسخه پایدار کیت‌های توسعه نرم‌افزار تحت‌تأثیرقرارگرفته نیز به‌روزرسانی کنید.

SoLoader نسخه ۰.۹.۰ و پایین‌تر فرض می‌کند که کتابخانه‌های سیستم در /vendor/lib:/system/lib وجود دارند. این اشکال در دستگاه‌هایی مانند Pixel 7 که مسیر وجود دارد قابل‌مشاهده نیست، اما این فرض باعث ازکارافتادن دستگاه‌هایی می‌شود که فقط کتابخانه‌های سیستم را در /vendor/lib64:/system/lib64 دارند.

برای اطلاعات بیشتر درباره رفع این مشکل و مشکلات دیگری که SoLoader ایجاد می‌کند، پاسخ مربوطه را در «مرکز راهنمایی Google» ببینید.

OpenSSL

اگر از کتابخانه OpenSSL استفاده می‌کنید، به OpenSSL 1.1.1i یا بالاتر به‌روزرسانی کنید. اگر برنامه‌تان از کیت‌های توسعه نرم‌افزاری استفاده می‌کند که ارتباط را بااستفاده از HTTPS فراهم می‌کنند، یا کیت‌های توسعه نرم‌افزار دیگری که به OpenSSL وابسته هستند، حتماً به جدیدترین نسخه کیت توسعه نرم‌افزاری که از نسخه جدیدتر OpenSSL استفاده می‌کند به‌روزرسانی کنید. اگر نسخه سازگار با خط‌مشی دردسترس نیست، با ارائه‌دهنده کیت توسعه نرم‌افزار تماس بگیرید.

ARMv8.3 PAC یکپارچگی جریان کنترل به‌کمک سخت‌افزار را با اصالت‌سنجی اشاره‌گرها در زمان اجرا فعال می‌کند. نسخه‌های قدیمی‌تر OpenSSL استفاده نادرستی از این قابلیت‌ها دارند و باعث خرابی در زمان اجرا در همه دستگاه‌های دارای پردازنده مبتنی بر ARMv8.3a و بالاتر می‌شوند.

برای کسب اطلاعات بیشتر درباره رفع این مشکل و مشکلات دیگری که OpenSSL ایجاد می‌کند، پاسخ مربوطه را در «مرکز راهنمایی Google» ببینید.

BTI

ARMv8.5 و بالاتر از «دستورالعمل‌های هدف انشعاب» (BTI) برای کمک به محافظت دربرابر حملات JOP استفاده می‌کند. نسخه‌های قبلی کیت‌های توسعه نرم‌افزار مبهم‌سازی که به انحراف‌های تصادفی کتابخانه‌های ساخته‌شده با BTI منشعب می‌شوند می‌توانند باعث ازکارافتادن برنامه‌ها شوند. چون دستورالعمل‌ها به‌صورت HINT کدگذاری شده‌اند، این اشکال در دستگاه‌هایی که از BTI پشتیبانی نمی‌کنند قابل‌مشاهده نیست.

انتشار

وقتی احساس کردید برنامه‌تان آماده است، آن را به‌طور معمول منتشر کنید. مثل همیشه، به دنبال کردن روال‌های مطلوب برای استقرار برنامه‌تان ادامه دهید. توصیه می‌کنیم از دسته‌های هدف آزمایشی بسته برای عرضه به تعداد محدودی از کاربران استفاده کنید تا مطمئن شوید کیفیت برنامه‌تان ثابت است.

همانند زمانی که به‌روزرسانی عمده‌ای را عرضه می‌کنید، مطمئن شوید که قبل‌از انتشار برای مخاطبان بیشتر، آن را به‌طور کامل در دستگاه‌های سازگار با ۶۴ بیت آزمایش کرده‌اید.

دانلود کنید Android 14 factory system image (64-bit-only)

قبل از دانلود، باید با شرایط و ضوابط زیر موافقت کنید.

شرایط و ضوابط

By clicking to accept, you hereby agree to the following:

All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.

Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).

WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
دانلود کنید Android 14 factory system image (64-bit-only)

bramble_beta_64-upb5.230623.006-factory-7e6731fa.zip

دانلود کنید Android 14 factory system image (64-bit-only)

قبل از دانلود، باید با شرایط و ضوابط زیر موافقت کنید.

شرایط و ضوابط

By clicking to accept, you hereby agree to the following:

All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.

Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).

WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
دانلود کنید Android 14 factory system image (64-bit-only)

redfin_beta_64-upb5.230623.006-factory-c4da6a19.zip

دانلود کنید Android 14 factory system image (64-bit-only)

قبل از دانلود، باید با شرایط و ضوابط زیر موافقت کنید.

شرایط و ضوابط

By clicking to accept, you hereby agree to the following:

All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.

Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).

WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
دانلود کنید Android 14 factory system image (64-bit-only)

oriole_beta_64-upb5.230623.006-factory-98943384.zip

دانلود کنید Android 14 factory system image (64-bit-only)

قبل از دانلود، باید با شرایط و ضوابط زیر موافقت کنید.

شرایط و ضوابط

By clicking to accept, you hereby agree to the following:

All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.

Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).

WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
دانلود کنید Android 14 factory system image (64-bit-only)

raven_beta_64-upb5.230623.006-factory-67ec40be.zip

دانلود کنید Android 13 factory system image (64-bit-only)

قبل از دانلود، باید با شرایط و ضوابط زیر موافقت کنید.

شرایط و ضوابط

By clicking to accept, you hereby agree to the following:

All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.

Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).

WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
دانلود کنید Android 13 factory system image (64-bit-only)

bramble_64-t3b3.230413.009-factory-b4be4092.zip

دانلود کنید Android 13 factory system image (64-bit-only)

قبل از دانلود، باید با شرایط و ضوابط زیر موافقت کنید.

شرایط و ضوابط

By clicking to accept, you hereby agree to the following:

All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.

Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).

WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
دانلود کنید Android 13 factory system image (64-bit-only)

redfin_64-t3b3.230413.009-factory-6e5e027a.zip

دانلود کنید Android 13 factory system image (64-bit-only)

قبل از دانلود، باید با شرایط و ضوابط زیر موافقت کنید.

شرایط و ضوابط

By clicking to accept, you hereby agree to the following:

All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.

Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).

WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
دانلود کنید Android 13 factory system image (64-bit-only)

oriole_64-t3b3.230413.009-factory-becb9b81.zip

دانلود کنید Android 13 factory system image (64-bit-only)

قبل از دانلود، باید با شرایط و ضوابط زیر موافقت کنید.

شرایط و ضوابط

By clicking to accept, you hereby agree to the following:

All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.

Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).

WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
دانلود کنید Android 13 factory system image (64-bit-only)

raven_64-t3b3.230413.009-factory-b0ef544e.zip