Konsep Android (untuk Developer Web)

Peter Conn
Peter Conn
Joyce Toh
Joyce Toh

Jika Anda seorang developer Web yang baru mengenal Android dan Google Play, ada beberapa detail yang harus Anda ketahui. Sudah ada banyak resource dan dokumentasi untuk hal ini (terima kasih kepada tim Android), tetapi di sini kita akan menyoroti beberapa konsep penting dan kaitannya dengan Bubblewrap.

Kunci Upload vs. Penandatanganan

Jika Anda berencana menggunakan Bubblewrap untuk membuat Android App Bundle (AAB) (Catatan: Mulai Agustus 2021, Google Play akan mewajibkan semua aplikasi baru menggunakan format Android App Bundle) atau APK untuk diupload dan dipublikasikan ke Google Play, Anda harus menandatangani aplikasi dengan kunci penandatanganan. Google Play memberi Anda dua opsi terkait cara menangani hal ini:

  • Penandatanganan Aplikasi Play (sangat direkomendasikan): Google akan mengelola dan melindungi kunci penandatanganan aplikasi untuk Anda. Layanan ini menggunakannya untuk menandatangani APK Anda untuk distribusi. Penandatanganan Aplikasi Play menggunakan dua kunci. "Kunci penandatanganan aplikasi" yang akan dikelola Google untuk Anda dan "kunci upload" yang Anda pertahankan dan akan tetap bersifat pribadi untuk Anda. Anda dapat menggunakan kunci upload untuk menandatangani aplikasi agar dapat diupload ke Konsol Play. Sistem ini memungkinkan Anda mereset kunci upload jika kunci upload hilang atau disusupi, dengan menghubungi tim dukungan Play. Saat ini, Google Play memungkinkan Anda mengupload aplikasi sebagai AAB atau APK:
    • Android App Bundle (AAB): Saat mengupload AAB ke Konsol Play, Anda akan menunda pembuatan dan pembuatan APK ke Google Play Store. Saat pengguna mendownload dan menginstal aplikasi Anda, Google Play akan mendistribusikannya sebagai APK bertanda tangan. Oleh karena itu, penandatanganan APK juga perlu dilakukan oleh Google Play. Jadi, secara default, jika Anda mengupload aplikasi sebagai AAB ke Konsol Play, Anda akan harus menggunakan Penandatanganan Aplikasi Play.
    • APK: Dengan APK, Anda memiliki pilihan untuk ikut serta dalam Penandatanganan Aplikasi Play. Memilih ikut serta dalam Penandatanganan Aplikasi Play sangat disarankan karena akan meningkatkan keamanan kunci penandatanganan. Seperti yang telah disebutkan sebelumnya, Google Play akan segera mewajibkan semua aplikasi baru diupload dalam format AAB, jadi sebaiknya lakukan hal tersebut daripada mengupload APK.
  • Kelola kunci penandatanganan Anda sendiri: Jika memilih untuk mengelola kunci Anda sendiri dan tidak ikut serta dalam Penandatanganan Aplikasi Play, Anda akan bertanggung jawab sepenuhnya atas kunci penandatanganan aplikasi. Tidak seperti Penandatanganan Aplikasi Play, Anda tidak dapat meresetnya jika kehilangan kunci. Oleh karena itu, jika kunci penandatanganan aplikasi hilang, Anda juga tidak akan dapat mengupdate aplikasi.

Selama penyiapan bubblewrap init, saat membuka bagian "Menandatangani informasi kunci (5/5)", Anda akan diminta untuk memasukkan "Lokasi key store" dan "Nama kunci", atau gunakan default. Lokasi key store default adalah file android.keystore di direktori project Anda dan nama kunci default adalah android. Jika Bubblewrap tidak menemukan keystore dengan nama kunci tersebut di lokasi, Bubblewrap akan membuatkannya untuk Anda dan juga meminta sandi Anda. Catat sandi yang Anda masukkan karena akan diperlukan selama proses build (bubblewrap build) saat Anda akan menggunakan kunci untuk menandatangani aplikasi. Jika Anda memilih ikut serta dalam Penandatanganan Aplikasi Play, kunci penandatanganan yang dihasilkan dan digunakan oleh Bubblewrap untuk menandatangani aplikasi akan menjadi "kunci upload". Baik memilih menggunakan kunci yang dihasilkan Bubblewrap sebagai kunci penandatanganan atau upload, Anda harus menjaga dan menjaga kerahasiaan kunci tersebut. Sebaiknya jangan commit ke kontrol versi. Sebagai gantinya, batasi jumlah individu yang dapat mengakses data tersebut.

Digital Asset Links diperlukan untuk mendeklarasikan hubungan antara situs dan aplikasi Android Anda. Untuk memastikan bahwa aplikasi Android yang dibuat oleh Bubblewrap diverifikasi dengan benar dan diluncurkan sebagai Aktivitas Web Tepercaya (bukan Tab Khusus Chrome), Anda harus menambahkan kunci yang sesuai ke file assetlinks.json. Lalu upload ke situs Anda di .well-known/assetlinks.json (relatif terhadap root). File assetlinks.json Anda harus mengikuti format ini:

[{
 "relation": ["delegate_permission/common.handle_all_urls"],
 "target": {
   "namespace": "android_app",
   "package_name": "com.your.package_name",
   "sha256_cert_fingerprints": [
     "XX:XX:XX:..."
   ]
 }
}]

Mendapatkan sidik jari sertifikat SHA256

Untuk membuat file assetlinks.json, Anda memerlukan sidik jari sertifikat SHA 256 yang terkait dengan kunci penandatanganan aplikasi Anda. Hal penting yang perlu diperhatikan adalah sidik jari yang terkait dengan kunci penandatanganan dan upload akan berbeda. Perhatikan perbedaan ini, terutama jika Anda mengamati peluncuran aplikasi sebagai Tab Khusus Chrome (dengan panel browser terlihat). Kemudian, kemungkinan file assetlinks.json Anda tidak memiliki sidik jari yang sesuai dengan kunci yang sesuai.

Sebaiknya Anda memiliki sidik jari sertifikat penandatanganan dan upload dalam assetlinks.json untuk men-debug aplikasi secara lokal dengan lebih mudah. Lihat Menambahkan Kunci Lainnya di bawah untuk informasi selengkapnya tentang cara memiliki kedua kunci di file assetlinks.json.

Ada beberapa cara untuk mendapatkan sidik jari yang dijelaskan di bagian berikutnya. Semuanya harus memberi Anda sidik jari yang sama, jadi jangan ragu untuk memilih metode yang paling mudah.

Melalui Konsol Play

Bergantung pada apakah Anda memilih ikut serta dalam Penandatanganan Aplikasi Play atau tidak, Anda mungkin memiliki satu atau dua kunci. Untuk mengambil sidik jari SHA256 yang sesuai bagi setiap kunci:

  1. Buka Konsol Play
  2. Pilih aplikasi yang Anda minati
  3. Pada menu navigasi di sebelah kiri, pada bagian Rilis, buka Penyiapan -> Integritas Aplikasi.
  4. Salin SHA256 untuk kunci yang sesuai:

Ambil sidik jari sertifikat SHA256 yang sesuai untuk kunci penandatanganan atau upload Anda

  • Kunci penandatanganan: Salin sidik jari SHA256 untuk "Sertifikat kunci penandatanganan aplikasi". Sidik jari ini akan sesuai dengan aplikasi jika Anda mendownloadnya dari Google Play Store karena Google Play mendistribusikan aplikasi yang ditandatangani dengan kunci penandatanganan.

  • Upload key: Salin sidik jari SHA256 untuk "Upload key certificate". Sidik jari ini akan sesuai dengan aplikasi Anda jika Anda menginstalnya secara lokal (misalnya melalui ADB melalui USB). APK tersebut (di komputer lokal Anda) dibuat oleh Bubblewrap sehingga juga ditandatangani oleh kunci yang dibuat untuk Anda (selama penyiapan init). Perlu diingat bahwa ini mungkin kunci penandatanganan untuk aplikasi yang diinstal secara lokal, tetapi sebenarnya ini adalah "kunci upload" setelah Anda memublikasikan aplikasi melalui Play.

Melalui keytool

keytool adalah alat pengelolaan kunci dan sertifikat. Anda dapat menggunakan keytool untuk mengekstrak sidik jari SHA 256 yang terkait dengan APK atau AAB Bubblewrap yang dihasilkan. Perhatikan bahwa sidik jari ini ditujukan untuk kunci penandatanganan lokal dan jika Anda mengupload aplikasi ke Play dan memilih ikut serta dalam Penandatanganan Aplikasi Play, kunci ini akan menjadi "kunci upload".

keytool -printcert -jarfile [path to APK or AAB] | grep SHA256

Cara lain untuk mendapatkan file Digital Asset Links yang tepat untuk aplikasi Anda adalah menggunakan Alat Link Aset:

  1. Instal Alat Link Aset dari Play Store.
  2. Di perangkat yang sama, download aplikasi dari Google Play Store atau instal secara lokal.
  3. Buka aplikasi Alat Asset Link, dan Anda akan melihat daftar semua aplikasi yang diinstal di perangkat berdasarkan nama paket. Filter daftar menurut ID aplikasi yang Anda pilih sebelumnya selama bubblewrap init dan klik entri tersebut.
  4. Anda akan melihat halaman yang mencantumkan tanda tangan aplikasi Anda dan Digital Asset Link yang dihasilkan. Klik tombol Salin atau Bagikan di bagian bawah untuk mengekspornya sesuka Anda (misalnya, simpan ke Google Keep, kirim ke email Anda sendiri).

Ide yang sama berlaku seperti sebelumnya terkait kunci penandatanganan atau upload. Jika Anda menginstal aplikasi dari Google Play Store, Alat Asset Link akan memberi Anda sidik jari untuk kunci penandatanganan aplikasi. Jika Anda menginstal aplikasi langsung dari komputer lokal, maka sidik jari tersebut akan digunakan untuk kunci Bubblewrap yang dihasilkan.

Setelah menguploadnya, pastikan Anda dapat mengakses file link aset di browser. Pastikan https://example.com/.well-known/assetlinks.json di-resolve ke file yang baru Anda upload.

Situs berbasis Jekyll

Jika situs Anda dibuat oleh Jekyll (seperti GitHub Pages), Anda harus menambahkan baris konfigurasi agar direktori .well-known disertakan dalam output. Bantuan GitHub memiliki informasi selengkapnya tentang topik ini. Buat file bernama _config.yml di root situs Anda (atau tambahkan ke file tersebut jika sudah ada), lalu masukkan:

# Folders with dotfiles are ignored by default.
include: [.well-known]

Menambahkan kunci lainnya

File Digital Asset Link dapat berisi lebih dari satu aplikasi, dan untuk setiap aplikasi, dapat berisi lebih dari satu kunci. Misalnya, untuk menambahkan kunci kedua, cukup gunakan Alat Link Aset untuk menentukan kunci dan menambahkannya sebagai entri kedua. Kode di Chrome yang mengurai JSON ini cukup ketat, jadi pastikan Anda tidak menambahkan koma tambahan secara tidak sengaja di akhir daftar.

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.your.package_name",
    "sha256_cert_fingerprints": [
      "XX:XX:XX:..."
    ]
  }
},{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.your.package_name",
    "sha256_cert_fingerprints": [
      "XX:XX:XX:..."
    ]
  }
}]

Pemecahan masalah

Chrome mencatat alasan kegagalan verifikasi Digital Asset Links dan Anda dapat melihat log tersebut di perangkat Android dengan adb logcat. Jika mengembangkan di Linux/Mac, Anda dapat melihat log yang relevan dari perangkat terhubung dengan:

> adb logcat -v brief | grep -e OriginVerifier -e digital_asset_links

Misalnya, jika melihat pesan Statement failure matching fingerprint., Anda harus menggunakan Alat Link Aset untuk melihat tanda tangan aplikasi Anda dan memastikan tanda tangan tersebut cocok dengan yang ada di file assetlinks.json Anda.