مواد پر جائیں
8 اگست 2026 · شپنگ

نیٹو ایپس، بغیر نیٹو تکلیف کے

یہ مضمون اشاعت کے وقت پروڈکٹ کو بیان کرتا ہے۔ موجودہ صلاحیات کے لیے AI Builder اور Agent Teams دیکھیں۔

نیٹو ایپس، بغیر نیٹو تکلیف کے

فرض کریں آپ چند ہفتوں سے چیٹ میں ٹو-ڈو لسٹ ایپ بنا رہے ہیں۔ ابھی یہ ایک ویب سائٹ ہے — React، ایک ڈیٹابیس، کچھ بھی خاص نہیں۔ آپ لکھتے ہیں "مجھے ایک Android ورژن بنا دیں" اور اینٹر دباتے ہیں۔ یہاں وہ ہوتا ہے جو اس کی بورڈ اسٹروک اور آپ کے ڈاؤن لوڈز فولڈر میں آنے والی .aab فائل کے درمیان اصل میں ہوتا ہے، کیونکہ زیادہ تر پلیٹ فارمز یہ حصہ آپ کو نہیں دکھاتے، اور جو حصہ وہ چھپاتے ہیں وہ وہی جگہ ہے جہاں پہلے ساری تکلیف رہتی تھی۔

Android .aab

Gradle سب سے پہلے کام سنبھالتا ہے۔ آپ کی ایپ کے نیٹو ماڈیولز — کیمرہ ایکسیس، لوکل اسٹوریج، بلڈ میں شامل کوئی بھی پلگ ان — ہر ایک یہ بتاتا ہے کہ وہ کس NDK ورژن کے خلاف کمپائل ہوا تھا، اور یہ اعلانات ہمیشہ آپس میں میل نہیں کھاتے۔ میں نے دیکھا ہے کہ NDK r25 کے خلاف بنایا گیا ماڈیول r26 فرض کرنے والے ماڈیول کے ساتھ لنک کرنے سے انکار کر دیتا ہے، اور جو ایرر یہ دیتا ہے وہ "ورژن مِس میچ" نہیں کہتا، بلکہ .so فائل کے تین تہوں گہرے کسی گمشدہ symbol کے بارے میں کچھ کہتا ہے۔ Kotlin ورژنز کچھ زیادہ چالاکی سے کام کرتے ہیں: ایک Gradle ماڈیول کے اندر پن کیا گیا ورژن آپ کے بلڈ اسکرپٹ کے اوپر بیان کیے گئے ورژن کو خاموشی سے چھپا سکتا ہے، اور بلڈ کامیاب ہو جاتی ہے — یہ بس ایک ایسی بائنری بناتی ہے جو میدان میں مخصوص Android ورژنز پر کریش ہوتی ہے۔ اس میں سے کچھ بھی غیر معمولی نہیں ہے۔ یہ نیٹو Android شپ کرنے کا معیاری ٹیکس ہے، اور یہی وجہ ہے کہ ٹیمیں ایسے شخص کو رکھتی ہیں جس کا پورا کام یہ جاننا ہو کہ اس ہفتے کا ایرر کون سی flag سے غائب ہو جاتا ہے۔

یہاں بلڈ اصل ٹول چین چلاتی ہے اور یہ حل کاری کا کام خود کرتی ہے:

15–25 منٹنیٹو کمپائل مرحلہ، اصل Gradle ٹول چین
  • ڈیپینڈنسی تنازعات کا رن ٹائم کریش بننے سے پہلے پکڑا جانا
  • ٹول چین کنفیگریشن جو ہر نئی ناکامی سے کچھ سیکھ کر بہتر ہوتی جاتی ہے

اس کا ایک تیز جعلی ورژن — کچھ ایسا جو اصل Gradle ٹاسکس چلائے بغیر .aab شکل دے — ایک منٹ سے کم میں شپ ہو جائے گا۔ یہ اسی لمحے مر بھی جائے گا جب آپ کی ایپ کو بیک گراؤنڈ سروس یا نیٹو کرپٹو لائبریری کی ضرورت ہو گی، اور Play Store ریویو اسے ایک دن کے اندر فلیگ کر دے گا۔ ہم بیس منٹ خرچ کرنا زیادہ پسند کریں گے۔

macOS .dmg

اس ایک فائل میں دو بلڈز جاتی ہیں۔ Xcode کے کمانڈ لائن ٹولز الگ الگ ایک Apple Silicon بائنری اور ایک Intel بائنری کمپائل کرتے ہیں، پھر lipo انہیں ایک واحد یونیورسل ایگزیکیوٹیبل میں جوڑ دیتے ہیں۔

90%+نئی Mac سیلز کا حصہ Apple Silicon پر مشتمل ہے

