Memastikan aplikasi Anda mendukung perangkat 64-bit

Mulai 1 Agustus 2019, semua aplikasi yang dipublikasikan di Google Play harus mendukung arsitektur 64-bit. CPU 64-bit memberikan pengalaman yang lebih cepat dan lebih interaktif kepada pengguna. Penambahan versi 64-bit untuk aplikasi akan memberikan peningkatan performa, membuka peluang inovasi di masa depan, dan membuat Anda siap untuk menerapkan aplikasi pada perangkat yang menggunakan hardware 64-bit.

Panduan ini menjelaskan langkah-langkah yang dapat Anda lakukan sekarang untuk memastikan bahwa aplikasi 32-bit Anda siap mendukung perangkat 64-bit.

Menilai aplikasi Anda

Jika aplikasi Anda hanya menggunakan kode yang ditulis dalam bahasa pemrograman Java atau Kotlin, termasuk library atau SDK apa pun, berarti aplikasi Anda sudah siap untuk perangkat 64-bit. Jika aplikasi Anda menggunakan native code, atau Anda tidak yakin kode apa yang digunakan, sebaiknya nilai aplikasi Anda lalu ambil tindakan.

Apakah aplikasi Anda menggunakan native code?

Hal pertama yang harus dilakukan adalah memeriksa apakah aplikasi Anda menggunakan native code. Aplikasi Anda menggunakan native code jika:

  • Menggunakan kode C/C ++ (native) pada aplikasi.
  • Terhubung dengan native library pihak ketiga.
  • Dibuat oleh pembuat aplikasi pihak ketiga yang menggunakan native library.

Apakah aplikasi Anda menyertakan library 64-bit?

Cara paling sederhana untuk memeriksa ketersediaan library 64-bit pada aplikasi adalah dengan memeriksa struktur file APK Anda. Saat dibuat, APK akan dikemas dengan semua native library yang diperlukan oleh aplikasi. Native library disimpan dalam berbagai folder berdasarkan ABI-nya. Anda tidak harus mendukung setiap arsitektur 64-bit, tetapi untuk setiap arsitektur 32-bit native yang didukung, Anda harus menyertakan arsitektur 64-bit yang terkait.

Untuk arsitektur ARM, library 32-bit ada di armeabi-v7a dan untuk 64-bit ada di arm64-v8a.

Untuk arsitektur x86, temukan x86 untuk 32-bit dan x86_64 untuk 64-bit.

Hal pertama yang perlu dilakukan adalah memastikan bahwa Anda memiliki native library di kedua folder ini. Ringkasnya:

Platform Folder library 32-bit Folder library 64-bit
ARM lib/armeabi-v7a lib/arm64-v8a
x86 lib/x86 lib/x86_64

Perlu diingat bahwa bergantung pada aplikasi Anda, mungkin akan ada set library yang sama persis di setiap folder, mungkin juga tidak. Tujuannya adalah untuk memastikan bahwa aplikasi Anda berjalan dengan benar di lingkungan khusus 64-bit.

Pada umumnya, APK atau paket yang dibuat untuk arsitektur 32-bit dan 64-bit akan memiliki folder untuk kedua ABI, masing-masing dengan set native library yang terkait. Jika tidak ada dukungan untuk 64-bit, Anda akan melihat folder ABI 32-bit tetapi tidak melihat folder 64-bit.

Mencari native library menggunakan APK Analyzer

APK Analyzer adalah fitur yang memungkinkan Anda mengevaluasi berbagai aspek APK yang dibuat. Dalam kasus ini, kita akan menggunakannya untuk menemukan native library, dan memastikan bahwa library 64-bit ada.

  1. Buka Android Studio, dan buka project apa saja.
  2. Dari menu, pilih Build > Analisis APK

meluncurkan APK analyzer

  1. Pilih APK yang ingin Anda evaluasi.
  2. Lihat di dalam folder lib, tempat Anda akan menemukan file '.so'. Jika file '.so' tidak dapat ditemukan pada aplikasi Anda, berarti aplikasi Anda sudah siap dan Anda tidak perlu melakukan tindakan apa pun. Jika Anda melihat armeabi-v7a atau x86, berarti Anda memiliki library 32-bit.

  3. Periksa untuk memastikan ada file '.so' yang serupa di folder arm64-v8a atau x86_64.

    meluncurkan APK analyzer

  4. Jika library arm64-v8a atau x86_64 tidak ada, Anda perlu mengupdate proses build untuk mulai membuat dan mengemas artefak tersebut dalam APK Anda.

  5. Jika kedua library sudah dikemas, Anda dapat beralih ke Menguji aplikasi pada perangkat 64-bit.

