Android Concepts (Web Geliştiricileri için)

Peter Conn
Peter Conn
Joyce Toh
Joyce Toh

Android ve Google Play'de yeni olan bir web geliştiriciyseniz dikkat etmeniz gereken bazı ayrıntılar vardır. Bu konuda zaten birçok kaynak ve doküman mevcuttur (Android ekibine teşekkürler). Ancak burada bazı önemli kavramları ve bunların Bubblewrap ile olan ilişkisini vurgulayacağız.

Yükleme anahtarı ve imzalama anahtarı

Android App Bundle (AAB) oluşturmak için Bubblewrap'ı (Not: Ağustos 2021'den itibaren Google Play'de tüm yeni uygulamaların Android App Bundle biçimini kullanması gerekecek) veya Google Play'e yükleyip yayınlamak için APK oluşturmayı planlıyorsanız uygulamanızı bir imzalama anahtarıyla imzalamanız gerekir. Google Play, bu sorunu çözmek için size iki seçenek sunar:

  • Play Uygulama İmzalama (çok önerilir): Google, uygulamanızın imzalama anahtarını sizin için yönetir ve korur. Google, APK'larınızı dağıtım için imzalamak amacıyla bu anahtarı kullanır. Play Uygulama İmzalama iki anahtar kullanır. Google'ın sizin için yöneteceği "uygulama imzalama anahtarı" ve sizin saklayacağınız ve gizli tutmanız gereken "yükleme anahtarı". Yükleme anahtarını, uygulamanızı Play Console'a yüklemek için imzalamak üzere kullanırsınız. Bu sistem, yükleme anahtarınızın kaybolması veya güvenliğinin ihlal edilmesi durumunda Play destek ekibiyle iletişime geçerek anahtarınızı sıfırlamanızı sağlar. Şu anda Google Play, uygulamanızı AAB veya APK olarak yüklemenize olanak tanır:
    • Android App Bundle (AAB): Play Console'a bir AAB yüklediğinizde APK'ların derlenmesi ve oluşturulması işlemini Google Play Store'a ertelersiniz. Bir kullanıcı uygulamanızı indirip yüklediğinde Google Play, uygulamayı kullanıcıya imzalanmış bir APK olarak dağıtır. Bu nedenle, APK'ların imzalanmasının da Google Play tarafından yapılması gerekir. Bu nedenle, uygulamanızı varsayılan olarak Play Console'a AAB olarak yüklerseniz Play Uygulama İmzalama'yı kullanmanız gerekir.
    • APK: APK'larda Play Uygulama İmzalama'ya kaydolma seçeneğiniz vardır. Play Uygulama İmzalama'yı etkinleştirmek, imzalama anahtarınızın güvenliğini artırdığı için önemle tavsiye edilir. Daha önce de belirtildiği gibi, Google Play yakında tüm yeni uygulamaların AAB biçiminde yüklenmesini zorunlu kılacaktır. Bu nedenle, APK yüklemek yerine AAB yüklemenizi öneririz.
  • Kendi imzalama anahtarınızı yönetme: Kendi anahtarınızı yönetmeyi seçip Play Uygulama İmzalama'yı etkinleştirmezseniz uygulamanızın imzalama anahtarından tamamen siz sorumlu olursunuz. Play Uygulama İmzalama'nın aksine, anahtarı kaybederseniz sıfırlayamazsınız. Bu nedenle, uygulamanızın imzalama anahtarını kaybetmek, uygulamanızı güncelleme imkanını da kaybetmek anlamına gelir.

