Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(209)

Side by Side Diff: build/android/ant/apk-build.xml

Issue 12701012: Removed unused ant stuff (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@sdk_targets
Patch Set: Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 <?xml version="1.0" encoding="UTF-8"?> 1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- 2 <!--
3 Copyright (C) 2005-2008 The Android Open Source Project 3 Copyright (C) 2005-2008 The Android Open Source Project
shashi 2013/03/11 23:35:03 Copyright.
cjhopman 2013/03/11 23:54:21 ?
shashi 2013/03/12 00:26:23 I meant should we mention we have changed original
4 4
5 Licensed under the Apache License, Version 2.0 (the "License"); 5 Licensed under the Apache License, Version 2.0 (the "License");
6 you may not use this file except in compliance with the License. 6 you may not use this file except in compliance with the License.
7 You may obtain a copy of the License at 7 You may obtain a copy of the License at
8 8
9 http://www.apache.org/licenses/LICENSE-2.0 9 http://www.apache.org/licenses/LICENSE-2.0
10 10
11 Unless required by applicable law or agreed to in writing, software 11 Unless required by applicable law or agreed to in writing, software
12 distributed under the License is distributed on an "AS IS" BASIS, 12 distributed under the License is distributed on an "AS IS" BASIS,
13 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 <property-value name="target.abi" value="${APP_ABI}"/> 67 <property-value name="target.abi" value="${APP_ABI}"/>
68 68
69 <!-- 69 <!--
70 We use the PROGUARD_ENABLED flag for enabling proguard. By default proguar d is enabled for 70 We use the PROGUARD_ENABLED flag for enabling proguard. By default proguar d is enabled for
71 Release builds if proguard.config is set. Setting proguard.config even to an empty string will 71 Release builds if proguard.config is set. Setting proguard.config even to an empty string will
72 enable proguard. Set this property only when we have explicitly enabled pr oguard. 72 enable proguard. Set this property only when we have explicitly enabled pr oguard.
73 --> 73 -->
74 <condition property="proguard.config" value="${PROGUARD_FLAGS}"> 74 <condition property="proguard.config" value="${PROGUARD_FLAGS}">
75 <istrue value="${PROGUARD_ENABLED}"/> 75 <istrue value="${PROGUARD_ENABLED}"/>
76 </condition> 76 </condition>
77 <!-- TODO(shashishekhar): Enable emma and code-coverage filters. -->
78 77
79 <!-- Set the output directory for the final apk to the ${apks.dir}. --> 78 <!-- Set the output directory for the final apk to the ${apks.dir}. -->
80 <property-location name="out.final.file" 79 <property-location name="out.final.file"
81 location="${apks.dir}/${ant.project.name}.apk" 80 location="${apks.dir}/${ant.project.name}.apk"
82 check-exists="false"/> 81 check-exists="false"/>
83 82
84 <!-- Classpath for javac --> 83 <!-- Classpath for javac -->
85 <path id="javac.custom.classpath"> 84 <path id="javac.custom.classpath">
86 <filelist files="${INPUT_JARS_PATHS}"/> 85 <filelist files="${INPUT_JARS_PATHS}"/>
87 </path> 86 </path>
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 or "<file>" to match only files. Default is to match both. 130 or "<file>" to match only files. Default is to match both.
132 - Match is not case-sensitive. 131 - Match is not case-sensitive.
133 --> 132 -->
134 <property name="aapt.ignore.assets" value="" /> 133 <property name="aapt.ignore.assets" value="" />
135 134
136 <!-- dex force jumbo options, to be used when dex merging fails with 135 <!-- dex force jumbo options, to be used when dex merging fails with
137 UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dx.util.DexException: Canno t handle conversion to jumbo index! 136 UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dx.util.DexException: Canno t handle conversion to jumbo index!
138 at com.android.dx.merge.InstructionTransformer.jumboCheck(Instruction Transformer.java:103) 137 at com.android.dx.merge.InstructionTransformer.jumboCheck(Instruction Transformer.java:103)
139 ... 138 ...
140 --> 139 -->
141 <property name="dex.force.jumbo" value="false" /> 140 <property name="dex.force.jumbo" value="false" />
shashi 2013/03/11 23:35:03 can remove this.
cjhopman 2013/03/11 23:54:21 This is still used (it could be inlined below, but
142 141
143 <!-- compilation options --> 142 <!-- compilation options -->
144 <property name="java.encoding" value="UTF-8" /> 143 <property name="java.encoding" value="UTF-8" />
145 <property name="java.target" value="1.5" /> 144 <property name="java.target" value="1.5" />
146 <property name="java.source" value="1.5" /> 145 <property name="java.source" value="1.5" />
147 <property name="java.compilerargs" value="" /> 146 <property name="java.compilerargs" value="" />
148 147
149 <!-- Renderscript options -->
150 <property name="renderscript.debug.opt.level" value="O0" />
151 <property name="renderscript.release.opt.level" value="O3" />
152
153 <!-- manifest merger default value --> 148 <!-- manifest merger default value -->
154 <property name="manifestmerger.enabled" value="false" /> 149 <property name="manifestmerger.enabled" value="false" />
shashi 2013/03/11 23:35:03 Can remove this?
cjhopman 2013/03/11 23:54:21 Same.
155 150
156 <!-- instrumentation options -->
157 <property name="emma.filter" value="" />
158
159 <!-- Verbosity --> 151 <!-- Verbosity -->
160 <property name="verbose" value="false" /> 152 <property name="verbose" value="false" />
161 153
162 <!-- Output location of the HTML report for the "lint" target. 154 <!-- Output location of the HTML report for the "lint" target.
163 Ideally this would be specified as 155 Ideally this would be specified as
164 value="${out.dir}/lint.html" 156 value="${out.dir}/lint.html"
165 but we can't make a forward reference to the definition for 157 but we can't make a forward reference to the definition for
166 ${out.dir}, and it is not a configurable property (yet). 158 ${out.dir}, and it is not a configurable property (yet).
167 --> 159 -->
168 <property name="lint.out.html" value="bin/lint.html" /> 160 <property name="lint.out.html" value="bin/lint.html" />
shashi 2013/03/11 23:35:03 remove lint.out.* and there comments/usages.
cjhopman 2013/03/11 23:54:21 Done.
169 161
170 <!-- Output location of the XML report for the "lint" target --> 162 <!-- Output location of the XML report for the "lint" target -->
171 <property name="lint.out.xml" value="bin/lint.xml" /> 163 <property name="lint.out.xml" value="bin/lint.xml" />
172 164
173 <!-- ******************************************************* --> 165 <!-- ******************************************************* -->
174 <!-- ********************* Custom Tasks ******************** --> 166 <!-- ********************* Custom Tasks ******************** -->
175 <!-- ******************************************************* --> 167 <!-- ******************************************************* -->
176 168
177 <!-- jar file from where the tasks are loaded --> 169 <!-- jar file from where the tasks are loaded -->
178 <path id="android.antlibs"> 170 <path id="android.antlibs">
179 <pathelement path="${sdk.dir}/tools/lib/anttasks.jar" /> 171 <pathelement path="${sdk.dir}/tools/lib/anttasks.jar" />
180 </path> 172 </path>
181 173
182 <!-- Custom tasks --> 174 <!-- Custom tasks -->
183 <taskdef resource="anttasks.properties" classpathref="android.antlibs" /> 175 <taskdef resource="anttasks.properties" classpathref="android.antlibs" />
184 176
185 <!-- Emma configuration -->
186 <property name="emma.dir" value="${sdk.dir}/tools/lib" />
187 <path id="emma.lib">
188 <pathelement location="${emma.dir}/emma.jar" />
189 <pathelement location="${emma.dir}/emma_ant.jar" />
190 </path>
191 <taskdef resource="emma_ant.properties" classpathref="emma.lib" />
192 <!-- End of emma configuration -->
193
194
195 <!-- ******************************************************* --> 177 <!-- ******************************************************* -->
196 <!-- ******************* Other Properties ****************** --> 178 <!-- ******************* Other Properties ****************** -->
197 <!-- ******************************************************* --> 179 <!-- ******************************************************* -->
198 <!-- overriding these properties may break the build 180 <!-- overriding these properties may break the build
199 unless the whole file is updated --> 181 unless the whole file is updated -->
200 182
201 <!-- Input directories --> 183 <!-- Input directories -->
202 <property name="source.dir" value="src" /> 184 <property name="source.dir" value="src" />
203 <property name="source.absolute.dir" location="${source.dir}" /> 185 <property name="source.absolute.dir" location="${source.dir}" />
204 <property-value name="gen.absolute.dir" value="${out.dir}/gen"/> 186 <property-value name="gen.absolute.dir" value="${out.dir}/gen"/>
(...skipping 18 matching lines...) Expand all
223 <property name="out.absolute.dir" location="${out.dir}" /> 205 <property name="out.absolute.dir" location="${out.dir}" />
224 <property name="out.classes.absolute.dir" location="${out.dir}/classes" /> 206 <property name="out.classes.absolute.dir" location="${out.dir}/classes" />
225 <property name="out.res.absolute.dir" location="${out.dir}/res" /> 207 <property name="out.res.absolute.dir" location="${out.dir}/res" />
226 <property name="out.aidl.absolute.dir" location="${out.dir}/aidl" /> 208 <property name="out.aidl.absolute.dir" location="${out.dir}/aidl" />
227 <property name="out.dexed.absolute.dir" location="${out.dir}/dexedLibs" /> 209 <property name="out.dexed.absolute.dir" location="${out.dir}/dexedLibs" />
228 <property name="out.manifest.abs.file" location="${out.dir}/AndroidManifest. xml" /> 210 <property name="out.manifest.abs.file" location="${out.dir}/AndroidManifest. xml" />
229 211
230 <!-- tools location --> 212 <!-- tools location -->
231 <property name="android.tools.dir" location="${sdk.dir}/tools" /> 213 <property name="android.tools.dir" location="${sdk.dir}/tools" />
232 <property name="android.platform.tools.dir" location="${sdk.dir}/platform-to ols" /> 214 <property name="android.platform.tools.dir" location="${sdk.dir}/platform-to ols" />
233 <condition property="exe" value=".exe" else=""><os family="windows" /></cond ition> 215 <condition property="exe" value=".exe" else=""><os family="windows" /></cond ition>
shashi 2013/03/11 23:35:03 we can remove the windows development as well.
cjhopman 2013/03/11 23:54:21 Done.
234 <condition property="bat" value=".bat" else=""><os family="windows" /></cond ition> 216 <condition property="bat" value=".bat" else=""><os family="windows" /></cond ition>
235 <property name="adb" location="${android.platform.tools.dir}/adb${exe}" /> 217 <property name="adb" location="${android.platform.tools.dir}/adb${exe}" />
236 <property name="zipalign" location="${android.tools.dir}/zipalign${exe}" /> 218 <property name="zipalign" location="${android.tools.dir}/zipalign${exe}" />
237 <property name="aidl" location="${android.platform.tools.dir}/aidl${exe}" /> 219 <property name="aidl" location="${android.platform.tools.dir}/aidl${exe}" />
238 <property name="aapt" location="${android.platform.tools.dir}/aapt${exe}" /> 220 <property name="aapt" location="${android.platform.tools.dir}/aapt${exe}" />
239 <property name="dx" location="${android.platform.tools.dir}/dx${bat}" /> 221 <property name="dx" location="${android.platform.tools.dir}/dx${bat}" />
240 <property name="renderscript" location="${android.platform.tools.dir}/llvm-r s-cc${exe}"/>
241 <property name="lint" location="${android.tools.dir}/lint${bat}" /> 222 <property name="lint" location="${android.tools.dir}/lint${bat}" />
Yaron 2013/03/11 23:38:06 Would be interesting to get lint running in the fu
cjhopman 2013/03/11 23:54:21 Agreed. See below.
242 223
243 <!-- Renderscript include Path -->
244 <path id="android.renderscript.include.path">
245 <pathelement location="${android.platform.tools.dir}/renderscript/includ e" />
246 <pathelement location="${android.platform.tools.dir}/renderscript/clang- include" />
247 </path>
248
249 <!-- Intermediate files --> 224 <!-- Intermediate files -->
250 <property name="dex.file.name" value="classes.dex" /> 225 <property name="dex.file.name" value="classes.dex" />
251 <property name="intermediate.dex.file" location="${out.absolute.dir}/${dex.f ile.name}" /> 226 <property name="intermediate.dex.file" location="${out.absolute.dir}/${dex.f ile.name}" />
252 <property name="resource.package.file.name" value="${ant.project.name}.ap_" /> 227 <property name="resource.package.file.name" value="${ant.project.name}.ap_" />
253 228
254 <!-- Build property file --> 229 <!-- Build property file -->
255 <property name="out.build.prop.file" location="${out.absolute.dir}/build.pro p" /> 230 <property name="out.build.prop.file" location="${out.absolute.dir}/build.pro p" />
256 231
257
258 <!-- This is needed by emma as it uses multilevel verbosity instead of simpl e 'true' or 'false'
259 The property 'verbosity' is not user configurable and depends exclusive ly on 'verbose'
260 value.-->
261 <condition property="verbosity" value="verbose" else="quiet">
262 <istrue value="${verbose}" />
263 </condition>
264
265 <!-- properties for signing in release mode --> 232 <!-- properties for signing in release mode -->
266 <condition property="has.keystore"> 233 <condition property="has.keystore">
267 <and> 234 <and>
268 <isset property="key.store" /> 235 <isset property="key.store" />
269 <length string="${key.store}" when="greater" length="0" /> 236 <length string="${key.store}" when="greater" length="0" />
270 <isset property="key.alias" /> 237 <isset property="key.alias" />
271 </and> 238 </and>
272 </condition> 239 </condition>
273 <condition property="has.password"> 240 <condition property="has.password">
274 <and> 241 <and>
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
400 <sourcefolder path="${source.absolute.dir}"/> 367 <sourcefolder path="${source.absolute.dir}"/>
401 <jarfile refid="project.all.jars.path" /> 368 <jarfile refid="project.all.jars.path" />
402 <nativefolder path="${native.libs.absolute.dir}" /> 369 <nativefolder path="${native.libs.absolute.dir}" />
403 <nativefolder refid="project.library.native.folder.path" /> 370 <nativefolder refid="project.library.native.folder.path" />
404 <extra-jars/> 371 <extra-jars/>
405 </apkbuilder> 372 </apkbuilder>
406 </sequential> 373 </sequential>
407 </macrodef> 374 </macrodef>
408 375
409 <!-- This is macro which zipaligns in.package and outputs it to out.package. Used by targets 376 <!-- This is macro which zipaligns in.package and outputs it to out.package. Used by targets
410 debug, -debug-with-emma and release.--> 377 debug and release.-->
411 <macrodef name="zipalign-helper"> 378 <macrodef name="zipalign-helper">
412 <attribute name="in.package" /> 379 <attribute name="in.package" />
413 <attribute name="out.package" /> 380 <attribute name="out.package" />
414 <sequential> 381 <sequential>
415 <zipalign 382 <zipalign
416 executable="${zipalign}" 383 executable="${zipalign}"
417 input="@{in.package}" 384 input="@{in.package}"
418 output="@{out.package}" 385 output="@{out.package}"
419 verbose="${verbose}" /> 386 verbose="${verbose}" />
420 </sequential> 387 </sequential>
421 </macrodef> 388 </macrodef>
422 389
423 <macrodef name="run-tests-helper">
424 <attribute name="emma.enabled" default="false" />
425 <element name="extra-instrument-args" optional="yes" />
426 <sequential>
427 <echo level="info">Running tests ...</echo>
428 <exec executable="${adb}" failonerror="true">
429 <arg line="${adb.device.arg}" />
430 <arg value="shell" />
431 <arg value="am" />
432 <arg value="instrument" />
433 <arg value="-w" />
434 <arg value="-e" />
435 <arg value="coverage" />
436 <arg value="@{emma.enabled}" />
437 <extra-instrument-args />
438 <arg value="${project.app.package}/${test.runner}" />
439 </exec>
440 </sequential>
441 </macrodef>
442
443 <macrodef name="record-build-key"> 390 <macrodef name="record-build-key">
444 <attribute name="key" default="false" /> 391 <attribute name="key" default="false" />
445 <attribute name="value" default="false" /> 392 <attribute name="value" default="false" />
446 <sequential> 393 <sequential>
447 <propertyfile file="${out.build.prop.file}" comment="Last build type "> 394 <propertyfile file="${out.build.prop.file}" comment="Last build type ">
448 <entry key="@{key}" value="@{value}"/> 395 <entry key="@{key}" value="@{value}"/>
449 </propertyfile> 396 </propertyfile>
450 </sequential> 397 </sequential>
451 </macrodef> 398 </macrodef>
452 399
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
642 libraryPackagesOut="project.library.packages" 589 libraryPackagesOut="project.library.packages"
643 libraryManifestFilePathOut="project.library.manifest.file.path" 590 libraryManifestFilePathOut="project.library.manifest.file.path"
644 libraryResFolderPathOut="project.library.res.folder.path" 591 libraryResFolderPathOut="project.library.res.folder.path"
645 libraryBinAidlFolderPathOut="project.library.bin.aidl.folder.pat h" 592 libraryBinAidlFolderPathOut="project.library.bin.aidl.folder.pat h"
646 libraryRFilePathOut="project.library.bin.r.file.path" 593 libraryRFilePathOut="project.library.bin.r.file.path"
647 libraryNativeFolderPathOut="project.library.native.folder.path" 594 libraryNativeFolderPathOut="project.library.native.folder.path"
648 jarLibraryPathOut="project.all.jars.path" 595 jarLibraryPathOut="project.all.jars.path"
649 targetApi="${project.target.apilevel}" 596 targetApi="${project.target.apilevel}"
650 verbose="${verbose}" /> 597 verbose="${verbose}" />
651 598
652 <!-- compile the libraries if any --> 599 <!-- no tested project, make an empty Path object so that javac doesn't
653 <if> 600 complain -->
654 <condition> 601 <path id="tested.project.classpath" />
655 <and>
656 <isreference refid="project.library.folder.path" />
657 <not><isset property="dont.do.deps" /></not>
Yaron 2013/03/11 23:38:06 Can you get rid of this property now? I set it in
cjhopman 2013/03/11 23:54:21 It's likely still needed for native_test_apk.xml.
658 </and>
659 </condition>
660 <then>
661 <!-- figure out which target must be used to build the library p rojects.
662 If emma is enabled, then use 'instrument' otherwise, use 'd ebug' -->
663 <condition property="project.libraries.target" value="instrument " else="${build.target}">
664 <istrue value="${build.is.instrumented}" />
665 </condition>
666
667 <echo level="info">----------</echo>
668 <echo level="info">Building Libraries with '${project.libraries. target}'...</echo>
669
670 <!-- no need to build the deps as we have already
671 the full list of libraries -->
672 <subant failonerror="true"
673 buildpathref="project.library.folder.path"
674 antfile="build.xml">
675 <target name="nodeps" />
676 <target name="${project.libraries.target}" />
677 <property name="emma.coverage.absolute.file" location="${out .absolute.dir}/coverage.em" />
678 </subant>
679 </then>
680 </if>
681
682 <!-- compile the main project if this is a test project -->
683 <if condition="${project.is.test}">
684 <then>
685 <!-- figure out which target must be used to build the tested pr oject.
686 If emma is enabled, then use 'instrument' otherwise, use 'd ebug' -->
687 <condition property="tested.project.target" value="instrument" e lse="debug">
688 <isset property="emma.enabled" />
689 </condition>
690
691 <echo level="info">----------</echo>
692 <echo level="info">Building tested project at ${tested.project.a bsolute.dir} with '${tested.project.target}'...</echo>
693 <subant target="${tested.project.target}" failonerror="true">
694 <fileset dir="${tested.project.absolute.dir}" includes="buil d.xml" />
695 </subant>
696
697 <!-- get the tested project full classpath to be able to build
698 the test project -->
699 <testedprojectclasspath
700 projectLocation="${tested.project.absolute.dir}"
701 projectClassPathOut="tested.project.classpath"/>
702 </then>
703 <else>
704 <!-- no tested project, make an empty Path object so that javac doesn't
705 complain -->
706 <path id="tested.project.classpath" />
707 </else>
708 </if>
709 </target> 602 </target>
710 603
711 <!-- empty default pre-build target. Create a similar target in 604 <!-- empty default pre-build target. Create a similar target in
712 your build.xml and it'll be called instead of this one. --> 605 your build.xml and it'll be called instead of this one. -->
713 <target name="-pre-build"/> 606 <target name="-pre-build"/>
714 607
715 <!-- Code Generation: compile resources (aapt -> R.java), aidl, renderscript --> 608 <!-- Code Generation: compile resources (aapt -> R.java), aidl -->
716 <target name="-code-gen"> 609 <target name="-code-gen">
717 <!-- always merge manifest --> 610 <!-- always merge manifest -->
718 <mergemanifest 611 <mergemanifest
719 appManifest="${manifest.abs.file}" 612 appManifest="${manifest.abs.file}"
720 outManifest="${out.manifest.abs.file}" 613 outManifest="${out.manifest.abs.file}"
721 enabled="${manifestmerger.enabled}"> 614 enabled="${manifestmerger.enabled}">
722 <library refid="project.library.manifest.file.path" /> 615 <library refid="project.library.manifest.file.path" />
723 </mergemanifest> 616 </mergemanifest>
724 617
725 <do-only-if-manifest-hasCode 618 <do-only-if-manifest-hasCode
726 elseText="hasCode = false. Skipping aidl/renderscript/R.java"> 619 elseText="hasCode = false. Skipping aidl/R.java">
727 <echo level="info">Handling aidl files...</echo>
728 <aidl executable="${aidl}"
729 framework="${project.target.framework.aidl}"
730 libraryBinAidlFolderPathRefid="project.library.bin.aidl.fold er.path"
731 genFolder="${gen.absolute.dir}"
732 aidlOutFolder="${out.aidl.absolute.dir}">
733 <source path="${source.absolute.dir}"/>
734 </aidl>
735
736 <!-- renderscript generates resources so it must be called before aa pt -->
737 <echo level="info">----------</echo>
738 <echo level="info">Handling RenderScript files...</echo>
739 <renderscript executable="${renderscript}"
740 includePathRefId="android.renderscript.include.path"
741 genFolder="${gen.absolute.dir}"
742 resFolder="${out.res.absolute.dir}/raw"
743 targetApi="${project.minSdkVersion}"
744 optLevel="${renderscript.opt.level}"
745 buildType="${build.is.packaging.debug}"
746 previousBuildType="${build.last.is.packaging.debug}">
747 <source path="${source.absolute.dir}"/>
748 </renderscript>
749
750 <echo level="info">----------</echo> 620 <echo level="info">----------</echo>
751 <echo level="info">Handling Resources...</echo> 621 <echo level="info">Handling Resources...</echo>
752 <aapt executable="${aapt}" 622 <aapt executable="${aapt}"
753 command="package" 623 command="package"
754 verbose="${verbose}" 624 verbose="${verbose}"
755 manifest="${out.manifest.abs.file}" 625 manifest="${out.manifest.abs.file}"
756 androidjar="${project.target.android.jar}" 626 androidjar="${project.target.android.jar}"
757 rfolder="${gen.absolute.dir}" 627 rfolder="${gen.absolute.dir}"
758 nonConstantId="${android.library}" 628 nonConstantId="${android.library}"
759 libraryResFolderPathRefid="project.library.res.folder.path" 629 libraryResFolderPathRefid="project.library.res.folder.path"
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
794 Override the -compile target. 664 Override the -compile target.
795 This target requires 'javac.custom.classpath' to be set to reference 665 This target requires 'javac.custom.classpath' to be set to reference
796 of classpath to be used for javac. Also accepts custom path for 666 of classpath to be used for javac. Also accepts custom path for
797 sources: 'javac.custom.sourcepath'. 667 sources: 'javac.custom.sourcepath'.
798 --> 668 -->
799 <!-- Compiles this project's .java files into .class files. --> 669 <!-- Compiles this project's .java files into .class files. -->
800 <target 670 <target
801 name="-compile" 671 name="-compile"
802 depends="-build-setup, -pre-build, -code-gen, -pre-compile"> 672 depends="-build-setup, -pre-build, -code-gen, -pre-compile">
803 <do-only-if-manifest-hasCode elseText="hasCode = false. Skipping..." > 673 <do-only-if-manifest-hasCode elseText="hasCode = false. Skipping..." >
804 <!-- If javac.srcdirs.additional isn't set, set it to an empty path. -->
805 <if>
806 <condition>
807 <not>
808 <isreference refid="javac.srcdirs.additional"/>
809 </not>
810 </condition>
811 <then>
812 <path id="javac.srcdirs.additional"/>
813 </then>
814 </if>
815 <javac 674 <javac
816 bootclasspathref="project.target.class.path" 675 bootclasspathref="project.target.class.path"
817 classpathref="javac.custom.classpath" 676 classpathref="javac.custom.classpath"
818 debug="true" 677 debug="true"
819 destdir="${out.classes.absolute.dir}" 678 destdir="${out.classes.absolute.dir}"
820 encoding="${java.encoding}" 679 encoding="${java.encoding}"
821 extdirs="" 680 extdirs=""
822 fork="${need.javac.fork}" 681 fork="${need.javac.fork}"
823 includeantruntime="false" 682 includeantruntime="false"
824 source="${java.source}" 683 source="${java.source}"
825 target="${java.target}" 684 target="${java.target}"
826 verbose="${verbose}"> 685 verbose="${verbose}">
827 <src path="${source.absolute.dir}"/> 686 <src path="${source.absolute.dir}"/>
828 <src path="${gen.absolute.dir}"/> 687 <src path="${gen.absolute.dir}"/>
829 <src> 688 <src>
830 <path refid="javac.srcdirs.additional"/> 689 <path refid="javac.srcdirs.additional"/>
831 </src> 690 </src>
832 <compilerarg value="-Xlint:unchecked"/> 691 <compilerarg value="-Xlint:unchecked"/>
833 <compilerarg line="${java.compilerargs}"/> 692 <compilerarg line="${java.compilerargs}"/>
834 </javac> 693 </javac>
835 <!-- 694 <!--
836 If the project is instrumented, then instrument the classes
837 TODO(shashishekhar): Add option to override emma filter.
838 -->
839 <if condition="${build.is.instrumented}">
840 <then>
841 <echo level="info">
842 Instrumenting classes from ${out.absolute.dir}/classes...
843 </echo>
844 <!-- build the default filter to remove R, Manifest, BuildConfig -->
845 <getemmafilter
846 appPackage="${project.app.package}"
847 filterOut="emma.default.filter"
848 libraryPackagesRefId="project.library.packages"/>
849 <!--
850 Define where the .em file is output.
851 This may have been setup already if this is a library.
852 -->
853 <property name="emma.coverage.absolute.file"
854 location="${out.absolute.dir}/coverage.em"/>
855 <!-- It only instruments class files, not any external libs -->
856
857 <emma enabled="true">
858 <instr
859 instrpath="${out.absolute.dir}/classes"
860 metadatafile="${emma.coverage.absolute.file}"
861 mode="overwrite"
862 outdir="${out.absolute.dir}/classes"
863 verbosity="${verbosity}">
864 <filter excludes="${emma.default.filter}"/>
865 <filter value="${emma.filter}"/>
866 </instr>
867 </emma>
868 </then>
869 </if>
870 <!--
871 If the project needs a test jar then generate a jar containing 695 If the project needs a test jar then generate a jar containing
872 all compiled classes and referenced jars. 696 all compiled classes and referenced jars.
873 project.is.testapp is set by Android's ant build system based on the 697 project.is.testapp is set by Android's ant build system based on the
874 target's manifest. It is true only for instrumentation apks. 698 target's manifest. It is true only for instrumentation apks.
875 --> 699 -->
876 <if condition="${project.is.testapp}"> 700 <if condition="${project.is.testapp}">
877 <then> 701 <then>
878 <property-location name="create.test.jar.file" 702 <property-location name="create.test.jar.file"
879 location="${CHROMIUM_SRC}/build/android/ant/create-test-jar.js"/ > 703 location="${CHROMIUM_SRC}/build/android/ant/create-test-jar.js"/ >
880 <script language="javascript" src="${create.test.jar.file}"/> 704 <script language="javascript" src="${create.test.jar.file}"/>
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
1006 </proguard> 830 </proguard>
1007 </then> 831 </then>
1008 </if> 832 </if>
1009 </target> 833 </target>
1010 834
1011 <!-- Converts this project's .class files into .dex files --> 835 <!-- Converts this project's .class files into .dex files -->
1012 <target name="-dex" depends="-compile, -post-compile, -obfuscate"> 836 <target name="-dex" depends="-compile, -post-compile, -obfuscate">
1013 <do-only-if-manifest-hasCode elseText="hasCode = false. Skipping..."> 837 <do-only-if-manifest-hasCode elseText="hasCode = false. Skipping...">
1014 <!-- only convert to dalvik bytecode is *not* a library --> 838 <!-- only convert to dalvik bytecode is *not* a library -->
1015 <do-only-if-not-library elseText="Library project: do not convert by tecode..." > 839 <do-only-if-not-library elseText="Library project: do not convert by tecode..." >
1016 <!-- special case for instrumented builds: need to use no-locals and need 840 <dex-helper />
1017 to pass in the emma jar. -->
1018 <if condition="${build.is.instrumented}">
1019 <then>
1020 <dex-helper nolocals="true">
1021 <external-libs>
1022 <fileset file="${emma.dir}/emma_device.jar" />
1023 </external-libs>
1024 </dex-helper>
1025 </then>
1026 <else>
1027 <dex-helper />
1028 </else>
1029 </if>
1030 </do-only-if-not-library> 841 </do-only-if-not-library>
1031 </do-only-if-manifest-hasCode> 842 </do-only-if-manifest-hasCode>
1032 </target> 843 </target>
1033 844
1034 <!-- Updates the pre-processed PNG cache --> 845 <!-- Updates the pre-processed PNG cache -->
1035 <target name="-crunch"> 846 <target name="-crunch">
1036 <exec executable="${aapt}" taskName="crunch"> 847 <exec executable="${aapt}" taskName="crunch">
1037 <arg value="crunch" /> 848 <arg value="crunch" />
1038 <arg value="-v" /> 849 <arg value="-v" />
1039 <arg value="-S" /> 850 <arg value="-S" />
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1074 <!-- <nocompress /> forces no compression on any files in assets or res/raw --> 885 <!-- <nocompress /> forces no compression on any files in assets or res/raw -->
1075 <!-- <nocompress extension="xml" /> forces no compression on spe cific file extensions in assets and res/raw --> 886 <!-- <nocompress extension="xml" /> forces no compression on spe cific file extensions in assets and res/raw -->
1076 </aapt> 887 </aapt>
1077 </do-only-if-not-library> 888 </do-only-if-not-library>
1078 </target> 889 </target>
1079 890
1080 <!-- Packages the application. --> 891 <!-- Packages the application. -->
1081 <target name="-package" depends="-dex, -package-resources"> 892 <target name="-package" depends="-dex, -package-resources">
1082 <!-- only package apk if *not* a library project --> 893 <!-- only package apk if *not* a library project -->
1083 <do-only-if-not-library elseText="Library project: do not package apk... " > 894 <do-only-if-not-library elseText="Library project: do not package apk... " >
1084 <if condition="${build.is.instrumented}"> 895 <package-helper />
1085 <then>
1086 <package-helper>
1087 <extra-jars>
1088 <!-- Injected from external file -->
1089 <jarfile path="${emma.dir}/emma_device.jar" />
1090 </extra-jars>
1091 </package-helper>
1092 </then>
1093 <else>
1094 <package-helper />
1095 </else>
1096 </if>
1097 </do-only-if-not-library> 896 </do-only-if-not-library>
1098 </target> 897 </target>
1099 898
1100 <target name="-post-package" /> 899 <target name="-post-package" />
1101 <target name="-post-build" /> 900 <target name="-post-build" />
1102 901
1103 <target name="-set-mode-check"> 902 <target name="-set-mode-check">
1104 <fail if="build.is.mode.set" 903 <fail if="build.is.mode.set"
1105 message="Cannot run two different modes at the same time. If you are running more than one debug/release/instrument type targets, call them from different Ant calls." /> 904 message="Cannot run two different modes at the same time. If you are running more than one debug/release/instrument type targets, call them from different Ant calls." />
1106 </target> 905 </target>
1107 906
1108 <!-- ******************************************************* --> 907 <!-- ******************************************************* -->
1109 <!-- **************** Debug specific targets *************** --> 908 <!-- **************** Debug specific targets *************** -->
1110 <!-- ******************************************************* --> 909 <!-- ******************************************************* -->
1111 910
1112 <target name="-set-debug-files" depends="-set-mode-check"> 911 <target name="-set-debug-files" depends="-set-mode-check">
1113 912
1114 <property name="out.packaged.file" location="${out.absolute.dir}/${ant.p roject.name}-debug-unaligned.apk" /> 913 <property name="out.packaged.file" location="${out.absolute.dir}/${ant.p roject.name}-debug-unaligned.apk" />
1115 <property name="out.final.file" location="${out.absolute.dir}/${ant.proj ect.name}-debug.apk" /> 914 <property name="out.final.file" location="${out.absolute.dir}/${ant.proj ect.name}-debug.apk" />
1116 <property name="build.is.mode.set" value="true" /> 915 <property name="build.is.mode.set" value="true" />
1117 </target> 916 </target>
1118 917
1119 918
1120 <target name="-set-debug-mode" depends="-setup"> 919 <target name="-set-debug-mode" depends="-setup">
1121 <!-- record the current build target --> 920 <!-- record the current build target -->
1122 <property name="build.target" value="debug" /> 921 <property name="build.target" value="debug" />
1123 922
1124 <if> 923 <property name="build.is.instrumented" value="false" />
1125 <condition>
1126 <and>
1127 <istrue value="${project.is.testapp}" />
1128 <istrue value="${emma.enabled}" />
1129 </and>
1130 </condition>
1131 <then>
1132 <property name="build.is.instrumented" value="true" />
1133 </then>
1134 <else>
1135 <property name="build.is.instrumented" value="false" />
1136 </else>
1137 </if>
1138 924
1139 <!-- whether the build is a debug build. always set. --> 925 <!-- whether the build is a debug build. always set. -->
1140 <property name="build.is.packaging.debug" value="true" /> 926 <property name="build.is.packaging.debug" value="true" />
1141 927
1142 <!-- signing mode: debug --> 928 <!-- signing mode: debug -->
1143 <property name="build.is.signing.debug" value="true" /> 929 <property name="build.is.signing.debug" value="true" />
1144
1145 <!-- Renderscript optimization level: none -->
1146 <property name="renderscript.opt.level" value="${renderscript.debug.opt. level}" />
1147
1148 </target> 930 </target>
1149 931
1150 <target name="-debug-obfuscation-check"> 932 <target name="-debug-obfuscation-check">
1151 <!-- proguard is never enabled in debug mode --> 933 <!-- proguard is never enabled in debug mode -->
1152 <property name="proguard.enabled" value="false"/> 934 <property name="proguard.enabled" value="false"/>
1153 </target> 935 </target>
1154 936
1155 <!-- 937 <!--
1156 For debug builds, the Android SDK tools create a key in ~/.android and sig n the build with it. 938 For debug builds, the Android SDK tools create a key in ~/.android and sig n the build with it.
1157 This has caused all kinds of issues. Instead, the debug build should be si gned with a key in 939 This has caused all kinds of issues. Instead, the debug build should be si gned with a key in
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1202 </target> 984 </target>
1203 985
1204 986
1205 <!-- ******************************************************* --> 987 <!-- ******************************************************* -->
1206 <!-- *************** Release specific targets ************** --> 988 <!-- *************** Release specific targets ************** -->
1207 <!-- ******************************************************* --> 989 <!-- ******************************************************* -->
1208 990
1209 <!-- called through target 'release'. Only executed if the keystore and 991 <!-- called through target 'release'. Only executed if the keystore and
1210 key alias are known but not their password. --> 992 key alias are known but not their password. -->
1211 <target name="-release-prompt-for-password" if="has.keystore" unless="has.pa ssword"> 993 <target name="-release-prompt-for-password" if="has.keystore" unless="has.pa ssword">
1212 <!-- Gets passwords -->
1213 <input
1214 message="Please enter keystore password (store:${key.store}):"
1215 addproperty="key.store.password" />
1216 <input
1217 message="Please enter password for alias '${key.alias}':"
1218 addproperty="key.alias.password" />
1219 </target> 994 </target>
1220 995
1221 <!-- called through target 'release'. Only executed if there's no 996 <!-- called through target 'release'. Only executed if there's no
1222 keystore/key alias set --> 997 keystore/key alias set -->
1223 <target name="-release-nosign" unless="has.keystore"> 998 <target name="-release-nosign" unless="has.keystore">
1224 <!-- no release builds for library project -->
1225 <do-only-if-not-library elseText="" >
1226 <sequential>
1227 <echo level="info">No key.store and key.alias properties found i n build.properties.</echo>
1228 <echo level="info">Please sign ${out.packaged.file} manually</ec ho>
1229 <echo level="info">and run zipalign from the Android SDK tools.< /echo>
1230 </sequential>
1231 </do-only-if-not-library>
1232 <record-build-info /> 999 <record-build-info />
1233 </target> 1000 </target>
1234 1001
1235 <target name="-release-obfuscation-check"> 1002 <target name="-release-obfuscation-check">
1236 <echo level="info">proguard.config is ${proguard.config}</echo> 1003 <echo level="info">proguard.config is ${proguard.config}</echo>
1237 <condition property="proguard.enabled" value="true" else="false"> 1004 <condition property="proguard.enabled" value="true" else="false">
1238 <and> 1005 <and>
1239 <isset property="build.is.mode.release" /> 1006 <isset property="build.is.mode.release" />
1240 <isset property="proguard.config" /> 1007 <isset property="proguard.config" />
1241 </and> 1008 </and>
(...skipping 19 matching lines...) Expand all
1261 <property name="build.is.instrumented" value="false" /> 1028 <property name="build.is.instrumented" value="false" />
1262 1029
1263 <!-- release mode is only valid if the manifest does not explicitly 1030 <!-- release mode is only valid if the manifest does not explicitly
1264 set debuggable to true. default is false. --> 1031 set debuggable to true. default is false. -->
1265 <xpath input="${manifest.abs.file}" expression="/manifest/application/@a ndroid:debuggable" 1032 <xpath input="${manifest.abs.file}" expression="/manifest/application/@a ndroid:debuggable"
1266 output="build.is.packaging.debug" default="false"/> 1033 output="build.is.packaging.debug" default="false"/>
1267 1034
1268 <!-- signing mode: release --> 1035 <!-- signing mode: release -->
1269 <property name="build.is.signing.debug" value="false" /> 1036 <property name="build.is.signing.debug" value="false" />
1270 1037
1271 <!-- Renderscript optimization level: aggressive -->
1272 <property name="renderscript.opt.level" value="${renderscript.release.op t.level}" />
1273
1274 <if condition="${build.is.packaging.debug}"> 1038 <if condition="${build.is.packaging.debug}">
1275 <then> 1039 <then>
1276 <echo>*************************************************</echo> 1040 <echo>*************************************************</echo>
1277 <echo>**** Android Manifest has debuggable=true ****</echo> 1041 <echo>**** Android Manifest has debuggable=true ****</echo>
1278 <echo>**** Doing DEBUG packaging with RELEASE keys ****</echo> 1042 <echo>**** Doing DEBUG packaging with RELEASE keys ****</echo>
1279 <echo>*************************************************</echo> 1043 <echo>*************************************************</echo>
1280 </then> 1044 </then>
1281 <else> 1045 <else>
1282 <!-- property only set in release mode. 1046 <!-- property only set in release mode.
1283 Useful for if/unless attributes in target node 1047 Useful for if/unless attributes in target node
(...skipping 30 matching lines...) Expand all
1314 </target> 1078 </target>
1315 1079
1316 <!-- This runs -package-release and -release-nosign first and then runs 1080 <!-- This runs -package-release and -release-nosign first and then runs
1317 only if release-sign is true (set in -release-check, 1081 only if release-sign is true (set in -release-check,
1318 called by -release-no-sign)--> 1082 called by -release-no-sign)-->
1319 <target name="release" 1083 <target name="release"
1320 depends="-set-release-mode, -release-obfuscation-check, -package , -post-package, -release-prompt-for-password, -release-nosign, -release-sign, - post-build" 1084 depends="-set-release-mode, -release-obfuscation-check, -package , -post-package, -release-prompt-for-password, -release-nosign, -release-sign, - post-build"
1321 description="Builds the application in release mode."> 1085 description="Builds the application in release mode.">
1322 </target> 1086 </target>
1323 1087
1324 <!-- ******************************************************* -->
1325 <!-- ************ Instrumented specific targets ************ -->
1326 <!-- ******************************************************* -->
1327
1328 <!-- These targets are specific for the project under test when it
1329 gets compiled by the test projects in a way that will make it
1330 support emma code coverage -->
1331
1332 <target name="-set-instrumented-mode" depends="-set-mode-check">
1333 <property name="out.packaged.file" location="${out.absolute.dir}/${ant.p roject.name}-instrumented-unaligned.apk" />
1334 <property name="out.final.file" location="${out.absolute.dir}/${ant.proj ect.name}-instrumented.apk" />
1335 <property name="build.is.mode.set" value="true" />
1336
1337 <!-- whether the build is an instrumented build. -->
1338 <property name="build.is.instrumented" value="true" />
1339 </target>
1340
1341 <!-- Builds instrumented output package -->
1342 <target name="instrument" depends="-set-instrumented-mode, -do-debug"
1343 description="Builds an instrumented packaged.">
1344 <!-- only create apk if *not* a library project -->
1345 <do-only-if-not-library elseText="Library project: do not create apk..." >
1346 <sequential>
1347 <zipalign-helper in.package="${out.packaged.file}" out.package=" ${out.final.file}" />
1348 <echo level="info">Instrumented Package: ${out.final.file}</echo >
1349 </sequential>
1350 </do-only-if-not-library>
1351 <record-build-info />
1352 </target>
1353
1354 <!-- ******************************************************* -->
1355 <!-- ************ Test project specific targets ************ -->
1356 <!-- ******************************************************* -->
1357
1358 <!-- enable code coverage -->
1359 <target name="emma">
1360 <property name="emma.enabled" value="true" />
1361 </target>
1362
1363 <!-- fails if the project is not a test project -->
1364 <target name="-test-project-check" depends="-setup">
1365 <if>
1366 <condition>
1367 <and>
1368 <isfalse value="${project.is.test}" />
1369 <isfalse value="${project.is.testapp}" />
1370 </and>
1371 </condition>
1372 <then>
1373 <fail message="Project is not a test project." />
1374 </then>
1375 </if>
1376 </target>
1377
1378 <target name="test" depends="-test-project-check"
1379 description="Runs tests from the package defined in test.package property">
1380 <property name="test.runner" value="android.test.InstrumentationTestRunn er" />
1381
1382 <if condition="${project.is.test}">
1383 <then>
1384 <property name="tested.project.absolute.dir" location="${tested.proj ect.dir}" />
1385
1386 <!-- Application package of the tested project extracted from its ma nifest file -->
1387 <xpath input="${tested.project.absolute.dir}/AndroidManifest.xml"
1388 expression="/manifest/@package" output="tested.project.app.p ackage" />
1389
1390 <if condition="${emma.enabled}">
1391 <then>
1392 <getprojectpaths projectPath="${tested.project.absolute.dir} "
1393 binOut="tested.project.out.absolute.dir"
1394 srcOut="tested.project.source.absolute.dir" />
1395
1396 <getlibpath projectPath="${tested.project.absolute.dir}"
1397 libraryFolderPathOut="tested.project.lib.source.path "
1398 leaf="@{source.dir}" />
1399
1400 </then>
1401 </if>
1402
1403 </then>
1404 <else>
1405 <!-- this is a test app, the tested package is the app's own package -->
1406 <property name="tested.project.app.package" value="${project.app.pac kage}" />
1407
1408 <if condition="${emma.enabled}">
1409 <then>
1410 <property name="tested.project.out.absolute.dir" value="${ou t.absolute.dir}" />
1411 <property name="tested.project.source.absolute.dir" value="$ {source.absolute.dir}" />
1412
1413 <getlibpath
1414 libraryFolderPathOut="tested.project.lib.source.path "
1415 leaf="@{source.dir}" />
1416
1417 </then>
1418 </if>
1419
1420 </else>
1421 </if>
1422
1423 <property name="emma.dump.file"
1424 value="/data/data/${tested.project.app.package}/coverage.ec" />
1425
1426 <if condition="${emma.enabled}">
1427 <then>
1428 <echo>Running tests...</echo>
1429 <run-tests-helper emma.enabled="true">
1430 <extra-instrument-args>
1431 <arg value="-e" />
1432 <arg value="coverageFile" />
1433 <arg value="${emma.dump.file}" />
1434 </extra-instrument-args>
1435 </run-tests-helper>
1436
1437 <echo level="info">Settting permission to download the coverage file...</echo>
1438 <exec executable="${adb}" failonerror="true">
1439 <arg line="${adb.device.arg}" />
1440 <arg value="shell" />
1441 <arg value="run-as" />
1442 <arg value="${tested.project.app.package}" />
1443 <arg value="chmod" />
1444 <arg value="644" />
1445 <arg value="${emma.dump.file}" />
1446 </exec>
1447 <echo level="info">Downloading coverage file into project direct ory...</echo>
1448 <exec executable="${adb}" failonerror="true">
1449 <arg line="${adb.device.arg}" />
1450 <arg value="pull" />
1451 <arg value="${emma.dump.file}" />
1452 <arg path="${out.absolute.dir}/coverage.ec" />
1453 </exec>
1454
1455 <pathconvert property="tested.project.lib.source.path.value" ref id="tested.project.lib.source.path">
1456 <firstmatchmapper>
1457 <regexpmapper from='^([^ ]*)( .*)$$' to='"\1\2"'/>
1458 <identitymapper/>
1459 </firstmatchmapper>
1460 </pathconvert>
1461
1462 <echo level="info">Extracting coverage report...</echo>
1463 <emma>
1464 <property name="report.html.out.encoding" value="UTF-8" />
1465 <report sourcepath="${tested.project.source.absolute.dir}:${ tested.project.lib.source.path.value}"
1466 verbosity="${verbosity}">
1467 <!-- TODO: report.dir or something like should be introd uced if necessary -->
1468 <infileset file="${out.absolute.dir}/coverage.ec" />
1469 <infileset file="${tested.project.out.absolute.dir}/cove rage.em" />
1470 <!-- TODO: reports in other, indicated by user formats - ->
1471 <html outfile="${out.absolute.dir}/coverage.html" />
1472 <txt outfile="${out.absolute.dir}/coverage.txt" />
1473 <xml outfile="${out.absolute.dir}/coverage.xml" />
1474 </report>
1475 </emma>
1476 <echo level="info">Cleaning up temporary files...</echo>
1477 <delete file="${out.absolute.dir}/coverage.ec" />
1478 <delete file="${tested.project.out.absolute.dir}/coverage.em" />
1479 <exec executable="${adb}" failonerror="true">
1480 <arg line="${adb.device.arg}" />
1481 <arg value="shell" />
1482 <arg value="run-as" />
1483 <arg value="${tested.project.app.package}" />
1484 <arg value="rm" />
1485 <arg value="${emma.dump.file}" />
1486 </exec>
1487 <echo level="info">Saving the coverage reports in ${out.absolute .dir}</echo>
1488 </then>
1489 <else>
1490 <run-tests-helper />
1491 </else>
1492 </if>
1493 </target>
1494
1495 <!-- ******************************************************* -->
1496 <!-- ********** Run Lint on the project ********* -->
Yaron 2013/03/11 23:38:06 Keep this around? Or you'd rather manually invoke?
cjhopman 2013/03/11 23:54:21 I think we should have this, but it can be it's ow
1497 <!-- ******************************************************* -->
1498
1499 <target name="lint"
1500 description="Runs lint on the project to look for potential bugs" >
1501 <lint executable="${lint}"
1502 html="${lint.out.html}"
1503 xml="${lint.out.xml}"
1504 src="${source.absolute.dir}:${gen.absolute.dir}"
1505 classpath="${out.classes.absolute.dir}" />
1506 </target>
1507
1508 <!-- ******************************************************* -->
1509 <!-- ********** Install/uninstall specific targets ********* -->
1510 <!-- ******************************************************* -->
1511
1512 <target name="install"
1513 description="Installs the newly build package. Must be used in c onjunction with a build target
1514 (debug/release/instrument). If the application was p reviously installed, the application
1515 is reinstalled if the signature matches." >
1516 <!-- only do install if *not* a library project -->
1517 <do-only-if-not-library elseText="Library project: nothing to install!" >
1518 <if>
1519 <condition>
1520 <isset property="out.final.file" />
1521 </condition>
1522 <then>
1523 <if>
1524 <condition>
1525 <resourceexists>
1526 <file file="${out.final.file}"/>
1527 </resourceexists>
1528 </condition>
1529 <then>
1530 <echo level="info">Installing ${out.final.file} onto default emulator or device...</echo>
1531 <exec executable="${adb}" failonerror="true">
1532 <arg line="${adb.device.arg}" />
1533 <arg value="install" />
1534 <arg value="-r" />
1535 <arg path="${out.final.file}" />
1536 </exec>
1537
1538 <!-- now install the tested project if applicable -- >
1539 <!-- can't use project.is.test since the setup targe t might not have run -->
1540 <if>
1541 <condition>
1542 <and>
1543 <isset property="tested.project.dir" />
1544 <not>
1545 <isset property="dont.do.deps" />
1546 </not>
1547 </and>
1548 </condition>
1549 <then>
1550 <property name="tested.project.absolute.dir" location="${tested.project.dir}" />
1551
1552 <!-- figure out which tested package to inst all based on emma.enabled -->
1553 <condition property="tested.project.install. target" value="installi" else="installd">
1554 <isset property="emma.enabled" />
1555 </condition>
1556 <subant target="${tested.project.install.tar get}" failonerror="true">
1557 <fileset dir="${tested.project.absolute. dir}" includes="build.xml" />
1558 </subant>
1559 </then>
1560 </if>
1561 </then>
1562 <else>
1563 <fail message="File ${out.final.file} does not exist ." />
1564 </else>
1565 </if>
1566 </then>
1567 <else>
1568 <echo>Install file not specified.</echo>
1569 <echo></echo>
1570 <echo>'ant install' now requires the build target to be spec ified as well.</echo>
1571 <echo></echo>
1572 <echo></echo>
1573 <echo> ant debug install</echo>
1574 <echo> ant release install</echo>
1575 <echo> ant instrument install</echo>
1576 <echo>This will build the given package and install it.</ech o>
1577 <echo></echo>
1578 <echo>Alternatively, you can use</echo>
1579 <echo> ant installd</echo>
1580 <echo> ant installr</echo>
1581 <echo> ant installi</echo>
1582 <echo> ant installt</echo>
1583 <echo>to only install an existing package (this will not reb uild the package.)</echo>
1584 <fail />
1585 </else>
1586 </if>
1587 </do-only-if-not-library>
1588 </target>
1589
1590 <target name="installd" depends="-set-debug-files, install"
1591 description="Installs (only) the debug package." />
1592 <target name="installr" depends="-set-release-mode, install"
1593 description="Installs (only) the release package." />
1594 <target name="installi" depends="-set-instrumented-mode, install"
1595 description="Installs (only) the instrumented package." />
1596 <target name="installt" depends="-test-project-check, installd"
1597 description="Installs (only) the test and tested packages." />
1598
1599
1600 <!-- Uninstalls the package from the default emulator/device -->
1601 <target name="uninstall" depends="-setup"
1602 description="Uninstalls the application from a running emulator or device.">
1603 <if>
1604 <condition>
1605 <isset property="project.app.package" />
1606 </condition>
1607 <then>
1608 <uninstall-helper app.package="${project.app.package}" />
1609 </then>
1610 <else>
1611 <fail message="Could not find application package in manifest. C annot run 'adb uninstall'." />
1612 </else>
1613 </if>
1614
1615 <!-- Now uninstall the tested project, if applicable -->
1616 <if>
1617 <condition>
1618 <and>
1619 <istrue value="${project.is.test}" />
1620 <not>
1621 <isset property="dont.do.deps" />
1622 </not>
1623 </and>
1624 </condition>
1625 <then>
1626 <property name="tested.project.absolute.dir" location="${tested. project.dir}" />
1627
1628 <!-- Application package of the tested project extracted from it s manifest file -->
1629 <xpath input="${tested.project.absolute.dir}/AndroidManifest.xml "
1630 expression="/manifest/@package" output="tested.project.app.p ackage" />
1631 <if>
1632 <condition>
1633 <isset property="tested.project.app.package" />
1634 </condition>
1635 <then>
1636 <uninstall-helper app.package="${tested.project.app.pack age}" />
1637 </then>
1638 <else>
1639 <fail message="Could not find tested application package in manifest. Cannot run 'adb uninstall'." />
1640 </else>
1641 </if>
1642 </then>
1643 </if>
1644
1645 </target>
1646
1647
1648 <!-- ******************************************************* -->
1649 <!-- ************************* Help ************************ -->
1650 <!-- ******************************************************* -->
1651
1652 <target name="help">
1653 <!-- displays starts at col 13
1654 |13 8 0| -->
1655 <echo>Android Ant Build. Available targets:</echo>
1656 <echo> help: Displays this help.</echo>
1657 <echo> clean: Removes output files created by other targets.</echo >
1658 <echo> The 'all' target can be used to clean dependencies</ echo>
1659 <echo> (tested projects and libraries)at the same time</ech o>
1660 <echo> using: 'ant all clean'</echo>
1661 <echo> debug: Builds the application and signs it with a debug key .</echo>
1662 <echo> The 'nodeps' target can be used to only build the</e cho>
1663 <echo> current project and ignore the libraries using:</ech o>
1664 <echo> 'ant nodeps debug'</echo>
shashi 2013/03/11 23:35:03 We should only remove documentation for targets wh
cjhopman 2013/03/11 23:54:21 Well, we have no way to see this help message (exc
shashi 2013/03/12 00:26:23 Alright, since this is just a temporary step and w
1665 <echo> release: Builds the application. The generated apk file must be</echo>
1666 <echo> signed before it is published.</echo>
1667 <echo> The 'nodeps' target can be used to only build the</e cho>
1668 <echo> current project and ignore the libraries using:</ech o>
1669 <echo> 'ant nodeps release'</echo>
1670 <echo> instrument:Builds an instrumented package and signs it with a</ echo>
1671 <echo> debug key.</echo>
1672 <echo> test: Runs the tests. Project must be a test project and</ echo>
1673 <echo> must have been built. Typical usage would be:</echo>
1674 <echo> ant [emma] debug install test</echo>
1675 <echo> emma: Transiently enables code coverage for subsequent</ec ho>
1676 <echo> targets.</echo>
1677 <echo> install: Installs the newly build package. Must either be use d</echo>
1678 <echo> in conjunction with a build target (debug/release/</ echo>
1679 <echo> instrument) or with the proper suffix indicating</ec ho>
1680 <echo> which package to install (see below).</echo>
1681 <echo> If the application was previously installed, the</ec ho>
1682 <echo> application is reinstalled if the signature matches. </echo>
1683 <echo> installd: Installs (only) the debug package.</echo>
1684 <echo> installr: Installs (only) the release package.</echo>
1685 <echo> installi: Installs (only) the instrumented package.</echo>
1686 <echo> installt: Installs (only) the test and tested packages (unless </echo>
1687 <echo> nodeps is used as well.</echo>
1688 <echo> uninstall: Uninstalls the application from a running emulator o r</echo>
1689 <echo> device. Also uninstall tested package if applicable< /echo>
1690 <echo> unless 'nodeps' is used as well.</echo>
1691 </target>
1692 </project> 1088 </project>
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698