Flutter/Environment & Convention

[Flutter] 플러그인에 따른 권한 설정(AOS, iOS)

개발자킹콩 2023. 3. 28. 20:14
 

 

플러그인을 사용하다 보면 웹뷰, 카메라, 사진첩 등 사용자의 권한이 필요한 경우가 존재한다. 플러터는 각 네이티브 플랫폼으로 코드가 컴파일되므로 최소한의 네이티브 설정이 필요하다. 각 안드로이드와 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

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