Files
kam-mobile/docs/TROUBLESHOOTING.md
T
admin_d 7063d1b1c9
Sync changed files to Google Drive / sync (push) Successful in 1h45m13s
sync: restore source from Google Drive
2026-09-12 16:50:30 +05:00

6.8 KiB

Разбор результатов

Не запускается Docker или нет места/доступа в сеть

Это проблема окружения, не аргумент против FPC/Castle. Смотрите bootstrap report и docker-pull.log. Не запускайте скрипт через sudo автоматически: сначала настройте доступ к Docker и права на папку проекта. Образ содержит инструменты для многих целей; его размер не равен размеру нашего исходного ZIP.

platform не собрался

Сначала смотреть platform/compile-link.log, toolchain.json и platform/CastleEngineManifest.xml. Это самостоятельная CGE/FPC проба без KaM. Причиной может быть версия API CGE, Android cross-compiler, NDK/linker либо ошибка кода самого стенда. Не приписывайте её KaM. Остальные пробы всё равно запускаются для сбора диагностик.

Can't find unit Graphics / Forms / LCL...

Стенд не добавляет desktop LCL в Android автоматически и не создаёт пустую замену. Лексический source-inventory.json помогает найти места зависимости, но смотреть нужно активную цепочку в compile log. У нескольких проб может быть один общий блокер. Не считать каждый упавший профиль отдельной переписываемой системой.

Отсутствующий .res, generated include или native object

Загрузчик намеренно выбирает только исходный текст, а не скомпилированные Windows-ресурсы/объекты. Такая ошибка может означать, что ресурс нужно штатно генерировать для Android или отделить платформенный модуль, а не что игровой формат несовместим. Запишите запросивший файл и найдите соответствующий upstream build step. Стенд не подменяет необходимый вход пустым файлом.

No fresh Pascal unit artifact

Компилятор завершился, но стенд не нашёл ожидаемый .ppu внутри свежего проекта. Нельзя без проверки просто ослабить это условие: сначала установить, куда текущий CGE положил units, действительно ли собран именно исходный корень и не использован чужой cache. В target.json есть список источников и options. Это диагностическая проверка стенда, не обязательное свидетельство ошибки core.

Undefined symbols / native .so отсутствует в APK

Проверка линковки специально строгая. Посмотреть библиотеку и ABI, транзитивные native зависимости и имеющийся вариант для Android. extra-paths.json позволяет явно добавить пути к проверенной библиотеке/исходникам. Не добавлять Windows DLL, desktop .so или заглушку с тем же именем unit. Настроить library search path недостаточно, если библиотека ещё должна отдельно упаковываться в APK: отчёт DT_NEEDED это обнаружит.

APK слинкован, но упаковка отказала из-за native identity

Сравнение разрешает удаление неисполняемой debug-информации, но требует совпадения allocated sections и program headers. Другие изменения упаковщика требуют отдельного исследования. Не принимать произвольный .apk из старого dist/ за новый. При нескольких разных APK outputs стенд консервативно отказывается выбирать случайный; изучите свежий target, прежде чем менять правило отбора.

Source modified / Unrecorded binary

Baseline под vendor/kam_remake/ проверяется по receipt до и после сборки. Не редактируйте его для получения «неизменённого upstream PASS». Для исследования адаптации нужна отдельная явно обозначенная копия/patch-ветка и запись разницы; текущий стенд проверяет as-is baseline. Повторная загрузка не затирает ваши изменения молча.

Код возврата 2 после platform-only

Это ожидаемый PARTIAL_SELECTION. Смотрите индивидуальные статусы. Успешный platform-only запуск специально не делает глобальный architecture gate зелёным.

APK запускается и сразу закрывается

Это может быть ошибка native loader, unit initialization или попытка штатного кода обратиться к данным до старта UI. runtime.json при раннем падении может не создаться. Сохраните журнал Android для этого package и библиотек. Device tool не засчитывает отсутствие отчёта за успех. Для полного crash stack может потребоваться отдельное чтение native crash log на устройстве.

Что передавать для следующего разбора

reports/runs/<build-id>/evidence.zip содержит версии инструментов, source hashes, manifests, generated imports, compile/package logs и result. В нём нет игровых файлов, APK и полного upstream дерева. По нему можно выделить первый общий блокер. Для runtime дополнительно нужны файлы конкретного reports/device/<timestamp>/; сначала проверьте, нет ли в журналах нежелательных личных путей/данных.