Repository navigation
2.3.15
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.15artifact를 사용하는 Kotlin Compose 샘플 - NuGet Gallery의 실제
2.3.15package를 사용하는 .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()의 실제 StartUpSuccess, code0, AppOpsallow확인 - 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.0comparison - Preserved deduplication when both
buildandbuildTransitiveimports 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.15artifact - .NET for Android sample consuming the actual NuGet Gallery
2.3.15package - 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, code0, and AppOpsallowforAllowProjectMediaAsync()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_UNVERIFIEDis 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
buildTransitiveAndroid manifest merging for legacy Xamarin and modern .NET Android consumers
Documentation
- M3SDK Manual (Korean)
- M3SDK Manual (English)
- M3SDK Xamarin Manual (Korean)
- M3SDK Xamarin Manual (English)