android 자동빌드환경을 구성할때 가장 힘들었던것이 emulator 가 켜져있어야만 테스트를 돌릴수 있다는 것이었습니다.
google 에서는 emulator 를 자동으로 켜고 부팅시까지 기다리고 자동으로 꺼주는 스크립트를 지원해주지 않는데 자동으로 빌드하기위해선 이런것들이 꼭 필요하기 때문에 직접 만들어보았습니다.
OS 는 윈도우이고 sdk 버젼은 r16 이고 ant build 환경이 갖추어져있다는 가정하에 이 문서를 작성합니다.
접기
<property name="avdname" value="myavd4"/>
<property name="emulator" location="${sdk.dir}/tools/emulator.exe" />
<target name="startEmulator">
<sequential>
<antcall target="killEmulator"/>
<echo>emulator start</echo>
<exec executable="${emulator}" failonerror="true">
<arg line="-avd" />
<arg line="${avdname}" />
<arg line="-wipe-data" />
</exec>
<echo>emulator booting...</echo>
<antcall target="waitForDevice"/>
<!--
<exec executable="${adb}" failonerror="true">
<arg line="wait-for-device" />
</exec>
-->
</sequential>
</target>
<target name="waitForDevice">
<sequential>
<script language="javascript">
<![CDATA[
var echo = project.createTask("echo");
var adb = project.getProperty("adb");
var i = 0;
while(true) {
i++;
var execTask = project.createTask("exec");
execTask.setExecutable(adb);
execTask.setOutputproperty("output"+i);
arg = execTask.createArg();
arg.setLine("shell getprop dev.bootcomplete");
execTask.execute();
var output = project.getProperty("output"+i);
if (output.indexOf("1")!=0) {
var sleepTask = project.createTask("sleep");
sleepTask.setSeconds(5);
sleepTask.perform();
echo.setMessage("waitfor boot... "+(i*5)+" sec");
echo.perform();
}
else {
break;
}
}
]]>
</script>
<echo>device boot complete</echo>
</sequential>
</target>
<target name="killEmulator">
<sequential>
<echo>kill emulator</echo>
<exec executable="taskkill.exe">
<arg line="/F" />
<arg line="/IM" />
<arg line="emulator*" />
<arg line="/T" />
</exec>
</sequential>
</target>
접기
그리고 아래 명령으로 실행하면 됩니다.
접기
ant startEmulator clean emma debug install test killEmulator -Davdname=avd233
접기
RECENT COMMENT