یہ لالچ آور ہے — ایک ہی بائنری شپ کریں اور کام مکمل سمجھیں — یہاں تک کہ آپ کو یاد آئے کہ بہت سے لوگ اپنے ایمپلائر کا لیپ ٹاپ استعمال کرتے ہیں، ہارڈویئر کا اپنا انتخاب نہیں، اور وہ لیپ ٹاپ تین سال پرانا اور Intel والا ہو سکتا ہے۔ صارف کو یہ پتا لگانے پر مجبور کرنے کے بجائے کہ اس کے پاس کون سا چپ ہے (زیادہ تر بتا ہی نہیں سکتے)، ہم دونوں شپ کرتے ہیں اور OS کو خاموشی سے انتخاب کرنے دیتے ہیں۔ متبادل، جسے ہم نے ابتدا میں آزمایا، Linux باکس سے ایمولیٹڈ ٹول چینز استعمال کرتے ہوئے سب کچھ کراس کمپائل کرنا ہے۔ یہ تیز ہے۔ یہ اس بات کی بھی وجہ ہے کہ آپ کو ایک codesigning ایج کیس مل جاتا ہے جو صرف اصل macOS 12 ہارڈویئر پر سامنے آتا ہے، شپ ہونے کے چھ ہفتے بعد، ایک الجھے ہوئے صارف کی رپورٹ کے ذریعے جسے پتا نہیں کہ ان کی ایپ کیوں نہیں کھلتی۔

Windows انسٹالر

یہیں پر پہلی بار چلانے کا تجربہ طے کرتا ہے کہ آپ کا صارف ایپ پر بھروسہ کرے گا یا نہیں۔ Windows SmartScreen ابھی آپ کے انسٹالر کو نہیں جانتا — اس نے Microsoft کے سرورز کے ساتھ ابھی ساکھ نہیں بنائی — تو یہ ایک نیلی "Windows نے آپ کے PC کی حفاظت کی" اسکرین دکھاتا ہے جس میں ایک موٹے لفظوں میں "Don't run" بٹن اور بمشکل نظر آنے والا "More info" لنک ہوتا ہے جو کلک کرنے پر "Run anyway" ظاہر کرتا ہے۔ macOS اپنا ورژن کرتا ہے: رائٹ کلک، اوپن، تصدیق، کیونکہ App Store کے باہر کی ایپس بھی بطور ڈیفالٹ قابل اعتماد نہیں ہوتیں۔ ابتدا میں ہم نے ان دونوں کو ایک عمومی FAQ صفحے سے لنک کیا تھا۔ سپورٹ ٹکٹس نے بتایا کہ یہ کام نہیں کرتا — جو شخص ایک اسکرین دیکھ رہا ہو جو کہہ رہی ہو کہ اس کا ڈاؤن لوڈ میلویئر ہو سکتا ہے وہ دستاویزات پڑھنے نہیں جاتا، وہ اسکرین شاٹ لے کر پوچھتا ہے کہ کیا اسے ہیک کیا گیا ہے۔ اس لیے انسٹال فلو OS کا پتا لگاتا ہے اور ضروری تین کلکس بالکل دکھاتا ہے، کسی FAQ کی ضرورت نہیں۔ چھوٹی تفصیل، لیکن فائل خود بھی اہم ہے: ڈاؤن لوڈ کا نام آپ کی پروڈکٹ کے مطابق ہوتا ہے، نہ کہ کسی بلڈ آرٹفیکٹ کے مطابق۔ کسی کو بھی چیٹ سپورٹ پر یہ نہیں بتانا چاہیے کہ اس نے "app-release-signed-v2-final.exe" ڈاؤن لوڈ کی اور نہیں بتا سکتا کہ یہ صحیح فائل ہے یا نہیں۔

براؤزر ایکسٹینشن مینی فیسٹ

پوری پائپ لائن میں یہ سب سے مختلف عنصر ہے — نہ Gradle، نہ NDK، نہ عمومی معنوں میں کوئی کمپائل مرحلہ۔ اس کے بجائے اس میں ایک مینی فیسٹ ہوتا ہے، اور مینی فیسٹ ایک Chrome Web Store ریویورز کے ساتھ گفت و شنید ہے جس سے آپ کبھی براہ راست بات نہیں کریں گے۔

درخواست کردہ اجازتریویو کا نتیجہ
<all_urls> (فیچر کی ضرورت سے زیادہ وسیع)کسی ایسے شخص کے ساتھ دو ہفتے کی بات چیت جو یہ نہیں بتاتا کہ اسے اصل اعتراض کس چیز پر تھا
activeTab (اصل ضرورت کے مطابق محدود)اسی دن کلیئر ہو جاتا ہے

