안드로이드 앱 프로젝트가 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>



Posted by 에코지오
,