제목이 너무 거창한가요?
최근 온라인으로 코틀린 강좌를 듣고 정말 오랜만에 '앱 공부 좀 해볼까?'라는 생각이 들어서 안드로이드 스튜디오를 세팅해 봤습니다.
안드로이드는 10년 전에 넥서스 one 사용하면서 공모전 준비할 때 잠깐 해보고는 처음인데 이클립스 플러그인으로 개발하던 때랑 완전히 다르군요.
안드로이드 스튜디오 툴도 낯설고 구조도 낯설고요.
일단 '소스 분석하면서 구조부터 파악해 볼까'라는 생각으로 검색 해 보니 안드로이드 개발 스킬을 향상시키는 오픈소스 앱 20가지라는 제목의 좋은 글이 있더라고요.
여기서 Simple Calendar 가 코틀린으로 되어 있다고 해서 세팅을 해 봤습니다.
그런데 앱을 실행했더니
Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
에러를 뿜어대네요.
이런 경우 제 해결 방법은 검색 검색 검색이죠.
여러 가지 원인이 있다는데 먼저 안드로이드 스튜디오에서
Build > Clean Project를 실행 후 Build > Rebuild Porject를 실행하면 된다고 하는데
Clean Project에서는 에러가 없었지만 Rebuild Projcet를 실행하니
Error:Error converting bytecode to dex:
Cause: com.android.dex.DexException: Multiple dex files define Lcom/squareup/leakcanary/watcher/R;
위와 같이 엄청난 에러를 뿜어댑니다.
그렇게 한참을 세팅을 바꿔가며 검색을 해서 LeakCanary의 버전 문제라는 걸 알아냈습니다.
LeakCanary는 Square 회사가 개발한 Memory Leak 을 알려주는 라이브러리라고 하네요.
더 자세한 건 아래 참조 글을 확인해 보세요.
저도 공부를 많이 해야 할 것 같은데 어쨌든 위 문제는 build.gradle 파일에서
ext {
leakCanaryVersion =
'
1.5.2
'
}
위 버전을 '
1.5.1
'로 변경하여 해결했습니다.
아~ 괜히 시작했나 싶네요.
※ 참조
LeakCanary 1.5.2 and 1.6-Snapshot causing build failure
[번역] LeakCanary 의 구조를 어느정도 이해하고 싶은 사람