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 کنٹرولرز میں بوائلرپلیٹ کوڈ کے بغیر 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 (کم بوائلرپلیٹ، زیادہ کاروباری منطق)، 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 ہے۔ اس اسکوپ میں شروع کی گئی تمام کوروٹینز 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 تشریح کے ساتھ نیسٹڈ آبجیکٹ اور موثر جوائن استفسارات کے لیے @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 — API 21 تک پسماندہ مطابقت کے ساتھ AndroidX کے تحت متحد، Android ڈویلپمنٹ کے لیے 50+ لائبریریوں کا سیٹ۔
  • 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 ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں