Android 12 ( targetSdkVersion 31 ) 를 타겟팅 하는 경우 확인해야할 사항들
안드로이드 운영체제가 새롭게 나올 때 마다 스트레스를 받게 된다.
이 또한 지나가리라.
지원 중단
각 출시에서 특정 Android API는 더 이상 사용되지 않거나 더 나은 개발자 환경 제공이나 새 플랫폼 기능 지원을 위해 리팩터링해야 할 수 있습니다. 이 경우 Android는 더 이상 사용되지 않는 API를 공식적으로 지원 중단하고 개발자에게 대신 사용할 새 API를 안내합니다.
지원 중단이란 API에 관한 공식 지원은 종료되나 개발자는 계속 사용할 수 있다는 의미입니다. 이 페이지에서는 이번 Android 출시에서 지원 중단된 사항을 중점적으로 다룹니다. 다른 지원 중단을 확인하려면 API 차이점 보고서를 참고하세요.
RenderScript
Android 12부터 RenderScript API는 지원 중단됩니다. 계속 작동하지만 기기 및 구성요소 제조업체는 시간이 지남에 따라 하드웨어 가속 지원을 더 이상 제공하지 않을 것으로 예상됩니다. GPU 가속을 최대한 활용하려면 RenderScript에서 이전하는 것이 좋습니다.
Android 재생목록
Android 재생목록이 지원 중단됩니다. 이 API는 더 이상 유지되지 않지만 현재 기능은 호환성을 위해 유지됩니다.
재생목록을 m3u 파일로 읽고 저장하는 것이 좋습니다.
Display API 지원 중단
Android 기기는 큰 화면, 태블릿, 폴더블과 같은 매우 다양한 폼 팩터로 제공됩니다. 콘텐츠를 각 기기에 맞게 렌더링하려면 앱은 화면이나 디스플레이 크기를 결정해야 합니다. 오랜 시간 동안 Android는 이 정보를 검색하는 다양한 API를 제공했습니다. Android 11에서는 WindowMetrics API를 도입하고 다음 메서드를 지원 중단했습니다.
Android 12에서는 WindowMetrics 사용을 계속 권장하면서 다음 메서드를 지원 중단합니다.
앱은 WindowMetrics API를 사용하여 창 경계를 쿼리하거나 Configuration.densityDpi를 사용하여 현재 밀도를 쿼리해야 합니다.
Jetpack WindowManager 라이브러리에는 Android 4.0.1(API 수준 14) 이상을 지원하는 WindowMetrics 클래스가 포함되어 있습니다.
예
다음은 WindowMetrics 사용 방법을 보여주는 예입니다.
먼저 앱이 앱 활동을 완전히 크기 조절이 가능하도록 할 수 있는지 확인합니다.
활동은 모든 UI 관련 작업, 특히 WindowManager.getCurrentWindowMetrics()의 경우 활동 컨텍스트의 WindowMetrics를 사용해야 합니다.
앱에서 MediaProjection을 만든다면 프로젝션이 디스플레이를 캡처하므로 경계의 크기가 올바르게 지정되어야 합니다. 앱의 크기를 완전히 조절할 수 있으면 활동 컨텍스트는 올바른 경계를 반환합니다.
WindowMetrics projectionMetrics = activityContext
.getSystemService(WindowManager.class).getMaximumWindowMetrics();
앱의 크기를 완전히 조절할 수 없으면 앱은 WindowContext 인스턴스에서 경계를 쿼리하고 WindowManager.getMaximumWindowMetrics()를 사용하여 애플리케이션에서 사용할 수 있는 최대 디스플레이 영역의 WindowMetrics를 검색해야 합니다.
Context windowContext = mContext.createWindowContext(mContext.getDisplay(),
TYPE_APPLICATION, null /* options */);
WindowMetrics projectionMetrics = windowContext.getWindowManager()
.getMaximumWindowMetrics();
참고: MediaProjection을 사용하는 라이브러리도 이 도움말을 따라 앱 창의 적절한 WindowMetrics를 쿼리해야 합니다.