ऐप्लिकेशन इंस्टॉल करने की जगह

एपीआई लेवल 8 से, अपने ऐप्लिकेशन को डिवाइस का एसडी कार्ड. इस सुविधा का एलान करना ज़रूरी नहीं है को सबमिट करें.android:installLocation अगर आपके पास इस एट्रिब्यूट के बारे में जानकारी नहीं देने पर, आपका ऐप्लिकेशन डिवाइस के स्टोरेज पर इंस्टॉल हो जाएगा इसे केवल बाहरी मेमोरी में नहीं ले जाया जा सकता.

सिस्टम को बाहरी मेमोरी पर आपका ऐप्लिकेशन इंस्टॉल करने की अनुमति देने के लिए, अपने मेनिफ़ेस्ट फ़ाइल में, <manifest> एलिमेंट में android:installLocation एट्रिब्यूट को शामिल करने के लिए, जिसका मान या तो "preferExternal" हो या "auto". जैसे:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:installLocation="preferExternal"
    ... >

अगर आप "preferExternal" का एलान करते हैं, तो आप अनुरोध करते हैं कि आपका ऐप्लिकेशन इस पर इंस्टॉल किया जाए बाहरी मेमोरी नहीं है, लेकिन सिस्टम इस बात की गारंटी नहीं देता कि आपका ऐप्लिकेशन है. यदि बाहरी मेमोरी भर गया है, तो सिस्टम इसे आंतरिक मेमोरी पर इंस्टॉल करेगा स्टोरेज. उपयोगकर्ता आपके ऐप्लिकेशन को दो स्थानों के बीच भी ले जा सकता है.

अगर आप "auto" एलान करते हैं, तो आप यह बताते हैं कि आपका ऐप्लिकेशन इस पर इंस्टॉल किया जा सकता है लेकिन आपके पास इंस्टॉल स्थान की कोई प्राथमिकता नहीं है. सिस्टम ये काम करेगा कई फ़ैक्टर को ध्यान में रखकर, यह तय किया जा सकता है कि आपकी ऐप्लिकेशन को कहां इंस्टॉल करना है. उपयोगकर्ता आपके Google Ads खाते को दो स्थानों के बीच ऐप्लिकेशन सेट अप कर सकता है.

बाहरी स्टोरेज पर आपका ऐप्लिकेशन इंस्टॉल होने के बाद:

  • ऐप्लिकेशन के परफ़ॉर्मेंस पर इतनी देर तक कोई असर नहीं पड़ता क्योंकि बाहरी स्टोरेज डिवाइस पर माउंट है.
  • .apk फ़ाइल बाहरी स्टोरेज में सेव की जाती है, लेकिन उपयोगकर्ता का सारा निजी डेटा, डेटाबेस, ऑप्टिमाइज़ की गई .dex फ़ाइलें, और एक्सट्रैक्ट किए गए नेटिव कोड को डिवाइस की मेमोरी में सेव किया गया हो.
  • आपका ऐप्लिकेशन जिस खास कंटेनर में स्टोर होता है उसे बिना किसी तय नियम के एन्क्रिप्ट (सुरक्षित) किया जाता है जनरेट की गई कुंजी को सिर्फ़ उस डिवाइस से डिक्रिप्ट किया जा सकता है जिस पर इसे इंस्टॉल किया गया था. इस तरह, एक किसी एसडी कार्ड पर इंस्टॉल किया गया ऐप्लिकेशन, सिर्फ़ एक डिवाइस पर काम करता है.
  • उपयोगकर्ता आपके ऐप्लिकेशन को सिस्टम सेटिंग के ज़रिए मोबाइल स्टोरेज में ले जा सकता है.

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

पुराने सिस्टम के साथ काम करने की सुविधा

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

