

플러그인을 사용하다 보면 웹뷰, 카메라, 사진첩 등 사용자의 권한이 필요한 경우가 존재한다. 플러터는 각 네이티브 플랫폼으로 코드가 컴파일되므로 최소한의 네이티브 설정이 필요하다. 각 안드로이드와 iOS에서 설정하는 방법을 알아보자
목차
- 안드로이드 설정
- 안드로이드 권한 설정(AndroidManifest.xml)
- 안드로이드 빌드 설정(build.gradle)
- iOS 설정
- iOS 권한 설정(info.plish)
- Flutter 설정 파일 및 총정리
안드로이드 설정
1. 안드로이드 권한 설정(AndroidManifest.xml)
안드로이드 앱에 필요한 각종 권한은 AndroidManifest.xml( android/app/src/main/AndroidManifest.xml ) 파일에서 작업합니다. 이 파일은 안드로이드 시스템이 앱의 코드를 실행하기 전에 필수로 확보해야 하는 앱에 대한 정보를 담고 있습니다. 앱 권한 등 안드로이드 네이티브 관련 설정을 할 수 있습니다. main에 코드를 삽입하면 debug와 profile에도 적용됩니다.
자주 사용되는 안드로이드 권한은 다음과 같습니다.
// INTERNET 대신에 원하는 코드를 삽입하면 됩니다.
<uses-permission android:name="android.permission.INTERNET" />
코드 | 설명 |
INTERNET | 인터넷 사용 권한 |
CAMERA | 카메라 사용 권한 |
WRITE_EXTERNAL_STORAGE | 앱 외부의 파일을 저장할 수 있는 권한 |
READ_EXTERNAL_STORAGE | 앱 외부의 파일을 읽을 수 있는 권한 |
VIBRATE | 진동을 일으킬 수 있는 권한 |
ACCESS_FINE_LOCATION | GPS와 네트워크를 모두 사용해, 정확한 현재 위치 정보를 가져올 수 있는 권한 |
ACCESS_COARSE_LOCATION | 네트워크만 사용해서, 대략적인 위치정보를 가져올 수 있는 권한 |
ACCESS_BACKGROUND_LOCATION | 앱이 배경에 있을때, 위치 정보를 얻을 수 있는 권한 |
BILLING | 인앱 결제를 할 수 있는 권한 |
CALL_PHONE | 전화기 앱을 사용하지 않고 전화할 수 있는 권한 |
NETWORK_STATE | 네트워크 상태 불러오기 권한 |
RECOED_AUDIO | 음성 녹음 권한 |
해당 코드를 아래의 위치에 삽입하면 됩니다.
2. 안드로이드 빌드 설정(build.gradle)
플러그인을 사용하면 최소 지원 sdk 가 존재합니다. 당연하지만 예전 안드로이드 버전의 OS는 현재 제공하는 기술을 빌드시키지 못하겠죠. 그렇기에 플러그인을 사용하려면 그에 맞는 sdk 버전을 설정해야 합니다. 이는 Gradle 설정 파일에서 지정합니다.
응? 그런데 Gradle 설정파일이 두개네?
Gradle은 안드로이드 빌드 툴 입니다. 이 빌드 툴인 Gradle을 설정하는 파일은 build.gradle 이고 두 가지가 존재합니다.
- android/app/build.gradle : 모듈 파일이며 의존성이나 버전 정보를 입력합니다. (앱을 빌드 설정)
- android/build.gradle : 프로젝트 파일이며 주로 클래스패스나 레포지토리 정보를 입력합니다. (프로젝트 빌드 설정)
이제 sdk 버전을 설정해봅시다.
android/app/build.gradle 파일을 열어보면 코드에서 complieSdkVersion 과 minSdkVersion을 발견할 수 있다.
- compileSdkVersion: 앱을 빌드할때 사용할 SDK 버전, 앱은 여기에 기제된 버전보다 이하인 버전의 기능을 모두 지원합니다.
- minSdkVersion: 안드로이드 운영체제의 최소 SDK 버전을 설정하는 위치
위의 코드를 해석하면 "SDK version을 32 version으로 빌드하겠습니다. 아! 그런데 밑버전 쓰는 고객들은 그 사람의 안드로이드 운영체제 버전으로 빌드해주세요. 그런데 SDK가 20 미만인 사람들은 빌드 안되야 합니다. 그 고객을 버리고 갈께요~"
플터터 프로젝트를 진행하면 플러그인 사용 때문에 complieSdkVersion과 minSdkVersion를 자주 변경하게 됩니다. 현재 프로젝트 설정값보다 높다면 그에 상응하도록 값을 변경해야 합니다. 값 변경의 경우 오픈소스 프로젝트의 Readme 파일이나 설정 페이지에 설명되어 있습니다.
iOS 설정
1. iOS 권한 설정 (info.plist)
iOS 앱의 런타임을 설정하는 파일은 info.plist 입니다. 플러터 프로젝트를 생성하면 필수 키의 경우 자동으로 생성됩니다. 이미지와 카메라 등의 원하는 권한 요청을 할 때 보여줄 메세지를 정의합니다.
// 아래에 원하는 권한을 기재하여 info.plist에 추가하면 된다.
<key>NSAppleMusicUsageDescription</key>
<string>음악을 재생하는 권한이 필요합니다.</string>
키값 | 설명 |
NSCalendarsUsageDescription | 달력 사용 권한 메세지 |
NSCameraUsageDescription | 카메라 사용 권한 메세지 |
NSContactsUsageDescription | 연락처 사용 권한 메세지 |
NSLocationUsageDescription | 위치정보 사용 권한 메세지 |
NSPhotoLibraryUsageDescription | 사진첩 접근 권한 메세지 |
NSFaceIDUsageDescription | FaceID 사용 권한 메세지 |
NSMicrophoneUsageDescription | 마이크 사용 권한 메세지 |
NSMotionUsageDescription | Accelerometer 사용 권한 메세지 |
NSSiriUsageDescription | Siri 사용 권한 메세지 |
NS UsageDescription (사용하기 좋게 빼놓음) |
사용 및 접근 권한 메세지 |
Flutter 설정 파일 및 총정리
파일명 | 설명 |
pubspec.yaml | Flutter 프로젝트 설정을 변경할 때 사용(dependency, font, asset) |
android/app/src/main/AndroidManifest.xml | 안드로이드 시스템이 앱의 코드를 실행하기 전에 필수로 확보해야 하는 앱에 대한 정보를 담고 있습니다. 앱 권한 등 안드로이드 네이티브 관련 설정을 할 수 있습니다. |
android/build.gradle | 안드로이드에서 사용하는 프로젝트 빌드 설정 프로젝트 파일 입니다. 주로 클래스패스나 레포지토리 정보를 입력합니다. |
android/app/build.gradle | 안드로이드에서 사용하는 앱 빌드 설정을 하는 모듈 파일 입니다. 의존성이나 버전 정보를 입력합니다. |
ios/Runner/Info.plist | iOS 앱의 실행 패키지에 관한 필수 설정 정보(런타임 설정 파일)가 담겨 있습니다. XML 구조로 구성되어 있으며 가장 흔히 앱에서 사용할 권한을 추가할 때 사용합니다. |
'Flutter > Environment & Convention' 카테고리의 다른 글
[Flutter] APK 뽑아내기 (0) | 2023.06.08 |
---|---|
[Flutter] 로드맵 (0) | 2023.04.08 |
[Flutter] Font Setting (pubspec.yaml) (0) | 2023.04.07 |
[Flutter] Flutter에 대한 이해 (0) | 2023.03.24 |