[네이버 책] Gradle 철저 입문 - http://book.naver.com/bookdb/book_detail.nhn?bid=9946861

  아직 초보이기는 합니다만 저는 현재 안드로이드 1인 개발자입니다. 그렇다 보니 앱 개발 계획부터 빌드/배포까지 혼자서 해야 하고, 모든 과정에서 어떤 에러나 뜻하지 않는 장애가 발생하면 관련 개발자 카페 같은 곳에 조언을 구하거나 구글링을 통해서 원인을 파악하고 스스로 해결해야 합니다. 누구나 그렇듯이 이 과정이 쉽지는 않지만 문제가 해결되고 나면 찾아오는 보람과 성취감으로 일하고 있습니다.

  그런데 최근 Gradle이 Android studio에서 표준이 되면서 Gradle에 대해 기본부터 알아야 할 필요성이 생겼습니다. 아직 이전의 Maven과 같은 build tool에 대한 정의도 제대로 인식하지 못했는데 다시 새 툴(tool)에 대해 알아야 한다는게 막막했지만, 점점 영향력이 커지고 있는 Gradle을 그냥 지나치는 것은 아니다 싶어 Gradle project 공식 사이트(http://gradle.org/)나 다른 관련 guide line을 찾아 독학해야만 했습니다. 요즘은 그나마 덜하지만 1~2년 전까지만 해도 Gradle 관련 자료 자체가 적어 검색해서 찾는데에도 시간이 꽤 걸려 공부하기가 쉽지가 않았습니다. 그러다 작년께 이 책의 원서가 출간되었고, 기대치 않았는데 빠른 시간 내에 우리 말로도 번역 출간되어 소식을 접하자마자 이 책을 구하게 되었습니다.

  읽으면서 단순히 Gradle을 다루는 기법 뿐만 아니라, build tool이 무엇인가에서부터 전체적인 build 과정을 이해하게 되어 저와 같은 초보 개발자들에게 좋은 책이라는 생각이 들었습니다. 그리고 android project 뿐만 아니라 web app. 등의 기본 build 구문을 보여주고, 이전의 Maven과 Ant에서 Gradle로 이식하는 방법 등도 자세히 보여주어 이미 실무에 익숙한 고급 개발자들에게도 도움이 될 것이라 생각이 들었습니다. 인터넷에 여기저기 분산되어 있는 Gradle에 대한 정보도 좋지만, 하나의 책으로 개념을 정립해야 된다면 이 책을 꼭 읽어보라고 권하고 싶습니다.

  기본 기능을 구현한 뒤 app market에 올렸다가 debugging phone에서는 막힘없이 되던 부분에서 app이 멎어버리는 bug를 접했다. logcat을 보니 library에서 class를 읽어들이는데 문제가 있는 모양인데 분명히 gradle에도 해당 .jar 파일들을 추가했고 이미 정상적으로 동작하는 폰도 있는데 왜 bug가 잡힌 것일까? bug가 잡힌 phone은 API 19고 되던 폰은 API 21이긴 한데 말이다.

E/dalvikvm: Could not find class 'org.apache.poi.ss.util.CellRangeAddress', referenced from method org.apache.poi.hssf.usermodel.HSSFWorkbook.setRepeatingRowsAndColumns
W/dalvikvm: VFY: unable to resolve new-instance 7124 (Lorg/apache/poi/ss/util/CellRangeAddress;) in Lorg/apache/poi/hssf/usermodel/HSSFWorkbook;
D/dalvikvm: VFY: replacing opcode 0x22 at 0x0009
W/dalvikvm: Unable to resolve superclass of Lorg/apache/poi/ss/util/CellRangeAddress; (7125)
W/dalvikvm: Link of class 'Lorg/apache/poi/ss/util/CellRangeAddress;' failed
E/dalvikvm: Could not find class 'org.apache.poi.ss.util.CellRangeAddress', referenced from method org.apache.poi.hssf.usermodel.HSSFWorkbook.setRepeatingRowsAndColumns
W/dalvikvm: VFY: unable to resolve new-instance 7124 (Lorg/apache/poi/ss/util/CellRangeAddress;) in Lorg/apache/poi/hssf/usermodel/HSSFWorkbook;
D/dalvikvm: VFY: replacing opcode 0x22 at 0x0010

 

  나와 같은 error를 먼저 만나본 사람이 어디없나 검색해 보니 다행히 있긴 있었다. MultiDex 기능이 Lollipop 이전에서는 제대로 동작하지 않을 수도 있기 때문에 아래 code를 class 내에 선언하여야 해당 library의 method들을 활용할 수 있다는 것이다.

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}
[출처] StackOverflow - Android Studio E/dalvikvm﹕ Could not find class '.DatabaseHelper', referenced from method .DatabaseManager
                                  (http://stackoverflow.com/questions/32697460/android-studio-e-dalvikvm-could-not-find-class-databasehelper-referenced-fr

  결과는 성공이었다. 문제를 해결하게 되서 기쁘긴한데 이 해결책을 알아낸 사람들은 도대체 어떻게 찾은건지 ㅎㅎ. 역시 무작정 code만 짜기 보다는 전체적인 동작 원리와 구조를 파악할 줄 아는 것이 진정한 힘인 것 같다.

+ Recent posts