अपने ML Kit Android ऐप्लिकेशन के APKs का साइज़ कम करना

अगर आपको ML Kit के उपयोगकर्ता के डिवाइस पर मौजूद मॉडल का इस्तेमाल करने वाले ऐप्लिकेशन को प्रोडक्शन ट्रैक पर डिप्लॉय करना है, तो हमारा सुझाव है कि आप इस पेज पर दी गई सलाह को ध्यान में रखें. इससे आपके ऐप्लिकेशन का डाउनलोड साइज़ कम करने में मदद मिलेगी.

अपने ऐप्लिकेशन को Android ऐप्लिकेशन बंडल के तौर पर बनाएं

अपने ऐप्लिकेशन को Android ऐप्लिकेशन बंडल के तौर पर बनाएं और डिप्लॉय करें, ताकि Google Play खास स्क्रीन डेंसिटी, सीपीयू आर्किटेक्चर, और भाषाओं के लिए APK अपने-आप जनरेट कर सके. उपयोगकर्ताओं को सिर्फ़ वे APK डाउनलोड करने होंगे जो उनके डिवाइस कॉन्फ़िगरेशन से मेल खाते हैं. साथ ही, सबसे अहम बात यह है कि उपयोगकर्ता सिर्फ़ उन नेटिव कोड लाइब्रेरी को डाउनलोड करते हैं जो उनके डिवाइस के आर्किटेक्चर से मेल खाती हैं.

ऐडवांस: एमएल की वैकल्पिक सुविधाओं को डाइनैमिक फ़ीचर मॉड्यूल में ले जाना

अगर आपने अपने ऐप्लिकेशन की किसी ऐसी सुविधा में ML Kit का इस्तेमाल किया है जो उसका मुख्य मकसद नहीं है, तो अपने ऐप्लिकेशन को फिर से फ़ैक्टर करने पर विचार करें. इससे उस सुविधा और ML Kit की डिपेंडेंसी को डाइनैमिक फ़ीचर मॉड्यूल में ले जाया जा सकता है.

ऑन-डिमांड फ़ीचर मॉड्यूल में ML Kit की सुविधाओं का इस्तेमाल करने के लिए, अपने बेस APK की build.gradle फ़ाइल में, ML Kit की Play Store डाइनैमिक फ़ीचर सपोर्ट लाइब्रेरी की डिपेंडेंसी शामिल करें.

dependencies {
    // ...
    implementation 'com.google.mlkit:playstore-dynamic-feature-support:16.0.0-beta2'
}

ऐसा करने से, उपयोगकर्ताओं को आपके ऐप्लिकेशन के एमएल मॉडल को गैर-ज़रूरी तौर पर डाउनलोड करने से रोका जा सकता है. ये मॉडल बड़े हो सकते हैं.

ऐडवांस सेटिंग: इस्तेमाल नहीं किए गए ML Kit बाइनरी को बाहर रखें

ML Kit को 32-बिट और 64-बिट, दोनों आर्किटेक्चर के साथ काम करने के लिए बनाया गया है. अगर आपका ऐप्लिकेशन सिर्फ़ 32-बिट मोड के साथ काम करता है, तो इस्तेमाल न की गई ML Kit लाइब्रेरी को अपने बिल्ड से हटाया जा सकता है. उदाहरण के लिए, अगर आपने ऐसी लाइब्रेरी का इस्तेमाल किया है जो सिर्फ़ 32-बिट बाइनरी उपलब्ध कराती है, तो यह तरीका अपनाएं:

android {
  defaultConfig {
      ndk {
          // Don't package arm64-v8a or x86_64
          abiFilters 'armeabi-v7a', 'x86'
      }
  }
}