Android Concepts (Web Geliştiricileri için)

Peter Conn
Peter Conn
Joyce Toh
Joyce Toh

Android'i ve Google Play'i yeni kullanmaya başlayan bir web geliştiricisiyseniz bazı ayrıntıları bilmeniz gerekir. Bunun için halihazırda pek çok kaynak ve doküman vardır (Android ekibi sayesinde) ancak burada, bazı önemli kavramları ve bunların Bubblewrap ile olan ilişkisini vurgulayacağız.

Yükleme ve İmzalama Anahtarı

Bubblewrap'u Android App Bundle (AAB) oluşturmak için kullanmayı planlıyorsanız (Not: Ağustos 2021'den itibaren Google Play tüm yeni uygulamaların Android App Bundle biçimini kullanmasını zorunlu kılacaktır) veya APK'yı Google Play'e yükleyip yayınlamak için uygulamanızı bir imzalama anahtarıyla imzalamanız gerekecektir. Google Play, bu durumla başa çıkabilmeniz için size iki seçenek sunar:

  • Play Uygulama İmzalama (önemle tavsiye edilir): Google, uygulamanızın imzalama anahtarını sizin için yönetir ve korur. Bu kod, APK'larınızı dağıtım için imzalamak amacıyla kullanır. Play Uygulama İmzalama iki anahtar kullanır. Google'ın sizin için yöneteceği "uygulama imzalama anahtarı" ve sakladığınız ve size özel kalması gereken "yükleme anahtarı". Uygulamanızı Play Console'a yüklemek üzere imzalamak için yükleme anahtarını kullanırsınız. Bu sistem, yükleme anahtarınız kaybolursa veya güvenliği ihlal edilirse Play destek ekibiyle iletişim kurarak sıfırlamanızı mümkün kılar. Google Play şu anda uygulamanızı AAB veya APK olarak yüklemenize olanak tanımaktadır:
    • Android App Bundle (AAB): Play Console'a AAB yüklediğinizde, Google Play Store'da APK oluşturma ve oluşturma sürecini ertelemiş olursunuz. Bir kullanıcı uygulamanızı indirip yüklediğinde, Google Play bu kullanıcıya imzalı bir APK olarak dağıtır. Bu nedenle, APK'ların da Google Play tarafından imzalanması gerekir. Bu nedenle, varsayılan olarak uygulamanızı Play Console'a AAB olarak yüklerseniz Play Uygulama İmzalama'yı kullanmanız gerekir.
    • APK: APK'lar ile Play Uygulama İmzalama'ya kaydolabilirsiniz. İmzalama anahtarınızın güvenliğini artırdığı için Play Uygulama İmzalama'ya kaydolmanız ö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'ları yüklemek yerine bunu yapmanızı öneririz.
  • Kendi imzalama anahtarınızı yönetme: Kendi anahtarınızı yönetmeyi seçer ve Play Uygulama İmzalama'ya kaydolmazsanız uygulamanızın imzalama anahtarından tamamen siz sorumlu olursunuz. Play Uygulama İmzalama'nın aksine, anahtarı kaybetmeniz durumunda sıfırlamak mümkün değildir. Bu nedenle, uygulamanızın imzalama anahtarını kaybederseniz uygulamanızı güncelleme imkanını da kaybedersiniz.

bubblewrap init kurulumu sırasında "İmzalama anahtarı bilgileri (5/5)" bölümüne geldiğinizde, bir "Anahtar deposu konumu" ve "Anahtar adı" girmeniz veya varsayılanları kullanmanız istenir. Varsayılan anahtar deposu konumu, proje dizininizdeki android.keystore dosyasıdır. Varsayılan anahtar adı ise android'dir. Bubblewrap, konumda bu anahtar adına sahip bir anahtar deposu bulamazsa sizin için bir anahtar deposu oluşturur ve sizden şifre ister. Derleme işlemi sırasında (bubblewrap build) uygulamanızı imzalamak için anahtar kullanılacaktır. Girdiğiniz şifreleri not edin. Play Uygulama İmzalama'yı etkinleştirirseniz Bubblewrap'un oluşturup uygulamanızı imzalamak için kullandığı imzalama anahtarı "yükleme anahtarı" olur. Bubblewrap oluşturulan anahtarı imzalama veya yükleme anahtarınız olarak kullanmayı tercih etmeniz fark etmeksizin anahtarı korumanız ve gizli tutmanız gerekir. Sürüm denetimi için bunu yapmanızı önermiyoruz. Bunun yerine, özelliğe erişimi olan kişilerin sayısını sınırlayın.

Digital Asset Links, web siteniz ile Android uygulamanız arasındaki ilişkiyi beyan etmek için gereklidir. Bubblewrap tarafından oluşturulan Android uygulamanızın doğru şekilde doğrulanmasını ve Güvenilir Web Etkinliği (Chrome Özel Sekmesi yerine) olarak başlatılmasını sağlamak için assetlinks.json dosyanıza uygun anahtarı eklemeniz gerekir. Ardından .well-known/assetlinks.json adresindeki web sitenize (köke göre) yükleyin. assetlinks.json dosyanız şu biçimde olmalıdır:

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

