물에 살고싶은 개발자

안드로이드 Nested Library 문제 해결방법 본문

Android

안드로이드 Nested Library 문제 해결방법

돼지사랑 2021. 2. 25. 10:00

언제나 그랫듯 선결론부터 한줄요약

 

라이브러리의 jar파일을 lib 폴더에 넣고 Project Structure에서 디펜덴시를 직접 jar로 추가하면 해결된다.

 

여기서부턴 자세한 설명

이 문제는 쉽게 간추리자면 라이브러리 안에 있는 라이브러리를 읽어오지 못해 생기는 문제다.

빠른이해를 위해 전제조건을 깔겠다.

 

실제 사용될 프로젝트 : P
P에서 사용될 라이브러리 : LibA
LibA에서 사용한 라이브러리 : LibB

 

이때 LibB,LibA를 모두 리모트에서 implementation 해서 사용하면 아무 문제가 없다.

그러니 특별한 이유가 없는사람들은 이 글을 읽을 필요가 없다.

 

그러나 이 문제가 발생하고, 해결하는 방법을 적는 이유는 LibA에서 LibB를 aar 파일로 implementation 하는 경우, 그리고 실제 사용될 프로젝트 P에서 별도의 implementation 없이 LibA와 LibB에서 지원하는 기능을 모두 이용하고 싶을때 발생한다. 

 

위에서 말한것처럼 두가지 케이스 모두 LibB를 jar파일로 implementation 하면 자연스레 해결된다. P에서 LibA를 implementation 하면 LibB에 있는 기능도 사용할 수 있고, 모듈을 찾을 수 없다는 오류도 생기지 않는다.

 

단, 한가지 제한사항이 있는데, LibB의 jar파일이 있어야한다는점이다. Retrofit이나 Glide처럼 규모도 있고 사람들도 많이 쓰는 라이브러리는 jar파일 다운로드를 제공해주지만, 제공하지 않는 경우 해당 LibB가 오픈소스로 개방되어있지 않다면 중첩문제를 해결할 방법이 리모트로 implementation 하는방법밖에 없다. 위에서 말한 두번째 희망사항도 불가능해진다. 

 

즉 마지막으로 정리하자면, LibB의 jar파일을 구하던지 아니면 직접 jar파일로 빌드해서 LibA에서 직접 jar로 implementation 해줘야한다. 그 후에 LibA를 P에서 리모트로 하든 aar로 하든 implementation해서 사용하면 된다.

 

끝.

 

참고한 블로그

중첩문제 해결방법 : hjlab.tistory.com/385

Comments