बाहरी स्टोरेज पर इंस्टॉलेशन की अनुमति देने और एपीआई से पहले के वर्शन पर काम करने के लिए लेवल 8:

  1. "auto" वैल्यू के साथ android:installLocation एट्रिब्यूट शामिल करें या "preferExternal" <manifest> में एलिमेंट.
  2. अपने android:minSdkVersion एट्रिब्यूट में कोई बदलाव न करें (कुछ कम "8") से ज़्यादा और पक्का करें कि आपका ऐप्लिकेशन कोड सिर्फ़ उस एपीआई का इस्तेमाल करता है जो इसके साथ काम करता है लेवल.
  3. अपने ऐप्लिकेशन को कंपाइल करने के लिए, बिल्ड टारगेट को एपीआई लेवल 8 में बदलें. यह है ज़रूरी है क्योंकि पुरानी Android लाइब्रेरी android:installLocation को नहीं समझ पातीं एट्रिब्यूट है और ऐप्लिकेशन के मौजूद होने पर उसे कंपाइल नहीं करेगा.

जब आपका ऐप्लिकेशन आठ से कम एपीआई लेवल वाले डिवाइस पर इंस्टॉल किया जाता है, तो android:installLocation एट्रिब्यूट को अनदेखा कर दिया जाता है और ऐप्लिकेशन को स्टोरेज.

चेतावनी: हालांकि, इस तरह के एक्सएमएल मार्कअप को पुराने प्लैटफ़ॉर्म, एपीआई लेवल 8 में शुरू किए गए प्रोग्रामिंग एपीआई का इस्तेमाल न करने का ध्यान रखें जब तक कि आपका minSdkVersion, "8" से कम है, जब तक कि आप ताकि आपके कोड में पुराने सिस्टम के साथ काम करने की सुविधा दी जा सके.

वे ऐप्लिकेशन जिन्हें बाहरी स्टोरेज पर इंस्टॉल नहीं होना चाहिए

जब उपयोगकर्ता, अपने कंप्यूटर के साथ (या अन्य तरीके से) फ़ाइलें शेयर करने के लिए यूएसबी मास स्टोरेज को चालू करता है बाहरी स्टोरेज को अलग करता है या हटाता है), किसी भी ऐप्लिकेशन जो बाहरी मेमोरी पर इंस्टॉल है और वर्तमान में चल रहा है. सिस्टम असरदार तरीके से जब तक कि विशाल मेमोरी बंद न हो जाए और बाहरी मेमोरी इस समस्या को डिवाइस पर फिर से माउंट किया जा सकता है. ऐप्लिकेशन को बंद करने और उसे उपयोगकर्ता के लिए उपलब्ध न कराने के अलावा, यह कुछ प्रकार के ऐप्लिकेशन को और गंभीर रूप से तोड़ सकता है. आपके आवेदन के लिए उम्मीद के मुताबिक काम करते हों, तो आपको अपने ऐप्लिकेशन को यह अनुमति नहीं देनी चाहिए कि बाहरी मेमोरी पर इंस्टॉल किया जाता है, अगर यह बताए गए बाहरी मेमोरी ऊपर ना रखे जाने पर परिणाम:

