인프런 커뮤니티 질문&답변

Kevin Ahn님의 프로필 이미지
Kevin Ahn

작성한 질문수

iOS/Android 앱 개발을 위한 실전 React Native - Basic

ImagePicker Android 에뮬레이터 오류

작성

·

518

4

안녕하세요. 강의 잘 듣고 있습니다.

정확하지는 않지만, ImagePicker 라이브러리의 버전에 따라 생기는 오류인 것 같습니다.

---------------------------------------------------------------------------------------------------------------------------

[ImagePicker를 설치하고 안드로이드 에뮬레이터를 실행('react-native run-android')했을 때 생기는 오류]

...

* What went wrong:

Execution failed for task ':app:processDebugManifest'.

> Manifest merger failed : uses-sdk:minSdkVersion 16 cannot be smaller than version 21 declared in library [:react-native-image-picker]

...

---------------------------------------------------------------------------------------------------------------------------

[참고] https://github.com/razorpay/react-native-razorpay/issues/289

구글링을 통해 알아본 결과, 'android/build.gradle'에서 minsdkVersion 정보를 수정하면 해결이 가능하다고 합니다.

만약 저와 같은 문제가 생기신 분들이 계신다면 참고하시기 바랍니다!

buildscript {
ext {
buildToolsVersion = "28.0.3"
minSdkVersion = 21
compileSdkVersion = 28
targetSdkVersion = 28
}

답변 2

6

Kevin Ahn님의 프로필 이미지
Kevin Ahn
질문자

ImagePicker와 관련해서, 또 다른 이슈 공유드립니다.

강의대로 진행했을 때, 'TypeError: undefined is not an object (evalutating '_reactNativeImagePicker.default.launchCamera')가 발생하는 이슈가 있었습니다.

이 문제를 해결하기 위해 다음과 같은 절차로 진행하였습니다.

우선, 권한 관련해서 0.60 이상에서는 autolinking을 지원한다고 합니다.

---------------------------------------------------------------------------------------------------------------------------

Android

No permissions required (saveToPhotos requires permission check).

Note: This library does not require Manifest.permission.CAMERA, if your app declares as using this permission in manifest then you have to obtain the permission before using launchCamera.

---------------------------------------------------------------------------------------------------------------------------

[참고] https://www.npmjs.com/package/react-native-image-picker

따라서 저의 경우에는 다음과 같이 권한 설정을 주석처리 해주었습니다.

<!-- <uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> -->

또한 강의와는 달리,

import ImagePicker from 'react-native-image-picker';

가 아닌, 

import { launchCamera, launchImageLibrary } from 'react-native-image-picker';

을 import 하였고, 강의에서의 addImage 함수에는 다음과 같이 설정하여 문제를 해결했습니다.

addImage = () => {
launchCamera({}, response => {
console.warn(response)
this.setState({
avatar: response.uri
})
})
}

참고 바랍니다!

2

Kevin Ahn님의 프로필 이미지
Kevin Ahn
질문자

한가지 더 공유드립니다.

---------------------------------------------------------------------------------------------------------------------------

Migration from 2.x.x to 3.x.x

  • showImagePicker API is removed.
  • No permission required for default options on Android.
  • Removed and updated some values in options, so please check them carefully.

---------------------------------------------------------------------------------------------------------------------------

[참고] https://github.com/react-native-image-picker/react-native-image-picker

showImagePicker API는 더이상 지원되지 않는다고 합니다.

Options도 다양하게 지원하니 참고하면 좋을 것 같습니다!

궁금한 것이 있어 질문 드립니다.

그럼 showImagePicker 과 같이 카메라, 겔러리에서 선택하여 가져오는 명령을 줄 수 있는 기능은 따로 없는 것인가요?

사용하려면 직접 모달, 팝업 등의 창을 직접 만들어 연결을 해야 하는 것인가요?

Kevin Ahn님의 프로필 이미지
Kevin Ahn

작성한 질문수

질문하기