SHA256 sertifikası dijital parmak izini alma

assetlinks.json dosyasını oluşturmak için uygulamanızın imzalama anahtarıyla ilişkilendirilmiş SHA 256 sertifika dijital parmak izine ihtiyacınız vardır. İmzalama ve yükleme anahtarlarınızla ilişkili parmak izlerinin farklı olacağı unutulmamalıdır. Özellikle uygulamanızın Chrome Özel Sekmesi olarak (tarayıcı çubuğu görünür halde) başlatıldığını gözlemlerseniz bu ayrımı aklınızda tutmanız önemlidir. Ardından, muhtemelen assetlinks.json dosyanızda uygun anahtara karşılık gelen parmak izi bulunmuyordur.

Uygulamanızda yerel olarak daha kolay hata ayıklama işlemi yapabilmek için hem imzalama hem de yükleme sertifikanızın parmak izinin assetlinks.json dosyanızda olması önerilir. Her iki anahtarın da assetlinks.json dosyasında 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. Bu yöntemler sonraki bölümlerde ayrıntılı olarak açıklanmıştır. Hepsi size aynı parmak izlerini vermelidir. Bu nedenle, en uygun yöntemi seçebilirsiniz.

Play Console'dan

Play Uygulama İmzalama'yı etkinleştirip etkinleştirmediğinize bağlı olarak bir veya iki anahtarınız olabilir. Her anahtarın uygun SHA256 parmak izini almak için:

  1. Play Console'a gidin.
  2. İlgilendiğiniz uygulamayı seçin
  3. Soldaki gezinme menüsünde, Sürüm bölümünde 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

  • İmzalama anahtarı: "Uygulama imzalama anahtarı sertifikası" için SHA256 parmak izini kopyalayın. Google Play, imzalama anahtarıyla imzalanmış uygulamanızı dağıttığı için, bu parmak izi, uygulamanızı Google Play Store'dan indirdiğinizde uygulamanıza karşılık gelir.

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

keytool üzerinden

keytool bir anahtar ve sertifika yönetim aracıdır. APK veya AAB Bubblewrap tarafından oluşturulan SHA 256 parmak izini çıkarmak için keytool'u kullanabilirsiniz. Bu parmak izinin yerel imzalama anahtarı için olduğunu unutmayın. Uygulamanızı Play'e yükleyip Play Uygulama İmzalama'ya kaydolursanız bu anahtar "yükleme anahtarı" olur.

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

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

  1. Play Store'dan Öğe Bağlantısı Aracı'nı yükleyin.
  2. Aynı cihazda, uygulamanızı Google Play Store'dan indirin veya yerel olarak yükleyin.
  3. Asset Link Tool uygulamasını açın. Cihazınızda yüklü tüm uygulamaların paket adına göre bir listesini görürsünüz. Listeyi daha önce bubblewrap init sırasında seçtiğiniz uygulama kimliğine göre filtreleyin ve bu girişi tıklayın.
  4. Uygulamanızın imzasının ve oluşturulmuş bir Digital Asset Link'in listelendiği bir sayfa görürsünüz. Dosyayı istediğiniz gibi dışa aktarmak (ör. Google Keep'e kaydetmek, kendinize e-postayla göndermek) için alt kısımdaki Kopyala veya Paylaş düğmelerini tıklayın.

Aynı kural imzalama veya yükleme anahtarları için de geçerlidir. Uygulamanızı Google Play Store'dan yüklediyseniz Öğe Bağlantısı Aracı, uygulamanızın imzalama anahtarı için parmak izini size sağlar. Uygulamayı doğrudan yerel makinenizden yüklediyseniz dijital parmak izi, Bubblewrap oluşturulan anahtar içindir.

Artık dosyayı yüklediğinize göre, bir tarayıcıda öğe bağlantısı dosyanıza erişebildiğinizden emin olun. https://example.com/.well-known/assetlinks.json dosyasının az önce yüklediğiniz dosyaya çözümlendiğinden emin olun.

Jekyll tabanlı web siteleri

Web siteniz Jekyll tarafından oluşturulduysa (örneğin, GitHub Pages), .well-known dizininin çıkışa dahil edilmesi için bir yapılandırma satırı eklemeniz gerekir. GitHub yardım bölümünde bu konuyla ilgili daha fazla bilgi bulabilirsiniz. Sitenizin kök dizininde _config.yml adında bir dosya oluşturun (veya zaten varsa bu dosyaya ekleyin) ve şunu girin:

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

Daha fazla anahtar ekleme

Bir Digital Asset Link dosyası birden fazla uygulama 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'da bu JSON öğesini ayrıştıran kod oldukça katıdır. Bu nedenle, listenin sonuna yanlışlıkla fazladan bir 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 kaydeder. adb logcat ile günlükleri bir Android cihazda görüntüleyebilirsiniz. Linux/Mac'te geliştirme yapıyorsanız aşağıdakileri kullanarak bağlı bir cihazdan ilgili günlükleri 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 Öğe Bağlantısı Aracı'nı kullanmanız gerekir.