상세 컨텐츠

본문 제목

앱 개발 방법 - 앱 리소스 (리소스와 연관된 최선의 기기 호환성 제공)

안드로이드 프로그래밍/앱 리소스

by green post it 2022. 1. 8. 13:49

본문

반응형

리소스와 연관된 최선의 기기 호환성 제공

앱이 여러 기기 구성을 지원하게 하려면 언제나 앱이 사용하는 각 유형의 리소스에 기본 리소스를 제공하는 것이 매우 중요합니다.

 

예를 들어 앱이 여러 언어를 지원할 경우 항상 언어 및 지역 한정자 없이 values/ 디렉토리(문자열이 저장된 디렉토리)를 포함시켜야 합니다. 그렇게 하지 않고 언어와 지역 한정자가 있는 디렉토리에 모든 문자열을 넣으면 문자열이 지원하지 않는 언어로 설정된 기기에서 앱을 실행하면 작동이 중단됩니다. 그러나 기본 values/ 리소스를 제공하는 한은 앱이 제대로 실행됩니다.(사용자가 이해하지 못하는 언어로라도 작동하므로 아예 앱의 작동이 중단되는 것보다는 낫습니다.)

 

마찬가지로 화면 방향에 기초하여 여러가지 레이아웃 리소스를 제공하는 경우 하나의 방향을 기본값으로 선택해야 합니다. 예를 들어 가로 방향에는 layout-land/로 세로 방향에는 layout-port/로 레이아웃 리소스를 제공하는 대신 하나를 기본으로 남겨두세요. 가로 방향인 경우 layout/으로 제공하고 세로 방향인 경우 layout-port/로 제공하는 식으로 하면 됩니다.

 

앱이 예상치 못한 구성에서 실행될 수 있을 뿐만 아니라 Android의 새 버전에서 이전 버전에서는 지원하지 않는 구성 한정자를 추가할 수도 있으므로 기본 리소스를 제공하는 것이 중요합니다. 새 리소스 한정자를 사용 하지만 Android 이전 버전과 코드 호환성은 유지한 경우 그 후 Android 이전 버전이 앱을 실행하면 새로운 한정자로 이름을 지정한 리소스를 사용할 수 없게 됩니다. 이때 기본 리소스를 제공하지 않으면 앱 작동이 중단됩니다. 예를 들어 minSdkVersion이 4로 설정되어 있는데 야간 모드(API 레벨 8에서 추가된 night 또는 notnight)를 사용하여 모든 드로어블 리소스를 한정할 경우 API 레벨4 기기가 드로어블 리소스에 액세스하지 못하고 작동을 중단합니다. 이경우 notnight를 기본 리소스로 제공하는 것이 좋습니다. 즉 드로어블 리소스가 drawable/ 또는 drawable-night/ 이 되도록 해당 한정자를 제외해야 합니다.

 

그러므로 최선의 기기 호환성을 제공하려면 언제나 앱에서 반드시 제대로 수행해야 하는 리소스에 대해 기본 리소스를 제공하세요. 그런 다음 구성 한정자를 사용하여 특정 기기 구성에 대해 대체 리소스를 생성하면 됩니다.

 

이 규칙에 한 가지 예외가 있습니다. 앱의 minSdkVersion이 4 이상이면 화면 밀도 한정자로 대체 드로어블 리소스를 제공할 때 기본 드로어블 리소스가 없어도 됩니다. 기본 드로어블 리소스가 없더라도 Android가 대체 화면 화질 중에서 가장 잘 맞는  리소스를 찾고 필요에 따라 비트맵을 축소합니다. 그러나 모든 유형의 기기에서 최상의 경험을 제공하려면 모든 세 가지 유형의 밀도에 대해 대체 드로어블을 제공해야 합니다.

 

최선의 기기 호환성을 제공하려면 언제나 앱에서 반드시 제대로 수행해야 하는 리소스에 대해 기본 리소스를 제공하고 그런 다음 구성 한정자를 사용하여 특정 기기 구성에 대해 대체 리소스를 생성하면 된다.

 

반응형

관련글 더보기