Mencari native library dengan mengekstrak APK

File APK memiliki struktur seperti file zip, dan juga dapat diekstrak. Jika Anda lebih suka menggunakan command line atau fitur ekstraksi lainnya, maka mengekstrak APK cocok untuk Anda.

Cukup ekstrak file APK (bergantung pada software ekstraksinya, Anda mungkin perlu mengubah nama file menjadi .zip) dan cari file yang telah diekstrak. Ikuti panduan di atas untuk mengetahui apakah Anda siap mendukung perangkat 64-bit.

Misalnya, Anda dapat menjalankan perintah berikut dari command line:

:: 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
    

Perhatikan bahwa dalam contoh ini, library armeabi-v7a dan arm64-v8a ada, yang berarti aplikasi Anda mendukung arsitektur 64-bit.

Membuat aplikasi dengan library 64-bit

Berikut ini adalah petunjuk untuk membuat library 64-bit. Namun, perlu diketahui bahwa petunjuk ini hanya mencakup pembuatan kode dan library yang dapat Anda buat dari sumber.

Jika Anda menggunakan SDK atau library eksternal, pastikan Anda menggunakan versi 64-bit dengan mengikuti langkah-langkah di atas. Hubungi pemilik SDK atau library jika versi 64-bit tidak tersedia, dan pertimbangkan hal ini saat merencanakan dukungan Anda untuk perangkat 64-bit.

Membuat aplikasi dengan Android Studio atau Gradle

Sebagian besar project Android Studio menggunakan Gradle sebagai sistem build yang mendasarinya, sehingga bagian ini berlaku pada kedua kasus. Untuk mengaktifkan build untuk native code, Anda hanya perlu menambahkan arm64-v8a dan/atau x86_64 (tergantung arsitektur yang ingin Anda dukung) ke setelan ndk.abiFilters pada file 'build.gradle' aplikasi Anda:

// Your app's build.gradle
    apply plugin: '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'
    // ...
    

Membuat aplikasi dengan CMake

Jika aplikasi Anda dibuat menggunakan CMake, Anda dapat membuat build untuk ABI 64-bit dengan meneruskan arm64-v8a ke parameter '-DANDROID_ABI':

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

Opsi ini tidak berpengaruh jika Anda menggunakan externalNativeBuild. Lihat bagian Membuat aplikasi dengan Gradle.

Membuat aplikasi dengan ndk-build

Jika aplikasi Anda dibuat dengan ndk-build, Anda dapat membuat build untuk ABI 64-bit dengan memodifikasi file 'app.mk' melalui variabel APP_ABI:

APP_ABI := armeabi-v7a arm64-v8a x86 x86_64
    

Opsi ini tidak berpengaruh jika Anda menggunakan externalNativeBuild. Lihat bagian Membuat aplikasi dengan Gradle.

Mengurangi dampak peningkatan ukuran dengan Android App Bundle

Penambahan dukungan arsitektur 64-bit ke aplikasi dapat menyebabkan ukuran APK meningkat. Kami sangat menyarankan penggunaan fitur Android App Bundle untuk meminimalkan dampak peningkatan ukuran pada native code 32 dan 64-bit dalam APK yang sama.

Pengalihan aplikasi Anda ke Android App Bundle dapat memperbaiki ukuran APK, dengan menguranginya hingga lebih kecil daripada ukuran saat ini.

Developer game

Kami memahami bahwa memigrasikan mesin game pihak ketiga adalah proses yang intensif dengan waktu pengerjaan yang lama. Untungnya, tiga mesin yang paling sering digunakan sudah mendukung 64-bit:

  • Unreal sejak 2015
  • Cocos2d sejak 2015
  • Unity sejak 2018

Developer Unity

Upgrade ke versi yang mendukung

Unity mulai menyediakan dukungan 64-bit pada versi 2018.2 & 2017.4.16.

