안녕하세요~ 챠니입니다! :)
이번에는 <uses-feature> 속성에 대해서 알아보도록 하겠습니다.
해당속성은 애플리케이션이 사용하는 단일 하드웨어 또는 소프트웨어 기능을 선언하게 됩니다.
특히 실제 개발에서는 특정기능 설정으로 인해 구글스토어 검색이 안되어 앱이 다운이 안되는 현상에 대해서도 알아보도록 하겠습니다.
<uses-feature> 이 무엇인가?
Google Play에서는 앱 매니페스트에 선언된 <uses-feature> 요소를 사용하여 하드웨어 및 소프트웨어 기능 요구사항을 충족하지 않는 기기에서 앱을 기기에서 앱을 필터링한다고 나와있습니다.
1. 문법
<uses-feature
android:name="string"
android:required=["true" | "false"]
android:glEsVersion="integer" />
* android:name
- 애플리케이션이 사용하는 단일 하드웨어 또는 소프웨어 기능을 설명어 문자열로 지정
* android:required
- 기본값은 "true"
- android:required="true": 지정된 기능이 기기에 없으면 애플리케이션이 작동할 수 없거나 작동하도록 설계되지 않았음을 나타냄
- android:required="false": 애플리 케이션이 기기에 있는 경우 기능을 사용하지만 필요하다면 지정된 기능 없이도 작동하도록 설계
* android:glEsVersion: 애플리케이션에 필요한 OpenGL Es 버전
2. android:required 을 어떻게 설정해야 하는가?
가장 중요한 포인트 입니다.
그래서 android:required를 어떻게 사용해야하는가?
Android Developer에서는 다음과 같이 설명을 하고 있습니다.
android:required="false"로 설정을 하면 앱에서 지정된 기능 선언되어있지만 Google Play 필터링을 중지할 수 있다.
즉 지정된 기능을 지원하지 않는 기기라도 Google Play에서 다운을 받을 수 있다는 것입니다.
반대로 android:required="ture"로 설정하게 되면
GooglePlay에서 지정된 기능을 지원하는 기기에서만 검색이 가능, 다운을 받을 수 있습니다.
3. uses-permission과 uses-feature의 관계
아래의 퍼미션을 선언할때 잘 고려하여서 선언해야 한다는 점을 잊지 말자
Category | This Permission... | Implies This Feature Requirement |
Bluetooth | BLUETOOTH | android.hardware.bluetooth (See Special handling for Bluetooth feature for details.) |
BLUETOOTH_ADMIN | android.hardware.bluetooth | |
Camera | CAMERA | android.hardware.camera and android.hardware.camera.autofocus |
Location | ACCESS_MOCK_LOCATION | android.hardware.location |
ACCESS_LOCATION_EXTRA_COMMANDS | android.hardware.location | |
INSTALL_LOCATION_PROVIDER | android.hardware.location | |
ACCESS_COARSE_LOCATION | android.hardware.location.network and android.hardware.location |
|
ACCESS_FINE_LOCATION | android.hardware.location.gps and android.hardware.location |
|
Microphone | RECORD_AUDIO | android.hardware.microphone |
Telephony | CALL_PHONE | android.hardware.telephony |
CALL_PRIVILEGED | android.hardware.telephony | |
MODIFY_PHONE_STATE | android.hardware.telephony | |
PROCESS_OUTGOING_CALLS | android.hardware.telephony | |
READ_SMS | android.hardware.telephony | |
RECEIVE_SMS | android.hardware.telephony | |
RECEIVE_MMS | android.hardware.telephony | |
RECEIVE_WAP_PUSH | android.hardware.telephony | |
SEND_SMS | android.hardware.telephony | |
WRITE_APN_SETTINGS | android.hardware.telephony | |
WRITE_SMS | android.hardware.telephony | |
Wifi | ACCESS_WIFI_STATE | android.hardware.wifi |
CHANGE_WIFI_STATE | android.hardware.wifi | |
CHANGE_WIFI_MULTICAST_STATE | android.hardware.wifi |
참고자료
http://developer.android.com/guide/topics/manifest/uses-feature-element.html#permissions-features
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=shyonge&logNo=195248471
질문 또는 궁굼한 부분은 댓글을 남겨주세요! 친절하게 답변드리겠습니다!
응원의 댓글은 저에게 큰 힘이 된답니다! :)
즐거운 하루되세요!
깃허브 보러 놀러오세요 👇 (맞팔환영)
https://github.com/younminchan
'🖥 Programming > 📱 Android (Kotlin)' 카테고리의 다른 글
[Android] (해결방법) Task 'prepareKotlinBuildScriptModel' not found in project ':library'. (0) | 2023.05.22 |
---|---|
[Android][kotlin] Android <-> Google Login 연동방법 (0) | 2023.05.20 |
[Android] 갤럭시 폴드 폰 대응(Fold) (0) | 2023.05.11 |
[Android] This version of the Android Support plugin for IntelliJ IDEA (or Android Studio) cannot open this project, please retry with version 2021.2.1 or newer. 해결방법 (0) | 2023.05.11 |
[Android][kotlin] Android 12 / SameSite=None; Secure관련 (0) | 2023.04.12 |
[Android] APK파일 이름 변경하기 (0) | 2023.03.15 |
[Android][kotlin] User-Agent Mobile 인식하게 만들기(ex. 갤럭시 폴드 카카오톡 공유하기 대응) (0) | 2023.03.13 |
[Android] Button 그림자 제거 방법 (0) | 2023.02.14 |