본문 바로가기

반응형

Android

Installation error: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED Installation error: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED Please check logcat output for more details. Launch canceled! 정상적으로 apk 가 생성되고, 테스트 기기에 apk를 설치하는 도중에 이런 에러가 발생하였습니다. 구글링 결과 AndroidManifest.xml 파일내의 package 명칭을 영문소문자만 사용해야 한다는 규칙을 어긴 경우 자주 볼 수 있다고 하네요. 하지만 나의 프로젝트는 정상적으로 영문자와 '.' 기호만 사용하여 패키지를 적어 놓아서 위와 같은 경우가 아니었습니다. 저의 경우는 몇몇 서비스와 리시버가 별도의 프로세스로 동작하도록 분리하여 놓았습니다. 프로세스 네이밍에 문제가 있었습니다.. 더보기
연결 종료 전 기기쪽에서 연결이 먼저 끊어진 경우 이번에 블루투스 프린터를 제어하는 일종의 안드로이드 라이브러리(?)를 하나 만드는 중인데요. 안드로이드 타겟버전은 API 14 (아이스크림센드위치 4.0)으로 작업중이고, 블루투스 프린터는 1-N의 접속밖에 처리하지 못하는 블루투스 모듈이 들어간 것으로 확인하였습니다. 이번에 가장 골머리 앓은 내용은 안드로이드 기기쪽에서 연결 이후, 연결 해제를 둘다 처리하면 간편한데, 간혹 기기의 전원문제나 기타 등등의 이유로 기기가 멈추거나 전원이 꺼진 것을 바로 체크하지 못하는 것을 확인하였습니다. 안드로이드에서 제공하는 블루투스 어댑터, 디바이스, 소켓을 이용해봐도 전원이 꺼진 기기가 아직도 연결되어 있고, OutputStream을 통한 데이터 전송도 아무 오류없이 전달되는 것처럼 보입니다만, 눈앞에 전원이 꺼진.. 더보기
새로 변경된 gcm, google play service lib 를 이용하여 gcm 수신방법 구현하기 오랜만에 안드로이드 관련 글을 쓰네요.. 우분투에 푹 빠져 근 2주일을 살았습니다. 이제 기존 윈도우 만큼은 아니더라도 거의 불편함을 느끼지 않고 사용하고 있습니다. 자. 오늘은 기존 gcm 라이브러리가 deprecated 되었고 gcm 라이브러리는 google play service 라이브러리에 포함되어 배포되고 있습니다. 이번 글은 developer.android.com 의 Set Up Google Play Serivces SDK 라는 부분을 참고하여 작성하고 있습니다. 그리고 중요한 것중 하나가 gcm 과 관련된 WakefulBroadcastReceiver 가 v4 라이브러리에 포함되어 있으므로 꼭 android-support-v4.jar 라이브러리는 추가 해주어야 한다는 것 입니다. 포함되었다고 .. 더보기
우분투기반에서 eclipse device 에 ???? 로 기기가 정상적으로 잡히지 않는 경우 해결방법 연결되는 기기가 어떤 기기인지 인식을 정확하게 하지 못해서 일어나는 증상으로 udev 가 접속될 때 vendorId, productId등을 명시해서 접속한 장비가 어떤 회사의 제품인지 알려주면 됩니다. 안드로이드 개발에 있어서 필수입니다. 안드로이드 개발환경을 구성하는 글은 ioriy2k 라는 블로그를 운영하시는 분의 글로 대신합니다.http://ioriy2k.pe.kr/archives/6147 위 글을 보시면 trouble shooting 글중에 하나가 제목과 관련된 해결방안을 제시한 것인데 제품항목이 다양하지 않아서 검색해보았습니다. git 허브에 잘 정리해놓은 분이 이미 계서서 git 사이트도 링크를 걸어둡니다. https://github.com/M0Rf30/android-udev-rules/blo.. 더보기
Fragment 에서 startActivityForResult() 사용하여 onActivityResult() 로 이벤트 전달이 안되는 경우 Fragment 에서 startActivityForResult() 메소드를 사용하여 다른 엑티비티를 실행 후 결과값을 전달받는데 startActivityForResult()를 실행했던 Fragment가 아니라 부모 Activity 나 다른 Fragment에서 해당 이벤트를 처리하고 싶은 경우가 있다. 이런 경우라던지 단순히 다른 Fragment 나 부모 Activity에서 onActivityResult() 를 override 했는데 이벤트를 타지 않는다고 투덜댈 수 있다. 하지만 Fragment 에 스펙을 찬찬히 살펴보면 Fragment 자체도 Fragment.startActivityForResult() 라는 메소드를 가지고 있다. Activitiy.startActivityForResult()를 가지고 .. 더보기
커스텀 다이얼로그에 원하지 않는 검은 색 배경색이 보일때 처리 방법 간단해도 무지하게 간단합니다. getWindow().setBackgroundDrawable(new PaintDrawable(Color.TRANSPARENT)); 다이얼로그의 윈도우 객체를 얻어서 백그라운드를 그려주면 됩니다. 뭐로? 투명으로.. 끝. 더보기
Log 를 테스트시에는 보이고 배포시에는 안보이도록 자동 처리 개발을 하다보면 android.util 패키지의 Log 클래스를 사용하여 로그를 분석하는 경우가 많습니다. 저도 대부분의 메소드와 데이터를 보고 싶은 중간중간에 참 많이 사용합니다. 그런데 골치거리중에 하나가 테스트시에는 보이는 것이 맞는데 배포시에 사용자에게는 불필요한 메시지이기도하고, 중요한 데이터를 숨겨야 하는 등의 이유로 Log를 주석처리하거나, 제거해야 하죠.. 안드로이드 개발툴이 발전하면서 이러한 부분에도 신경쓴 부분이 있는데요. 안드로이드 프로그램 프로젝트에 보시면 다음과 같은 클래스가 자동으로 생성된 것을 본적이 있을 겁니다. 프로젝트구조에 자동생성되는 gen 폴더가 있습니다. 여기에 프로젝트 생성시 작성했던 기본패키지와 동일한 패키지내에 BuildConfig.java 와 R.java 가 .. 더보기
Parcelable 를 구현할 때 주의점 (ArrayList) 상태저장, 복구가 필요한 데이터에 대해서 implements Parcelable 을 구현하게 됩니다. 구현해야 하는 메소드와 CREATOR 에서 사용자 지정 타입의 ArrayList를 저장하는 방법에 대해서 기술합니다. ArrayList에 사용할 데이터 클래스는 아래와 같이 기술합니다. package com.example.testtypedarraylistparcelable; import android.os.Parcel; import android.os.Parcelable; public class InnerData implements Parcelable { public int nSeq; public String strMessage; public InnerData(int nSeq, String strMess.. 더보기

반응형