Jetpack — यह क्या है, आर्किटेक्चर घटक

लेखक: IT Sectr प्रकाशित: 2026-05-01 पढ़ने का समय: 9 मिनट

Jetpack Google की Android लाइब्रेरीज़ का एक सेट है जो डेवलपमेंट को सरल बनाता है और स्थिर एप्लिकेशन बनाने में तेजी लाता है। ViewModel, Room और Navigation जैसे घटक विशिष्ट कार्यों को हल करते हैं: जीवनचक्र प्रबंधन, डेटा संग्रहण और नेविगेशन। Android Developers (2026) के अनुसार, Jetpack 50 से अधिक लाइब्रेरीज़ को कवर करता है, जिनमें से प्रत्येक AndroidX के माध्यम से Android 5.0 (API 21) के साथ पिछड़ा संगत है — एक संगतता लाइब्रेरी जिसने Support Library को बदल दिया।

मुख्य बातें

  • Android Jetpack — 50+ लाइब्रेरीज़ का एक सेट जो Android एप्लिकेशन डेवलपमेंट को गति देता है और AndroidX के माध्यम से पिछड़ा संगतता सुनिश्चित करता है।
  • ViewModel स्क्रीन रोटेशन को सहन करता है और Activity के पुनर्निर्माण पर डेटा संरक्षित करता है, उपयोगकर्ता इनपुट के नुकसान को रोकता है।
  • Room — SQLite पर ORM परत जो संकलन समय पर SQL क्वेरी सत्यापन और कोरूटीन समर्थन प्रदान करती है।
  • Navigation Component टाइप-सेफ आर्गुमेंट के साथ नेविगेशन ग्राफ़ के माध्यम से स्क्रीन के बीच संक्रमण प्रबंधित करता है।
  • Lifecycle नियंत्रकों में boilerplate कोड के बिना Activity/Fragment जीवनचक्र घटनाओं पर प्रतिक्रिया करने की अनुमति देता है।

Android Jetpack क्या है?

Android Jetpack Google की लाइब्रेरीज़, टूल्स और आर्किटेक्चरल दिशानिर्देशों का एक संग्रह है, जिसे 2018 में Google I/O में प्रस्तुत किया गया। Jetpack ने Support Library और Android Architecture Components को बदल दिया, उन्हें एक एकल पारिस्थितिकी तंत्र में विलय कर दिया। Jetpack से पहले, प्रत्येक Android लाइब्रेरी स्वतंत्र रूप से अपडेट होती थी, जिससे संस्करण विरोध पैदा होते थे। Jetpack ने एक एकल AndroidX पहचानकर्ता के तहत संस्करणों को सिंक्रनाइज़ किया और मामूली पैच के साथ स्थिर प्रमुख संस्करणों का एक मॉडल पेश किया।

Jetpack लाइब्रेरीज़ चार श्रेणियों में विभाजित हैं: Architecture (ViewModel, Room, Navigation, WorkManager), UI (Fragment, Compose, Animation, Palette), Behavior (DownloadManager, Media, Permissions, Sharing), Foundation (Android KTX, Multidex, AppCompat)। प्रत्येक श्रेणी एप्लिकेशन की एक विशिष्ट परत के कार्यों को संबोधित करती है — डेटा प्रबंधन से लेकर उपयोगकर्ता इंटरफ़ेस तक।

Jetpack दर्शन

Google तीन Jetpack सिद्धांतों को बढ़ावा देता है: accelerate development (कम boilerplate, अधिक व्यावसायिक तर्क), eliminate boilerplate (ViewModel मैन्युअल स्थिति बचत को समाप्त करता है, Room SQLiteOpenHelper लिखने को समाप्त करता है) और build with confidence (प्रत्येक लाइब्रेरी रिलीज़ से पहले 15,000+ परीक्षण पास करती है)। Android Developers (2026) के अनुसार, Jetpack का उपयोग करने वाले एप्लिकेशन में जीवनचक्र से संबंधित 30% कम क्रैश होते हैं।

AndroidX आधार के रूप में

सभी Jetpack लाइब्रेरीज़ AndroidX पहचानकर्ता (जैसे androidx.* आर्टिफैक्ट) के तहत वितरित की जाती हैं। AndroidX ने Support Library (जैसे com.android.support.* आर्टिफैक्ट) को बदल दिया, मोनोलिथिक लाइब्रेरी को स्वतंत्र संस्करण के साथ मॉड्यूलर आर्टिफैक्ट में विभाजित कर दिया। AndroidX में माइग्रेशन gradle.properties में android.useAndroidX=true विकल्प के माध्यम से किया जाता है — Android Studio स्वचालित रूप से आयातों को परिवर्तित करता है।

आर्किटेक्चर घटक: ViewModel, Lifecycle, LiveData

ViewModel Jetpack आर्किटेक्चर का केंद्रीय घटक है जो UI डेटा संग्रहीत करता है। Activity के विपरीत, जो स्क्रीन रोटेशन पर नष्ट हो जाती है, ViewModel मेमोरी में रहता है। उपयोगकर्ता एक फॉर्म भरता है, फोन घुमाता है — डेटा खो नहीं जाता। ViewModel स्वचालित रूप से साफ़ हो जाता है जब LifecycleOwner (Activity या Fragment) स्थायी रूप से अपना जीवनचक्र समाप्त करता है (finish)।

kotlin
class ProfileViewModel : ViewModel() {

    private val _userName = MutableLiveData<String>()
    val userName: LiveData<String> = _userName

    fun loadProfile(userId: String) {
        viewModelScope.launch {
            val user = repository.getUser(userId)
            _userName.value = user.name
        }
    }
}

@OptIn(ExperimentalLifecycleApi::class)
class MyObserver : LifecycleObserver {
    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    fun onStart() {
        println("स्क्रीन शुरू हुई")
    }
}

LiveData — एक अवलोकनीय डेटा कंटेनर जो जीवनचक्र का सम्मान करता है। यदि स्क्रीन दिखाई नहीं देती (onStop), LiveData अपडेट नहीं भेजता — यह मेमोरी लीक और गैर-मौजूद Activity को अपडेट करने के प्रयास में क्रैश को रोकता है। Lifecycle — एक वर्ग जो वर्तमान स्थिति (CREATED, STARTED, RESUMED) संग्रहीत करता है और अन्य घटकों को स्थिति परिवर्तनों की सदस्यता लेने की अनुमति देता है। साथ में, ViewModel, LiveData और Lifecycle प्रतिक्रियाशील Android आर्किटेक्चर की नींव बनाते हैं।

ViewModelScope और कोरूटीन

viewModelScope — ViewModel जीवनचक्र से बंधा एक अंतर्निहित CoroutineScope है। इस scope में लॉन्च किए गए सभी कोरूटीन ViewModel साफ़ होने पर स्वचालित रूप से रद्द हो जाते हैं। यह प्रत्येक ViewModel में Disposable और CompositeDisposable के मैन्युअल प्रबंधन को समाप्त करता है। viewModelScope के साथ काम करने के लिए androidx.lifecycle:lifecycle-viewmodel-ktx निर्भरता आवश्यक है।

Room: Android पर डेटाबेस के साथ काम करना

Room एक Jetpack ORM लाइब्रेरी है जो SQLite पर एक अमूर्त परत प्रदान करती है। रॉ SQL क्वेरी लिखने और मैन्युअल रूप से Cursor को ऑब्जेक्ट में बदलने के बजाय, डेवलपर Entity (तालिका), DAO (डेटा एक्सेस ऑब्जेक्ट) और Database (प्रवेश बिंदु) घोषित करता है। Room @Query एनोटेशन के माध्यम से संकलन समय पर SQL क्वेरी की जांच करता है — यदि तालिकाएं या कॉलम मौजूद नहीं हैं, तो बिल्ड एक स्पष्ट त्रुटि के साथ विफल हो जाता है।

kotlin
@Entity
data class User(
    @PrimaryKey val id: String,
    val name: String,
    val email: String
)

