| <?xml version="1.0" encoding="UTF-8"?> |
| <project name="MyAndroidApp" default="help"> |
| |
| <!-- The local.properties file is created and updated by the 'android' |
| tool. |
| It contains the path to the SDK. It should *NOT* be checked into |
| Version Control Systems. --> |
| <property file="local.properties" /> |
| |
| <!-- The build.properties file can be created by you and is never touched |
| by the 'android' tool. This is the place to change some of the |
| default property values used by the Ant rules. |
| Here are some properties you may want to change/update: |
| |
| source.dir |
| The name of the source directory. Default is 'src'. |
| out.dir |
| The name of the output directory. Default is 'bin'. |
| |
| Properties related to the SDK location or the project target should |
| be updated using the 'android' tool with the 'update' action. |
| |
| This file is an integral part of the build system for your |
| application and should be checked into Version Control Systems. |
| |
| --> |
| <property file="build.properties" /> |
| |
| <!-- The default.properties file is created and updated by the 'android' |
| tool, as well as ADT. |
| This file is an integral part of the build system for your |
| application and should be checked into Version Control Systems. --> |
| <property file="default.properties" /> |
| |
| <!-- Custom Android task to deal with the project target, and import the |
| proper rules. |
| This requires ant 1.6.0 or above. --> |
| <path id="android.antlibs"> |
| <pathelement path="${sdk.dir}/tools/lib/anttasks.jar" /> |
| <pathelement path="${sdk.dir}/tools/lib/sdklib.jar" /> |
| <pathelement path="${sdk.dir}/tools/lib/androidprefs.jar" /> |
| </path> |
| |
| <taskdef name="setup" |
| classname="com.android.ant.SetupTask" |
| classpathref="android.antlibs" /> |
| |
| <!-- extension targets. Uncomment the ones where you want to do custom work |
| in between standard targets --> |
| <!-- |
| <target name="-pre-build"> |
| </target> |
| <target name="-pre-compile"> |
| </target> |
| |
| [This is typically used for code obfuscation. |
| Compiled code location: ${out.classes.absolute.dir} |
| If this is not done in place, override ${out.dex.input.absolute.dir}] |
| <target name="-post-compile"> |
| </target> |
| --> |
| |
| |
| <!-- Execute the Android Setup task that will setup some properties |
| specific to the target, and import the build rules files. |
| |
| The rules file is imported from |
| <SDK>/platforms/<target_platform>/ant/ant_rules_r#.xml |
| |
| To customize existing targets, there are two options: |
| - Customize only one target: |
| - copy/paste the target into this file, *before* the |
| <setup> task. |
| - customize it to your needs. |
| - Customize the whole script. |
| - copy/paste the content of the rules files (minus the top node) |
| into this file, *after* the <setup> task |
| - disable the import of the rules by changing the setup task |
| below to <setup import="false" />. |
| - customize to your needs. |
| --> |
| |
| <setup /> |
| |
| <!-- Define a place for the optimized classes. --> |
| <property name="out.proguard.absolute.jar" |
| location="${out.absolute.dir}/classes-processed.jar" /> |
| |
| <!-- Define a obfuscation mapping file. --> |
| <property name="out.proguard.absolute.map" |
| location="${out.absolute.dir}/classes-processed.map" /> |
| |
| <!-- Redefine the dex help macro, so it converts the optimized classes.. --> |
| <macrodef name="dex-helper"> |
| <element name="external-libs" optional="yes" /> |
| <element name="extra-parameters" optional="yes" /> |
| <sequential> |
| <echo>Converting optimized files into ${intermediate.dex.file}...</echo> |
| <apply executable="${dx}" failonerror="true" parallel="true"> |
| <arg value="--dex" /> |
| <arg value="--output=${intermediate.dex.file}" /> |
| <extra-parameters /> |
| <arg line="${verbose.option}" /> |
| <fileset file="${out.proguard.absolute.jar}" /> |
| <external-libs /> |
| </apply> |
| </sequential> |
| </macrodef> |
| |
| <!-- Define the optimization target. --> |
| <taskdef resource="proguard/ant/task.properties" |
| classpath="/home/eric/ProGuard/releases/proguard4.5.1/lib/proguard.jar" /> |
| |
| <target name="-post-compile"> |
| <echo>Optimizing compiled files and libraries into ${out.proguard.absolute.jar}...</echo> |
| <proguard printmapping="${out.proguard.absolute.map}"> |
| <injar path="${out.classes.absolute.dir}" /> |
| <injar path="${external.libs.absolute.dir}" /> |
| <outjar path="${out.proguard.absolute.jar}" /> |
| <libraryjar refid="android.target.classpath" /> |
| |
| -dontpreverify |
| -repackageclasses '' |
| -allowaccessmodification |
| -optimizations !code/simplification/arithmetic |
| |
| <!-- |
| -renamesourcefileattribute SourceFile |
| -keepattributes SourceFile,LineNumberTable |
| --> |
| |
| -keepattributes *Annotation* |
| |
| -keep public class * extends android.app.Activity |
| -keep public class * extends android.app.Application |
| -keep public class * extends android.app.Service |
| -keep public class * extends android.content.BroadcastReceiver |
| -keep public class * extends android.content.ContentProvider |
| |
| -keep public class * extends android.view.View { |
| public <init>(android.content.Context); |
| public <init>(android.content.Context, android.util.AttributeSet); |
| public <init>(android.content.Context, android.util.AttributeSet, int); |
| public void set*(...); |
| } |
| |
| -keepclasseswithmembers class * { |
| public <init>(android.content.Context, android.util.AttributeSet); |
| } |
| |
| -keepclasseswithmembers class * { |
| public <init>(android.content.Context, android.util.AttributeSet, int); |
| } |
| |
| -keepclassmembers class * implements android.os.Parcelable { |
| static android.os.Parcelable$Creator CREATOR; |
| } |
| |
| -keepclassmembers class **.R$* { |
| public static <fields>; |
| } |
| |
| -keep public interface com.android.vending.licensing.ILicensingService |
| -dontnote com.android.vending.licensing.ILicensingService |
| |
| -keepclasseswithmembernames class * { |
| native <methods>; |
| } |
| |
| -keepclassmembers class * extends java.lang.Enum { |
| public static **[] values(); |
| public static ** valueOf(java.lang.String); |
| } |
| </proguard> |
| </target> |
| |
| </project> |