안드로이드 앱 프로젝트가 AspectJ 클래스를 포함하고 있는 안드로이드 라이브러리 프로젝트를 참조하는 경우에, 라이브러리 프로젝트의 aspect는 예상과는 달리 앱 프로젝트에 적용되지 않습니다.
그러니까 앱 프로젝트의 소스 컴파일시에 라이브러리 프로젝트의 aspect들과 함께 위빙되어 컴파일이 돼야하는데 그렇지 않다는 겁니다.
아래의 방법으로 해결할 수 있습니다.
1. Aspect Path 설정
앱 프로젝트 속성창 > AspectJ Build > Aspect Path 탭에서 "Add Project"를 통해 라이브러리 프로젝트를 추가해줍니다.
(아래 그림에서는 mobile-framework-android 프로젝트가 라이브러리 프로젝트입니다)
이렇게 하면 AspectJ 컴파일러가 앱 프로젝트 빌드시에 라이브러리 프로젝트에 포함된 aspect를 포함하여 함께 위빙시킵니다.
(라이브러리 프로젝트의 bin/xxx.jar 파일을 추가해도 되며, jar파일이 'Reference Libraries' 변수로 자동 추가됨)
2. Ant 빌드파일 설정
custom_rules.xml의 iajc 타스크에 아래 설정을 추가합니다.
<aspectPath>
<!-- 라이브러리 프로젝트에 속한 애스펙트도 적용 -->
<path refid="project.libraries.jars" />
</aspectPath>
'Android' 카테고리의 다른 글
[안드로이드] RoboGuice 2.0 사용 환경에서 proguard 설정 (0) | 2012.04.16 |
---|---|
[안드로이드] RoboGuice와AndroidAnnotations 비교 메모 (0) | 2012.04.16 |
[안드로이드] ADT r17 사용시 프로젝트 구성 메모 (0) | 2012.04.16 |
[안드로이드] AspectJ 사용시 제약사항 (2) | 2012.04.10 |
[안드로이드] AspectJ 환경 설정 (6) | 2012.04.09 |