@Dao
interface UserDao {
    @Query("SELECT * FROM User WHERE id = :userId")
    suspend fun getUser(userId: String): User?

    @Insert
    suspend fun insertUser(user: User)
}

@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao
}

Entity User तीन कॉलम वाली तालिका का वर्णन करता है। DAO कोरूटीन के साथ काम करने के लिए suspend फ़ंक्शन घोषित करता है — क्वेरी स्वचालित रूप से पृष्ठभूमि थ्रेड पर निष्पादित होती है। Room @Migration एनोटेशन के माध्यम से माइग्रेशन का समर्थन करता है: डेवलपर संस्करणों के बीच संक्रमण के लिए SQL स्क्रिप्ट का वर्णन करता है, और Room इसे डेटा हानि के बिना निष्पादित करता है। माइग्रेशन की अनुपस्थिति में, Room IllegalStateException फेंकता है — यह स्कीमा अपडेट करते समय आकस्मिक डेटा हानि से परियोजनाओं की रक्षा करता है।

TypeConverters और संबंध

Room केवल आदिम प्रकार और उनके रैपर संग्रहीत करता है। सूचियों, Date या कस्टम ऑब्जेक्ट को संग्रहीत करने के लिए @TypeConverter का उपयोग किया जाता है — एक स्थैतिक विधि जो एक प्रकार को String (JSON) या Long (timestamp) में परिवर्तित करती है। तालिकाओं के बीच संबंध @Relation एनोटेशन और कुशल join क्वेरी के लिए @Transaction के साथ सहायक POJO वर्गों के माध्यम से मॉडल किए जाते हैं।

Navigation Component — स्क्रीन के बीच संक्रमण प्रबंधित करने के लिए एक Jetpack लाइब्रेरी। मैन्युअल रूप से FragmentTransaction कॉल करने के बजाय, डेवलपर एक नेविगेशन ग्राफ़ (गंतव्य नोड्स के साथ XML फ़ाइल) बनाता है, और सिस्टम टाइप-सेफ संक्रमण विधियों के साथ एक Directions वर्ग उत्पन्न करता है। Navigation Component बैक स्टैक, डीप लिंक और स्क्रीन के बीच आर्गुमेंट पासिंग के सही संचालन को सुनिश्चित करता है।

kotlin
// nav_graph.xml
// 
//     android:name=".ProfileFragment">
//     
//         android:defaultValue="-1"
//         app:argType="integer" />
// 

// फ़्रैगमेंट कोड में:
class ProfileFragment : Fragment() {
    private val args: ProfileFragmentArgs by navArgs()

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        loadProfile(args.userId)
    }
}

userId आर्गुमेंट प्रकार (integer) और डिफ़ॉल्ट मान के साथ नेविगेशन ग्राफ़ में पास किए जाते हैं। ProfileFragmentArgs वर्ग स्वचालित रूप से Navigation Safe Args प्लगइन द्वारा उत्पन्न होता है — इसमें सही Kotlin प्रकारों के साथ सभी आर्गुमेंट होते हैं। डीप लिंक ग्राफ़ में कॉन्फ़िगर किए जाते हैं: app:deepLink="app://profile/{userId}"। Navigation Component स्वयं URL को पार्स करता है और बैक स्टैक बनाता है जैसे कि उपयोगकर्ता ने इंटरफ़ेस के माध्यम से नेविगेट किया हो।

बॉटम नेविगेशन और सशर्त नेविगेशन

Navigation Component NavController के माध्यम से BottomNavigationView के साथ एकीकृत होता है: प्रत्येक मेनू आइटम ग्राफ़ में एक गंतव्य से जुड़ा होता है। टैब के बीच स्विच करने से फ़्रैगमेंट पुनर्निर्माण नहीं होता — Navigation Component NavBackStackEntry के माध्यम से स्थिति संरक्षित करता है। सशर्त नेविगेशन के लिए (यदि प्रमाणित नहीं है तो लॉगिन दिखाएं), onCreate में जांच के साथ navController.navigate(condition) का उपयोग किया जाता है।

