mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-24 09:27:31 +09:00
284 lines
11 KiB
XML
284 lines
11 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!--
|
|
Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
|
Use of this source code is governed by a BSD-style license that can be
|
|
found in the LICENSE file.
|
|
-->
|
|
<project name="chrome_sdk_overrides" >
|
|
<!--
|
|
Redefinition of targets used by SDK tools.
|
|
Supported version: SDK tools revision 20.
|
|
|
|
SDK tools do not allow easy way of extending classpaths
|
|
for aidl and javac. This file defines targets which can be used to
|
|
override targets used by tools.
|
|
-->
|
|
<target name="-pre-compile">
|
|
<!--
|
|
Remove all .class files from the output directory. This prevents inclusion of incorrect .class
|
|
files in the final apk. For example, if a .java file was deleted, the apk should not contain
|
|
the .class files for that .java from previous builds.
|
|
-->
|
|
<delete>
|
|
<fileset dir="${out.classes.absolute.dir}" includes="**/*.class"/>
|
|
</delete>
|
|
</target>
|
|
|
|
<!--
|
|
Override the -compile target.
|
|
This target requires 'javac.custom.classpath' to be set to reference
|
|
of classpath to be used for javac. Also accepts custom path for
|
|
sources: 'javac.custom.sourcepath'.
|
|
-->
|
|
<target
|
|
name="-compile"
|
|
depends="-build-setup, -pre-build, -code-gen, -pre-compile">
|
|
<do-only-if-manifest-hasCode elseText="hasCode = false. Skipping..." >
|
|
<!-- If javac.srcdirs.additional isn't set, set it to an empty path. -->
|
|
<if>
|
|
<condition>
|
|
<not>
|
|
<isreference refid="javac.srcdirs.additional"/>
|
|
</not>
|
|
</condition>
|
|
<then>
|
|
<path id="javac.srcdirs.additional"/>
|
|
</then>
|
|
</if>
|
|
<javac
|
|
bootclasspathref="project.target.class.path"
|
|
classpathref="javac.custom.classpath"
|
|
debug="true"
|
|
destdir="${out.classes.absolute.dir}"
|
|
encoding="${java.encoding}"
|
|
extdirs=""
|
|
fork="${need.javac.fork}"
|
|
includeantruntime="false"
|
|
source="${java.source}"
|
|
target="${java.target}"
|
|
verbose="${verbose}">
|
|
<src path="${source.absolute.dir}"/>
|
|
<src path="${gen.absolute.dir}"/>
|
|
<src>
|
|
<path refid="javac.srcdirs.additional"/>
|
|
</src>
|
|
<compilerarg line="${java.compilerargs}"/>
|
|
</javac>
|
|
<!--
|
|
If the project is instrumented, then instrument the classes
|
|
TODO(shashishekhar): Add option to override emma filter.
|
|
-->
|
|
<if condition="${build.is.instrumented}">
|
|
<then>
|
|
<echo level="info">
|
|
Instrumenting classes from ${out.absolute.dir}/classes...
|
|
</echo>
|
|
<!-- build the default filter to remove R, Manifest, BuildConfig -->
|
|
<getemmafilter
|
|
appPackage="${project.app.package}"
|
|
filterOut="emma.default.filter"
|
|
libraryPackagesRefId="project.library.packages"/>
|
|
<!--
|
|
Define where the .em file is output.
|
|
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
|
|
instrpath="${out.absolute.dir}/classes"
|
|
metadatafile="${emma.coverage.absolute.file}"
|
|
mode="overwrite"
|
|
outdir="${out.absolute.dir}/classes"
|
|
verbosity="${verbosity}">
|
|
<filter excludes="${emma.default.filter}"/>
|
|
<filter value="${emma.filter}"/>
|
|
</instr>
|
|
</emma>
|
|
</then>
|
|
</if>
|
|
<!--
|
|
If the project needs a test jar then generate a jar containing
|
|
all compiled classes and referenced jars.
|
|
project.is.testapp is set by Android's ant build system based on the
|
|
target's manifest. It is true only for instrumentation apks.
|
|
-->
|
|
<if condition="${project.is.testapp}">
|
|
<then>
|
|
<echo level="info">Creating test jar file:
|
|
${ant.project.name}-debug.jar</echo>
|
|
<property-location name="create.test.jar.file"
|
|
location="${CHROMIUM_SRC}/build/android/ant/create-test-jar.js"/>
|
|
<script language="javascript" src="${create.test.jar.file}"/>
|
|
</then>
|
|
</if>
|
|
|
|
</do-only-if-manifest-hasCode>
|
|
</target>
|
|
|
|
<!--
|
|
For debug builds, the Android SDK tools create a key in ~/.android and sign the build with it.
|
|
This has caused all kinds of issues. Instead, the debug build should be signed with a key in
|
|
build/android/ant. The SDK tools do not provide any support for overriding that behavior and so
|
|
instead one must use the hack below.
|
|
-->
|
|
|
|
<!-- Disables automatic signing. -->
|
|
<property name="build.is.signing.debug" value="false"/>
|
|
|
|
<!-- TODO(cjhopman): Remove this property when all gyp files define the CHROMIUM_SRC property. -->
|
|
<property name="CHROMIUM_SRC" value="${PRODUCT_DIR}/../.." />
|
|
|
|
<property name="key.store" value="${CHROMIUM_SRC}/build/android/ant/chromium-debug.keystore"/>
|
|
<property name="key.store.password" value="chromium"/>
|
|
<property name="key.alias" value="chromiumdebugkey"/>
|
|
<property name="key.alias.password" value="chromium"/>
|
|
|
|
<!-- SDK tools assume that out.packaged.file is signed and name it "...-unaligned" -->
|
|
<property name="out.packaged.file"
|
|
value="${apks.dir}/${ant.project.name}-debug-unsigned.apk" />
|
|
<property name="out.unaligned.file"
|
|
value="${apks.dir}/${ant.project.name}-debug-unaligned.apk" />
|
|
|
|
<!-- By default, the SDK tools build only aligns the APK in the -do-debug target. -->
|
|
<target name="-do-debug"
|
|
depends="-set-debug-mode, -debug-obfuscation-check, -package, -post-package">
|
|
<!-- only create apk if *not* a library project -->
|
|
<do-only-if-not-library elseText="Library project: do not create apk..." >
|
|
<sequential>
|
|
<!-- Signs the APK -->
|
|
<echo level="info">Signing final apk...</echo>
|
|
<signapk
|
|
input="${out.packaged.file}"
|
|
output="${out.unaligned.file}"
|
|
keystore="${key.store}"
|
|
storepass="${key.store.password}"
|
|
alias="${key.alias}"
|
|
keypass="${key.alias.password}"/>
|
|
|
|
<!-- Zip aligns the APK -->
|
|
<zipalign-helper
|
|
in.package="${out.unaligned.file}"
|
|
out.package="${out.final.file}" />
|
|
<echo level="info">Release Package: ${out.final.file}</echo>
|
|
</sequential>
|
|
</do-only-if-not-library>
|
|
<record-build-info />
|
|
</target>
|
|
|
|
<path id="native.libs.gdbserver">
|
|
<fileset file="${android.gdbserver}"/>
|
|
</path>
|
|
|
|
<target name="-post-compile">
|
|
<!--
|
|
Copy gdbserver to main libs directory if building a non-instrumentation debug apk.
|
|
TODO(jrg): For now, Chrome on Android always builds native code
|
|
as Release and java/ant as Debug, which means we always install
|
|
gdbserver. Resolve this discrepancy, possibly by making this
|
|
Release Official build java/ant as Release.
|
|
-->
|
|
<if>
|
|
<condition>
|
|
<and>
|
|
<equals arg1="${build.target}" arg2="debug"/>
|
|
<isfalse value="${project.is.testapp}"/>
|
|
</and>
|
|
</condition>
|
|
<then>
|
|
<echo message="Copying gdbserver to the apk to enable native debugging"/>
|
|
<copy todir="${out.dir}/libs/${target.abi}">
|
|
<path refid="native.libs.gdbserver"/>
|
|
</copy>
|
|
</then>
|
|
</if>
|
|
|
|
<!-- Package all the compiled .class files into a .jar. -->
|
|
<jar
|
|
jarfile="${lib.java.dir}/chromium_apk_${PACKAGE_NAME}.jar"
|
|
basedir="${out.classes.absolute.dir}"
|
|
/>
|
|
</target>
|
|
|
|
<!--
|
|
Override obfuscate target to pass javac.custom.classpath to Proguard. SDK tools do not provide
|
|
any way to pass custom class paths to Proguard.
|
|
-->
|
|
<target name="-obfuscate">
|
|
<if condition="${proguard.enabled}">
|
|
<then>
|
|
<property name="obfuscate.absolute.dir" location="${out.absolute.dir}/proguard"/>
|
|
<property name="preobfuscate.jar.file" value="${obfuscate.absolute.dir}/original.jar"/>
|
|
<property name="obfuscated.jar.file" value="${obfuscate.absolute.dir}/obfuscated.jar"/>
|
|
<!-- input for dex will be proguard's output -->
|
|
<property name="out.dex.input.absolute.dir" value="${obfuscated.jar.file}"/>
|
|
|
|
<!-- Add Proguard Tasks -->
|
|
<property name="proguard.jar" location="${android.tools.dir}/proguard/lib/proguard.jar"/>
|
|
<taskdef name="proguard" classname="proguard.ant.ProGuardTask" classpath="${proguard.jar}"/>
|
|
|
|
<!-- Set the android classpath Path object into a single property. It'll be
|
|
all the jar files separated by a platform path-separator.
|
|
Each path must be quoted if it contains spaces.
|
|
-->
|
|
<pathconvert property="project.target.classpath.value" refid="project.target.class.path">
|
|
<firstmatchmapper>
|
|
<regexpmapper from='^([^ ]*)( .*)$$' to='"\1\2"'/>
|
|
<identitymapper/>
|
|
</firstmatchmapper>
|
|
</pathconvert>
|
|
|
|
<!-- Build a path object with all the jar files that must be obfuscated.
|
|
This include the project compiled source code and any 3rd party jar
|
|
files. -->
|
|
<path id="project.all.classes.path">
|
|
<pathelement location="${preobfuscate.jar.file}"/>
|
|
<path refid="project.all.jars.path"/>
|
|
<!-- Pass javac.custom.classpath for apks. -->
|
|
<path refid="javac.custom.classpath"/>
|
|
</path>
|
|
<!-- Set the project jar files Path object into a single property. It'll be
|
|
all the jar files separated by a platform path-separator.
|
|
Each path must be quoted if it contains spaces.
|
|
-->
|
|
<pathconvert property="project.all.classes.value" refid="project.all.classes.path">
|
|
<firstmatchmapper>
|
|
<regexpmapper from='^([^ ]*)( .*)$$' to='"\1\2"'/>
|
|
<identitymapper/>
|
|
</firstmatchmapper>
|
|
</pathconvert>
|
|
|
|
<!-- Turn the path property ${proguard.config} from an A:B:C property
|
|
into a series of includes: -include A -include B -include C
|
|
suitable for processing by the ProGuard task. Note - this does
|
|
not include the leading '-include "' or the closing '"'; those
|
|
are added under the <proguard> call below.
|
|
-->
|
|
<path id="proguard.configpath">
|
|
<pathelement path="${proguard.config}"/>
|
|
</path>
|
|
<pathconvert pathsep='" -include "' property="proguard.configcmd"
|
|
refid="proguard.configpath"/>
|
|
|
|
<mkdir dir="${obfuscate.absolute.dir}"/>
|
|
<delete file="${preobfuscate.jar.file}"/>
|
|
<delete file="${obfuscated.jar.file}"/>
|
|
<jar basedir="${out.classes.absolute.dir}"
|
|
destfile="${preobfuscate.jar.file}"/>
|
|
<proguard>
|
|
-include "${proguard.configcmd}"
|
|
-include "${out.absolute.dir}/proguard.txt"
|
|
-injars ${project.all.classes.value}
|
|
-outjars "${obfuscated.jar.file}"
|
|
-libraryjars ${project.target.classpath.value}
|
|
-dump "${obfuscate.absolute.dir}/dump.txt"
|
|
-printseeds "${obfuscate.absolute.dir}/seeds.txt"
|
|
-printusage "${obfuscate.absolute.dir}/usage.txt"
|
|
-printmapping "${obfuscate.absolute.dir}/mapping.txt"
|
|
</proguard>
|
|
</then>
|
|
</if>
|
|
</target>
|
|
</project>
|