MV3 ایک اور چیز کو بھی پیچیدہ بنا دیتا ہے جسے MV2 نے آسان بنایا تھا: بیک گراؤنڈ سروس ورکرز کو ڈیزائن کے تحت درمیان میں ان لوڈ کر دیا جاتا ہے، یہ Google کا بیٹری لائف کے مقصد سے کیا گیا پالیسی فیصلہ ہے، اور جس فیچر کو اس سے بچنا ہے اسے اس کے خلاف نہیں بلکہ اس کے گرد بنانا پڑتا ہے۔ ہم ہر ایکسٹینشن کو بطور ڈیفالٹ سب سے تنگ اجازتی سیٹ دیتے ہیں جس کی اس کے حقیقی فنکشن کو ضرورت ہو اور صرف اسی وقت وسیع کرتے ہیں جب کوئی مخصوص فیچر اس کا تقاضا کرے۔

کی اسٹور

Android بلڈ کے نیچے وہ ایک آرٹفیکٹ ہے جو آپ کبھی نہیں دیکھتے اور جسے کھونے کی آپ استطاعت نہیں رکھتے: سائننگ کی۔ اسے کھو دیں تو آپ صرف اپنی ایپ اپ ڈیٹ کرنے کی صلاحیت نہیں کھوتے — آپ اسے اس کی موجودہ شناخت کے تحت اپ ڈیٹ کرنے کی صلاحیت مستقل طور پر کھو دیتے ہیں، بغیر کسی ایسے recovery راستے کے جو Google آپ کو کبھی دے۔ یہ کوئی شاندار انفراسٹرکچر نہیں ہے۔ یہ ایک فائل ہے۔ لیکن یہی وہ فرق ہے چھ ماہ بعد ورژن سکس کو ایک بغیر رکاوٹ اپ ڈیٹ کے طور پر شپ کرنے اور ایک بالکل نئی لسٹنگ کے طور پر شپ کرنے کے درمیان جو صفر انسٹالز اور صفر ریویوز سے شروع ہوتی ہے۔ ہم ہر پروجیکٹ کے لیے ایک کی جنریٹ کرتے ہیں اور اسے محفوظ رکھتے ہیں تاکہ ہر مستقبل کی بلڈ پہلے دن جیسی ہی کی سے سائن ہو۔

اس سب کے نیچے موجود چیٹ تھریڈ

مذکورہ بالا میں سے کوئی بھی ایک الگ "موبائل پروجیکٹ" میں نہیں رہتا۔ یہ وہی بات چیت ہے جس نے ویب ایپ بنائی۔ کسی UI تبدیلی کی درخواست کریں، ویب بلڈ اپ ڈیٹ ہو جاتی ہے؛ پھر Android بنڈل مانگیں، اور یہ اسی موجودہ حالت سے کمپائل ہوتا ہے، نہ کہ کسی ایسے فورک سے جو تین ہفتے پہلے مطابقت کھو چکا ہو۔ زیادہ تر ٹیمیں جنہیں میں نے دیکھا ہے کہ بعد میں نیٹو جوڑنے کی کوشش کرتی ہیں وہ آخر کار دو کوڈ بیسز کو برقرار رکھتی ہیں جو ایک دوسرے سے دور ہوتی جاتی ہیں — ایک ویب ایپ جو ہر روز شپ ہوتی ہے اور ایک نیٹو ریپر جسے ہر ریلیز سے پہلے کسی کو یاد رکھ کر اپ ڈیٹ کرنا پڑتا ہے۔ یہی وہ خلا ہے جہاں پرانا پن رہتا ہے، اور یہ بالکل وہی ہے جو ایک ہی بلڈ ہسٹری ختم کر دیتی ہے۔ لیکن یہ دونوں طرح کام کرتا ہے: اگر چیٹ حال میں تیز اور ڈھیلی رہی ہو، تو Android بلڈ بھی وہی وراثت میں لیتی ہے۔ یہ ایک الگ پالش پاس نہیں ہے، یہ جو کچھ بھی حقیقت میں موجود ہے اس کا براہ راست کمپائل ہے — جو عملی طور پر لوگوں کو ایماندار رکھتا ہے، کیونکہ کوئی "جمع کرانے سے پہلے صاف کر لیں گے" جیسا الگ کام چھوڑنے کا موقع نہیں ہوتا۔

جب یہ اسٹور فرنٹ کے لیے تیار ہو جائے، تو شپنگ کا راستہ آپ کی اپنی Play Store لسٹنگ اور آپ کے اپنے Apple Developer اکاؤنٹ کو سونپ دیتا ہے۔ ہمارے نہیں۔ ہم آپ اور آپ کی اپنی تقسیم کے درمیان نہیں آنا چاہتے تھے۔

آگے آنے والا: iOS اور macOS App Store بلڈز۔ پیکیجنگ کی مشینری تقریباً وہی شکل رکھتی ہے جو اوپر بتائی گئی — Apple کی سائننگ اور ریویو پائپ لائن اپنا ہی ایک پروجیکٹ ہے، اور ہم اسے جلدی شپ کرنے کے بجائے کام کرتی حالت میں شپ کرنا زیادہ پسند کریں گے۔
شپنگ
شیئر کریںXLinkedInFacebookRedditQuoraWhatsAppTelegramای میل
← تمام پوسٹس