AndroidX: नई पीढ़ी की Support Library

AndroidX Support Library का पुन: डिज़ाइन किया गया आर्किटेक्चर है जिसमें प्रत्येक लाइब्रेरी को स्वतंत्र संस्करण के साथ अपना स्वयं का आर्टिफैक्ट मिला। एकल com.android.support:appcompat-v7:28.0.0 के बजाय, AndroidX androidx.appcompat:appcompat:1.7.0, androidx.recyclerview:recyclerview:1.4.0 इत्यादि प्रदान करता है। इसने उस समस्या को समाप्त कर दिया जहां विभिन्न निर्भरताएं Support Library के विभिन्न संस्करणों को खींचती थीं, जिससे विरोध पैदा होता था।

AndroidX में माइग्रेशन Android Studio 3.2+ में मेनू Refactor → Migrate to AndroidX के माध्यम से स्वचालित रूप से किया जाता है। स्टूडियो Java/Kotlin फ़ाइलों, मेनिफ़ेस्ट और संसाधनों में सभी आयातों को बदल देता है। पिछड़ा संगतता AndroidX का मुख्य लाभ है: लाइब्रेरीज़ Android 5.0 (API 21) और उससे ऊपर काम करती हैं, जो Google Play Console (2025) के अनुसार 97% सक्रिय उपकरणों को कवर करती हैं।

मुख्य AndroidX आर्टिफैक्ट

सबसे अधिक उपयोग किए जाने वाले आर्टिफैक्ट: appcompat (पुराने API पर डार्क थीम, Material Design), recyclerview (ViewHolder के साथ अनुकूली सूचियाँ), constraintlayout (सपाट पदानुक्रम के साथ लचीला कंटेनर), cardview (Material Design कार्ड), preference (Material शैली के साथ सेटिंग स्क्रीन)। प्रत्येक आर्टिफैक्ट स्वतंत्र रूप से संस्करणित है, पूरे पैकेज को अपडेट किए बिना फिक्स की डिलीवरी में तेजी लाता है।

अन्य महत्वपूर्ण Jetpack लाइब्रेरीज़

Architecture और AndroidX के अलावा, Jetpack में विशिष्ट मोबाइल डेवलपमेंट कार्यों के लिए कई विशेष लाइब्रेरीज़ शामिल हैं। WorkManager — गारंटीकृत निष्पादन के साथ पृष्ठभूमि कार्यों के लिए (सिंक्रनाइज़ेशन, लॉग अपलोड), आवधिक और विलंबित कार्यों के साथ-साथ नेटवर्क और बैटरी बाधाओं का समर्थन करता है। DataStore — कोरूटीन पर आधारित SharedPreferences का एक विकल्प, टाइप की गई संपत्तियों (Preferences DataStore) और Protocol Buffers (Proto DataStore) का समर्थन करता है।

  • Hilt — Dagger-आधारित DI फ्रेमवर्क जो @HiltViewModel, @Inject, @Module एनोटेशन के माध्यम से निर्भरता इंजेक्शन को सरल बनाता है। ViewModel और Navigation के साथ अंतर्निहित एकीकरण।
  • Paging 3 — RemoteMediator (नेटवर्क + कैश), StateFlow और Compose के समर्थन के साथ नेटवर्क/DB से पृष्ठांकित डेटा लोडिंग के लिए लाइब्रेरी।
  • CameraX — कैमरे के साथ काम करने के लिए API, एकीकृत CameraController इंटरफ़ेस के माध्यम से निर्माता अंतर (Samsung, Xiaomi, Honor) को सारगर्भित करता है।
  • Security Crypto — Android Keystore में मास्टर कुंजी के साथ AES-256 पर आधारित EncryptedSharedPreferences और EncryptedFile के माध्यम से डेटा एन्क्रिप्शन।