सेवाएं
आपकी दौड़ Service है बंद कर दिया जाता है और बाहरी मेमोरी को फिर से माउंट किए जाने पर उसे रीस्टार्ट नहीं किया जाता. आवेदन सीमित करने वाली इस सेवा के लिए पंजीकृत हो सकता है, तो ACTION_EXTERNAL_APPLICATIONS_AVAILABLE अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है ब्रॉडकास्ट इंटेंट, जो उन सभी ऐप्लिकेशन को सूचना देता है जो नहीं हैं जब ऐप्लिकेशन बाहरी मेमोरी पर इंस्टॉल होते हैं, तब उन्हें बाहरी स्टोरेज पर इंस्टॉल किया जाता है स्टोरेज, सिस्टम में फिर से उपलब्ध हो गया है. इसे मिलने के बाद तो ऐप्लिकेशन आपकी सेवा से बाध्य होने का प्रयास कर सकते हैं.
अलार्म सेवाएं
AlarmManager के साथ रजिस्टर किए गए आपके अलार्म रद्द कर दिए जाएंगे. आपको ऐसा ज़रूर करना चाहिए बाहरी स्टोरेज को फिर से माउंट किए जाने पर, किसी भी अलार्म को मैन्युअल तरीके से फिर से रजिस्टर करें.
इनपुट के तरीके के इंजन
आपकी IME इसे डिफ़ॉल्ट IME से बदला जाएगा. जब बाहरी स्टोरेज को फिर से माउंट किया जाता है, तब उपयोगकर्ता सिस्टम की सेटिंग खोल सकता है ताकि आप अपने IME को फिर से सक्षम कर सकें.
लाइव वॉलपेपर
आपके मौजूदा लाइव वॉलपेपर को डिफ़ॉल्ट लाइव वॉलपेपर से बदल दिया जाएगा. जब बाहरी स्टोरेज को फिर से माउंट किया जाता है, तब उपयोगकर्ता ये काम कर सकते हैं: अपना लाइव वॉलपेपर फिर से चुनें.
ऐप्लिकेशन विजेट
आपका ऐप्लिकेशन विजेट हटा दिया जाएगा होम स्क्रीन से हटाया जा सकता है. बाहरी स्टोरेज को फिर से माउंट करने पर, आपका ऐप्लिकेशन विजेट यह विकल्प उपयोगकर्ता के लिए तब तक उपलब्ध रहता है, जब तक सिस्टम होम ऐप्लिकेशन को रीसेट नहीं कर देता (आम तौर पर, ऐसा नहीं होता कि सिस्टम को फिर से चालू करता है).
खाता मैनेजर
AccountManager की मदद से बनाए गए आपके खाते इस समय तक नहीं दिखेंगे तो बाहरी मेमोरी को फिर से माउंट किया जाता है.
अडैप्टर सिंक करें
आपका AbstractThreadedSyncAdapter और इसकी सभी सिंक सुविधाएं जब तक बाहरी मेमोरी फिर से माउंट नहीं किया जाता, तब तक काम नहीं करता.
डिवाइस के एडमिन
आपका DeviceAdminReceiver और इसकी सभी एडमिन क्षमताएं बंद किया जाता है, जिसकी वजह से डिवाइस की मुख्य सुविधाओं और उनके काम करने के तरीके पर असर पड़ सकता है. बाहरी मेमोरी को फिर से माउंट करने के बाद भी बनी रहती है.
"बूट पूरा हुआ" सुनने वाले ब्रॉडकास्ट रिसीवर
सिस्टम, ACTION_BOOT_COMPLETED का ब्रॉडकास्ट डिलीवर करता है इससे पहले कि बाहरी स्टोरेज को डिवाइस पर माउंट किया जाए. अगर आपका ऐप्लिकेशन है, तो यह इस ब्रॉडकास्ट को कभी भी प्राप्त नहीं कर सकता.

अगर आपका ऐप्लिकेशन ऊपर दी गई किसी भी सुविधा का इस्तेमाल करता है, तो आपको अनुमति नहीं देनी चाहिए बाहरी मेमोरी पर इंस्टॉल करने के लिए आपका ऐप्लिकेशन. डिफ़ॉल्ट रूप से, सिस्टम आपके को बाहरी मेमोरी पर इंस्टॉल करने की अनुमति दें, ताकि आपको मौजूदा ब्राउज़र के बारे में चिंता न करें का इस्तेमाल करें. हालांकि, अगर आप इसे लेकर पक्का हैं कि आपका ऐप्लिकेशन कभी भी बाहरी मेमोरी है, तो आपको "internalOnly" वैल्यू के साथ android:installLocation का एलान करके इसे साफ़ तौर पर बताना चाहिए. हालांकि, ऐसा नहीं होता डिफ़ॉल्ट व्यवहार को बदलने के लिए करते हैं, तो इसमें स्पष्ट रूप से बताया गया है कि आपका ऐप्लिकेशन केवल इंस्टॉल किया जाना चाहिए को डाउनलोड कर लिया है. साथ ही, इससे आपको और दूसरे डेवलपर को याद दिलाया जाता है कि इस फ़ैसले की वजह से बनाए गए हैं.

वे ऐप्लिकेशन जिन्हें बाहरी स्टोरेज पर इंस्टॉल होना चाहिए

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

अगर आपके ऐप्लिकेशन को APK फ़ाइल के लिए कई मेगाबाइट की ज़रूरत है, तो आपको इस बात पर सावधानी से विचार करें कि ऐप्लिकेशन को बाहरी मेमोरी पर इंस्टॉल किया जा सकता है या नहीं, ताकि उपयोगकर्ता अपने डिवाइस के स्टोरेज में जगह बचा सकते हैं.

इससे जुड़ी अतिरिक्त जानकारी के लिए, ये देखें: <मेनिफ़ेस्ट>