Skip to content

Android 화면 캡처·전송 복구와 빌드·CI 최신화 - #14

Merged
magicsih merged 3 commits into
masterfrom
modernize-casting
Oct 3, 2026
Merged

magicsih merged 3 commits into
masterfrom
modernize-casting

Conversation

@magicsih

@magicsih magicsih commented Oct 3, 2026

Copy link
Copy Markdown
Owner

화면 캡처 동의를 재사용하고 서비스 간 메시지·무제한 네트워크 전송에 의존하던 예제를 현재 Android 규칙에 맞게 복구합니다. Java/Groovy와 minSdk 21, 패키지 ID, 설정 키, 포트 49152 및 H.264/IVF 형식을 유지합니다.

  • AGP 9.4.1, Gradle 9.8.0, JDK 17, SDK 37로 고정하고 wrapper 실행 권한·체크섬과 공개 저장소용 읽기 전용 CI를 추가했습니다.
  • 같은 프로세스의 비공개 foreground service가 새 동의로 한 번만 캡처합니다. 앱·알림·시스템 중지, 연결 오류와 전송 지연이 자원 해제로 이어집니다.
  • 연결 후 인코딩을 시작하고 TCP 연결/쓰기 제한 시간, 2 MiB·120개 전송 상한, VP8 Surface 인코더 선택, IVF 마이크로초 시간 단위, H.264 초기 데이터와 종료 처리를 수정했습니다.
  • 기본 Android 스크롤 화면과 입력·권한·상태 처리를 추가하고 낡은 통신·IDE·예제 테스트 파일을 제거했습니다. AOSP 라이선스는 보존합니다.

검증: 깨끗한 빌드에서 assembleDebug, 단위 테스트 15개, lintDebug, assembleDebugAndroidTest가 통과했습니다. API 21·34·37 및 API 36 실기기에서 앱 실행을 확인했습니다. 실기기 TCP/UDP × H.264/VP8은 각각 125초 동안 FFmpeg 디코딩과 화면 변화, 중지 후 스레드 종료를 확인했습니다. UDP는 Mac의 직접 FFmpeg 소켓 수신 문제가 있어 LAN UDP 수신 바이트를 FFmpeg stdin에 전달해 검증했으며, 이 한계는 후속 검증 문서에 명시합니다. API 34·37 TCP/H.264 및 API 21 TCP/VP8도 125초 검증을 통과했습니다. API 21 에뮬레이터의 H.264 소프트웨어 인코더는 예제의 해상도를 지원하지 않아 H.264는 해당 환경에서 미검증입니다.

PR #13에서 제안된 namespace, Activity export, wrapper 권한 및 불필요한 파일 제거 방향은 독립적으로 반영했습니다. 기여자 표기와 공개 사용 안내·검증표는 별도 문서 PR에 포함합니다. 기존 이슈와 PR에는 답변 게시나 종료를 하지 않습니다.

@magicsih
magicsih merged commit ab29dec into master Oct 3, 2026
1 check passed
@magicsih
magicsih deleted the modernize-casting branch October 3, 2026 08:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant