목록안드로이드 (15)
Dharma
안드로이드 개발하다 보면 별 문제는 없어보일지 모르지만 안드로이드가 네트워크 인터페이스를 여러개 가지기 때문에 발생하는 문제가 있습니다. 갤럭시 s3 의 경우에는 LTE, 3GS, WI-FI 등 세개의 인터페이스가 있습니다. 그런데 이런 인터페이스들이 사용을 안하면 비활성화 되어 있으면 사용하기 편할텐데 사용 안하더라도 활성화가 되어 있는 데다가 잘못된 (구동하지 않는) IP 주소를 가지고 있어서 문제가 됩니다. 무슨 문제가 있겠어? 라고 하지만 순수 자바 (Pure Java) 로 네트워크 레이어를 구현할 때, 만들어진 라이브러리를 안드로이드로 포팅시 발생하는 문제입니다. 이를 해결하기 위한 방법입니다. 인터넷에 연결이 되어 있고 (LTE,3GS,WI-FI 상관하지 않고) 접속되어 있는 상태에서의 가지고..
안드로이드 어플리케이션 개발 시 YoutubeStandAlonePlayer 를 쓸 일이 있었서 사용했는데 예상치 못한 버그가 발생하더군요. 그 현상과 해결방법을 정리합니다. 1 현상 안드로이드 앱 개살시 메인 어플리케이션을 Portrait 전용으로 개발중이였습니다. Intent intent = YouTubeStandalonePlayer.createVideoIntent(context, DEVELOP_KEY, youtubeCode); context.startActivity(intent); 와 같은 식으로 유튜브 플레이어를 띄우니 띄운 액티비티(Activity) 와 그 스택에 쌓여있던 액티비티 들의 onResume 이 호출되는 현상이 있습니다. 그래서 플레이중에 멋대로 호출된 Activity 로 튕깁니다. 게..
ADT (Android Developer Tool)를 사용하다 보면 중대한 한가지 문제(한가지 뿐이겠냐만은..)가 있습니다. 여러명이 작업을 할 때 한명이 프로젝트를 생성하고 git 레파지토리에 프로젝트를 올린 것을 다른 사람들이 받아서 프로젝트를 세팅할려고 할 때 문제가 발생합니다. ~/work/android-projects/Original 에 소스를 받았다고 하면 ADT 나 Eclipse 는 바로 저 위치에서 프로젝트를 만들 수가 없습니다. 바로 workspace 에 복사를 하던가 import 를 해야 하기 때문이지요. 강제로 같은 곳을 지정해주면 에러가 발생합니다. 이 부분은 정말 많은 구글링을 해봐도 거의 답이 없다는 것이 정설입니다. 많은 사람들이 Eclipse 를 욕합니다. 개발자들이 점점 g..
Multiple dex files define Landroid/support/v4 관련된 어쩌구 저쩌구 에러가 발생했을 때의 대처법입니다. 100% 제 환경에서 발생하는 일이였습니다. 먼저 환경을 소개하자면 회사에서 개발하는 안드로이드 (Android) 프로젝트인데 전부 환경이 달라서 문제가 발생했습니다. PM 인 저는 Command Line 에서 프로젝트를 개발합니다. 사용하고 있는 툴(Tool)은 Emacs 에 Ant 를 이용해서 빌드합니다. 회사에서 작업하는 개발자는 Android Studio 를 이용해서 개발합니다. 회사 외부에서 개발하는 개발자는 ADT (Android Development Tool) 을 이용합니다. 저와 외부에서 개발하는 개발자간의 호환은 별 문제가 없습니다. Eclipse 와..
안드로이드 개발을 위해서 구글이 내놓은 새로운 개발툴 입니다. 최근에 이클립스가 maven 지원이 더딘것 때문에 사용자를 늘려가던 (유료인데도 불구하고!!) IntelliJ 기반입니다. 물론 구글이 내놓아서 공짜랍니다. 크기는 무려 700메가 정도군요, 기가단위가 아니라서 가벼운게냐.. 조금 더 만져보니 이게 프로젝트가 비쥬얼 스튜디오 마냥 한번에 하나의 프로젝트만 열게 되어 있군요. 그래서 여러개를 한꺼번에 오픈하는 방식인 ADT 보다 가볍다는 소리를 듣는군요. 자세한 설명과 다운로드는 바로 http://developer.android.com/sdk/installing/studio.html 에서 다운받을 수가 있습니다. 지금까지 ADT 를 잘 사용했는데 왜 이걸 또 배워야 하느냐고 물으실 수가 있습니다..
NDK (Native Development Kit Environment) 입니다. 구글은 Java 환경의 SDK 만 가지고 모든 것이 가능할 것이라고 주장했었으나, 몇 버젼 지나지 않아 자신들의 주장을 철회하고 Native C/C++ 프로그램이 가능한 NDK 를 공개했습니다. 왜 NDK 를 사용하는가에 관해서는 몇가지 이유가 있겠지만 - 빠른 연산을 위해서 (아무래도 C/C++ 이 자바 보다 속도가 빠른것은 주지의 사실입니다) - 수많은 Open Source 들이 아직도 C/C++ 로 되어 있기 때문에 일단 이 두개를 크게 들 수가 있겠습니다. 그렇다고 해서 윈도우 다루는 부분까지 전부 NDK 로 하는 것을 추천하지는 않습니다. 속도가 필요한 부분이나 위에서 언급된 오픈 소스로 만들어진 라이브러리를 응용..
Android NDK (Native Development Kit) 을 이용해서 개발하고 있습니다. NativeActivity 를 이용하고 있습니다. 그런데 작지만 해결하기 어려운 버그가 있습니다. NativeActivity 는 Java 의 Activity 의 일종인데 JNI 를 이용한 Native C/C++ Entry Point 를 쓰레드 (Thread)를 이용해서 호출하는 부분을 잘 감싸서 NDK 를 이용해서 개발하고자 하는 사람들에게 편의를 제공할려는 목적으로 만들어 진것으로 보입니다. 특히나 게임 , 전화, 멀티미디어 용 어플리케이션을 개발하는 사람들은 필히 관심을 가져볼 만합니다. 발생한 이슈는 제가 추천한 책에서 언급된 소스에 다른 모듈을 붙일려고 하는 순간에 발생했습니다. 참고로 만들어본 An..
저는 Command Line 에서 GIT 을 쓰고 있습니다. '뭐든지 가장 기본이 되는 것부터 마스터를 하자!' 라고 평소 떠들고 다니기도 하지만, CLI (Command Line Interface) 가 가장 마음이 편안해 (?) 지는 환경이기 때문이도 합니다. 그러나 Eclipse 에서 개발이 최적화 되어 있는 분들은 어떤 방식이 되도 무조건 Eclipse 에서 돌아가길 원합니다. (진정한 IDE 라고 할 수 있죠) 그런분들에게 추천하고 싶은 포스트가 있습니다. http://www.vogella.com/articles/EGit/ 일단 포스트 주소입니다. 그리고 이 포스트와는 별도로 저 분의 사이트는 안드로이드 개발하는 분들에게 참조가 될 만한 내용을 정말 많이 가지고 있어서 즐겨찾기 해두시고 가끔가다 ..
저는 컴퓨터 관련 서적 자체를 잘 추천 안하는 편입니다. 요즘 같이 급박하게 기술이 바뀌는 세상에서는 사실상 공식 페이지가 최고의 레퍼런스가 되는 것이 현실이다 보니, 주변에서 기술 관련 서적을 산다고 하면 적극적으로 말리는 편입니다. 그러나 이 책은 정말 감히 추천할 만 합니다. 사실 저는 원서(Android NDK , Beginner's Guide)로 봤는데, 저자의 소스코드만 보더라도 상당한 내공이 느껴집니다. C++ 이나 Object Oriented Programming 에 상당한 조예가 느껴집니다. 팀원이 한글판으로 보고 있는데도 상당히 괜찮다고 하니 번역도 괜찮게 되어 있는 편인가 봅니다. 안드로이드에서 가장 어려운 축에 드는 NDK(Native Development Kit) 부분을 '따라하기..
저는 안드로이드를 Emacs 로 개발하고 있는 중인데요. 외부 jar 가 추가 될 때 자동으로 classpath 에 추가 하고 자동으로 import 기능을 활성화 시키는 방안을 찾는 중인데, 없더군요.. 물론 Eclipse 를 사용하면서 Google AdMob SDK 같은 외부 jar를 사용하기는 쉽습니다. 외부 라이브러리로 추가해 주면 끝이기 때문입니다. 다만 CLI (Command Line Interface) 에서 Ant 를 이용해서 빌드를 할 때는 마구 마구 귀찮아집니다. 하지만 쉽게 하는 방법이 생겼더군요. $(ANDROID_PROJECT_ROOT) 밑에 /libs 라는 디렉토리를 만들고 그 안에다가 GoogleAdMobAdsSdk-6.0.1.jar android-support-v4.jar 두개의..