본문 바로가기

IT 기술/Android4

Android Log 분석 안드로이드에서 로그를 사용하고 싶은 경우에 자바 레이어에서는 android.util.Log 클래스를 사용한다. android.util.Log 클래스는 frameworks/base/core/java/android/util/Log.java 에 구현되어 있다. Log 클래스안에 구현된 메소드는 v(), d(), i(), w(), e() 등이 있다. 각각은 VERVOSE, DEBUG, INFO, WARN, ERROR 를 나타낸다. 이는 vervosity(자세함? 장황함)의 순서이다. Verbose 는 개발하는 동안에만 컴파일되고, Debug 는 컴파일되지만, runtime 시에 strip 된다. Error / warning / info 는 항상 동작한다. 보통은 본인이 작성하는 클래스에 TAG 라는 상수를 선언.. 2012. 1. 19.
Android Framework 에 Java 라이브러리 및 JNI 추가하기 안드로이드의 Framework 에 내가 짠 코드를 추가하고 싶은 경우에 어떻게 해야 할까? 다양한 방법이 있겠지만(있을까??), 검색해본 결과, 기존 frameworks 의 다른 라이브러리들과 동일하게 추가해주는 것이 가장 간단한 방법인 것으로 생각된다. 작성한 코드는 java 라이브러리 및 java 라이브러리에서 호출하는 JNI 로 구성되어있다고 가정한다. 1. frameworks 에 디렉토리 및 파일 추가 내가 만든 코드를 frameworks 에 추가하여 frameworks.jar 파일에 포함시키고 싶다면, 우선 다음과 같은 위치에 디렉토리를 생성한다. /frameworks/base/ my_directory 아래에 java// 와 같은 방식으로 넣는다. 예를 들어 내가 만든 자바 package nam.. 2012. 1. 3.
JNI 를 사용한 간단한 Android Project 간단한 예제를 통해서 JNI 를 사용하는 방법에 대해서 알아보자. 알아보기 전에 개발환경에 필요한 내용이 설치되어 있어야 한다. 1) android sdk, 2) android ndk, 3) 윈도환경이라면 cygwin, 4) jdk, 5) eclipse 등... 이와 같은 안드로이드 개발에 필요한 개발환경 세팅은 구축되어 있다고 가정한다. 앞선 내용에 대한 설치는 go google~ JNI 를 사용하는 프로젝트를 진행하는데 내 경우 자바도 잘 모르고 안드로이드도 잘 모르며, 심지어 이클립스 사용법도 익숙치 않아서 구글과 주위분들의 도움을 받아 진행했다. 1. eclipse 에서 JNITest 라는 Android Project 생성한다. - package name 은 임의로 준다. 여기서는 com.andr.. 2011. 12. 22.
[Android] static library를 사용하여 shared library 만들기 안드로이드의 bionic c library 의 기본 함수들을 hooking 하여 원하는 코드를 추가하려고 한다. 추가되는 코드에 또다시 hooking 한 함수가 호출되는 경우, 즉 예를 들어 printf 를 hooking 하는데, hooking code 에 printf 가 추가되어 있는 경우, 코드가 이상 동작할 수가 있다. 해결책으로 기존 bionic c library 를 static 으로 만들고, hooking 하여 새로운 library 는 shared library 로 만드는 방법으로 해결하려고 한다. 즉 안드로이드용으로 컴파일된 static library 가 있고, 이를 static linking 하여 shared library 를 만드려고 하는데, 이때, Android.mk 파일은 아래와 같이 .. 2011. 8. 10.