Android Concepts (वेब डेवलपर के लिए)

Peter Conn
Peter Conn
Joyce Toh
Joyce Toh

अगर आपने हाल ही में Android और Google Play का इस्तेमाल करना शुरू किया है, तो आपको इसके लिए कुछ जानकारी देनी होगी जागरूक रहना. पहले से ही इस टूल के लिए कई संसाधन और दस्तावेज़ मौजूद हैं. Android की मदद से ऐसा किया जा सकता है टीम) बनाया है, लेकिन यहां हम कुछ ज़रूरी कॉन्सेप्ट के बारे में बताएंगे. साथ ही, यह भी बताएंगे कि वे बबलरैप से कैसे जुड़े हैं.

अपलोड बनाम साइनिंग पासकोड

अगर आपको Android ऐप्लिकेशन बंडल (एएबी) जनरेट करने के लिए बबल रैप का इस्तेमाल करना है (ध्यान दें: अगस्त से Google Play पर सभी नए ऐप्लिकेशन के लिए 'Android ऐप्लिकेशन बंडल' फ़ॉर्मैट का इस्तेमाल करना ज़रूरी है) या APK को Google Play पर अपलोड और पब्लिश करने के लिए, तो आपको अपने ऐप्लिकेशन पर साइनिंग पासकोड से साइन करना होगा. Google इस समस्या को हल करने के लिए, Play आपको दो विकल्प देता है:

  • Play ऐप्लिकेशन साइनिंग की सुविधा (इसका सुझाव दिया जाता है): Google आपके ऐप्लिकेशन के साइनिंग पासकोड को मैनेज करेगा और उसे सुरक्षित रखेगा आपके लिए. यह ऐप्लिकेशन, डिस्ट्रिब्यूशन के लिए आपके APKs पर साइन करने के लिए, इसका इस्तेमाल करता है. 'Play ऐप्लिकेशन साइनिंग' में दो कुंजियों का इस्तेमाल किया जाता है. "ऐप्लिकेशन साइनिंग पासकोड" जिसे Google आपके लिए और "अपलोड पासकोड" को मैनेज करेगा जिसे आप रखना और रखना चाहिए निजी तौर पर शेयर करें. अपलोड पासकोड का इस्तेमाल करके, अपने ऐप्लिकेशन को Play Console में अपलोड करने के लिए साइन किया जा सकता है. यह सिस्टम की मदद से, अपलोड पासकोड के खो जाने या उसके साथ छेड़छाड़ होने पर उसे रीसेट किया जा सकता है Play की सहायता टीम से संपर्क करना. वर्तमान में, Google Play आपको अपने ऐप्लिकेशन को एएबी या APK के तौर पर अपलोड करने की सुविधा मिलती है:
    • Android ऐप्लिकेशन बंडल (एएबी): कब Play Console में एएबी अपलोड किया जाता है, तो APK बनाने और जनरेट करने की प्रोसेस को Google Play Store पर टैप करें. जब कोई उपयोगकर्ता आपके ऐप्लिकेशन को डाउनलोड और इंस्टॉल करता है, तो Google Play उसे डिस्ट्रिब्यूट कर देगा उन्हें साइन किए हुए APK के तौर पर मार्क करना चाहिए. इसलिए, APK पर हस्ताक्षर करने का काम Google Play से डाउनलोड करें. इसलिए, अगर Play Console में ऐप्लिकेशन को एएबी के तौर पर अपलोड किया जाता है, तो डिफ़ॉल्ट रूप से आपको Play ऐप्लिकेशन साइनिंग की सुविधा का इस्तेमाल करना होगा.
    • APK: APKs के साथ, आप 'Play ऐप्लिकेशन साइनिंग' में ऑप्ट-इन कर सकते हैं. Play ऐप्लिकेशन में ऑप्ट-इन किया जा रहा है हम आपको साइनिंग पासकोड इस्तेमाल करने का सुझाव देते हैं, क्योंकि इससे आपके साइनिंग पासकोड की सुरक्षा बढ़ जाती है. जैसा कि नोट किया गया है जल्द ही, Google Play पर सभी नए ऐप्लिकेशन एएबी फ़ॉर्मैट में अपलोड किए जाएंगे, इसलिए हम APK अपलोड करने के बजाय ऐसा करने का सुझाव दें.
  • अपने साइनिंग पासकोड को मैनेज करना: अगर आपने Play ऐप्लिकेशन में ऑप्ट इन किए बिना, अपने पासकोड को मैनेज करने का विकल्प चुना है साइनिंग की का मतलब है कि अपने ऐप्लिकेशन के साइनिंग पासकोड की पूरी ज़िम्मेदारी आपकी है. यह Play ऐप्लिकेशन साइनिंग की तरह काम नहीं करता अगर आप कुंजी खो देते हैं, तो इसे रीसेट करना संभव नहीं होगा. इसलिए, अपने ऐप्लिकेशन का साइनिंग पासकोड खो जाने का मतलब है कि साथ ही, ऐप्लिकेशन को अपडेट करने की सुविधा भी बंद हो जाती है.

