diff options
| author | Bananeweizen <bananeweizen@gmx.de> | 2013-07-07 18:33:43 +0200 |
|---|---|---|
| committer | Bananeweizen <bananeweizen@gmx.de> | 2013-07-07 18:33:43 +0200 |
| commit | 9a3c86a521f12fef3699f34d28d2f5e75145f622 (patch) | |
| tree | f18772ab55ed6466ec0c64f26e6e60a670789af1 /cgeo-calendar | |
| parent | 9a308427e6b5956ed0cc4ac9487cc758a832bc22 (diff) | |
| download | cgeo-9a3c86a521f12fef3699f34d28d2f5e75145f622.zip cgeo-9a3c86a521f12fef3699f34d28d2f5e75145f622.tar.gz cgeo-9a3c86a521f12fef3699f34d28d2f5e75145f622.tar.bz2 | |
refactoring: make calendar build with Ant
Diffstat (limited to 'cgeo-calendar')
| -rw-r--r-- | cgeo-calendar/ant.properties | 5 | ||||
| -rw-r--r-- | cgeo-calendar/build.xml | 98 | ||||
| -rw-r--r-- | cgeo-calendar/proguard-project.txt | 32 | ||||
| -rw-r--r-- | cgeo-calendar/proguard.cfg | 48 | ||||
| -rw-r--r-- | cgeo-calendar/project.properties | 3 |
5 files changed, 132 insertions, 54 deletions
diff --git a/cgeo-calendar/ant.properties b/cgeo-calendar/ant.properties index 2537ef3..9d4723d 100644 --- a/cgeo-calendar/ant.properties +++ b/cgeo-calendar/ant.properties @@ -15,9 +15,12 @@ # 'key.alias' for the name of the key to use. # The password will be asked during the build when you use the 'release' target. -proguard.config=proguard.cfg proguard.jar=../main/support/proguard.jar +#jar.libs.dir=../main/libs +#external.libs.dir=../main/libs +#source.dir=src;../main/src + # The following line is needed to resolve the dependency to cgeo.calendar.ICalendar in the main project extensible.classpath=../main/bin/classes diff --git a/cgeo-calendar/build.xml b/cgeo-calendar/build.xml index a4c8db4..b7aecaa 100644 --- a/cgeo-calendar/build.xml +++ b/cgeo-calendar/build.xml @@ -4,7 +4,7 @@ <!-- 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" />
+ <loadproperties srcFile="local.properties" />
<!-- The ant.properties file can be created by you. It is only edited by the
'android' tool to add properties to it.
@@ -38,7 +38,7 @@ This file is an integral part of the build system for your
application and should be checked into Version Control Systems. -->
<loadproperties srcFile="project.properties" />
-
+
<!-- The private.properties file sets api-keys as well as keystore,
certificate and passwords (if you want).
See /templates/private.properties for more information. -->
@@ -46,11 +46,10 @@ <!-- quick check on sdk.dir -->
<fail
- message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through an env var"
+ message="sdk.dir is missing. Make sure to generate local.properties using 'android update project'"
unless="sdk.dir"
/>
-
<!-- extension targets. Uncomment the ones where you want to do custom work
in between standard targets -->
@@ -68,6 +67,95 @@ <target name="-post-compile">
</target>
-->
+
+ <!-- modified to be able to change compiler arguments -->
+ <property name="generated.dir" value="annotation_gen" />
+ <property name="generated.absolute.dir" location="${generated.dir}" />
+ <property name="java.compilerargs" value="-s '${generated.absolute.dir}'" />
+ <target name="-pre-compile">
+ <mkdir dir="${generated.absolute.dir}" />
+ </target>
+ <target name="-compile" depends="-pre-build, -build-setup, -code-gen, -pre-compile">
+ <do-only-if-manifest-hasCode elseText="hasCode = false. Skipping...">
+ <!-- merge the project's own classpath and the main project's classpath -->
+ <path id="project.javac.classpath">
+ <path refid="project.all.jars.path" />
+ <path refid="tested.project.classpath" />
+ <path path="${java.compiler.classpath}" />
+ <fileset dir="../main/compile-libs" includes="*.jar"/> <!-- added -->
+ <fileset dir="../main/libs" includes="*.jar"/> <!-- added -->
+ <path path="../main/bin/classes" /> <!-- added -->
+ </path>
+ <javac encoding="${java.encoding}"
+ source="${java.source}" target="${java.target}"
+ debug="true" extdirs="" includeantruntime="false"
+ destdir="${out.classes.absolute.dir}"
+ bootclasspathref="project.target.class.path"
+ verbose="${verbose}"
+ classpathref="project.javac.classpath"
+ fork="${need.javac.fork}">
+ <src path="${source.absolute.dir}" />
+ <src path="${gen.absolute.dir}" />
+ <compilerarg line="${java.compilerargs}" />
+ </javac>
+
+ <!-- if the project is instrumented, intrument the classes -->
+ <if condition="${build.is.instrumented}">
+ <then>
+ <echo level="info">Instrumenting classes from ${out.absolute.dir}/classes...</echo>
+
+ <!-- build the filter to remove R, Manifest, BuildConfig -->
+ <getemmafilter
+ appPackage="${project.app.package}"
+ libraryPackagesRefId="project.library.packages"
+ filterOut="emma.default.filter"/>
+
+ <!-- define where the .em file is going. This may have been
+ setup already if this is a library -->
+ <property name="emma.coverage.absolute.file" location="${out.absolute.dir}/coverage.em" />
+
+ <!-- It only instruments class files, not any external libs -->
+ <emma enabled="true">
+ <instr verbosity="${verbosity}"
+ mode="overwrite"
+ instrpath="${out.absolute.dir}/classes"
+ outdir="${out.absolute.dir}/classes"
+ metadatafile="${emma.coverage.absolute.file}">
+ <filter excludes="${emma.default.filter}" />
+ <filter value="${emma.filter}" />
+ </instr>
+ </emma>
+ </then>
+ </if>
+
+ <!-- if the project is a library then we generate a jar file -->
+ <if condition="${project.is.library}">
+ <then>
+ <echo level="info">Creating library output jar file...</echo>
+ <property name="out.library.jar.file" location="${out.absolute.dir}/classes.jar" />
+ <if>
+ <condition>
+ <length string="${android.package.excludes}" trim="true" when="greater" length="0" />
+ </condition>
+ <then>
+ <echo level="info">Custom jar packaging exclusion: ${android.package.excludes}</echo>
+ </then>
+ </if>
+
+ <propertybyreplace name="project.app.package.path" input="${project.app.package}" replace="." with="/" />
+
+ <jar destfile="${out.library.jar.file}">
+ <fileset dir="${out.classes.absolute.dir}"
+ includes="**/*.class"
+ excludes="${project.app.package.path}/R.class ${project.app.package.path}/R$*.class ${project.app.package.path}/BuildConfig.class"/>
+ <fileset dir="${source.absolute.dir}" excludes="**/*.java ${android.package.excludes}" />
+ </jar>
+ </then>
+ </if>
+
+ </do-only-if-manifest-hasCode>
+ </target>
+ <!-- end of modifications for compiler arguments -->
<!-- Import the actual build file.
@@ -87,7 +175,7 @@ In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
in order to avoid having your file be overridden by tools such as "android update project"
-->
- <!-- version-tag: 1 -->
+ <!-- version-tag: custom -->
<import file="${sdk.dir}/tools/ant/build.xml" />
</project>
diff --git a/cgeo-calendar/proguard-project.txt b/cgeo-calendar/proguard-project.txt new file mode 100644 index 0000000..453d1a6 --- /dev/null +++ b/cgeo-calendar/proguard-project.txt @@ -0,0 +1,32 @@ +# We use the general android proguard config. See project.properties for details. + +# Suppress notes about classes from the general config, which we don't use at all. +-dontnote **.ILicensingService + +-optimizationpasses 2 +-dontobfuscate +-allowaccessmodification +-optimizations !code/simplification/arithmetic,!code/allocation/variable + +# apache.commons.collections has some bean related collections, which are undefined in Android +-dontwarn java.beans.* + +#-dontnote org.apache.commons.logging.** + +-keep public class cgeo.geocaching.* +-dontwarn cgeo.geocaching.utils.Log + +-keepclasseswithmembers class * { + public <init>(android.content.Context, android.util.AttributeSet); +} + +-keepclasseswithmembers class * { + public <init>(android.content.Context, android.util.AttributeSet, int); +} + +-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*(...); +}
\ No newline at end of file diff --git a/cgeo-calendar/proguard.cfg b/cgeo-calendar/proguard.cfg deleted file mode 100644 index a6b8658..0000000 --- a/cgeo-calendar/proguard.cfg +++ /dev/null @@ -1,48 +0,0 @@ --optimizationpasses 2 --dontpreverify --dontobfuscate --allowaccessmodification --optimizations !code/simplification/arithmetic,!code/allocation/variable - --dontwarn java.beans.* --dontwarn org.mapsforge.android.maps.Test* --dontwarn android.support.v4.** - --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 cgeo.geocaching.* - --keepclasseswithmembers class * { - public <init>(android.content.Context, android.util.AttributeSet); -} - --keepclasseswithmembers class * { - public <init>(android.content.Context, android.util.AttributeSet, int); -} - --keepclassmembers enum * { - public static **[] values(); - public static ** valueOf(java.lang.String); -} - --keep class * implements android.os.Parcelable { - public static final android.os.Parcelable$Creator *; -} - --keepclassmembers class **.R$* { - public static <fields>; -} - --keepclassmembers class cgeo.geocaching.** { - public void *(android.view.View); -} - --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*(...); -}
\ No newline at end of file diff --git a/cgeo-calendar/project.properties b/cgeo-calendar/project.properties index b120021..54e1b7d 100644 --- a/cgeo-calendar/project.properties +++ b/cgeo-calendar/project.properties @@ -6,6 +6,9 @@ # To customize properties used by the Ant build system use, # "ant.properties", and override values to adapt the script to your # project structure. +# +# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): +proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt # Project target. target=Google Inc.:Google APIs:4 |