bubblewrap init kurulumu sırasında "İmza anahtarı bilgileri (5/5)" bölümüne geldiğinizde "Anahtar mağazası konumu" ve "Anahtar adı" girmeniz veya varsayılan değerleri kullanmanız istenir. Varsayılan anahtar deposu konumu, proje dizininizdeki android.keystore dosyası ve varsayılan anahtar adı android'tır. Bubblewrap, konumda bu anahtar adına sahip mevcut bir anahtar mağazası bulamazsa sizin için bir anahtar mağazası oluşturur ve şifrenizi ister. Girdiğiniz şifreleri not edin. Derleme işlemi sırasında (bubblewrap build) bu şifrelere ihtiyacınız olacak. Bu işlemde, anahtar uygulamanızı imzalamak için kullanılır. Play Uygulama İmzalama'yı etkinleştirirseniz Bubblewrap'in oluşturduğu ve uygulamanızı imzalamak için kullandığı imzalama anahtarı "yükleme anahtarı" olur. Bubblewrap tarafından oluşturulan anahtarı imzalama veya yükleme anahtarınız olarak kullanmayı seçerseniz anahtarı korumalı tutmanız ve gizli tutmanız gerekir. Sürüm kontrolüne eklemenizi önermeyiz. Bunun yerine, erişimi olan kullanıcı sayısını sınırlandırın.

Web siteniz ile Android uygulamanız arasındaki ilişkiyi belirtmek için dijital öğe bağlantıları gerekir. Bubblewrap tarafından oluşturulan Android uygulamanızın doğru şekilde doğrulandığından ve Chrome özel sekmesi yerine Güvenilir Web Etkinliği olarak başlatıldığından emin olmak için assetlinks.json dosyanıza uygun anahtarı eklemeniz gerekir. Ardından dosyayı web sitenize .well-known/assetlinks.json adresine yükleyin (köke göre). assetlinks.json dosyanız şu biçimi izlemelidir:

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

SHA256 sertifika parmak izini alma

assetlinks.json dosyasını oluşturmak için uygulamanızın imzalama anahtarıyla ilişkili SHA 256 sertifika parmak izine ihtiyacınız vardır. İmza ve yükleme anahtarlarınızla ilişkili parmak izlerinin farklı olacağını unutmayın. Özellikle uygulamanızın Chrome özel sekmesi olarak (tarayıcı çubuğu görünür şekilde) başlatıldığını gözlemliyorsanız bu ayrımı göz önünde bulundurmanız önemlidir. Bu durumda, assetlinks.json dosyanızda uygun anahtara karşılık gelen parmak izi bulunmayabilir.

Uygulamanızda yerel olarak daha kolay hata ayıklama yapabilmek için hem imza hem de yükleme sertifikanızın parmak izinin assetlinks.json dosyanızda bulunması faydalıdır. assetlinks.json dosyasında her iki anahtarın da nasıl bulunacağı hakkında daha fazla bilgi için aşağıdaki Daha Fazla Anahtar Ekleme bölümüne bakın.

Parmak izini almanın birkaç farklı yolu vardır. Bunlar sonraki bölümlerde ayrıntılı olarak açıklanmıştır. Tüm bu yöntemler aynı parmak izlerini verir. Bu nedenle, en uygun yöntemi seçebilirsiniz.

Play Console üzerinden

Play Uygulama İmzalama'ya kaydolup kaydolmadığınıza bağlı olarak bir veya iki anahtarınız olabilir. Her anahtar için uygun SHA256 parmak izini almak üzere:

  1. Play Console'a gidin.
  2. İlgilendiğiniz uygulamayı seçin
  3. Soldaki gezinme menüsünde Sürüm altında Kurulum -> Uygulama Bütünlüğü'ne gidin.
  4. Uygun anahtar için SHA256'yı kopyalayın:

İmzalama veya yükleme anahtarınız için uygun SHA256 sertifika parmak izini alın

  • İmza anahtarı: "Uygulama imzalama anahtarı sertifikası" için SHA256 parmak izini kopyalayın. Google Play, uygulamanızı imzalama anahtarıyla imzalayıp dağıttığından, uygulamanızı Google Play Store'dan indirirseniz bu parmak izi uygulamanızla eşleşir.

  • Yükleme anahtarı: "Yükleme anahtarı sertifikası" için SHA256 parmak izini kopyalayın. Bu parmak izi, yerel olarak yüklerseniz (ör. USB üzerinden ADB aracılığıyla) uygulamanıza karşılık gelir. Bu APK (yerel makinenizde), Bubblewrap tarafından oluşturulduğundan sizin için oluşturduğu anahtarla da (init kurulumu sırasında) imzalanmıştır. Bu anahtarın yerel olarak yüklenen uygulamanızın imzalama anahtarı olabileceğini ancak uygulamanızı Play üzerinden yayınladıktan sonra "yükleme anahtarı" haline geldiğini unutmayın.

