• 참고사이트

증상

오랜만에 안드로이드 개발환경을 재설치하고 기본형식으로 완성된 안드로이드 애플리케이션을 실행하려고 하는데,

Description Resource Path Location Type Error generating final archive: Debug Certificate expired on 12. 9. 26 오후 11:36 MagpieAlarm Unknown Android Packaging Problem

라는 로그를 찍으며 애플리케이션이 실행되지 않는 문제가 발생했다.


원인

개발 시스템에 있는 debug.keystore 의 증명파일의 기한이 만료되면서 나타나는 증상이다. 시스템에 ~/.android 디렉토리에 있는 debug.keystore 파일을 삭제하면 된다.


처리방법

1. 폴더이동

~/.android

2. debug.keystore 파일 삭제

rm debug.keystore



내 시스템에서는

/home/ihoneymon/.android 디렉토리 내에 debug.keystore 파일이 존재한다.



우분투 64bit, ADT-Bundle 실행시 libncurses.so.5 cannot open... 메시지 뜰때



결론부터 이야기하자면, Eclipse Android Plugin이 실행되는데 필요한 32bit 라이브러리가 없어서 뜨는 것이다. 32bit 라이브러리를 설치해주자!!

$ sudo apt-get install ia32-libs


ADT bundle 을 설치한 후에 Eclipse for Android를 실행하는데, 실행할 때마다

'adb-version' failed!!

라는 메시지가 지속적으로 팝업으로 노출되었다. 팝업을 닫고 나면 console 창에 아래의 로그가 주르르륵 찍히는 것을 목격할 수가 있다. 로그의 내용만으로는 딱히 어떤 증상인지 확인할 수가 없다. 그저 'error while loading shared libraries: libncurses.so.5: cannot open shared object file' 라는 문구를 통해서 libncurses.so.5 관련 문제겠구나 추측해볼 수 있다. 

그래서 인터넷 검색을 실시했고, 위에서 언급했던 참고사이트의 정보를 확인했다.

  • 검색 키워드 : linux adt-bundle libncurses.so.5 cannot open

[2012-12-30 15:47:57 - adb] /development/adt-bundle-linux/sdk/platform-tools/adb: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory [2012-12-30 15:47:57 - adb] 'adb version' failed! /development/adt-bundle-linux/sdk/platform-tools/adb: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory [2012-12-30 15:47:57 - adb] Failed to parse the output of 'adb version': Standard Output was:

Error Output was: /development/adt-bundle-linux/sdk/platform-tools/adb: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

[2012-12-30 15:47:57 - adb] /development/adt-bundle-linux/sdk/platform-tools/adb: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory [2012-12-30 15:47:57 - adb] 'adb version' failed! /development/adt-bundle-linux/sdk/platform-tools/adb: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory [2012-12-30 15:47:57 - adb] Failed to parse the output of 'adb version': Standard Output was:

Error Output was: /development/adt-bundle-linux/sdk/platform-tools/adb: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

우분투에서 실행되는 android sdk 는 32bit application이기 때문에 32bit 공용 라이브러리들이 필요한 것이다. 실행에 필요한 32bit 공용 라이브러리를 추가하는 것으로 간단하게 문제를 해결할 수 있게 된다. 

http://developer.android.com/sdk/index.html

Download the SDK를 누르면, 이클립스와 android SDK tools 가 함께 묶인 녀석을 다운로드 받을 수 있다.

어렵게 이클립스 다운로드 받아 설치하고, android SDK Tools 다운로드 받는 번거로움이 사라지는구먼.

안드로이드 개발을 하려고 하면 알아야 하는 게 참 많다. 그래서 그것들을 정리하자니 어렵다.

쉽지 않은 일이라는 사실을 이해해줬으면 한다.

이렇게 정리한 내용을 조금 살을 덕지덕지 발라가면서 글을 늘려가볼까 한다. 오늘 대충 생각한 것이라 구조가 딱히 마음에 드는 것은 아니다. 안쓰던 글을 쓰려니 머리가 복잡하다. 하아.


1. 자바


  1. 참고사이트
    • 자바의 정석 (http://cafe.naver.com/javachobostudy)[http://cafe.naver.com/javachobostudy]
  2. 자바를 배워야 하는 이유 : 자바는 생각보다 배우기 어렵다. 객체지향에 대한 이해…는 나중에 천천히 익혀도 되고(중요한 부분이다), 객체가 가지는 데이터와 기능(Function, method라고 불림)에 대한 이해가 선행되지 않으면 이게 어느나라 소리인가 하게 되는 그런 이야기를 하게 된다. 강력한 타입체크(기본형, 참조형)형 언어이고 어떻게 개발하느냐에 따라 성능차이도 상당히 많이 난다. 기본적으로 진행되어야 할 것은 인터페이스와 클래스의 구분, 상속을 통한 확장(extends)와 구현(implements) 에 대한 이해를 해야한다. 
  3. 자바 설치 및 경로설정

3. IDE 및 ADT


  1. 참고사이트
  2. 이클립스 사용법을 배워야 하는 이유 :
    • 노트패드로 개발할는 있다. 그러나 참조하는 소스를 전체적으로 변경하는 작업을 하기는 너무 어렵다.
    • 도구를 잘 사용하면 편하다.
    • 이클립스와 ADT 조합이 안드로이드 개발에는 최적이다.
    • 무료(공짜)다.

3. 안드로이드


  1. 참고사이트나 서적
    • 안드로이드 사이트 (http://developer.android.com/index.html)[http://developer.android.com/index.html]
      • 제일 많이 찾아오게될 사이트, 영어로 되어 있지만, 여기만한 곳이 없다는 생각이 든다.
    • 커니의 안드로이드 (http://androidhuman.tistory.com/)[http://androidhuman.tistory.com/]
    • 안드로이드펍 (http://www.androidpub.com/)[http://www.androidpub.com/]
  2. 안드로이드를 배워야 하는 이유 : 안드로이드에서는 왜 static class를 만들어 진행해야 하는지에 대해서도 이해해야하고… 안드로이드에서는 화면(Activity)와 화면설계서(layout.xml)을 왜 분리해서 사용하는지에 대한 이해도 해야하고, 이렇게 분리된 자원(리소스)에 대해서 어떻게 접근하고 화면에서 조작하는 것에 따라 변경시킬지에 대한 이해도 필요하다. 모르는 것을 하나하나 배워가면서 시행착오를 겪게된다는 것을 받아들이지 않는다면 배움은 더디기만 할 것이다. 


아래는 나중에 자바와 개발에 대한 경험이 쌓이고 난 다음에 시작해도 늦지 않을 것임 



4. 서버사이드 개발 : 안드로이드에서 통신으로 접근하여 동작하는 API / 데이터 처리


  1. 참고사이트나 서적 :
    • 굉장히 많아서 ’딱! 이거다!’라고 설명하기 어렵다. 그때그때 필요나 문제에 따라서 찾아봐야한다.
    • 서버사이드는 자바로 개발할 수도 있고 다른 언어로 개발된 환경을 사용할 수도 있을 것이다.

5. 통신(HttpClient, API call)

6. 텍스트 데이터 파싱(마샬링Mashaling/언마샬링Unmashaling)

기본 입문서들은 있지만, 거기서 한단계 나아간 초중급 유저를 위한 서적은 없다는 생각을 한다.

지금껏 입문서를 읽었지만, 현업과는 조금 다른 이야기들이 많다. 안드로이드가 어떻게 동작하고 이렇게 저렇게 조작하기 위해서 요렇게 그렇게 하면 된다고 설명하는 책은 많이 봐왔다. 그런데 실제로 앱개발에 닥쳤을 때 활용할 만한 것들이 그리 많지가 않다.

안드로이드 개발을 본격적으로 시작한 개발자에게 필요한 안내가 적다. 보통 앱개발을 할 때는 서버쪽 API 개발이 병행되어 진행해야 한다. 조금 조직이 크고 업무분담이 잘 되어 있다면, 앱개발자는 서버 개발자에게 필요한 API에 대한 개발을 요청하고, 그것에 대한 처리만 앱에 구현하면 되겠지만 대부분 그렇게할 수 없는 회사에 다니는 이들이 대부분일 것이다. 그런 사람들은 서버와 앱개발 양쪽을 자신의 힘으로 처리해야하는 문제에 놓이게 된다. 양쪽을 설명하는 글은 찾아보기 힘들다. 인터넷 등으로 검색할 수 없는 숨은 고수들이 수면 밑에서 자신들의 기량을 갈고 닦고 있을지도 모르지만 대부분의 개발자들은 서버와 앱개발의 막막함 속에서 넋을 놓고 넉다운 되어 있을 가능성이 높다.

  그런 사람들에게 조금이라도 도움이 되는 글을 써볼 수 있을까?

  글이 담으려고 하는 주제는 '앱을 개발하면서 필요한 서버 API 들을 추가하면서 배워가는 안드로이드 개발'이라고 할까?

  참 거창하고 그럴싸한 주제인데... 쓰기는 참 거시기한 주제이기도 하다.

  톰캣, 스프링, 웹애플리케이션, xml, json, 안드로이드, 웹뷰, httpclient 등이 뒤섞인 내용이 될 것이라... 이것들을 충분히 이해하고 내것으로 만들어 낼 수 있을까라는 걱정도 든다. 되든안되든 시도를 해보는 것은 나쁘지 않겠다는 생각이 든다. ^^;


  우선은 내가 올해 하기로 했던, '자바 개발자를 위한 우분투 개발환경 구축 및 CI 구축 활용'에 대한 글부터 써내려가야 겠지만...

  욕심만 있지 실천을 제대로 안하고 있는 게으른 30대를 보내고 있구나. 하아.    


+ Recent posts