- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 재능이의 돈버는 일기
- StresslessLife
- K_JIN2SM
- 소소한 일상
- My Life Style & Memory a Box
- Blog's generation
- 공감 스토리
- 취객의 프로그래밍 연구실
- Love Me
- Dream Archive
- 세상에 발자취를 남기다 by kongmingu
- hanglesoul
- 카마의 IT 초행길
- 느리게.
- 미친듯이 즐겨보자..
- Joo studio
- Gonna be insane
- 악 다 날아갔어!! 갇대밋! 왓더...
- xopowo05
- 맑은공기희망운동
- 엔지니어 독립운동
- 혁준 블로그
- Simple in Complex with Simple
- 무의식이 의식을 지배한다
드럼치는 프로그래머
[안드로이드] AIDL에 Parcelable 데이터 사용하기 본문
안드로이드에서 Remote Service를 사용하여 서비스를 제공 할 때, 자바 기본 타입 및 안드로이드에서 허락된 타입만 사용 할 수 있습니다. 하지만, 해당 서비스에 맞는 데이터 타입이 필요한 경우도 있습니다. 이 경우는 안드로이드 프레임워크 소스에서 수정해야 하는 일이라 일반 어플 개발자는 해당사항이 없는 경우 입니다.
제가 해볼 수 있는 것은 Parcelable 인터페이스를 상속 받아 데이터 타입 클래스를 생성해서 프로세스간에 통신이 될 수 있는 타입을 정의해 보는 것이였습니다. 하지만, 빌드를 해보면 이것만으로는 aidl에서 해당 타입을 사용 할 수 없다는 메세지를 봐야만 했죠.
방법은 의외로 간단했습니다. 안드로이드 소스를 찾아보면 이와 비슷한 용도로 사용되는 클래스들이 있습니다. 그 클래스들이 어떻게 어떻게 선언했는지 찾아보면, Parcelable을 상속받은 데이터 클래스도 aidl를 생성해야만 했습니다. 그리고 Android.mk에 aidl 파일의 빌드에 추가를 해서 먼저 컴파일 되도록 해야 합니다.
현상 및 해결 방법은 아래 간단히 정리를 해봅니다.
컴파일 오류 메세지
frameworks/base/core/java/com/dhna/service/IMyService:4: couldn't find import for class com.dhna.data.ParcelableData
...
make: *** 끝나지 않은 작업을 기다리고 있습니다....
빌드 오류 해결 방법
1. Parcelable 인터페이스를 상속 받은 클래스를 생성한다.
2. 이 클래스에 대한 aidl 파일을 생성한다. (참고 2.1)
3. Android.mk 파일에 이 aidl 파일을 추가해서 컴파일 되도록 한다.
4. 빌드 성공!
2. 1 Parcelable 인터페이스를 상속 받은 데이터 클래스의 aidl 파일 작성하기
추가하려는 임의의 데이터 클래스가 ParcelableData 인 경우,
package com.dhna.data; parcelable ParcelableData;
ps. 이와 유사한 문제로 찾아보니 sdk/<api version>/framework.aidl 파일에 parcelable을 상속 받은 클래스를 추가 하는 방법이 있다고 합니다. 하지만 저는 여전히 오류가 발생했지요.. 여기에 추가한 것은 SDK 배포시 관련이 있지 않나 생각이 들지만, 아직 확인 할 방법은 없군요.
'★─Programing > ☆─Android' 카테고리의 다른 글
[안드로이드] 죽지 않는 서비스 만들기 (0) | 2013.04.01 |
---|---|
[안드로이드] Home Key(홈키) 제어 (0) | 2013.03.29 |
[안드로이드] Service 에서 Activity 를 실행하는 방법 (0) | 2013.03.08 |
[안드로이드] [번역] 안드로이드 멋진 아이디어 - 안드로이드 오픈 악세서리 (0) | 2013.03.04 |
[안드로이드] Intent 활용 예시 (0) | 2012.06.28 |