keytool üzerinden

keytool, anahtar ve sertifika yönetimi aracıdır. Oluşturulan APK veya AAB Bubblewrap ile ilişkili SHA 256 parmak izini ayıklamak için keytool'u kullanabilirsiniz. Bu parmak izinin yerel imzalama anahtarı için olduğunu ve uygulamanızı Play'e yükleyip Play Uygulama İmzalama'yı etkinleştirirseniz bu anahtarın "yükleme anahtarı" haline geldiğini unutmayın.

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

Uygulamanız için doğru Digital Asset Links dosyasını edinmenin bir diğer yolu da Asset Link Tool'u kullanmaktır:

  1. Play Store'dan Öğe Bağlama Aracı'nı yükleyin.
  2. Aynı cihazda, uygulamanızı Google Play Store'dan indirin veya yerel olarak yükleyin.
  3. Öğe Bağlama Aracı uygulamasını açın. Cihazınızda yüklü tüm uygulamaların paket adına göre listesi gösterilir. Listeyi, daha önce bubblewrap init sırasında seçtiğiniz uygulama kimliğine göre filtreleyin ve ilgili girişi tıklayın.
  4. Uygulamanızın imzasını ve oluşturulan bir Digital Assets Link'i listeleyen bir sayfa görürsünüz. Dilediğiniz şekilde dışa aktarmak için alt kısımdaki Kopyala veya Paylaş düğmelerini tıklayın (ör. Google Keep'e kaydetme, kendinize e-postayla gönderme).

İmzalama veya yükleme anahtarlarında da aynı fikir geçerlidir. Uygulamanızı Google Play Store'dan yüklediyseniz Asset Link Tool, uygulamanızın imzalama anahtarının parmak izini alır. Uygulamayı doğrudan yerel makinenizden yüklediyseniz parmak izi, Bubblewrap tarafından oluşturulan anahtar içindir.

Yükledikten sonra, öğe bağlantısı dosyanıza bir tarayıcıda erişebildiğinizden emin olun. https://example.com/.well-known/assetlinks.json değerinin, yeni yüklediğiniz dosyaya yönlendirdiğinden emin olun.

Jekyll tabanlı web siteleri

Web siteniz Jekyll tarafından oluşturuluyorsa (GitHub Pages gibi) .well-known dizininin çıktıya dahil edilmesi için bir yapılandırma satırı eklemeniz gerekir. Bu konu hakkında daha fazla bilgiyi GitHub yardım sayfasında bulabilirsiniz. Sitenizin kökünde _config.yml adlı bir dosya oluşturun (veya mevcut bir dosyaya ekleyin) ve şunları girin:

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

Daha fazla anahtar ekleme

Dijital Öğe Bağlantısı dosyası birden fazla uygulama içerebilir ve her uygulama için birden fazla anahtar içerebilir. Örneğin, ikinci bir anahtar eklemek için Öğe Bağlantısı Aracı'nı kullanarak anahtarı belirleyin ve ikinci bir giriş olarak ekleyin. Chrome'daki bu JSON'u ayrıştıran kod oldukça katı olduğundan listenin sonuna yanlışlıkla fazladan virgül eklemediğinizden emin olun.

[{
  "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:..."
    ]
  }
}]

Sorun giderme

Chrome, Digital Asset Links doğrulamasının neden başarısız olduğunu günlüğe kaydeder. Günlükleri adb logcat ile Android cihazda görüntüleyebilirsiniz. Linux/Mac'te geliştirme yapıyorsanız bağlı bir cihazdaki ilgili günlükleri şu yöntemlerle görebilirsiniz:

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

Örneğin, Statement failure matching fingerprint. mesajını görüyorsanız uygulamanızın imzasını görmek ve assetlinks.json dosyanızdaki imzayla eşleştiğinden emin olmak için Asset Link Tool'u kullanmanız gerekir.