Software

INSTALL_FAILED_SHARED_USER_INCOMPATIBLE

안드로이드에서 어플리케이션을 설치할 때, INSTALL_FAILED_SHARED_USER_INCOMPATIBLE라는 에러가 나면서 실패할 때가 있다. 원인은 간단한데, AndroidManifest.xml안의 sharedUserId 때문이다. Android 사이트의 설명에 따르면, sharedUserId란 리눅스의 user ID와 유사한 것이라 한다. 개발자가 값을 따로 설정하지 않는다면 유니크한  값을 안드로이드에서 설정해준다. 이 값을 아래와 같이 따로 설정했다면 같은 user id를 가진 앱 들은 사인도 같은 keystore로 해야 데이터를 공유 (원한다면 같은 프로세스 내 실행도)할 […]

INSTALL_FAILED_SHARED_USER_INCOMPATIBLE 더 읽기"

안드로이드의 유용한 shell 커맨드

앱 메모리 정보 확인하기 안드로이드는 리눅스 기반 O/S로 쉘을 사용할 수 있다. 가장 기본은 adb shell 인데, 위의 명령어만 치면 shell로 진입한다. 그 후 안드로이드에서 지원하는 명령창 툴들을 사용할 수 있다. 하지만, shell로 진입하는게 부담스럽다면 adb shell dumpsys 와 같이 shell 다음에 바로 툴을 입력할 수도 있다. 위 명령어는 너무 많은 데이터를 한번 쳐보면 알겠지만,

안드로이드의 유용한 shell 커맨드 더 읽기"

JSON, XML에 적합한 날짜표기

요즘은 데이터 속도가 좋아져서, 사람이 읽을 수 있는 방식으로 표기를 많이 한다. HTTP 프로토콜에 XML이나 JSON같은 방식을 자주 쓰는데, 이때 날짜를 어떤 식으로 표기해야할 지 고민하는 사람이 생각보다 많다. 이미 XML이나 JSON 방식을 사용하기로 결정했을 때, 날짜도 조금 길더라도 사람이 읽을 수 있는 방식으로 표기하는 것이 맞다고 생각한다. 그리고, 표준을 따른다면 누구나 라이브러리만 이용하면 여러

JSON, XML에 적합한 날짜표기 더 읽기"

인텔리제이에서 키스토어(Keystore) 위치 지정하기

일반적인 경우, 키스토어(Keystore)는 Android Studio나 Intelli J같은 IDE에서 관리를 해준다. 취미로 개발하는 경우에는 기본으로 내장된 키스토어를 사용하면 되고, 신규로 키스토어를 만드는 경우에도 마법사 기능을 통해 잘 지원한다. 그런데, 여러개의 앱을 같은 키스토어를 이용해 사인(signing)한 후에 자원(resource)를 공유한다던가, 기존에 만들어진 키스토어를 새로 셋팅된 IDE에 넣고 싶다면 어떻게해야할까? 키스토어를 지정해주어야한다. 인텔리제이 12를 기준으로 설명하면, 실제로 앱을 마켓에

인텔리제이에서 키스토어(Keystore) 위치 지정하기 더 읽기"

안드로이드의 XML 파서 : DOM, SAX 그리고 Pull 파서

대표적인 XML 파서의 종류는 SAX 파서와 DOM 파서다. 안드로이드에는 이 두가지 외에 하나가 더 내장되어 있는데, Pull 파서다. 그 위치는 다음과 같다. DOM 파서 : org.w3c.dom.* SAX 파서 : org.xml.sax.* Pull 파서 : org.xmlpull.v1.* 보통 DOM 파서와 SAX 파서의 차이는 많이 알려져 있다. 이 두개부터 간단히 소개하면 DOM 파서는 문서의 처음부터 끝까지 모두 읽은 후에 이를

안드로이드의 XML 파서 : DOM, SAX 그리고 Pull 파서 더 읽기"