Jika menggunakan versi Unity yang tidak mendukung 64-bit, tentukan ke versi mana Anda ingin mengupgrade, dan ikuti panduan yang disediakan Unity untuk memigrasikan lingkungan Anda dengan memastikan bahwa aplikasi Anda diupgrade ke versi yang dapat membuat library 64-bit. Unity merekomendasikan Anda memiliki akses ke fitur dan update terkini dengan mengupgrade ke versi LTS editor terbaru.

Berikut adalah diagram yang merangkum berbagai versi Unity dan tindakan yang perlu Anda lakukan:

Versi Unity Mendukung 64-bit? Tindakan yang disarankan

2018.4 (LTS)

✔️

(Menunggu rilis) Pastikan setelan build Anda menghasilkan library 64-bit.

2018.3

✔️

Pastikan setelan build Anda menghasilkan library 64-bit.

2018.2

✔️

Pastikan setelan build Anda menghasilkan library 64-bit.

2018.1

Memberikan dukungan 64-bit eksperimental.

2017.4 (LTS)

✔️

Didukung pada 2017.4.16. Pastikan setelan build Anda menghasilkan library 64-bit.

2017.3

✖️

Upgrade ke versi yang mendukung 64-bit.

2017.2

✖️

Upgrade ke versi yang mendukung 64-bit.

2017.1

✖️

Upgrade ke versi yang mendukung 64-bit.

<=5.6

✖️

Upgrade ke versi yang mendukung 64-bit.

Memastikan setelan build menghasilkan library 64-bit

Jika menggunakan versi Unity yang mendukung library Android 64-bit, Anda dapat membuat aplikasi versi 64-bit dengan menyesuaikan setelan build. Anda juga perlu menggunakan backend IL2CPP sebagai Scripting Backend Anda (selengkapnya di sini). Untuk menyiapkan project Unity Anda guna membuat arsitektur 64-bit, lakukan hal berikut:

  1. Buka Build Settings dan pastikan Anda membuat build untuk Android dengan memverifikasi bahwa simbol Unity berada di sebelah Platform Android.**
    1. Jika simbol Unity tidak berada di sebelah Platform Android, pilih Android dan klik Switch Platform.
  2. Klik Player settings.

    Player settings di Unity

  3. Buka Player Settings Panel > Settings for Android > Other settings > Configuration

  4. Tetapkan Scripting Backend ke IL2CPP.

  5. Pilih kotak centang **Target Architecture > ARM64.

    menetapkan arsitektur target di Unity

  6. Buat build seperti biasa.

Perhatikan bahwa pembuatan build ARM64 akan mewajibkan semua aset Anda dibuat khusus untuk platform tersebut. Ikuti panduan Unity untuk mengurangi ukuran APK, dan pertimbangkan untuk memanfaatkan fitur Android App Bundle untuk membantu mengurangi peningkatan ukuran.

Menguji aplikasi pada hardware 64-bit

Aplikasi versi 64-bit Anda harus menawarkan kualitas dan fitur yang sama dengan versi 32-bit. Uji aplikasi Anda untuk memastikan bahwa pengguna yang menggunakan perangkat 64-bit terbaru mendapatkan pengalaman terbaik pada aplikasi Anda.

Untuk mulai menguji aplikasi, Anda harus memiliki perangkat yang mendukung 64-bit. Ada berbagai perangkat populer yang tersedia dan mendukung 64-bit, seperti Google Pixel dan perangkat unggulan lainnya.

Cara termudah untuk menguji APK Anda adalah dengan menginstal aplikasi menggunakan adb. Pada kebanyakan kasus, Anda dapat menyediakan --abi sebagai parameter untuk menunjukkan library yang akan diinstal ke perangkat. Tindakan ini akan menginstal aplikasi dengan hanya library 64-bit di perangkat.

:: 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
    

Setelah Anda berhasil menginstal, uji aplikasi seperti biasanya untuk memastikan kualitasnya sama dengan versi 32-bit.

Memublikasikan

Setelah merasa aplikasi Anda siap, publikasikan seperti biasa. Jangan lupa untuk terus mengikuti praktik terbaik dalam menerapkan aplikasi Anda. Sebaiknya manfaatkan track pengujian tertutup untuk meluncurkan aplikasi ke sejumlah kecil pengguna guna memastikan kualitas aplikasi Anda konsisten.

Seperti saat meluncurkan update besar, pastikan Anda telah menjalankan pengujian secara menyeluruh pada perangkat yang mendukung 64-bit sebelum memublikasikan ke audiens yang lebih besar.