안드로이드 소스를 빌드해서 nexus 7에 올리게 되면 문제가 생긴다. 설정->태블릿 정보를 보면 모델이름이 Full Android on Tilapia가 된다. 즉 설치된 App들이 단말이 Nexus 7인지 모르고 Full Android on Tilapia로 안다는 것이다. ㅠㅜ 실제로 올레마켓은 모델명, 브랜드가 틀리면 지원안하는 모델로 알고 실행이 안된다. 이것을 Nexus 7으로 바꾸려면 두가지 방법이 있다. build.prop 수정 설정->태블릿 정보도 build.prop에서 값을 읽어서 뿌려주는 것이다. 원래 read only영역이지만 루팅을 하면 수정이 가능하다. 아래와 같이 수정을 하고 리부팅을 한다. ro.product.model=Nexus 7 ro.product.brand=google d..
android.net.Uri & java.net.URI android.net.Uri와 java.net.URI의 차이가 뭐냐? 스펠링은 똑같고 대/소문자만 틀리다.. ㅠㅜ 두개의 차이는 두개의 android reference를 읽어보면 알수 있다. Android.net.Uri Uri는 변할수 없는 URI reference이다. URI reference는 URI와 fragment(#뒤에 정의된 URI component)는 포함하고 있다. URI reference의 build와 parse는 RFC 2396에 정의되어 있다.성능적인 관점에서, 이클래스는 validation을 거의 안한다. 그래서 invalid input에 대한 행동이 정의 안되어 있다. 이클래스는 invalid input에 대해 용서를 잘해준다..
안녕하세요. 이번에 "키보드스위치" 앱(마켓에서 검색하심 나옵니다.)을 만들면서 얻게된 팁(?)입니다. 인터넷을 많이 검색해봤는데 이 방법이 잘 없었습니다. 안드로이드, 리눅스, 자바 다 처음이라.... 이거 알아내는게 좀 힘들었습니다.. 고수분들에게는 의미없을지 몰라도 저같은 초보에게는 정말 필요한 것 같아서 이렇게 올립니다. ** 루팅된 폰에서만 되는 방법입니다. ** 제가 "키보드스위치" 앱을 만들면서 InputMethodManager의 SetInputMethod를 쓸려고 했지만 레퍼런스 문서에 나와있듯이 현재 작동하고 있는 키보드앱의 token을 알아야만 동작한다는 것을 알았습니다. 좌절했죠.. 그런데 안드로이드 소스의 InputMethodManager 부분을 보니까 WRITE_SECURE_SET..
Signing ProcessEditDebug Mode : Application 개발 및 테스트시 사용 Android SDK build tool에서 자체적으로 Keytool utility(in JDK)를 이용하여 debug key를 생성.Application을 compile할 때마다 Android의 build tool이 debug key와 Jarsigner utility(in JDK)를 이용하여 자체적으로 signing을 함.build tool이 이미 debug key의 alias와 password를 알고 있으므로, 개발자는 이를 알 필요가 없음.보통 Eclipse의 ADT Plug-in 또는 Ant의 debug optioned build script를 이용하여 자동적으로 수행됨.Release Mode :..
안드로이드 애플리케이션 패키지(apk)를 설치하기 위해서는 반드시 서명(signing)을 해야합니다. 서명되지 않은 애플리케이션을 설치하려고 하면 아래처럼 [INSTALL_PARSE_FAILED_NO_CERTIFICATES] 에러가 발생하게 됩니다.$>adb install ActivityLifecycleProject.apk178 KB/s (8585 bytes in 0.046s) pkg: /data/local/tmp/ActivityLifecycleProject.apkFailure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]애플리케이션 서명 여부 확인하기그럼 어떤 애플리케이션이 서명되었는지 여부는 어떻게 알 수 있을까요? 우선은 JDK에 포함된 jarsigner 명령을 ..
Branch Switch Android Gingerbread를 받아놨는데 Jellybean으로 바꾸고 싶다면...? 이럴때는 branch를 바꿔서 바뀐 소스만 받으면 된다. jlee3$ cd android_ginger jlee3$ cd .repo jlee3$ repo forall -c git checkout -b android-4.2.2_r1 jlee3$ cd ../ jlee3$ repo sync 위에 처럼 하면 .repo의 branch설정을 바꿔서 repo sync시 4.2.2를 받게 된다. Branch Switch(2) 위의 방법은 기존의 소스 트리를 재활용해서 branch switching을 하는거다. 혹시나 안될수도 있다.4.2.2로 바꿨는데 덜 바뀌었다면... 아니면 gingerbread버전의 ..
http://source.android.com/source/building-devices.html 위의 링크의 한국어 설명이다. 1. Driver Binary를 설치 아래 주소에서 Nexus Binary를 받아서 설치한다. 설치 방법은 Android Source에서 Driver binary를 풀어서 설치하면 된다. 설치하면 Android Source에 vendor밑에 driver가 설치가 된다. https://developers.google.com/android/nexus/drivers 2. Android Source Build Driver Binary를 Android Source에 설치했으면 이제 빌드를 하면 된다. 빌드 방법은 다음과 같다. jlee3$ . ./build/envsetup.sh jlee..
전 포스트에서 설명했던 여러 스레드 구현방법들은 비록 아무 문제가 없지만 구현방법이 복잡해서 코드를 읽기 힘들게 만드는 경향이 있었다. Background작업에 관한 모든 사항(스레드 객체 생성, 사용, UI스레드와 통신 등)이 Activity 코드에 포함 되고 특히 background 스레드가 UI위젯과 빈번한 통신을 할수록 Activity 코드의 복잡함은 점점 배가 된다. 안드로이드에서는 이런 문제를 해결하기 위해 API level 3 (1.5 version) 부터 AsyncTask라는 클래스를 제공하고 있다. AsyncTask클래스는 background작업을 위한 모든 일(스레드생성, 작업실행, UI와 통신 등)을 추상화 함으로 각각의 background작업을 객체 단위로 구현/관리 할 수 있게 ..