Skip to content

2.3.15

Choose a tag to compare

@github-actions github-actions released this 24 Aug 01:32
· 45 commits to develop since this release

M3SDK 2.3.15

한국어

이번 릴리스는 MediaProjection 화면 녹화 표시 예외 기능의 실제 SM24 적용 특성을 정확히 안내하고, NuGet 패키지를 사용하는 Xamarin 및 최신 .NET for Android 앱의 Android package visibility manifest 병합 호환성을 보완합니다.

주요 변경 내용

1. MediaProjection 표시 갱신 안내 수정

MediaProjection 표시 예외 설정 요청은 StartUp에 즉시 전달됩니다. 다만 진행 중인 MediaProjection 세션의 상태 표시줄 화면 녹화 표시는 SystemUI가 즉시 다시 그리지 않을 수 있습니다.

  • 확실한 검증: 진행 중인 MediaProjection 세션 종료 후 재시작
  • SM24에서 가능한 갱신: 알림창을 열었다 닫으면 현재 세션의 표시가 갱신될 수 있음
  • 기기 재부팅: 필요 없음
  • clear 포함 목록 변경은 StartUp과 시스템 속성에 반영되더라도 기존 SystemUI 표시가 잠시 남을 수 있음

이 설명을 다음 모든 사용자 접점에 동일하게 적용했습니다.

  • Android/Kotlin 한국어·영어 매뉴얼
  • C#/Xamarin 한국어·영어 매뉴얼
  • JitPack Kotlin 샘플의 한국어·영어 화면
  • NuGet .NET 샘플의 한국어·영어 화면
  • 공개 샘플 E2E 검증 체크리스트

2. NuGet Android package visibility 병합 호환성

NuGet package의 buildTransitive target이 구형 Xamarin.Android와 최신 .NET for Android 프로젝트를 모두 정확히 인식하도록 수정했습니다.

  • 구형 Xamarin.Android: TargetFrameworkIdentifier == MonoAndroid
  • 최신 .NET for Android: TargetPlatformIdentifier == android
  • 문자열 기반 TargetFrameworkVersion >= 11.0 비교 제거
  • build/buildTransitive 동시 import 시 중복 병합 방지 유지
  • Release APK의 최종 AndroidManifest에 SDK companion 앱 <queries> 병합 보장

병합되는 package visibility 항목:

패키지 용도
com.m3.startup StartUp
net.m3mobile.app.scanemul ScanEmul
com.m3.keytoolsl20 신형 KeyTool
net.m3.keytool 레거시 KeyTool
com.m3.appcenter AppCenter

공개 SDK API 시그니처와 MediaProjection Broadcast 계약은 2.3.14와 호환됩니다.

샘플 및 문서

  • JitPack의 실제 2.3.15 artifact를 사용하는 Kotlin Compose 샘플
  • NuGet Gallery의 실제 2.3.15 package를 사용하는 .NET for Android 샘플
  • 두 샘플 모두 로컬 SDK 프로젝트 참조가 없는지 CI에서 검사
  • 매뉴얼 4종의 81개 Broadcast 블록과 request/response action 계약 검증
  • 매뉴얼 PDF 4종과 추가 검증 문서를 GitHub Release에 첨부

설치

Kotlin/JitPack:

implementation("com.github.m3mobile:M3SDK:2.3.15")

JitPack 저장소:

maven { url = uri("https://jitpack.io") }

C#/NuGet:

<PackageReference Include="M3Mobile.M3Sdk.Xamarin" Version="2.3.15" />

검증

SM24 2612031 (M3SM24)과 StartUp 6.8.7에서 검증했습니다.

  • 로컬 배포 후보를 외부 Maven/NuGet package로 만들고 두 공식 샘플이 로컬 SDK 프로젝트 참조 없이 소비하는지 확인
  • Kotlin/C# 샘플에서 MediaProjection 예외 목록 대체·추가·삭제·전체 삭제를 직접 조작하고 시스템 속성 전이 확인
  • C# 샘플에서 AllowProjectMediaAsync()의 실제 StartUp Success, code 0, AppOps allow 확인
  • NuGet 샘플 Release APK의 최종 AndroidManifest에 5개 <queries> package 병합 확인
  • Android apiCheck, unit test, Release AAR, Maven publish 검증 성공
  • C# 테스트 43개 성공, Xamarin/.NET Android 빌드 및 NuGet 패킹 성공
  • 매뉴얼 4종 구조와 Broadcast 계약 검증 성공
  • 배포 후 공개 JitPack/NuGet 샘플 빌드 및 서명 APK 검증
  • 공개 샘플 APK를 SM24에 설치해 MediaProjection 목록 작업과 오류 없음 재확인

