# StreamZet SDK

Documentation revision: 2026-09-22

https://streamzet.com/docs

## StreamZet 개발자 문서

SDK 연동, 테스트 앱, 정확한 API 계약을 안내합니다. 제품의 실행 환경부터 선택하세요.

### 플랫폼 선택

| 필드 / API | 형식 / 기본값 | 계약 |
| --- | --- | --- |
| Android | 0.2.0-rc.2 | Android 8 이상(API 26). AAR, 업무 샘플 APK, 지원 APK. 사용자 동의 기반 화면공유·접근성 입력. 터미널·Fleet 셸은 제공하지 않습니다. |
| Linux | Integration preview · linux/0.3.3 | 일반 Linux: Go API·C 공유 라이브러리. Ubuntu 24.04 arm64 바이너리 제공, 다른 ABI는 대상 환경에서 빌드. 터미널·선택적 Fleet·기존 데스크톱 연동. |
| xSpan | 0.2.1 | 레거시 ARMv5 R660: 정적 엔진·C/C++ 프로세스 어댑터. sh 터미널·Fleet 명령·설정된 OEM 대시보드. Linux 데스크톱 캡처는 제공하지 않습니다. |

- [Android: 설치와 연동](https://streamzet.com/docs/android/quickstart)
- [Linux: 공유 라이브러리 테스트](https://streamzet.com/docs/linux/quickstart)
- [xSpan: 리더기 1대 설치](https://streamzet.com/docs/xspan/quickstart)

### 전달과 등록

설치 패키지와 SHA256 파일은 담당자에게 받으세요. 문서는 공개하고 설치파일은 별도 전달합니다. 로그인 주소는 https://streamzet.com/login 입니다.

등록 키는 새 기기를 테넌트에 배정하며 운영자 접근 권한은 부여하지 않습니다. 키가 없는 Android/Linux는 기기 코드로 연결합니다. 운영자 비밀번호나 Supabase service-role 키를 클라이언트 앱에 넣지 마세요. SDK 호출은 로컬 API이며 상태 예시는 REST 응답이 아닙니다.

## SDK 검증 범위와 인수 기준

2026-09-22 실행 기록. 자동 테스트, 실제 앱·서버 실행, 대상 장비 인수의 범위를 구분합니다.

### 검증 환경

Android SDK 0.2.0-rc.2: Android 16/API 36.1 ARM64 에뮬레이터, 업무앱 샘플과 독립 지원 앱. Linux SDK preview: Ubuntu 24.04 ARM64 컨테이너, 일반 사용자, Xvfb X11와 nested GNOME 46 Wayland. Linux 데스크톱 시험은 2 CPU / 2 GiB 제한입니다.

> 에뮬레이터·컨테이너 통과를 모든 Android/Linux 장비의 인증으로 확대하지 않습니다. 공개 SDK는 Android RC / Linux preview 상태이며 실제 제품 출시는 아래 장비별 인수 항목을 충족해야 합니다.

추가 CI: Ubuntu 24.04 AMD64에서 Go race/X11, C ABI와 C·Go 예제 실제 실행 및 SDK ZIP 생성이 통과했습니다. Android CI에서도 두 앱의 Maven debug/R8 빌드와 문서 전용 소비 앱 빌드가 통과했습니다. 이는 물리 GPU나 제조사 장비 인증을 포함하지 않습니다.

### Android에서 실행한 항목

| 계층 | 결과와 범위 |
| --- | --- |
| 단위·수명주기 | 37개 통과. 설정·HTTP 계약·상태·중복 시작·권한 거부·회전·늦은 결과·입력 보호. |
| Android 장치 시험 | 4개 기능 시나리오 통과. 실제 MediaProjection/WebRTC 영상·입력·회전·재연결·보기 전용·사용자/운영자/OS 종료. backend/시그널링은 로컬 fixture. |
| 실제 TURN | 직접 연결·UDP·TCP·TLS 4경로에서 영상 디코딩과 입력 통과. 중계 경로는 relay/relay 후보를 확인. |
| 배포 APK 실행 | 두 앱 debug와 QA 서명한 R8 release 설치·실행. 운영 backend/WSS/웹 뷰어로 영상, 입력, 운영자 종료 확인. 동일 서명 업데이트에서 코드 유지. |
| 문서 소비자 | 별도 프로젝트에서 문서의 전체 Activity를 Maven AAR만으로 debug/R8 release 컴파일. 두 샘플도 published SDK 의존성으로 빌드. |

### Linux에서 실행한 항목

| 계층 | 결과와 범위 |
| --- | --- |
| 공개 Go/C SDK | Start/Status/Identity/Stop/Wait/Done, 중복 소유·상태 보존·비밀값 제외·root 거부·잘못된 JSON/경로/URL 검증. 별도 Go 모듈에서 공개 API로 컴파일. |
| C/Go 예제 | 실제 운영 등록·WSS·웹 터미널 Bash 왕복, Enter 종료와 동일 상태 재시작. C 예제의 SIGURG 종료 결함 수정 후 회귀 시험 통과. |
| 터미널·Fleet·유지보수 | race 검사로 PTY·크기 변경·종료·백프레셔, Fleet 명령 제한/시간초과, 유지보수 배제 동작 검증. 실제 고객 기기에 Fleet 명령을 보내지는 않음. |
| X11 | 실제 VP8 영상·원격 입력과 800×600 JPEG 캡처 통과. |
| Wayland | 실제 GNOME portal 승인, 화면 영상·대문자/기호/한글 입력 통과. 거부 시 제어 차단·터미널 유지 통과. 초기 실행의 붙여넣기+Enter 순서 실패는 아래 제한에 기록. |
| TURN | UDP/TCP/TLS 각각 실제 relay/relay 터미널 왕복 통과. |
| xSpan 별도 회귀 | ARMv5 클린 교차 빌드와 codec/entropy/process/identity/product 5개 실행, Go gateway/relay race 통과. 이번에 실물 reader의 firmware/RFID 시험은 하지 않음. |

### 관찰한 제한과 성능

Android 1600px·30fps 목표의 12초 측정에서 직접 약 30.1fps, TURN UDP 16.8fps, TCP 8.9fps, TLS 4.6fps였습니다. 이번 에뮬레이터·네트워크의 관찰값이며 SLA나 제품 성능 보장이 아닙니다. 프록시·지연·혼잡 조건에 따라 달라집니다.

> Wayland 첫 승인 실행에서 빠른 붙여넣기 뒤 Enter가 전체 문자열보다 먼저 처리되는 실패가 1회 관찰됐습니다. 이후 반복 실행은 통과했지만 이를 미발생으로 처리하지 않습니다. 붙여넣은 텍스트가 화면에 반영된 뒤 제출하고, 대상 앱·부하 조건에서 입력 순서를 추가 인수하세요.

### 제품별로 남아 있는 인수

1. Android: 실제 판매 모델·OS, 16 KB 페이지 실기, 제조사 배터리 정책·접근성 제한·화면 잠금·재부팅, 실제 IME/WebView/바코드 장비를 확인합니다.
2. Linux: 대상 glibc/배포판과 물리 ARM64/AMD64 장비의 GPU·다중 모니터·키보드 레이아웃, 로그인/로그아웃·재부팅, 장시간 실행을 별도 확인합니다.
3. 고객 환경: 계정 권한·테넌트 배정·프록시·매장망·기업 방화벽, 서명된 앱 업데이트와 복구, 지원 중 업무 영향과 로그 정책을 확인합니다.

- [Android 테스트 절차](https://streamzet.com/docs/android/test-apps)

- [Linux 테스트 절차](https://streamzet.com/docs/linux/test-apps)
