362 lines
14 KiB
XML
362 lines
14 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<project name="OsmAnd" default="help">
|
|
|
|
<property file="local.properties" />
|
|
<property file="ant.properties" />
|
|
<loadproperties srcFile="project.properties" />
|
|
|
|
<!-- 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"
|
|
unless="sdk.dir" />
|
|
|
|
<property name="use.dir" value="../OsmAnd-java/src" />
|
|
<property name="use.absolute.dir" location="${use.dir}" />
|
|
<property name="src.absolute.dir" location="src" />
|
|
<property name="base.dir" location="." />
|
|
|
|
|
|
<target name="download_resources">
|
|
<get src="http://builder.osmand.net:81/binaries/android/OsmAndCore_wrapper.jar"
|
|
dest="libs/OsmAndCore_wrapper.jar" usetimestamp="true"/>
|
|
<get src="http://builder.osmand.net:81/binaries/android/OsmAndCore_android.aar"
|
|
dest="OsmAndCore_android.aar" usetimestamp="true"/>
|
|
</target>
|
|
|
|
<target name="use_qt_core" depends="download_resources">
|
|
<unzip src="OsmAndCore_android.aar" dest="libs">
|
|
<patternset>
|
|
<include name="jni/armeabi-v7a/*"/>
|
|
</patternset>
|
|
<cutdirsmapper dirs="1"/>
|
|
</unzip>
|
|
<unzip src="OsmAndCore_android.aar" dest=".">
|
|
<patternset>
|
|
<include name="assets/**/*"/>
|
|
</patternset>
|
|
</unzip>
|
|
</target>
|
|
|
|
<target name="fix_apostrophe_issues">
|
|
<replace token="version='1.0'" value="version="1.0"">
|
|
<fileset dir="res" includes="**/strings.xml" />
|
|
</replace>
|
|
<replace token="encoding='utf-8'" value="encoding="utf-8"">
|
|
<fileset dir="res" includes="**/strings.xml" />
|
|
</replace>
|
|
|
|
<replaceregexp match="([^\\])'" replace="\1\\\\'" flags="-g" byline="off">
|
|
<fileset dir="res" includes="**/strings.xml" />
|
|
</replaceregexp>
|
|
</target>
|
|
|
|
|
|
<target name="copy_sherpafy">
|
|
<copy todir="gen/net/osmand/plus">
|
|
<fileset dir="gen/net/osmand/sherpafy">
|
|
<include name="R.java" />
|
|
</fileset>
|
|
</copy>
|
|
<replaceregexp file="gen/net/osmand/plus/R.java" match='package (.*);' replace='package net.osmand.plus;' byline="true" />
|
|
</target>
|
|
|
|
<target name="copy_resources">
|
|
<copy todir="assets">
|
|
<fileset dir="../../resources/">
|
|
<include name="specialphrases/**" />
|
|
<include name="voice/**/*.p" />
|
|
</fileset>
|
|
</copy>
|
|
<copy todir="res/">
|
|
<fileset dir="../../resources/rendering_styles/style-icons/" >
|
|
<include name="**/*" />
|
|
</fileset>
|
|
</copy>
|
|
<copy todir="${src.absolute.dir}/net/osmand/router/">
|
|
<fileset dir="../../resources/routing/">
|
|
<include name="*.xml" />
|
|
</fileset>
|
|
</copy>
|
|
<sync todir="assets/help/">
|
|
<fileset dir="../../help/">
|
|
<include name="*.html" />
|
|
<include name="images/**/*.png" />
|
|
</fileset>
|
|
</sync>
|
|
<copy todir="assets/help">
|
|
<fileset dir="assets/">
|
|
<include name="style.css" />
|
|
</fileset>
|
|
</copy>
|
|
<copy todir="${src.absolute.dir}/net/osmand/render/">
|
|
<fileset dir="../../resources/rendering_styles/">
|
|
<include name="*.xml" />
|
|
</fileset>
|
|
</copy>
|
|
<copy todir="${src.absolute.dir}/net/osmand/osm/">
|
|
<fileset dir="../../resources/obf_creation/">
|
|
<include name="rendering_types.xml" />
|
|
</fileset>
|
|
</copy>
|
|
<copy todir="${src.absolute.dir}/net/osmand/map/">
|
|
<fileset dir="../../resources/countries-info/">
|
|
<include name="regions.ocbf" />
|
|
</fileset>
|
|
</copy>
|
|
</target>
|
|
|
|
<!-- Import the actual build file.
|
|
|
|
To customize existing targets, there are two options:
|
|
- Customize only one target:
|
|
- copy/paste the target into this file, *before* the
|
|
<import> task.
|
|
- customize it to your needs.
|
|
- Customize the whole content of build.xml
|
|
- copy/paste the content of the rules files (minus the top node)
|
|
into this file, replacing the <import> task.
|
|
- customize to your needs.
|
|
|
|
***********************
|
|
****** IMPORTANT ******
|
|
***********************
|
|
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: custom -->
|
|
<import file="${sdk.dir}/tools/ant/build.xml" />
|
|
|
|
|
|
<!-- ******************** -->
|
|
<!-- OVERRIDE TARGET prepare resources -->
|
|
<!-- Extra target -->
|
|
<target name="-pre-build" depends="download_resources,copy_resources,fix_apostrophe_issues">
|
|
<if>
|
|
<condition>
|
|
<isset property="versionFeatures" />
|
|
</condition>
|
|
<then>
|
|
<replaceregexp file="res/values/no_translate.xml" match='versionFeatures">(.*)<' replace='versionFeatures">${versionFeatures}<' byline="true" />
|
|
</then>
|
|
</if>
|
|
<if>
|
|
<condition>
|
|
<isset property="net.osmand.sherpafy" />
|
|
</condition>
|
|
<then>
|
|
<property name="package.name" value="net.osmand.sherpafy" />
|
|
<property name="app.name" value="Sherpafy" />
|
|
<replaceregexp file="AndroidManifest.xml" match='"@drawable/([^\s]*)"' replace='"@drawable/icon_sherpafy"' byline="true" />
|
|
</then>
|
|
</if>
|
|
<if>
|
|
<condition>
|
|
<isset property="net.osmand" />
|
|
</condition>
|
|
<then>
|
|
<property name="package.name" value="net.osmand" />
|
|
<property name="app.name" value="OsmAnd" />
|
|
<replaceregexp file="AndroidManifest.xml" match='"@drawable/([^\s]*)"' replace='"@drawable/icon_free"' byline="true" />
|
|
</then>
|
|
</if>
|
|
<if>
|
|
<condition>
|
|
<isset property="net.osmand.plus" />
|
|
</condition>
|
|
<then>
|
|
<property name="package.name" value="net.osmand.plus" />
|
|
<property name="app.name" value="OsmAnd+" />
|
|
<replaceregexp file="AndroidManifest.xml" match='"@drawable/([^\s]*)"' replace='"@drawable/icon"' byline="true" />
|
|
</then>
|
|
</if>
|
|
<if>
|
|
<condition>
|
|
<isset property="package.name" />
|
|
</condition>
|
|
<then>
|
|
<replaceregexp file="AndroidManifest.xml" match='package="(.*)"' replace='package="${package.name}"' byline="true" />
|
|
<replaceregexp file="AndroidManifest.xml" match='android:process="(.*)"' replace='android:process="${package.name}"' byline="true" />
|
|
<replaceregexp file="res/values/no_translate.xml" match='"app_name">(.*)<' replace='"app_name">${app.name}<' byline="true" />
|
|
<replaceregexp file="res/layout/search_address.xml" match='xmlns:custom="http://schemas.android.com/apk/res/(.*)"'
|
|
replace='xmlns:custom="http://schemas.android.com/apk/res/${package.name}"' byline="true" />
|
|
<replaceregexp file="res/layout/navigate_point.xml" match='xmlns:custom="http://schemas.android.com/apk/res/(.*)"'
|
|
replace='xmlns:custom="http://schemas.android.com/apk/res/${package.name}"' byline="true" />
|
|
</then>
|
|
</if>
|
|
<if>
|
|
<condition>
|
|
<isset property="build.version.code" />
|
|
</condition>
|
|
<then>
|
|
<replaceregexp file="AndroidManifest.xml" match='android:versionCode="(.*)"' replace='android:versionCode="${build.version.code}"' byline="true" />
|
|
<replaceregexp file="AndroidManifest.xml" match='android:debuggable="true"' replace='android:debuggable="false"' byline="true" />
|
|
</then>
|
|
</if>
|
|
<if>
|
|
<condition>
|
|
<isset property="build.version" />
|
|
</condition>
|
|
<then>
|
|
<replaceregexp file="res/values/no_translate.xml" match='"app_version">(.*)<' replace='"app_version">${build.version}<' byline="true" />
|
|
</then>
|
|
</if>
|
|
|
|
</target>
|
|
|
|
|
|
<!-- ******************** -->
|
|
<!-- OVERRIDE TARGET to replace strings for compilation -->
|
|
<!-- Code Generation: compile resources (aapt -> R.java), aidl, renderscript -->
|
|
<!-- Compiles this project's .java files into .class files. -->
|
|
<target name="-compile" depends="-build-setup, -pre-build, -code-gen, -pre-compile">
|
|
<!-- osmchange : Osmand plus support -->
|
|
<mkdir dir="${gen.absolute.dir}/net/osmand/plus" />
|
|
<if>
|
|
<condition>
|
|
<isset property="net.osmand.sherpafy" />
|
|
</condition>
|
|
<then>
|
|
<copy todir="${gen.absolute.dir}/net/osmand/plus">
|
|
<fileset dir="${gen.absolute.dir}/net/osmand/sherpafy">
|
|
<include name="R.java" />
|
|
</fileset>
|
|
</copy>
|
|
</then>
|
|
</if>
|
|
<if>
|
|
<condition>
|
|
<isset property="net.osmand" />
|
|
</condition>
|
|
<then>
|
|
<copy todir="${gen.absolute.dir}/net/osmand/plus">
|
|
<fileset dir="${gen.absolute.dir}/net/osmand">
|
|
<include name="R.java" />
|
|
</fileset>
|
|
</copy>
|
|
</then>
|
|
</if>
|
|
<replaceregexp file="${gen.absolute.dir}/net/osmand/plus/R.java" match='package (.*);' replace='package net.osmand.plus;' byline="true" />
|
|
<!-- osmchange : Osmand plus support -->
|
|
|
|
<do-only-if-manifest-hasCode elseText="hasCode = false. Skipping...">
|
|
<!-- merge the project's own classpath and the tested project's classpath -->
|
|
<path id="project.javac.classpath">
|
|
<path refid="project.all.jars.path" />
|
|
<path refid="tested.project.classpath" />
|
|
</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}" />
|
|
<!-- osmchange -->
|
|
<src path="${use.absolute.dir}" />
|
|
<exclude name="**/PlatformUtil.java" />
|
|
<!-- osmchange -->
|
|
</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}/Manifest.class ${project.app.package.path}/Manifest$*.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>
|
|
|
|
|
|
|
|
<!-- ******************** -->
|
|
<!-- OVERRIDE TARGET to not zip qz in aapt -->
|
|
<!-- Code Generation: compile resources (aapt -> R.java), aidl, renderscript -->
|
|
<target name="-code-gen">
|
|
<!-- always merge manifest -->
|
|
<mergemanifest
|
|
appManifest="${manifest.abs.file}"
|
|
outManifest="${out.manifest.abs.file}"
|
|
enabled="${manifestmerger.enabled}">
|
|
<library refid="project.library.manifest.file.path" />
|
|
</mergemanifest>
|
|
|
|
<do-only-if-manifest-hasCode
|
|
elseText="hasCode = false. Skipping aidl/renderscript/R.java">
|
|
<echo level="info">Handling aidl files...</echo>
|
|
<aidl executable="${aidl}"
|
|
framework="${project.target.framework.aidl}"
|
|
libraryBinAidlFolderPathRefid="project.library.bin.aidl.folder.path"
|
|
genFolder="${gen.absolute.dir}"
|
|
aidlOutFolder="${out.aidl.absolute.dir}">
|
|
<source path="${source.absolute.dir}"/>
|
|
</aidl>
|
|
|
|
<echo level="info">----------</echo>
|
|
<echo level="info">Handling Resources...</echo>
|
|
<aapt executable="${aapt}"
|
|
command="package"
|
|
verbose="${verbose}"
|
|
manifest="${out.manifest.abs.file}"
|
|
originalManifestPackage="${project.app.package}"
|
|
androidjar="${project.target.android.jar}"
|
|
rfolder="${gen.absolute.dir}"
|
|
nonConstantId="${android.library}"
|
|
libraryResFolderPathRefid="project.library.res.folder.path"
|
|
libraryPackagesRefid="project.library.packages"
|
|
libraryRFileRefid="project.library.bin.r.file.path"
|
|
ignoreAssets="${aapt.ignore.assets}"
|
|
binFolder="${out.absolute.dir}"
|
|
proguardFile="${out.absolute.dir}/proguard.txt">
|
|
<res path="${out.res.absolute.dir}" />
|
|
<res path="${resource.absolute.dir}" />
|
|
<nocompress extension="qz"/>
|
|
</aapt>
|
|
|
|
<echo level="info">----------</echo>
|
|
<echo level="info">Handling BuildConfig class...</echo>
|
|
<buildconfig
|
|
genFolder="${gen.absolute.dir}"
|
|
package="${project.app.package}"
|
|
buildType="${build.is.packaging.debug}"
|
|
previousBuildType="${build.last.is.packaging.debug}"/>
|
|
|
|
</do-only-if-manifest-hasCode>
|
|
</target>
|
|
|
|
</project>
|