일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- gradle
- 노개북
- git
- 안철수
- KTS
- 안드로이드
- Eclipse
- 구글
- Android
- 리눅스
- Android 4.1
- build.gradle
- kotlin
- 하버드
- c
- 코틀린
- ActiveMovieControl
- 안드로이드 개발
- 악성코드
- java
- C++
- mime
- 탐지기법
- 보안
- OOM
- 개발
- 자바
- linux
- ActiveX
- Today
- Total
꿈소년의 개발 이야기
ANT build System을 통한 Android APK 빌드하기 본문
* Android apk build system 구성하기
1. Apache ANT project 에서 ant 설치하기.
http://ant.apache.org/bindownload.cgi#Verify Releases
다운로드 후 해당 압축파일 해제. 적당한 root directory 에 압축 해제.
내 컴퓨터 속성 --> 시스템 속성 --> 환경변수 --> System Path 에 해당 bin 폴더 경로 추가.
* 자바 환경 설정.
자바 SDK 설치 후 환경 설정을 해야 한다. 동일하게 path에 java 설치 경로를 추가한다.
2. build.xml 및 default.properties, local.properties 생성하기.
해당 eclipse 작업 폴더에서
android update project --path "프로젝트폴더명"
* 만약 아래와 같은 에러가 발생할 경우.
Error: The project either has no target set or the target is invalid.
Please provide a --target to the 'android.bat update' command.
android target 버전을 모르는 경우이다. 이런 경우에는,
android list targets
로 타겟 버전 숫자를 확인하여 android update project -p "<프로젝트명>" -t "타겟숫자"
로 처리한다.
3. ant 를 통한 apk build 작업 진행.
http://developer.android.com/guide/developing/building/building-cmdline.html
ant 를 통해서 apk build 를 하려면 해당 작업 폴더 root directory 에서
ant release 또는 ant debug 를 실행한다.
빌드 성공할 경우, 이제 관련된 옵션을 통해서 빌드를 제어할 텐데 관련 내용은 링크 참조.
* build.xml
이 파일은 빌드 시 관련된 설정이 들어간 파일이다. 잘 설정해서 사용하면 유용하다.
이와 관련된 내용은
http://jcstyle.tistory.com/218
링크에 설명이 잘 되어 있다.
* 빌드 오류가 난다면
오류가 난다면 오류내용에 보면 참고 하고 있는 rule의 xml 파일을 알려줍니다. 해당 xml파일을 열어서 자신의 프로젝트에 필요한 부분을 복사해서 build.xml 에 추가하면 문제가 해결 됩니다. 추가할때는 <setup/> 위쪽에 넣어주면 됩니다. 자세한 내용은 build.xml 의 주석부분을 참고하시면 됩니다. ant의 xml파일은 Makefile 과 비슷하게 target과 depend 란 개념으로 구성되어 있으니 쉽게 이해할 수 있습니다. ${}로 만들어져 있는 변수들은 properties 로 관리가 되는데 자동으로 만들어진 두개의 properties는 android 가 관리하고 있으므로 수정하지 않고 build.properties를 별도로 만들어서 사용합니다. 추가로 사용하는 소스 폴더가 있다면 이것을 여기에 추가해주고 build.xml에서 compile target을 복사해와서 적절히 수정해서 사용해야 합니다. 또한 sign과정을 자동화 하고 싶다면 key와 password를 build.properties 에 등록해두면 됩니다. build.properties 1 key.store=../ssbooks_android_keystore 2 key.alias=ssbooks 3 key.store.password=1234 4 key.alias.password=1234 5 6 ss.source.dir=../common ~ build.xml 35 <property name="ss.source.absolute.dir" location="${ss.source.dir}" /> 63 <macrodef name="release-install-helper"> 64 <sequential> 65 <echo>Installing ${out.release.file} onto default emulator or device...</echo> 66 <exec executable="${adb}" failonerror="true"> 67 <arg line="${adb.device.arg}" /> 68 <arg value="install" /> 69 <arg value="-r" /> 70 <arg path="${out.release.file}" /> 71 </exec> 72 </sequential> 73 </macrodef> 74 75 <target name="ri" depends="release" 76 description="Installs/reinstalls the debug package onto a running 77 emulator or device. If the application was previously installed, 78 the signatures must match." > 79 <release-install-helper /> 80 </target> 81 82 <!-- Generates java classes from .aidl files. --> 83 <target name="-ss.aidl" depends="-dirs"> 84 <echo>Compiling aidl files into Java classes...</echo> 85 <aidl executable="${aidl}" framework="${android.aidl}" 86 genFolder="${gen.absolute.dir}"> 87 <source path="${ss.source.absolute.dir}"/> 88 <source refid="android.libraries.src"/> 89 </aidl> 90 </target> 92 <target name="compile" depends="-resource-src, -ss.aidl, -pre-compile" 93 description="Compiles project's .java files into .class files"> 94 <if condition="${manifest.hasCode}"> 95 <then> 96 <!-- If android rules are used for a test project, its classpath should include 97 tested project's location --> 98 <condition property="extensible.classpath" 99 value="${tested.project.absolute.dir}/bin/classes" 100 else="."> 101 <isset property="tested.project.absolute.dir" /> 102 </condition> 103 <condition property="extensible.libs.classpath" 104 value="${tested.project.absolute.dir}/libs" 105 else="./libs"> 106 <isset property="tested.project.absolute.dir" /> 107 </condition> 108 <javac encoding="euc-kr" target="1.5" debug="true" extdirs="" 109 destdir="${out.classes.absolute.dir}" 110 bootclasspathref="android.target.classpath" 111 verbose="${verbose}" 112 classpath="${extensible.classpath}" 113 classpathref="android.libraries.jars"> 114 <src path="${source.absolute.dir}" /> 115 <src path="${ss.source.absolute.dir}" /> 116 <src path="${gen.absolute.dir}" /> 117 <src refid="android.libraries.src" /> 118 <classpath> 119 <fileset dir="${external.libs.absolute.dir}" includes="*.jar" /> 120 <fileset dir="${extensible.libs.classpath}" includes="*.jar" /> 121 </classpath> 122 </javac> 123 </then> 124 <else> 125 <echo>hasCode = false. Skipping...</echo> 126 </else> 127 </if> 128 </target>
|
'Android Development' 카테고리의 다른 글
Support Library ( Compatibility Package) (0) | 2012.08.21 |
---|---|
OOM 및 LMK 에 대한 정리 (0) | 2012.08.21 |
[MAT] Memory leak analysis tool (0) | 2012.06.08 |
android.os.TransactionTooLargeException (0) | 2012.06.03 |
ListView setTextFilterEnabled (0) | 2012.05.02 |