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. Bunu, 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 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 da Google Play tarafından imzalanması 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'yı etkinleştirme seçeneğiniz vardır. İmzalama anahtarınızın güvenliğini artıracağı 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 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. İster imzalama anahtarı ister yükleme anahtarı olarak BubbleWrap oluşturulan anahtarı kullanmayı seçin, anahtarı korumanız ve gizli tutmanız gerekir.
Bunu sürüm denetimine dahil etmeniz önerilmez. Bunun yerine, erişimi olan kullanıcıların sayısını sınırlandırın.
Digital Asset Links
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. Daha sonra, dosyayı .well-known/assetlinks.json
adresindeki web sitenize 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. Bu ayrımı aklınızda bulundurmanız önemlidir, özellikle de uygulamanızın Chrome Özel Sekmesi (tarayıcı çubuğu görünür halde) olarak başlatıldığını gözlemliyorsanız. Bu durumda, assetlinks.json
dosyanızda uygun anahtara karşılık gelen parmak izi bulunmayabilir.
Uygulamanızla ilgili yerel olarak daha kolay hata ayıklamak için assetlinks.json dosyanızda imzalama ve yükleme sertifikanızın parmak izinin olması 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 aracılığıyla
Play Uygulama İmzalama'ya dahil olup olmamanıza bağlı olarak bir veya iki anahtarınız olabilir. Her anahtar için uygun SHA256 parmak izini almak üzere:
- Play Console'a gidin.
- İlgilendiğiniz uygulamayı seçin
- Soldaki gezinme menüsünde Sürüm bölümünde, Kurulum -> Uygulama bütünlüğü'ne gidin.
- Uygun anahtar için SHA256'yı kopyalayın:
İmza anahtarı: "Uygulama imzalama anahtarı sertifikası" için SHA256 parmak izini kopyalayın. Google Play uygulamanızı imzalama anahtarıyla imzalayarak dağıttığı için bu parmak izi uygulamanıza Google Play Store'dan indirdiğinizde karşılık gelir.
Yükleme anahtarı: "Yükleme anahtarı sertifikası" için SHA256 parmak izini kopyalayın. Uygulamanızı yerel olarak yüklerseniz (örneğin, USB üzerinden ADB aracılığıyla) bu parmak izi 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. Bunun yerel olarak yüklü uygulamanız için imzalama anahtarı olabileceğini, ancak uygulamanızı Play üzerinden yayınladığınızda bu anahtarın aslında "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
Öğe Bağlantısı Aracı ile
Uygulamanız için doğru Digital Asset Links dosyasını edinmenin bir diğer yolu da Asset Link Tool'u kullanmaktır:
- Play Store'dan Öğe Bağlama Aracı'nı yükleyin.
- Aynı cihazda, uygulamanızı Google Play Store'dan indirin veya yerel olarak yükleyin.
- Asset Link Tool uygulamasını açtığınızda, 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. - 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.
Öğe bağlantısı dosyanızın erişilebilir olduğundan emin olma
Yükledikten sonra, öğe bağlantısı dosyanıza 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.
GitHub yardım bölümünde bu konuyla ilgili daha fazla bilgi 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 aşağıdakilerle 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.