प्रत्येक लाइब्रेरी का अपना न्यूनतम SDK और आर्टिफैक्ट होता है। Google साल में एक बार प्रमुख संस्करण जारी करता है (Android रिलीज़ के साथ मेल खाता है) और तिमाही सुरक्षा पैच। अनुशंसा — APK आकार बढ़ने से बचने के लिए केवल आवश्यक लाइब्रेरीज़ शामिल करें। पूर्ण Jetpack संग्रह (सभी आर्टिफैक्ट) 20 MB से अधिक है, लेकिन एक विशिष्ट एप्लिकेशन 5–7 लाइब्रेरीज़ का उपयोग करता है, APK में 3–5 MB जोड़ता है।

अक्सर पूछे जाने वाले प्रश्न

क्या मुझे Support Library से AndroidX में माइग्रेट करने की आवश्यकता है?

हाँ, Google ने 2019 में Support Library का समर्थन बंद कर दिया। सभी नई Jetpack लाइब्रेरीज़ और Google Play Services को AndroidX की आवश्यकता है। माइग्रेशन Android Studio के माध्यम से 30–60 मिनट में किया जाता है।

क्या Jetpack का उपयोग Java के साथ या केवल Kotlin के साथ किया जा सकता है?

Jetpack Java के साथ पूरी तरह से संगत है। हालांकि, कई सुविधाएं (viewModelScope, कोरूटीन, Compose) केवल Kotlin में उपलब्ध हैं। Google नई परियोजनाओं के लिए Kotlin की अनुशंसा करता है।

ViewModel, onSaveInstanceState से कैसे अलग है?

ViewModel मेमोरी में ऑब्जेक्ट संग्रहीत करता है और रोटेशन को सहन करता है। onSaveInstanceState केवल सीरियलाइज़ेबल प्रिमिटिव (Bundle) के लिए उपयुक्त है। प्रक्रिया मारे जाने पर ViewModel संरक्षित नहीं होता — इसके लिए SavedStateHandle की आवश्यकता है।

कोरूटीन के बजाय WorkManager का उपयोग कब करें?

WorkManager — उन कार्यों के लिए जो एप्लिकेशन बंद होने के बाद भी निष्पादित होने चाहिए: सिंक्रनाइज़ेशन, लॉग अपलोड, एनालिटिक्स भेजना। कोरूटीन — स्क्रीन से बंधे कार्यों के लिए।

SharedPreferences से DataStore में कैसे माइग्रेट करें?

SharedPreferences आयातों को DataStore से बदलें। dataStore.data.first() (suspend) के माध्यम से पढ़ना, dataStore.edit { ... } के माध्यम से लिखना। DataStore एसिंक्रोनस है और ANR से सुरक्षित है।

सारांश

  • Android Jetpack — Android डेवलपमेंट के लिए 50+ लाइब्रेरीज़ का सेट, API 21 तक पिछड़ा संगतता के साथ AndroidX के तहत एकीकृत।
  • ViewModel स्क्रीन रोटेशन को सहन करता है और UI डेटा संरक्षित करता है, जबकि Lifecycle घटकों को Activity/Fragment स्थिति परिवर्तनों के बारे में सूचित करता है।
  • Room — SQLite पर टाइप-सेफ ORM जिसमें संकलन-समय क्वेरी सत्यापन, माइग्रेशन और कोरूटीन समर्थन है।
  • Navigation Component टाइप-सेफ आर्गुमेंट और स्वचालित डीप लिंक के साथ ग्राफ़ के माध्यम से संक्रमण प्रबंधित करता है।
  • WorkManager एप्लिकेशन बंद होने के बाद भी पृष्ठभूमि कार्य निष्पादन की गारंटी देता है; DataStore SharedPreferences को बदलता है।
  • Jetpack चार श्रेणियों में विभाजित है: Architecture, UI, Behavior, Foundation — प्रत्येक अपनी एप्लिकेशन परत को कवर करता है।
  • Jetpack का उपयोग करने वाले एप्लिकेशन में जीवनचक्र से संबंधित 30% कम क्रैश होते हैं और तैयार आर्किटेक्चरल समाधानों के कारण तेजी से विकसित होते हैं।

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें