ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Android_에러해결] 사진촬영시 앱꺼짐
    ▶︎ Android/react-native 2025. 3. 26. 20:19
    반응형
    ▼ 이슈내용

    안드로이드에서 사진촬영을 하려고 하면 앱이 꺼지는 에러가 발생하였다.

     


    ▼ 에러 사유

    리액트에서 제공하는 안드로이드 권한로직이 변경된 것으로 추정된다.

    관리중엔 두개 앱의 코드가 같은데, 개중에 하나의 앱만 에러난다.
    다른점을 찾아보니 react 버전이 다르다.


    정상작동하는 A앱의 버전은 "react": "16.9.0",
    에러난 B앱의 버전은 "react": "16.11.0",

     


    ▼ 에러 발생된 앱의 스펙
    "react": "16.11.0",
    "react-native-camera": "3.26.0",
    buildscript {
        ext {
            compileSdkVersion = 33
            buildToolsVersion = "30.0.3"
            minSdkVersion = 25 //24
            targetSdkVersion = 34
            ndkVersion = "23.1.7779620"
        }
    }

     


    ▼ 에러내용

    배포된 앱에서는 사진촬영을 하려고 하면 앱이 꺼진다.

    시뮬레이터에서 작동해보니 아래와 같은 에러문구가 발생하였다.

     

    ▶︎ 이건 시뮬레이터에서 발생한 에러다

     

    에러문구는 아래와 같다.

    permission is null

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    ▼ 아래는 터미널에 나오는 에러 문구다.

    The 'captureAudio property set on RNCamera instance but 'RECORD_AUDIO permissions not defined in the applications 'AndroidManifest.xml'. If you want to record audio you will have to add 'cuses-permission android: name="android.permission.RECORD_AUDIO"/>' to your 'AndroidManifest.xml'. Otherwise you should set the 'captureAudio' property on the component instance to "false'.

     


    ▼ 해결방법


    ▼ 기존코드 

      const checkAndroidPermission = async () => {
        try {
          const permission = PermissionsAndroid.PERMISSIONS.READ_MEDIA_IMAGES;
          await PermissionsAndroid.request(permission);
          Promise.resolve();
        } catch (error) {
          Promise.reject(error);
        }
      };

     

    ▼ 수정된코드

      const checkAndroidPermission = async () => {
        try {
          const permission = 'android.permission.READ_MEDIA_IMAGES';
    
          const granted = await PermissionsAndroid.request(permission);
          if (granted === PermissionsAndroid.RESULTS.GRANTED) {
            console.log('권한이 부여되었습니다.');
          } else {
            console.log('권한이 부여되지 않았습니다.');
          }
        } catch (error) {
          console.error('Permission request failed', error);
        }
      };

     


    TMI

    터미널에서 나온 에러는 오디오에 대한 에러인데, 아래 코드에서 captureAudio를 true로 했을경우에 <uses-permission android:name="android.permission.RECORD_AUDIO"/> 퍼미션을 추가하지 않았을때 발생되어야하는 에러다.
    하지만 나는 false로 되어있어서 관련없이, 위의 라이브러리 버전에 대한 에러엿다 ㅎㅎ
    오늘은 다행히 에러문구함정에서 오래 떠돌지 않아따 휴-

    < RNCamera captureAudio="false" >

     

     

    반응형
Designed by Tistory.