본문 바로가기
웹 프론트엔드/React-Native

React Native: 안드로이드 빌드시 mergeLibDexDebug

by 번데기 개발자 2023. 8. 2.
반응형

개요

 

React Native를 통해 안드로이드 빌드를 진행할때 mergeLibDexDebug 에러가 발생하였습니다.

 

mergeLibDexDebug 에러가 무엇인지 알아보고 해결법을 간단히 공유해보겠습니다.

 

 

문제점 

 

여러가지 문제가 있지만 보통 아래와 같은 이유로 발생한다고 합니다.

 

  • Dex 메서드 제한 초과 => 의존성 패키지들에서 사용하는 메서드들이 너무 많을때
  • 의존성 충돌 => 다양한 라이브러리와 의존성 충돌. 즉 비슷한 라이브리를 사용하는 경우에 Dex 파일에 중복된 메서드 포함됨.
  • 멀티덱스 설정 문제 => Gradle 플러그인이 여러 Dex파일을 생성하고 하나의 Dex파일로 병합하는 설정에서 문제 발생 

 

 

해결법 

 

먼저 multiDex 설정상 문제가 발생할 가능성이 있기 때문에 아래와 같이 적용해보았습니다.

android {
	...
    defaultConfig {
    	...
        multiDexEnabled true
    }

    dependencies {
        implementation "androidx.multidex:multidex:2.0.1"
        ...
    }
}

android/app/build.gradle

  • multiDex 설정을 위한 추가 종속성 설치

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

    <application
        android:usesCleartextTraffic="true"
        tools:targetApi="28"
        tools:ignore="GoogleAppIndexingWarning"
        android:largeHeap="true" // 해당 부분 추가
    >
        <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" android:exported="false" />
    </application>
</manifest>

AndroidManifest.xml

  • manifest에서 largeHeap 옵션 켜주기

 

org.gradle.java.home=/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home
org.gradle.jvmargs=-Xmx4096M

/android/gradle.properties 

  • gradle 속성에서 JVM 메모리 사이즈 늘려주기 

 

추가 해결

 

실제로 위의 방법들을 적용해 보았지만 문제가 해결되지 않아서 조금 더 이유를 찾아 보았습니다. 

 

결국 문제는 멀티덱스 설정이나 메모리 문제가 아니라 아래와 같이 비슷한 라이브러리의 의존성 충돌 문제였습니다. 

 

 "dependencies": {
    "@react-native-async-storage/async-storage": "^1.18.2",
    "@react-native-community/async-storage": "^1.12.1", // 제거 
  },

 

위에서 제가 AsyncStorage 사용을 위해 @react-native-async-storage/async-storage, @react-native-community/async-storage 라는 2가지 패키지를 사용하고 있었기 때문에 문제가 발생한 것이 었습니다.

 

이중 @react-native-community/async-storage 패키지를 제거하니 간단히 문제가 해결되었습니다. 

 

 

 

마무리

 

이번에는 React Native를 공부하면서 만난 Android의 mergeLibDexDebug 버그에 대한 해결방법을 알아보았습니다.

 

React Native는 React의 문법과 사용법만 가져온 앱개발 방법이고 웹개발과는 조금 거리가 있다는점을 다시 한번 깨달았습니다 ㅎ.

 

다음번에도 좀더 유익한 정보 가지고 공유드리겠습니다. 감사합니다.

 

 

 

참고 

 

https://www.inflearn.com/questions/584124/mergelibdexdebug

 

mergeLibDexDebug.. - 인프런 | 질문 & 답변

[사진]구글링 해보면서 해결법이라는것들 적용해보고있는데,그래도 안되네요 ㅠㅠ - 질문 & 답변 | 인프런

www.inflearn.com

 

 

https://kwonsaw.tistory.com/412

 

Execution failed for task ':app:mergeExtDexDebug' 오류 해결방법

프로젝트 컴파일 시 아래와 같은 오류메세지가 나면서 빌드가 되지 않을때가 있습니다. 저 같은 경우는 외부 SDK를 연동하는 과정에서 로드하는 라이브러리가 많다보니 메모리가 충족되지 않아

kwonsaw.tistory.com

 

반응형