bubblewrap init के सेटअप के दौरान, "साइन इन करने की कुंजी की जानकारी (5/5)" वाले हिस्से पर जाने पर, आपको "मुख्य स्टोर की जगह की जानकारी" और "मुख्य नाम" डालने या डिफ़ॉल्ट सेटिंग का इस्तेमाल करने के लिए कहा जाएगा. कॉन्टेंट बनाने कुंजी संग्रह की डिफ़ॉल्ट जगह आपकी प्रोजेक्ट डायरेक्ट्री की android.keystore फ़ाइल है और यह डिफ़ॉल्ट जगह है कुंजी का नाम android है. अगर Bubblewrap को स्थान है, तो यह आपके लिए एक बनाएगा और आपको पासवर्ड के लिए भी संकेत देगा. पासवर्ड का ध्यान रखें जैसा कि आपने बताया है कि आपको बिल्ड प्रोसेस (bubblewrap build) के दौरान उनकी ज़रूरत होगी, जहां यह कुंजी है. अगर आपने Play ऐप्लिकेशन साइनिंग की सुविधा के लिए ऑप्ट इन किया है, तो साइनिंग पासकोड से बबल को रैप करें जनरेट की गई और आपके ऐप्लिकेशन को साइन करने के लिए इस्तेमाल किया जाने वाला कोड, "अपलोड पासकोड" बन जाता है. चाहे आप बबल रैप की सुविधा की मदद से जनरेट की गई कुंजी को अपने साइनिंग या अपलोड पासकोड के तौर पर इस्तेमाल करते समय, आपको उसकी सुरक्षा करनी चाहिए और उसे निजी रखना चाहिए. हमारा सुझाव है कि आप वर्शन कंट्रोल का इस्तेमाल न करें. इसके बजाय, ऐसे लोगों की संख्या सीमित करें जिनके पास उसे ऐक्सेस करें.

डिजिटल ऐसेट लिंक की मदद से, यह बताया जा सकता है कि आपकी वेबसाइट और Android ऐप्लिकेशन एक-दूसरे से जुड़े हैं है. यह पक्का करने के लिए कि Bubblewrap से जनरेट किए गए आपके Android ऐप्लिकेशन की सही तरीके से पुष्टि की गई है और विश्वसनीय वेब गतिविधि (किसी Chrome कस्टम टैब के बजाय) पर, आपको आपकी assetlinks.json फ़ाइल. इसके बाद, इसे .well-known/assetlinks.json पर अपनी वेबसाइट पर अपलोड करें (रूट के संबंध में). आपकी assetlinks.json फ़ाइल इस फ़ॉर्मैट में होनी चाहिए:

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

SHA256 प्रमाणपत्र फ़िंगरप्रिंट पाएं

assetlinks.json फ़ाइल बनाने के लिए, आपको SHA 256 सर्टिफ़िकेट फ़िंगरप्रिंट की ज़रूरत होगी साइन इन पासकोड से साइन इन करें. ध्यान रखें कि फ़िंगरप्रिंट और हस्ताक्षर करने और अपलोड करने की कुंजियां अलग होंगी. यह ज़रूरी है कि इस अंतर को ध्यान में रखें, खासकर तब, जब आप अपने ऐप्लिकेशन को Chrome कस्टम टैब ( ब्राउज़र बार दिखाई दे सकता है). फिर, हो सकता है कि आपकी assetlinks.json फ़ाइल में जो सही कुंजी से मेल खाता हो.

अपने assetlinks.json में, हस्ताक्षर और अपलोड किए जाने वाले सर्टिफ़िकेट के फ़िंगरप्रिंट, दोनों को शामिल करना सही होता है ताकि आपके ऐप्लिकेशन को आसानी से डीबग किया जा सके. ज़्यादा कुंजियों के लिए नीचे और कुंजियां जोड़ना देखें assetlinks.json फ़ाइल में दोनों कुंजियां रखने के तरीके के बारे में जानकारी.

फ़िंगरप्रिंट पाने के कई तरीके हैं. इनके बारे में अगले सेक्शन में बताया गया है. सभी फ़िंगरप्रिंट के लिए आपको एक जैसे फ़िंगरप्रिंट देने चाहिए. इसलिए, सबसे सही तरीका चुनें सुविधाजनक.

Play Console के ज़रिए

आपने 'Play ऐप्लिकेशन साइनिंग' के लिए ऑप्ट-इन किया है या नहीं, इसके आधार पर आपके पास एक या दो कुंजियां हो सकती हैं. वापस पाने के लिए हर कुंजी के लिए सही SHA256 फ़िंगरप्रिंट:

  1. Play Console पर जाएं
  2. वह ऐप्लिकेशन चुनें जिसमें आपकी दिलचस्पी है
  3. बाईं ओर मौजूद नेविगेशन मेन्यू में, रिलीज़ में जाकर, सेटअप पर जाएं -> ऐप्लिकेशन को पूरी सुरक्षा देने की सुविधा.
  4. सही कुंजी के लिए SHA256 को कॉपी करें:

अपने साइनिंग या अपलोड पासकोड के लिए सही SHA256 सर्टिफ़िकेट फ़िंगरप्रिंट वापस पाएं

  • साइनिंग पासकोड: "ऐप्लिकेशन साइनिंग पासकोड सर्टिफ़िकेट" के लिए, SHA256 फ़िंगरप्रिंट कॉपी करें. यह इस तारीख से, Google Play Store से ऐप्लिकेशन डाउनलोड करने पर फ़िंगरप्रिंट आपके ऐप्लिकेशन के साथ काम करेगा Google Play, आपके ऐप्लिकेशन को साइनिंग पासकोड से साइन करके लोगों तक पहुंचाता है.

  • अपलोड पासकोड: "अपलोड पासकोड सर्टिफ़िकेट" के लिए, SHA256 फ़िंगरप्रिंट कॉपी करें. यह अगर फ़िंगरप्रिंट को डिवाइस पर इंस्टॉल किया जाता है, तो वह आपके ऐप्लिकेशन के मुताबिक होगा. इसके लिए, यूएसबी पर ADB के ज़रिए उदाहरण के लिए). वह APK (आपके लोकल मशीन पर) Bubblewrap ने बनाया है. इसलिए, इस APK पर हस्ताक्षर किया गया है. कुंजी को भी (init सेटअप के दौरान) आपके लिए बनाया गया था. याद रखें कि यह आपके डिवाइस पर इंस्टॉल किए गए ऐप्लिकेशन के लिए साइनिंग पासकोड, लेकिन यह असल में "अपलोड पासकोड" बन जाता है एक बार ऐप्लिकेशन को Play से पब्लिश किया जाता है.

keytool के ज़रिए

keytool एक कुंजी है और सर्टिफ़िकेट मैनेजमेंट टूल. आप इससे जुड़े SHA 256 फ़िंगरप्रिंट को निकालने के लिए keytool का इस्तेमाल कर सकते हैं APK या एएबी बबल रैप जनरेट किया गया है. ध्यान दें कि यह फ़िंगरप्रिंट, लोकल साइनिंग पासकोड के लिए है और अगर ऐप्लिकेशन को Play पर अपलोड करके, Play ऐप्लिकेशन साइनिंग की सुविधा के लिए ऑप्ट इन किया जाता है, तो यह पासकोड "अपलोड पासकोड" बन जाता है.

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

अपने ऐप्लिकेशन के लिए सही डिजिटल ऐसेट लिंक फ़ाइल पाने का एक और तरीका है, ऐसेट लिंक टूल का इस्तेमाल करना:

  1. Play Store से ऐसेट लिंक करने वाला टूल इंस्टॉल करें.
  2. उसी डिवाइस पर, Google Play Store से अपना ऐप्लिकेशन डाउनलोड करें या उसे किसी डिवाइस पर इंस्टॉल करें.
  3. ऐसेट लिंक टूल ऐप्लिकेशन खोलें. इसके बाद, आपको अपने पैकेज के नाम के हिसाब से डिवाइस. सूची को उस ऐप्लिकेशन आईडी से फ़िल्टर करें जिसे आपने इस दौरान पहले चुना था bubblewrap init और उस एंट्री पर क्लिक करें.
  4. आपको एक पेज दिखेगा, जिसमें आपके ऐप्लिकेशन के हस्ताक्षर और जनरेट किया गया डिजिटल ऐसेट लिंक दिखेगा. क्लिक करें नीचे मौजूद बटन कॉपी करें या शेयर करें, ताकि इन्हें अपनी पसंद के मुताबिक एक्सपोर्ट किया जा सके. जैसे- Google Keep में सेव करें, खुद को ईमेल करें).

साइन करने या अपलोड पासकोड के साथ भी यही आइडिया पहले की तरह लागू होता है. अगर आपने अपना ऐप्लिकेशन Google Play Store पर, ऐसेट लिंक टूल की मदद से आपको अपने ऐप्लिकेशन के साइनिंग पासकोड के लिए फ़िंगरप्रिंट मिलेगा. अगर आपने आपने ऐप को सीधे अपने लोकल मशीन से इंस्टॉल किया है, तो फ़िंगरप्रिंट बबल रैप जनरेट किया गया.

आपने ऐसेट लिंक फ़ाइल अपलोड कर दी है, इसलिए अब इसे किसी ब्राउज़र में ऐक्सेस करें. यह देख लें कि https://example.com/.well-known/assetlinks.json की मदद से, आपने अभी जो फ़ाइल अपलोड की है वह सही है या नहीं.

जेकेल की वेबसाइटें

अगर आपकी वेबसाइट को Jekyll (जैसे GitHub पेज) जनरेट करता है, तो आपको कॉन्फ़िगरेशन को कॉन्फ़िगर करना होगा, ताकि .well-known डायरेक्ट्री को आउटपुट में शामिल किया जा सके. GitHub सहायता में इस विषय पर ज़्यादा जानकारी उपलब्ध है. अपनी साइट के रूट में _config.yml नाम की फ़ाइल बनाएं (या अगर पहले से मौजूद है, तो उसमें जोड़ें) और डालें:

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

और कुंजियां जोड़ी जा रही हैं

डिजिटल ऐसेट लिंक वाली फ़ाइल में एक से ज़्यादा ऐप्लिकेशन हो सकते हैं. साथ ही, हर ऐप्लिकेशन के लिए, फ़ाइल में बस एक बटन दबाएं. उदाहरण के लिए, दूसरी कुंजी जोड़ने के लिए, बस ऐसेट लिंक टूल से कुंजी का पता लगाकर उसे दूसरी एंट्री के तौर पर जोड़ें. Chrome में इस JSON को पार्स करने वाला कोड काफ़ी सख्त है, इसलिए पक्का करें कि आप गलती से कोई सूची के अंत में अतिरिक्त कॉमा.

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

समस्या का हल

Chrome डिजिटल ऐसेट लिंक की पुष्टि न हो पाने की वजह को लॉग करता है. इसके बाद, आपको adb logcat वाला Android डिवाइस. अगर Linux/Mac पर डेवलप किया जा रहा है, तो आपको कनेक्ट किए गए डिवाइस से काम के लॉग दिखेंगे इनके साथ:

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

उदाहरण के लिए, अगर आपको Statement failure matching fingerprint. मैसेज दिखता है, तो ऐसेट लिंक टूल की मदद से अपने ऐप्लिकेशन का हस्ताक्षर देखा जा सकता है. साथ ही, यह पक्का किया जा सकता है कि वह आपके assetlinks.json में मौजूद हस्ताक्षर से मेल खाता है या नहीं फ़ाइल से लिए जाते हैं.