목록 설정 API는 응답이 없는 one-way 요청입니다. REQUEST_SENT_UNVERIFIED는 실패가 아니라 Android가 요청 전송을 받아들였으나 StartUp 처리 응답 계약이 없어 샘플에서 결과를 단정하지 않는다는 뜻입니다. 실제 속성과 화면 표시를 별도로 확인해야 합니다.


English

This release documents the actual SM24 refresh behavior of MediaProjection screen-recording indicator exceptions and improves Android package-visibility manifest merging for Xamarin and modern .NET for Android applications consuming the NuGet package.

What Changed

1. Correct MediaProjection Indicator Refresh Guidance

MediaProjection exception-list requests are delivered to StartUp immediately. However, SystemUI may not immediately redraw the status-bar screen-recording indicator for an active MediaProjection session.

  • Deterministic verification: stop and restart the active MediaProjection session
  • Possible SM24 refresh: expand and collapse the notification shade
  • Device reboot: not required
  • A previous SystemUI indicator may remain briefly even after list changes, including clear, have reached StartUp and the system property

The same guidance is now shown in every user-facing location:

  • Korean and English Android/Kotlin manuals
  • Korean and English C#/Xamarin manuals
  • Korean and English JitPack Kotlin sample UI
  • Korean and English NuGet .NET sample UI
  • Published-sample E2E verification checklist

2. NuGet Android Package-visibility Manifest Compatibility

The NuGet package's buildTransitive target now recognizes both legacy Xamarin.Android and modern .NET for Android consumers reliably.

  • Legacy Xamarin.Android: TargetFrameworkIdentifier == MonoAndroid
  • Modern .NET for Android: TargetPlatformIdentifier == android
  • Removed the string-based TargetFrameworkVersion >= 11.0 comparison
  • Preserved deduplication when both build and buildTransitive imports are evaluated
  • Ensures the SDK companion-app <queries> entries reach the final release APK manifest

Merged package-visibility entries:

Package Purpose
com.m3.startup StartUp
net.m3mobile.app.scanemul ScanEmul
com.m3.keytoolsl20 Current KeyTool
net.m3.keytool Legacy KeyTool
com.m3.appcenter AppCenter

Public SDK signatures and the MediaProjection Broadcast contract remain compatible with 2.3.14.

Samples and Documentation

  • Kotlin Compose sample consuming the actual JitPack 2.3.15 artifact
  • .NET for Android sample consuming the actual NuGet Gallery 2.3.15 package
  • CI verifies that neither sample references a local SDK project
  • Validates 81 Broadcast sections and all request/response action contracts in each manual set
  • Publishes all four manuals and additional verification documents with the GitHub Release

Installation

Kotlin/JitPack:

implementation("com.github.m3mobile:M3SDK:2.3.15")

JitPack repository:

maven { url = uri("https://jitpack.io") }

C#/NuGet:

<PackageReference Include="M3Mobile.M3Sdk.Xamarin" Version="2.3.15" />

Validation

Validation was performed on SM24 serial 2612031 (M3SM24) with StartUp 6.8.7.

  • Packaged local release candidates as external Maven/NuGet dependencies and confirmed both official samples had no local SDK project reference
  • Directly exercised replace, append, remove, and clear from the Kotlin and C# samples and verified system-property transitions
  • Verified actual StartUp Success, code 0, and AppOps allow for AllowProjectMediaAsync() from the C# sample
  • Verified all five <queries> packages in the final NuGet-sample release APK manifest
  • Android apiCheck, unit tests, release AAR, and Maven publication validation passed
  • All 43 C# tests passed; Xamarin/.NET Android builds and NuGet packing passed
  • All four manual structures and Broadcast contracts passed validation
  • Published JitPack/NuGet consumer builds and signed APK verification passed after deployment
  • Installed the public sample APKs on SM24 and rechecked MediaProjection list operations without related errors

The exception-list APIs are one-way requests without acknowledgements. REQUEST_SENT_UNVERIFIED is not a failure: it means Android accepted the request for delivery, but the sample cannot claim StartUp processing success because no response contract exists. Verify the resulting property and indicator separately.

Changes

  • Compare 2.3.14...2.3.15
  • Correct active-session indicator refresh and no-reboot guidance across four manuals and two samples
  • Fix NuGet buildTransitive Android manifest merging for legacy Xamarin and modern .NET Android consumers

Documentation

Packages