안드로이드 스튜디오 (버전 3.1)을 이용해서 새 모듈을 생성하고, 기존 앱 "build.gradle"파일에 새 모듈을 의존성에 추가, 빌드시 오류가 발생한다. 오류 문구로 이래와 같은 문구들이 여러개 뿌려진다.
"Unable to resolve dependency for ':app@debug/compileClasspath': Could not resolve project :module"
안드로이드 개발자 사이트 문서(한글본)는 최신 내용으로 수정되지 않아서 문제 해결에 도움이 되지 않는다. 또한 안드로이드 스튜디오(버전 3.1)가 모듈을 생성할 때, 파일을 정확히 설정하지 않는 것이 문제가 발생하는 원인중 하나이다.
해결방법 : 새모듈 생성 후 의존성 추가
- 스튜디오에서 "File > New > New Module"메뉴를 사용 모듈을 생성한다. 모듈 이름은 "NewLib" 라고 가정한다.
- "NewLib" 모듈의 "build.gradle"파일을 수정, 모듈의 플러그인 방식을 라이브러리 방식으로 설정한다.
- 앱, "settings.gradle" 'include'항목에 모듈이 추가 되었는지 확인, 없으면 추가한다.
- 앱, app모듈의 "build.gradle" 파일을 수정, 새로 생성한 모듈을 의존성에 추가한다.
- 앱과 모듈간의 SDK 버전 혹은 라이브러리 버전등이 호환되도록 조정한다.
모듈의 플러그인 방식 변경 (2번 항)
스튜디오가 모듈 생성시 잘못 만든 "build.gradle"파일을 수정해야 한다.
- apply plugin: 'com.android.application' => apply plugin: 'com.android.library' 로 수정
- "defaultConfig" 항목에서 "applicationId"항목을 삭제
앱, "settings.gradle" (3번 항)
'include' 항목에 모듈이 추가 되었는지 확인하고 없으면 추가한다. 경우에 따라 추가되지 않는다. 아래는 추가된 예이다.
include ':app', ':NewLib'
앱, app모듈에 의존성 추가 (4번 항)
"라이브러리 생성"에 대한 안드로이드 개발자 사이트 문서는 오래된 내용을 담고 있는 듯 하다. 몇몇 문서등에서 안내하는 모듈을 의존성에 추가할 때, 사용하는 'compile' 옵션은 지원 중단된 옵션으로 'implementation'옵션을 사용해야 한다. 관련된 내용은 구글 문서 "https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration"에서 확인할 수 있다. 아래는 발췌한 문구이다.
컴파일 타임에는 모듈에 종속성을 사용할 수 있으며, 런타임에만 모듈 소비자에게 종속성을 사용할 수 있습니다. 대규모의 다중 프로젝트 빌드에서 api/compile 대신 implementation을 사용하면 빌드 시스템이 재컴파일해야 하는 프로젝트의 크기가 줄어들기 때문에 빌드 시간이 상당히 개선될 수 있습니다. 대부분의 앱과 테스트 모듈은 이 구성을 사용해야 합니다.
따라서 앱의 "build.gradle"파일 'dependencies' 항목에 아래 처럼 문구를 추가한다.
implementation project(':NewLib')
마치며
이 문제의 핵심은 스튜디오가 생성해주는 모듈의 "build.gradle" 파일이 잘못 생성되었기(버전 3.1) 때문이다. 따라서 위에서 안내한 대로 정확한 플러그인 방식을 라이브러리 방식으로 설정해주면 문제가 해결된다.
'Trouble Shooting' 카테고리의 다른 글
Angular, error TS2339: Property 'map' does not exist on type 'Observable<Object>' (0) | 2018.07.30 |
---|---|
파이썬, Django(장고) index.html등 static 파일등 설정하기 (0) | 2018.06.03 |
nashorn, 외부 JSON객체 파싱 및 할당하기 (0) | 2018.04.12 |
Android Studio 3.1, 데이터바인딩 오류 (0) | 2018.04.02 |
자바스크립트, 싱글톤(Singleton) 객체 만들기 (0) | 2018.03.24 |