Merge pull request #213 from alexey-pelykh/buildFix
Android SDK 17 broke old Ant script
This commit is contained in:
commit
f37f40eb00
3 changed files with 353 additions and 4 deletions
|
@ -18,3 +18,4 @@
|
|||
key.alias=osmand
|
||||
key.store=../../osmand_key
|
||||
jar.libs.dir=lib
|
||||
java.compilerargs=-Xlint
|
|
@ -38,9 +38,6 @@
|
|||
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" />
|
||||
|
||||
<!-- specify java.compilerArgs if they were not specified -->
|
||||
<property name="java.compilerargs" value=""/>
|
||||
|
||||
<!-- quick check on sdk.dir -->
|
||||
<fail
|
||||
|
@ -161,7 +158,6 @@
|
|||
<src path="${source.absolute.dir}" />
|
||||
|
||||
<!-- osmchange -->
|
||||
<compilerarg value="-Xlint"/>
|
||||
<src path="${use.absolute.dir}" />
|
||||
<exclude name="**/LogUtil.java" />
|
||||
<exclude name="**/OsmStorageWriter.java" />
|
||||
|
|
352
OsmAnd/build_sdk17.xml
Executable file
352
OsmAnd/build_sdk17.xml
Executable file
|
@ -0,0 +1,352 @@
|
|||
<?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="../DataExtractionOSM/src/" />
|
||||
<property name="use.absolute.dir" location="${use.dir}" />
|
||||
<property name="raw.absolute.dir" location="raw" />
|
||||
<property name="base.dir" location="." />
|
||||
|
||||
<!-- Altered generic setup -->
|
||||
<!-- Workaround issue that Android SDK17 has a bug that by default and unchangable looks for jars inside libs folder -->
|
||||
<target name="-setup">
|
||||
<if>
|
||||
<condition>
|
||||
<not><isset property="setup.done" /></not>
|
||||
</condition>
|
||||
<then>
|
||||
<echo>Creating output directories if needed...</echo>
|
||||
<mkdir dir="${resource.absolute.dir}" />
|
||||
<mkdir dir="${jar.libs.absolute.dir}" />
|
||||
<mkdir dir="${out.absolute.dir}" />
|
||||
<mkdir dir="${out.res.absolute.dir}" />
|
||||
|
||||
<property name="setup.done" value="true" />
|
||||
<echo>Gathering info for ${ant.project.name}...</echo>
|
||||
<!-- load project properties, resolve Android target, library dependencies
|
||||
and set some properties with the results.
|
||||
All property names are passed as parameters ending in -Out -->
|
||||
<setup
|
||||
projectTypeOut="android.project.type"
|
||||
androidJarFileOut="android.jar"
|
||||
androidAidlFileOut="android.aidl"
|
||||
renderScriptExeOut="renderscript"
|
||||
renderScriptIncludeDirOut="android.rs"
|
||||
bootclasspathrefOut="android.target.classpath"
|
||||
projectLibrariesRootOut="project.libraries"
|
||||
projectLibrariesJarsOut="original.project.libraries.jars"
|
||||
projectLibrariesResOut="project.libraries.res"
|
||||
projectLibrariesPackageOut="project.libraries.package"
|
||||
projectLibrariesLibsOut="project.libraries.libs"
|
||||
targetApiOut="target.api"
|
||||
verbose="${verbose}"
|
||||
/>
|
||||
|
||||
<!-- osmchange -->
|
||||
<path id="project.libraries.jars">
|
||||
<path refid="original.project.libraries.jars"/>
|
||||
<fileset dir="${jar.libs.absolute.dir}">
|
||||
<include name="*.jar"/>
|
||||
</fileset>
|
||||
</path>
|
||||
<!-- osmchange -->
|
||||
|
||||
<!-- sets a few boolean based on android.project.type
|
||||
to make the if task easier -->
|
||||
<condition property="project.is.library" else="false">
|
||||
<equals arg1="${android.project.type}" arg2="library" />
|
||||
</condition>
|
||||
<condition property="project.is.test" else="false">
|
||||
<equals arg1="${android.project.type}" arg2="test" />
|
||||
</condition>
|
||||
|
||||
<!-- If a test project, resolve absolute path to tested project. -->
|
||||
<if condition="${project.is.test}">
|
||||
<then>
|
||||
<property name="tested.project.absolute.dir" location="${tested.project.dir}" />
|
||||
</then>
|
||||
</if>
|
||||
</then>
|
||||
</if>
|
||||
</target>
|
||||
|
||||
<!-- Puts the project's resources into the output package file
|
||||
This actually can create multiple resource package in case
|
||||
Some custom apk with specific configuration have been
|
||||
declared in default.properties.
|
||||
-->
|
||||
<target name="-package-resources" depends="-crunch">
|
||||
<aapt executable="${aapt}"
|
||||
command="package"
|
||||
versioncode="${version.code}"
|
||||
versionname="${version.name}"
|
||||
debug="${build.is.packaging.debug}"
|
||||
manifest="AndroidManifest.xml"
|
||||
assets="${asset.absolute.dir}"
|
||||
androidjar="${android.jar}"
|
||||
apkfolder="${out.absolute.dir}"
|
||||
nocrunch="${build.packaging.nocrunch}"
|
||||
resourcefilename="${resource.package.file.name}"
|
||||
resourcefilter="${aapt.resource.filter}"
|
||||
projectLibrariesResName="project.libraries.res"
|
||||
projectLibrariesPackageName="project.libraries.package"
|
||||
previousBuildType="${build.last.target}"
|
||||
buildType="${build.target}">
|
||||
<res path="${out.res.absolute.dir}" />
|
||||
<res path="${resource.absolute.dir}" />
|
||||
</aapt>
|
||||
|
||||
<!-- osmchange -->
|
||||
<echo>Packaging extra raw resources...</echo>
|
||||
<zip destfile="${out.absolute.dir}/${resource.package.file.name}"
|
||||
basedir="${raw.absolute.dir}"
|
||||
update="true" />
|
||||
<!-- osmchange -->
|
||||
</target>
|
||||
|
||||
<!-- Extra target -->
|
||||
<target name="-pre-build">
|
||||
<delete dir="${raw.absolute.dir}" verbose="${verbose}" />
|
||||
<mkdir dir="${raw.absolute.dir}/classes" />
|
||||
<copy todir="${raw.absolute.dir}">
|
||||
<fileset dir="${use.absolute.dir}">
|
||||
<exclude name="**/*.java" />
|
||||
</fileset>
|
||||
</copy>
|
||||
<if>
|
||||
<condition>
|
||||
<isset property="net.osmand" />
|
||||
</condition>
|
||||
<then>
|
||||
<replaceregexp file="AndroidManifest.xml" match='"@drawable/icon"' replace='"@drawable/icon_free"' byline="true" />
|
||||
<replaceregexp file="AndroidManifest.xml" match='package="net.osmand.plus"' replace='package="net.osmand"' byline="true" />
|
||||
<replaceregexp file="AndroidManifest.xml" match='android:process="net.osmand.plus"' replace='android:process="net.osmand"' byline="true" />
|
||||
<replaceregexp file="res/values/no_translate.xml" match='"app_name">(.*)<' replace='"app_name">Osmand<' byline="true" />
|
||||
</then>
|
||||
<else>
|
||||
<replaceregexp file="AndroidManifest.xml" match='"@drawable/icon_free"' replace='"@drawable/icon"' byline="true" />
|
||||
<replaceregexp file="AndroidManifest.xml" match='package="net.osmand"' replace='package="net.osmand.plus"' byline="true" />
|
||||
<replaceregexp file="AndroidManifest.xml" match='android:process="net.osmand"' replace='android:process="net.osmand.plus"' byline="true" />
|
||||
</else>
|
||||
</if>
|
||||
<if>
|
||||
<condition>
|
||||
<isset property="net.osmand.plus" />
|
||||
</condition>
|
||||
<then>
|
||||
<replaceregexp file="res/values/no_translate.xml" match='"app_name">(.*)<' replace='"app_name">Osmand+<' 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>
|
||||
|
||||
<!-- Native section -->
|
||||
<if>
|
||||
<condition>
|
||||
<isset property="nativeoff"/>
|
||||
</condition>
|
||||
<then>
|
||||
<echo>Not using native, excluding from build</echo>
|
||||
<move file="${native.libs.absolute.dir}" tofile="${native.libs.absolute.dir}.skipped"/>
|
||||
</then>
|
||||
<else>
|
||||
<fail message="ndk.dir is missing. Make sure to generate local.properties or to inject it through an env var" unless="ndk.dir"/>
|
||||
<echo>Building native code</echo>
|
||||
|
||||
<exec command="sh ${ndk.dir}/ndk-build -j8 V=1 OSMAND_ARM_ONLY=true" failonerror="true"/>
|
||||
</else>
|
||||
</if>
|
||||
</target>
|
||||
|
||||
<!-- Compiles this project's .java files into .class files. -->
|
||||
<target name="-compile" depends="-build-setup, -pre-build, -code-gen, -pre-compile">
|
||||
<do-only-if-manifest-hasCode elseText="hasCode = false. Skipping...">
|
||||
<!-- osmchange : Osmand plus support -->
|
||||
<mkdir dir="${gen.absolute.dir}/net/osmand/plus"/>
|
||||
<copy todir="${gen.absolute.dir}/net/osmand/plus">
|
||||
<fileset dir="${gen.absolute.dir}/net/osmand">
|
||||
<include name="R.java" />
|
||||
</fileset>
|
||||
</copy>
|
||||
<replaceregexp file="${gen.absolute.dir}/net/osmand/plus/R.java" match='package net.osmand;' replace='package net.osmand.plus;' byline="true" />
|
||||
<!-- osmchange : Osmand plus support -->
|
||||
<!-- If android rules are used for a test project, its classpath should include
|
||||
tested project's location -->
|
||||
<condition property="extensible.classpath"
|
||||
value="${tested.project.absolute.dir}/bin/classes"
|
||||
else=".">
|
||||
<isset property="tested.project.absolute.dir" />
|
||||
</condition>
|
||||
<condition property="extensible.libs.classpath"
|
||||
value="${tested.project.absolute.dir}/${jar.libs.dir}"
|
||||
else="${jar.libs.dir}">
|
||||
<isset property="tested.project.absolute.dir" />
|
||||
</condition>
|
||||
<javac encoding="${java.encoding}"
|
||||
source="${java.source}" target="${java.target}"
|
||||
debug="true" extdirs="" includeantruntime="false"
|
||||
destdir="${out.classes.absolute.dir}"
|
||||
bootclasspathref="android.target.classpath"
|
||||
verbose="${verbose}"
|
||||
classpath="${extensible.classpath}"
|
||||
classpathref="project.libraries.jars"
|
||||
fork="${need.javac.fork}">
|
||||
<src path="${source.absolute.dir}" />
|
||||
<src path="${gen.absolute.dir}" />
|
||||
<classpath>
|
||||
<fileset dir="${extensible.libs.classpath}" includes="*.jar" />
|
||||
</classpath>
|
||||
<compilerarg line="${java.compilerargs}" />
|
||||
<!-- osmchange -->
|
||||
<src path="${use.absolute.dir}" />
|
||||
<exclude name="**/LogUtil.java" />
|
||||
<exclude name="**/OsmStorageWriter.java" />
|
||||
<exclude name="**/net/osmand/data/index/" />
|
||||
<exclude name="**/net/osmand/data/preparation/" />
|
||||
<exclude name="**/net/osmand/osm/util/" />
|
||||
<exclude name="**/net/osmand/swing/" />
|
||||
<exclude name="**/rtree/" />
|
||||
<!-- osmchange -->
|
||||
</javac>
|
||||
|
||||
<!-- if the project is a library then we generate a jar file -->
|
||||
<if condition="${project.is.library}">
|
||||
<then>
|
||||
<echo>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>Custom jar packaging exclusion: ${android.package.excludes}</echo>
|
||||
</then>
|
||||
</if>
|
||||
|
||||
<propertybyreplace name="manifest.package.path" input="${manifest.package}" replace="." with="/" />
|
||||
|
||||
<jar destfile="${out.library.jar.file}">
|
||||
<fileset dir="${out.classes.absolute.dir}"
|
||||
includes="**/*.class"
|
||||
excludes="${manifest.package.path}/R.class ${manifest.package.path}/R$*.class ${manifest.package.path}/Manifest.class ${manifest.package.path}/Manifest$*.class ${manifest.package.path}/BuildConfig.class"/>
|
||||
<fileset dir="${source.absolute.dir}" excludes="**/*.java ${android.package.excludes}" />
|
||||
</jar>
|
||||
</then>
|
||||
</if>
|
||||
|
||||
<!-- if the project is instrumented, intrument the classes -->
|
||||
<if condition="${build.is.instrumented}">
|
||||
<then>
|
||||
<echo>Instrumenting classes from ${out.absolute.dir}/classes...</echo>
|
||||
<!-- 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">
|
||||
<filter excludes="${manifest.package}.R,${manifest.package}.R$$*,${manifest.package}.BuildConfig" />
|
||||
<filter value="${emma.filter}" />
|
||||
</instr>
|
||||
</emma>
|
||||
</then>
|
||||
</if>
|
||||
</do-only-if-manifest-hasCode>
|
||||
</target>
|
||||
|
||||
<!--taskdef classname="net.bluecow.googlecode.ant.GoogleCodeUploadTask"
|
||||
classpath="ant-lib/ant-googlecode-0.0.2.jar" name="gcupload"/-->
|
||||
|
||||
<path id="lib.path">
|
||||
<fileset dir="ant-lib" includes="*.jar" />
|
||||
</path>
|
||||
|
||||
<target name="debug-nondk">
|
||||
<property name="nativeoff" value="true"/>
|
||||
<antcall target="debug"/>
|
||||
</target>
|
||||
|
||||
<target name="-post-package" if="nativeoff">
|
||||
<echo>Restoring ${native.libs.absolute.dir} to it's place...</echo>
|
||||
<move file="${native.libs.absolute.dir}.skipped" tofile="${native.libs.absolute.dir}"/>
|
||||
</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" />
|
||||
|
||||
<taskdef name="cpd" classname="net.sourceforge.pmd.cpd.CPDTask" classpathref="lib.path"/>
|
||||
|
||||
<target name="cpd" description="Search for cut-and-pasted code">
|
||||
<property name="cpd.report.xml" location="cpd.xml"/>
|
||||
<cpd minimumTokenCount="100" format="xml" outputFile="${cpd.report.xml}"
|
||||
ignoreLiterals="true" ignoreIdentifiers="true">
|
||||
<fileset dir="${source.absolute.dir}" includes="**/*.java"/>
|
||||
</cpd>
|
||||
</target>
|
||||
|
||||
<!-- NOT used now for night builds could be deleted
|
||||
<typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="lib.path" />
|
||||
<target name="update">
|
||||
<svn svnkit="true">
|
||||
<info target="." />
|
||||
</svn>
|
||||
<echo>Current revision: ${svn.info.rev}</echo>
|
||||
<svn svnkit="true">
|
||||
<update dir="." revision="HEAD" />
|
||||
<update dir="${use.absolute.dir}" revision="HEAD" />
|
||||
<info target="." />
|
||||
</svn>
|
||||
<echo>Updated to revision: ${svn.info.rev}</echo>
|
||||
<echo>Modyfing Version.java to include revision info: debug r${svn.info.rev}</echo>
|
||||
<replaceregexp file="${use.absolute.dir}/net/osmand/Version.java" match='(APP_DESCRIPTION.*=.*\").*(\".*)' replace='\1debug r${svn.info.rev}\2' byline="true" />
|
||||
</target>
|
||||
|
||||
<target name="nightbuild" depends="clean,update,debug">
|
||||
<ftp action="del" server="download.osmand.net" userid="${ftp.user}" password="${ftp.password}">
|
||||
<fileset>
|
||||
<include name="night-builds/OsmAnd-debug.apk" />
|
||||
</fileset>
|
||||
</ftp>
|
||||
|
||||
|
||||
<ftp server="download.osmand.net" remotedir="night-builds" userid="${ftp.user}" password="${ftp.password}" depends="yes">
|
||||
<fileset dir="bin">
|
||||
<include name="OsmAnd-debug.apk" />
|
||||
</fileset>
|
||||
</ftp>
|
||||
|
||||
</target> -->
|
||||
|
||||
</project>
|
Loading…
Reference in a new issue