ant 스크립트는 android-sdk\tools\ant 위치에 있다.(build.xml)
참고로 sdk 버젼 바다 ant 빌드스크립트는 다르다. 어느정도 버젼마다 호환은 된다.
ant build 에서 target -compile 실행 후 실행 되도록 subdex를 만들 target 하나를 추가해 주자.
proguard 를 사용한다면 proguard 실행 후 실행되도록 추가.
target -compile 실행 후 bin 위치에 컴파일된 .class 된 파일들이 모여 있을것이다.
이 .class 를 subdex 로 만들 부분과 maindex 부분을 분리를 한다.
subdex로 묶을 .class 파일을 다른 위치에 복사 그리고 이 .class 를 jar 로 묶는다.
이제 코드 설명.
<!-- 추가된 target 에 subdex 로 만든 부분과 maindex 부분을 분리 하고 아래 코드를 실행 시켜 주자. -->
<dex-helper-subdex input-dir="${복사된 subdex에 묶일 .class의 위치}/subdex" output-dex-file="${subdex.temp.dir}/${jar파일 이름}">
</dex-helper-subdex>
<!-- SubDex 생성을 위한 macro 입력 위치로 부터 class를 읽어 output 위치에 dex로 출력
아래 코드를 아무데나 넣어 두어도 된다. 위에 추가한 target 에 실행 되어 여기서 dex를 만들것이다. -->
<macrodef name="dex-helper-subdex">
<attribute name="input-dir" />
<attribute name="output-dex-file" />
<element name="external-libs" optional="yes" />
<sequential>
<if>
<condition>
<isreference refid="out.dex.jar.input.ref" />
</condition>
<else>
<path id="out.dex.jar.input.ref">
<path refid="${jar.libs.ref}" />
</path>
</else>
</if>
<echo>Converting compiled files and external libraries into @{output-dex-file}...</echo>
<dex executable="${dx}" output="@{output-dex-file}" nolocals="true" verbose="true">
<path path="@{input-dir}" />
<external-libs />
</dex>
</sequential>
</macrodef>
그리고 target 기본 흐름대로 놔두면 subdex가 생성 될것이다.
이 subdex는 assets 에 들어가 있을것이다.
참고로 subdex에 있는 코드를 호출할때 reflection 을 사용 해야 된다.
그러지 않은 클래스를 찾지 못한다는 오류를 보게 될것이다.
사용방법 아래 위치에서.
'프로그램 > Ant' 카테고리의 다른 글
Java - ant cannot find rt.jar (0) | 2014.03.17 |
---|