Package Name ریورس ڈومین نوٹیشن پر مبنی Android ایپلیکیشنز کے لیے ایک منفرد شناختی ہے۔ یہ سیسٹم دورانہ صارف کے آلے پر ایپلیکیشنز کو فرق کرنے، Google Play دورانہ مصنوعات کی شناخت کرنے اور Firebase کی خدمات دورانہ تمام منصوبے کی ترتیبات کو منسلک کرنے کے لیے استعمال ہوتا ہے۔ Android ڈیولپر ڈاکیومینٹیشن کے مطابق، اشاعہ کے بعد Package Name ایپلیکیشن کے پورے لائف سائیکل میں نابدل رہتا ہے۔
اهم نکات
Package Name ایک منفرد سٹرنگ ہے جسے Android آپریٹنگ سیسٹم کی سطح پر ایپلیکیشن کی شناخت کے لیے استعمال کرتا ہے۔ یہ AndroidManifest.xml فائل میں package فیلڈ اور ایپلیکیشن موڈیول کی build.gradle فائل میں applicationId فیلڈ سے مطابقت کرتا ہے۔ منفرد Package Name کے بغیر، صارف کے آلے پر ایپلیکیشن انسٹل کرنا ناممکن ہے۔
آلے پر، Package Name ایپلیکیشن منیجمنٹ کی کنجی کے طور پر کام کرتا ہے: سیسٹم /data/data/[packageName] ڈائرکٹری میں ہر ایپلیکیشن کا ڈیٹا، ترتیبات اور کیش محفوظ کرتا ہے۔ ایک ہی شناختی والے دو ایپلیکیشنز ایک ساتھ نہیں رہ سکتے — نقل انسٹل کرنے کی کوشش پر، سیسٹم موجودہ کو ہٹانے کا کہتا ہے۔
Android Gradle Plugin ورشن 0.11+ میں Package Name (مینیفیسٹ میں) اور Application ID (build.gradle میں) کے درمیان علاحدگی متعارف کرائی گئی۔ Application ID سیسٹم اور Google Play کے لیے حقیقی ایپلیکیشن شناختی ہے۔ مینیفیسٹ میں Package Name وسائل کے حل اور R-کلاس جینریشن کے لیے استعمال ہوتا ہے۔ سادگی کے لیے انہیں ایک جیسا رکھنے کی سفارش کی جاتی ہے۔
// build.gradle (Module: app)
android {
defaultConfig {
applicationId "com.example.myapplication"
minSdkVersion 24
targetSdkVersion 34
versionCode 1
versionName "1.0"
}
buildTypes {
debug {
applicationIdSuffix ".debug"
}
}
}
applicationIdSuffix فیلڈ مختلف بائلڈ ترتیبات کے لیے Application ID میں لاحقہ جوڡؼنے کی اجازت دیتا ہے۔ ڈیبگ ورشن میں com.example.app.debug شناختی ہو سکتی ہے، جو متوازی ٹیسٹنگ کے لیے پیداور ورشن کے ساتھ انسٹل کرنے کی اجازت دیتا ہے۔
Google Play اشاعہ کے وقت پیروی کے لیے Package Name کے سخت قواعد مقرر کرتا ہے۔ شناختی پورے اسٹور میں منفرد ہونی چاہیے، نحوی ضروریات کو پورا کرے اور ٹریڈمارک پالیسیوں کی خلاف ورزی نہ کرے۔
Package Name میں صرف لاتین حروف (A-Z, a-z)، ہندسے (0-9)، ڈاٹ (.) اور انڈرلائن (_) ہو سکتے ہیں۔ انتہائی لمبائی 150 حروف ہے۔ ڈاٹوں کے درمیان ہر سیگمنٹ ایک حرف سے شروع ہونا چاہیے۔ ڈیش، خلائی اور خاص حروف Google Play کے قواعد کے مطابق ممنوع ہیں۔
| ضرورت | قیمت | مثال |
|---|---|---|
| مجاز حروف | لاتین حروف، ہندسے، ڈاٹ، انڈرلائن | com.example.my_app |
| انتہائی لمبائی | 150 حروف | com.example.verylongappname |
| سیگمنٹ کا آغاز | صرف حرف | com — 3com نہیں |
| ممنوع | ڈیش، خلائی، سیریلک | com.example-app — غلطی |
| منفردیت | Google Play میں عالمی | تخلیق کے وقت تصدیق |
Package Name کی منفردیت Google Play Store کی ایک مکمل ضرورت ہے۔ اگر کوئی اور ایپلیکیشن پہلے سے منتخب شناختی استعمال کر رہا ہے، تو اشاعہ مسترد کر دیا جائے گا۔ Google حذف شدہ ایپلیکیشنز کے شناختی جاری نہیں کرتا، لہذا پہلا Package Name چوننا ہر ڈیولپر کے لیے ایک اہم فیصلہ ہے۔
ریورس ڈومین نوٹیشن ایک نامرکھ معیار ہے جس میں کمپنی کا ڈومین نام الٹی ترتیب میں لکھا جاتا ہے: example.com کے بجائے com.example۔ یہ نظام شناختیوں کی عالمی منفردیت کی ضمانت دیتا ہے کیونکہ ہر ڈومین نام فطری طور پر منفرد ہیں۔
ڈیولپر عام طور پر اپنے ڈومین کے TLD کے مطابق سابقہ استعمال کرتے ہیں: com تجارتی اداروں کے لیے، org غیر منافعی تنظیموں کے لیے، io ٹیکنالوجی منصوبوں کے لیے، net نیٹورک خدمات اور حلول کے لیے۔ ذاتی منصوبوں کے لیے، com.github.username یا com.email قابل قبول ہے۔
iOS اور Android پر جاری کردہ ایپلیکیشنز کے لیے، دونوں پلیٹ فارم پر ایک ہی شناختی استعمال کرنے کی سفارش کی جاتی ہے۔ یہ Firebase، AppsFlyer، Adjust اور دیگر تجزیہ نظاموں کے ساتھ انضمام کو آسان بناتا ہے جو منصوبے کے شناختی سے منسلک ہوتے ہیں۔ مثال کے طور پر، com.mycompany.myapp iOS پر Bundle ID اور Android پر Package Name ہوگا۔
Android منصوبے میں Package Name ترتیب دینا build.gradle میں applicationId اور متبقہ Java/Kotlin سورس کوڈ ڈائرکٹری کی تبدیلی پر مشتمل ہے۔ Android Studio Package Name ری فیکٹرنگ کے اوزار فراہم کرتا ہے، لیکن پیچیدہ منصوبوں کے لیے مرحلہ وار منتقلی کی سفارش کی جاتی ہے۔
// فائل کا راستہ Package Name سے مطابقت کرتا ہے
// com/example/myapp/MainActivity.kt
package com.example.myapp
import android.os.Bundle
import androidx.activity.ComponentActivity
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
}
Kotlin اور Java میں، سورس فائلوں میں Package Name کو ڈائرکٹری کی ساخت سے مطابقت کرنی چاہیے۔ build.gradle میں Package Name تبدیل کرتے وقت، آپ کو فائلوں کو متبقہ ڈائرکٹریوں میں لے جانا چاہیے اور تمام package اور import اعلانات کو اپ ڈیٹ کرنا چاہیے۔ Android Studio Refactor -> Move کے ذریعہ یہ خودکار طور پر کر سکتا ہے، لیکن درجنوں فائلوں والے بڑے منصوبوں کے لیے، ری فیکٹرنگ کے بعد نتیجے کی تصدیق کرنے کی سفارش کی جاتی ہے۔
اگر منصوبہ Data Binding، View Binding یا Hilt استعمال کرتا ہے، تو Package Name میں تبدیلی تیار کردہ کلاسوں کو بھی متاثر کرے گی۔ بائنڈنگ کلاسیں موڈیول کے Package Name اور لی آؤٹ ڈائرکٹری کے مطابق تیار کی جاتی ہیں۔ شناختی تبدیل کرنے کے بعد، تمام تیار کردہ حوالوں کو اپ ڈیٹ کرنے کے لیے آپ کو منصوبے کو دوبارہ تعمیر کرنے کی ضرورت ہوگی۔ کیش شدہ پرانے حوالوں کی وجہ سے غلطیوں سے بچنے کے لیے Package Name تبدیل کے بعد کلین بائلڈ کرنے کی سفارش کی جاتی ہے۔
Gradle 7.0+ میں build.gradle میں namespace کے لیے سپورٹ متعارف کرایا گیا، جس نے R-کلاس اور وسائل جینریشن کے مقاصد کے لیے AndroidManifest.xml میں package فیلڈ کو بدل دیا۔ اس دوران، applicationId سیسٹم اور Google Play کے لیے حقیقی ایپلیکیشن شناختی بنا رہتا ہے۔ یہ مختلف applicationId اور namespace رکھنے کی اجازت دیتا ہے، جو لائبریری موڈیولز کے لیے مفید ہے جہاں namespace مقرر ہیں جبکہ عام شناختی بائلڈ کے دوران تبدیل ہو سکتی ہے۔
موڈیولر آرکیٹیکچر والے منصوبوں کے لیے، ایک موڈیول کا Package Name تبدیل کرنا دیگر موڈیولز میں import کو متاثر کر سکتا ہے۔ اگر data موڈیول میں پیکیج com.example.data ہے اور domain موڈیول اس کے کلاسوں کا استعمال کرتا ہے، شناختی تبدیل کے بعد، تمام منحصر موڈیولز میں import اپ ڈیٹ کریں۔ Android Gradle Plugin ورشن 8.0+ build.gradle سے خودکار namespace جینریشن کے ذریعہ اس عمل کو آسان بناتا ہے۔
موجودہ Application ID حاصل کرنے کے لیے BuildConfig کلاس استعمال کریں: BuildConfig.APPLICATION_ID۔ یہ کوڈ میں مشروطی منطق، ماحول سے منسلکی یا ڈیبگ سکرینز پر شناختی ظاہر کرنے کے لیے آسان ہے۔ BuildConfig build.gradle کے مطابق خودکار طور پر تیار ہوتا ہے۔
// ران ٹائم پر Application ID حاصل کرنا
val packageName = BuildConfig.APPLICATION_ID
val packageManager = packageManager
val appInfo = packageManager.getPackageInfo(packageName, 0)
println("App version: ${appInfo.versionName} (${appInfo.versionCode})")
println("Package: $packageName")
Google Play پر ایپلیکیشن اشائع کرنے کے بعد Package Name تبدیل کرنا ایک مکمل نئی مصنوع بنانے کے مترادف ہے۔ سیسٹم مختلف Package Name کے ساتھ موجودہ ایپلیکیشن کو اپ ڈیٹ کرنے کی اجازت نہیں دیتا، لہذا شناختی تبدیل کرنے کا فیصلہ اسٹور میں منصوبے کو دوبارہ شروع کرنے کے مساوی ہے۔
Package Name تبدیل کرتے وقت مندرجہ ذیل کھو جاتے ہیں: تمام درجہ بندیاں اور جائزے، انسٹلیشن کے اشارے، Google Services انضمام (اگر منتقل نہیں کیا گیا)، Firebase منصوبے کے لنکس (نئا google-services.json بنانے کی ضرورت ہے)۔ صارف خودکار اپ ڈیٹ وصول نہیں کریں گے — وہ اسٹور میں نئی ایپلیکیشن دیکھیں گے۔
Package Name تبدیل کرنا کمپنی کے ری برانڈنگ، ایپلیکیشن کو کسی دیگر ڈیولپر اکاؤنٹ میں منتقل کرنے، یا کسی دیگر علاقے کے لیے علاحدہ ورشن بنانے پر جائز ہو سکتا ہے۔ کسی بھی صورت میں، تبدیل سے پہلے صارف کو پرانے ایپ کے ذریعہ مطلع کرنے اور ڈیٹا منتقلی کے ساتھ ایک منتقلی منصوبہ تیار کرنے کی سفارش کی جاتی ہے۔ منتقلی منصوبے کے بغیر، صارف خریدا گئی مواد، سبسکرائیپشنز اور محفوظ ایپ ڈیٹا تک رسائی کھو دیں گے۔ منتقلی میں SharedPreferences یا Room کے ذریعہ ڈیٹابیس اور فائلوں کی منتقلی شامل ہے۔
Package Name تبدیل کرنے سے پہلے یقینی کریں کہ نئی شناختی منفرد ہے اور نامرکھ کے قواعد پر پورا اترتا ہے۔ نئے Package Name کے ساتھ Google Play میں ایک نئی ایپلیکیشن بنائیں اور اسے علاحدہ مصنوع کے طور پر شائع کریں۔ پرانے ایپ کے ترجمہ میں، نئے کا لنک فراہم کریں۔ صارف کو ری ڈائریکٹ کرنے کے لیے Google Play Custom Store Listing استعمال کرنے پر غور کریں۔
اکثر پوچے جانے والے سوالات
Package Name میں انڈرلائن (_) کی اجازت ہے، لیکن ڈیش (-) کی نہیں۔ انڈرلائن شازی ہی استعمال ہوتا ہے لیکن قابل قبول ہے: com.example.my_app۔ ڈیش Google Play کے قواعد کے مطابق ممنوع ہیں اور اشاعہ کے دوران غلطی کا سبب بنتے ہیں۔ سیگمنٹ علائم کے طور پر صرف ڈاٹ استعمال کرنے کی سفارش کی جاتی ہے۔
Package Name AndroidManifest.xml میں شناختی ہے جو وسائل کے حل اور R-کلاس جینریشن کے لیے استعمال ہوتی ہے۔ Application ID build.gradle میں فیلڈ ہے جو سیسٹم اور Google Play Store کے لیے ایپلیکیشن شناختی کا تعین کرتا ہے۔ انہیں ایک جیسا رکھنے کی سفارش کی جاتی ہے، لیکن applicationIdSuffix استعمال کرتے وقت اختلاف کی اجازت ہے۔
اپنی کمپنی یا عرفی نام کی ریورس ڈومین نوٹیشن استعمال کریں: com.domain.appname۔ یقینی کریں کہ شناختی Google Play میں منفرد ہے۔ عام الفاظ (todo, test, app) سے بچیں اور Google Play میں تلاش کرکے چیک کریں کہ شناختی کسی دیگر ڈیولپر نے پہلے سے لی تو نہیں ہے۔
جی ہاں، Google Play پر اشاعہ کرنے سے پہلے، Package Name کو بلا نتائج کے تبدیل کیا جا سکتا ہے۔ تبدیل کے بعد، آپ کو google-services.json دوبارہ تیار کرنا ہوگا، ڈائرکٹری کی ساخت اپ ڈیٹ کرنی ہوگی اور تمام import کی تصدیق کرنی ہوگی۔ Android Studio اس عمل کو خودکار کرنے کے لیے Refactor -> Move اوزار فراہم کرتا ہے۔
Package Name دستخت سند کے ساتھ ملکر Google Play میں ایپلیکیشن کی شناخت کرنے والا ایک منفرد بندن بناتا ہے۔ اگرچہ دو ایپلیکیشنز کے Package Names مختلف ہوں، وہ ایک ہی کنجی سے دستخت کیئے جا سکتے ہیں۔ دستخت سند بدلنا Key Rotation کے ذریعہ Play Console میں شناختی کو کھوئے بغیر ممکن ہے۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں