Release 1.57
[acal.git] / build.xml
blob2b250c69f2674515cc219994621d471e17c349a2
1 <?xml version="1.0" encoding="UTF-8"?>
2 <project name="aCal" default="help">
4     <!-- The local.properties file is created and updated by the 'android' tool.
5          It contains the path to the SDK. It should *NOT* be checked into
6          Version Control Systems. -->
7     <property file="local.properties" />
9     <!-- The ant.properties file can be created by you. It is only edited by the
10          'android' tool to add properties to it.
11          This is the place to change some Ant specific build properties.
12          Here are some properties you may want to change/update:
14          source.dir
15              The name of the source directory. Default is 'src'.
16          out.dir
17              The name of the output directory. Default is 'bin'.
19          For other overridable properties, look at the beginning of the rules
20          files in the SDK, at tools/ant/build.xml
22          Properties related to the SDK location or the project target should
23          be updated using the 'android' tool with the 'update' action.
25          This file is an integral part of the build system for your
26          application and should be checked into Version Control Systems.
28          -->
29     <property file="ant.properties" />
31     <!-- The project.properties file is created and updated by the 'android'
32          tool, as well as ADT.
34          This contains project specific properties such as project target, and library
35          dependencies. Lower level build properties are stored in ant.properties
36          (or in .classpath for Eclipse projects).
38          This file is an integral part of the build system for your
39          application and should be checked into Version Control Systems. -->
40     <loadproperties srcFile="project.properties" />
42     <!-- quick check on sdk.dir -->
43     <fail
44             message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through an env var"
45             unless="sdk.dir"
46     />
49 <!-- extension targets. Uncomment the ones where you want to do custom work
50      in between standard targets -->
51 <!--
52     <target name="-pre-build">
53     </target>
54     <target name="-pre-compile">
55     </target>
57     /* This is typically used for code obfuscation.
58        Compiled code location: ${out.classes.absolute.dir}
59        If this is not done in place, override ${out.dex.input.absolute.dir} */
60 -->
61     <target name="-post-compile">
62                 <antcall target="optimize"/>
63     </target>
64         
66         <!-- We keep our keystore & credentials in here, but it isn't in version control -->
67         <property file="secure.properties" />
68         
69         <!-- Copy Constants.java to our source tree, replacing custom tokens with values in
70                 build.properties. The configuration depends on "clean" because otherwise the
71                 build system will not detect changes in the configuration. -->
72         <target name="config">
73         
74                 <property name="config-target-path" value="${source.dir}/com/morphoss/acal"/>
75         
76                 <!-- Copy the configuration file, replacing tokens in the file. -->
77                 <copy file="config/Constants.java" todir="${config-target-path}" overwrite="true" encoding="utf-8">
78                         <filterset>
79                                 <filter token="This is the original file which it is safe to modify."
80                                                 value="This file is autogenerated.  Do not modify this file!  Modify the original instead."/>
81                                 <filter token="CONFIG.DEBUG_MODE" value="${config.debug_mode}"/>
82                         </filterset>
83                 </copy>
84         
85                 <!-- Now set it to read-only, as we don't want people accidentally
86                     editing the wrong one. NOTE: This step is unnecessary, but I do
87                     it so the developers remember that this is not the original file. -->
88                 <chmod file="${config-target-path}/Constants.java" perm="-w"/>
89                 <attrib file="${config-target-path}/Constants.java" readonly="true"/>
90         </target>
92         <!-- ================================================= -->
93     <!-- Optimisation with ProGuard -->
94     <!-- ================================================= -->
95          
96         <property name="proguard-dir" value="proguard"/>
97         <property name="unoptimized" value="${proguard-dir}/unoptimized.jar"/>
98         <property name="optimized" value="${proguard-dir}/optimized.jar"/>
99         <property name="out.dir" value="bin" />
100         <property name="out.classes.dir" value="${out.dir}/classes" />
102         <target name="optimize" unless="nooptimize">
103                 <jar basedir="${out.classes.dir}" destfile="${unoptimized}"/>
104                  
105                 <java jar="${proguard-dir}/proguard.jar" fork="true" failonerror="true">
106                         <jvmarg value="-Dmaximum.inlined.code.length=16"/>
107                         <arg value="@proguard.cfg"/>      
108                         <arg value="-injars ${unoptimized}"/>
109                         <arg value="-outjars ${optimized}"/>
110                         <arg value="-libraryjars ${android.jar}"/>
111                 </java>     
112                  
113                 <!-- Delete source pre-optimized jar -->     
114                 <!--delete file="${unoptimized}"/-->
115                  
116                 <!-- Unzip target optimization jar to original output, and delete optimized.jar -->
117                 <delete dir="${out.classes.dir}"/>
118                 <mkdir dir="${out.classes.dir}"/>
119                 <unzip src="${proguard-dir}/optimized.jar" dest="${out.classes.dir}"/>
120                  
121                 <!-- Delete optimized jar (now unzipped into bin directory) -->
122                 <delete file="optimized.jar"/>
123          
124         </target>
126         <!-- Import the actual build file.
128          To customize existing targets, there are two options:
129          - Customize only one target:
130              - copy/paste the target into this file, *before* the
131                <import> task.
132              - customize it to your needs.
133          - Customize the whole content of build.xml
134              - copy/paste the content of the rules files (minus the top node)
135                into this file, replacing the <import> task.
136              - customize to your needs.
138          ***********************
139          ****** IMPORTANT ******
140          ***********************
141          In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
142          in order to avoid having your file be overridden by tools such as "android update project"
143     -->
144     <!-- version-tag: 1 -->
145     <import file="${sdk.dir}/tools/ant/build.xml" />
147 </project>