It depends on the SDK version you are using, specifically the included build files found in <android-sdk>/tools/ant
directory.
Android SDK >= 18
As of the SDK r18 and above it's as simple as adding a property to your ant.properties
file of the target (not test) project. So for example use
emma.filter=-*.test.*
To exlude all classes from a test package. You can find the emma filter syntax in the emma documentation.
Android SDK < 18
There's an issue for this. It involves the following:
- you have to modify the build file for your target project (not the test project)
- modify the build file by copy'n'pasting the
-emma-instrument
target from the imported android build files (you should find an explanation of this method in the standard project build file which you get by running android create/update project
)
modify the target according to the linked issue, it'll look like:
<target name="-emma-instrument" depends="compile">
<echo>Instrumenting classes from ${out.absolute.dir}/classes...</echo>
<!-- It only instruments class files, not any external libs -->
<emma enabled="true">
<instr verbosity="trace1"
mode="overwrite"
instrpath="${out.absolute.dir}/classes"
outdir="${out.absolute.dir}/classes">
<filter excludes="*.R,*.R$$*,${emma.exclusion.pattern}" />
</instr>
<!-- TODO: exclusion filters on R*.class and allowing custom exclusion from
user defined file -->
</emma>
</target>
an explanation of the exclusion filter syntax is available on the emma documentation
- either modify the modification or use the proposed ant property
emma.exclusion.pattern
to provide your own exclusions
For me this has worked like a charm on SDK tools r13.