Native symbolication

iOS dSYM, Android ProGuard/R8 и mobile breadcrumbs в DevLogs.

Обзор

DevLogs принимает native debug symbols для iOS (dSYM), Android (ProGuard/R8 mapping.txt) и NDK (breakpad .sym). Файлы хранятся в object storage; метаданные — в кабинете и REST API.

ТипEndpointСимволикация
dSYM (iOS)POST /api/v1/projects/{id}/symbols/dsymUUID индекс + привязка bundle в UI
ProGuard/R8POST /api/v1/projects/{id}/symbols/proguardDeobfuscation в issue при совпадении release
NDKPOST /api/v1/projects/{id}/symbols/ndkBreakpad .sym → resolve PC offset в issue UI

UI загрузки

Кабинет → проект → Настройки → Symbol bundles (/dashboard/projects/<id>/settings/symbols): формы dSYM / ProGuard / NDK и список bundles.

dSYM (iOS)

Загрузите .dSYM.zip из Xcode archive или CI. UUID извлекается из Contents/Info.plist или поля формы uuid.

curl — dSYM
curl -s -X POST "https://dev-logs.ru/api/v1/projects/PROJECT_ID/symbols/dsym" \
  -H "Authorization: Bearer dl_live_YOUR_KEY" \
  -F release=1.0.0 \
  -F file=@App.app.dSYM.zip

При crash со stack frame с image_uuid / UUID binary — в UI показывается badge «dSYM indexed», если bundle с таким UUID загружен.

ProGuard / R8 (Android)

После minifyEnabled true загрузите mapping.txt с тем же release, что у событий в ingest.

curl — ProGuard mapping
curl -s -X POST "https://dev-logs.ru/api/v1/projects/PROJECT_ID/symbols/proguard" \
  -H "Authorization: Bearer dl_live_YOUR_KEY" \
  -F release=1.0.0 \
  -F filename=mapping.txt \
  -F file=@app/build/outputs/mapping/release/mapping.txt

NDK (breakpad)

Endpoint принимает breakpad .sym файлы. При native stack с pc 0x… offset резолвится через FUNC/PUBLIC записи sym-файла.

curl — NDK breakpad
curl -s -X POST "https://dev-logs.ru/api/v1/projects/PROJECT_ID/symbols/ndk" \
  -H "Authorization: Bearer dl_live_YOUR_KEY" \
  -F release=1.0.0 \
  -F filename=libapp.so.sym \
  -F file=@obj/local/arm64-v8a/libapp.so.sym

Breadcrumbs передаются через стандартный ingest / Sentry-compatible envelope — поле breadcrumbs сохраняется в событии и отображается на странице issue.

  • React Native @devlogs/sdk-react-native наследует addBreadcrumb из JS SDK.
  • Android Kotlin Client.addBreadcrumb() перед captureException.
  • Cocoa / Flutter — массив breadcrumbs в payload или Sentry SDK drop-in.

REST API

  • GET /api/v1/projects/{id}/symbols — список bundles
  • DELETE /api/v1/projects/{id}/symbols/{bundleId}

Полный справочник: REST API.