Recreate build files for android, androidtest, for latest SDK

git-svn-id: https://zxing.googlecode.com/svn/trunk@2008 59b500cc-1b3d-0410-9834-0bbf25fbcc57
This commit is contained in:
srowen 2011-11-02 19:34:19 +00:00
parent 6f5841d8bb
commit 79add84a5a
11 changed files with 280 additions and 743 deletions

View file

@ -35,7 +35,7 @@
deprecation="true" deprecation="true"
includeantruntime="false"> includeantruntime="false">
<classpath> <classpath>
<pathelement location="${android-home}/platforms/android-7/android.jar"/> <pathelement location="${android-home}/platforms/android-10/android.jar"/>
</classpath> </classpath>
</javac> </javac>
<jar jarfile="android-integration.jar" basedir="build"/> <jar jarfile="android-integration.jar" basedir="build"/>

19
android/ant.properties Normal file
View file

@ -0,0 +1,19 @@
# This file is used to override default values used by the Ant build system.
#
# This file must be checked in Version Control Systems, as it is
# integral to the build system of your project.
# This file is only used by the Ant script.
# You can use this to override default values such as
# 'source.dir' for the location of your java source folder and
# 'out.dir' for the location of your output folder.
# You can also use it define how the release builds are signed by declaring
# the following properties:
# 'key.store' for the location of your keystore and
# 'key.alias' for the name of the key to use.
# The password will be asked during the build when you use the 'release' target.
application-package=com.google.zxing.client.android
external-libs-folder=libs

View file

@ -14,328 +14,87 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--> -->
<project name="BarcodeScanner" default="debug"> <project name="BarcodeScanner" default="help">
<!-- Normally the Android build system looks for a local.properties. Since that's only used <!-- The local.properties file is created and updated by the 'android' tool.
to find the SDK location, I've removed it and pointed us at the global ZXing build.properties. --> It contains the path to the SDK. It should *NOT* be checked into
<property file="../build.properties"/> Version Control Systems. -->
<!-- Parts of the Android build system insist on the name 'sdk-location', so alias it. --> <loadproperties srcFile="local.properties" />
<property name="sdk.dir" value="${android-home}"/>
<!-- The build.properties file can be created by you and is never touched <!-- The ant.properties file can be created by you. It is only edited by the
by the 'android' tool. This is the place to change some of the default property values 'android' tool to add properties to it.
used by the Ant rules. This is the place to change some Ant specific build properties.
Here are some properties you may want to change/update: Here are some properties you may want to change/update:
application-package source.dir
the name of your application package as defined in the manifest. Used by the The name of the source directory. Default is 'src'.
'uninstall' rule. out.dir
source-folder The name of the output directory. Default is 'bin'.
the name of the source folder. Default is 'src'.
out-folder
the name of the output folder. Default is 'bin'.
Properties related to the SDK location or the project target should be updated For other overridable properties, look at the beginning of the rules
using the 'android' tool with the 'update' action. files in the SDK, at tools/ant/build.xml
This file is an integral part of the build system for your application and Properties related to the SDK location or the project target should
should be checked in in Version Control Systems. be updated using the 'android' tool with the 'update' action.
--> This file is an integral part of the build system for your
<property file="build.properties"/> application and should be checked into Version Control Systems.
<!-- 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 <property file="ant.properties" />
should be checked in in Version Control Systems. -->
<property file="default.properties"/>
<!-- Custom Android task to deal with the project target, and import the proper rules. <!-- The project.properties file is created and updated by the 'android'
This requires ant 1.6.0 or above. --> tool, as well as ADT.
<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" />
<pathelement path="${sdk.dir}/tools/lib/apkbuilder.jar" />
<pathelement path="${sdk.dir}/tools/lib/jarutils.jar" />
</path>
<taskdef name="setup" This contains project specific properties such as project target, and library
classname="com.android.ant.SetupTask" dependencies. Lower level build properties are stored in ant.properties
classpathref="android.antlibs"/> (or in .classpath for Eclipse projects).
<!-- Execute the Android Setup task that will setup some properties specific to the target, This file is an integral part of the build system for your
and import the rules files. application and should be checked into Version Control Systems. -->
To customize the rules, copy/paste them below the task, and disable import by setting <loadproperties srcFile="project.properties" />
the import attribute to false:
<setup import="false" />
This will ensure that the properties are setup correctly but that your customized <!-- quick check on sdk.dir -->
targets are used. <fail
--> message="sdk.dir is missing. Make sure to generate local.properties using 'android update project'"
<setup import="false" /> unless="sdk.dir"
/>
<!-- Custom tasks -->
<taskdef name="aaptexec"
classname="com.android.ant.AaptExecLoopTask"
classpathref="android.antlibs"/>
<taskdef name="apkbuilder" <!-- extension targets. Uncomment the ones where you want to do custom work
classname="com.android.ant.ApkBuilderTask" in between standard targets -->
classpathref="android.antlibs"/> <!--
<target name="-pre-build">
</target>
<target name="-pre-compile">
</target>
<!-- Properties --> /* 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>
-->
<property name="android-tools" value="${sdk.dir}/tools" /> <!-- Import the actual build file.
<property name="platform-tools" value="${sdk.dir}/platform-tools" />
<!-- Input directories --> To customize existing targets, there are two options:
<property name="source-folder" value="src" /> - Customize only one target:
<property name="gen-folder" value="gen" /> - copy/paste the target into this file, *before* the
<property name="resource-folder" value="res" /> <import> task.
<property name="asset-folder" value="assets" /> - customize it to your needs.
<property name="source-location" value="${basedir}/${source-folder}" /> - 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.
<!-- folder for the 3rd party java libraries --> ***********************
<!--<property name="external-libs-folder" value="../core" />--> ****** 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: 1 -->
<import file="${sdk.dir}/tools/ant/build.xml" />
<!-- Output directories -->
<property name="gen-folder" value="gen" />
<property name="out-folder" value="bin" />
<property name="out-classes" value="${out-folder}/classes" />
<property name="out-classes-location" value="${basedir}/${out-classes}"/>
<!-- out folders for a parent project if this project is an instrumentation project -->
<property name="main-out-folder" value="../${out-folder}" />
<property name="main-out-classes" value="${main-out-folder}/classes"/>
<!-- Intermediate files -->
<property name="dex-file" value="classes.dex" />
<property name="intermediate-dex" value="${out-folder}/${dex-file}" />
<!-- dx does not properly support incorrect / or \ based on the platform
and Ant cannot convert them because the parameter is not a valid path.
Because of this we have to compute different paths depending on the platform. -->
<condition property="intermediate-dex-location"
value="${basedir}\${intermediate-dex}"
else="${basedir}/${intermediate-dex}" >
<os family="windows"/>
</condition>
<!-- The final package file to generate -->
<property name="out-debug-package" value="${out-folder}/${ant.project.name}-debug.apk"/>
<!-- Tools -->
<condition property="exe" value=".exe" else=""><os family="windows"/></condition>
<property name="adb" value="${platform-tools}/adb${exe}"/>
<!-- rules -->
<!-- Create the output directories if they don't exist yet. All builds do a clean first
to prevent stale resources and to make ProGuard happy. -->
<target name="dirs" depends="clean">
<echo>Creating output directories if needed...</echo>
<mkdir dir="${resource-folder}" />
<mkdir dir="${external-libs-folder}" />
<mkdir dir="${gen-folder}" />
<mkdir dir="${out-folder}" />
<mkdir dir="${out-classes}" />
</target>
<!-- Generate the R.java file for this project's resources. -->
<target name="resource-src" depends="dirs">
<echo>Generating R.java / Manifest.java from the resources...</echo>
<exec executable="${aapt}" failonerror="true">
<arg value="package" />
<arg value="-m" />
<arg value="-J" />
<arg path="${gen-folder}" />
<arg value="-M" />
<arg path="AndroidManifest.xml" />
<arg value="-S" />
<arg path="${resource-folder}" />
<arg value="-I" />
<arg path="${android.jar}" />
</exec>
</target>
<!-- Generate java classes from .aidl files. -->
<target name="aidl" depends="dirs">
<echo>Compiling aidl files into Java classes...</echo>
<apply executable="${aidl}" failonerror="true">
<arg value="-p${android-aidl}" />
<arg value="-I${source-folder}" />
<arg value="-o${gen-folder}" />
<fileset dir="${source-folder}">
<include name="**/*.aidl"/>
</fileset>
</apply>
</target>
<!-- Compile this project's .java files into .class files. -->
<target name="compile" depends="resource-src, aidl">
<javac encoding="ascii" target="1.5" debug="false" extdirs=""
destdir="${out-classes}"
bootclasspathref="android.target.classpath"
includeantruntime="false">
<src path="${source-folder}" />
<src path="${gen-folder}" />
<classpath>
<fileset dir="${external-libs-folder}" includes="*.jar"/>
<!-- yeah, want to not use this mechanism above -->
<pathelement path="../core/core.jar"/>
<pathelement path="${main-out-classes}"/>
</classpath>
</javac>
<unzip src="../core/core.jar" dest="${out-classes}" overwrite="true"/>
<antcall target="optimize"/>
</target>
<target name="optimize" unless="no-optimize">
<mkdir dir="optimized"/>
<property name="libraryjars.path" refid="android.target.classpath"/>
<java jar="${proguard-jar}" fork="true" failonerror="true">
<jvmarg value="-Dmaximum.inlined.code.length=48"/>
<arg value="-injars ${out-classes}"/>
<arg value="-outjars optimized"/>
<arg value="-libraryjars ${libraryjars.path}"/>
<arg value="-keep class com.google.zxing.client.android.*Activity"/>
<arg value="-keep class com.google.zxing.client.android.ViewfinderView { public * ; }"/>
<arg value="-keep class com.google.zxing.client.android.book.SearchBookContents* { public * ; }"/>
<arg value="-target 5"/>
<arg value="-optimizationpasses 5"/>
<arg value="-optimizations !field/*,!class/merging/*"/> <!-- works around dex VerifyError -->
<arg value="-dontshrink"/>
<arg value="-dontobfuscate"/>
<arg value="-dontskipnonpubliclibraryclasses"/>
<arg value="-verbose"/>
<arg value="-dump proguard-dump.txt"/>
</java>
<delete dir="${out-classes}"/>
<move file="optimized" tofile="${out-classes}"/>
</target>
<!-- Convert this project's .class files into .dex files. -->
<target name="dex" depends="compile">
<echo>Converting compiled files and external libraries into ${out-folder}/${dex-file}...</echo>
<apply executable="${dx}" failonerror="true" parallel="true">
<arg value="-JXmx256M"/>
<arg value="--dex" />
<arg value="--output=${intermediate-dex-location}" />
<arg path="${out-classes-location}" />
<fileset dir="${external-libs-folder}" includes="*.jar"/>
</apply>
</target>
<!-- Put 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">
<echo>Packaging resources</echo>
<aaptexec executable="${aapt}"
command="package"
manifest="AndroidManifest.xml"
assets="${asset-folder}"
androidjar="${android.jar}"
apkfolder="${out-folder}"
resourcefilename="${ant.project.name}">
<res path="${resource-folder}"/>
</aaptexec>
</target>
<!--
Getting an error like this?
[apply] UNEXPECTED TOP-LEVEL EXCEPTION:
[apply] com.android.dx.cf.code.SimException: local variable type
mismatch: attempt to set or access a value of type int using a local
variable of type com.google.zxing.qrcode.decoder.Version. This is
symptomatic of .class transformation tools that ignore local variable
information.
Build core/ with the 'build-no-debug' target. It's a long story.
-->
<!-- Package the application and sign it with a debug key.
This is the default target when building. It is used for debug. -->
<target name="debug" depends="dex, package-resources">
<apkbuilder
outfolder="${out-folder}"
resourcefile="BarcodeScanner"
apkfilepath="${out-folder}/BarcodeScanner-debug.apk"
debugpackaging="true"
debugsigning="true"
verbose="false">
<dex path="${intermediate-dex-location}" />
<sourcefolder path="${source-folder}" />
<jarfolder path="${external-libs-folder}" />
</apkbuilder>
<copy file="${out-folder}/BarcodeScanner-debug.apk" tofile="${out-folder}/temp.apk" overwrite="true"/>
<exec executable="${android-tools}/zipalign">
<arg value="-f"/>
<arg value="-v"/>
<arg value="4"/>
<arg value="${out-folder}/temp.apk"/>
<arg value="${out-folder}/BarcodeScanner-debug.apk"/>
</exec>
</target>
<!-- Package the application without signing it.
This allows for the application to be signed later with an official publishing key. -->
<target name="release" depends="dex, package-resources">
<apkbuilder
outfolder="${out-folder}"
resourcefile="BarcodeScanner"
apkfilepath="${out-folder}/BarcodeScanner-unsigned.apk"
debugpackaging="false"
debugsigning="false"
verbose="false">
<dex path="${intermediate-dex-location}" />
<sourcefolder path="${source-folder}" />
<jarfolder path="${external-libs-folder}" />
</apkbuilder>
<echo>All generated packages need to be signed with jarsigner before they are published.</echo>
<echo>Also run zipalign -f -v 4 BarcodeScanner.apk BarcodeScanner-aligned.apk after signing</echo>
</target>
<!-- Install (or reinstall) the package on the default emulator -->
<target name="install" depends="debug">
<echo>Installing ${out-debug-package} onto default emulator...</echo>
<exec executable="${adb}" failonerror="true">
<arg value="install" />
<arg value="-r" />
<arg path="${out-debug-package}" />
</exec>
</target>
<!-- Uinstall the package from the default emulator -->
<target name="uninstall">
<echo>Uninstalling ${application-package} from the default emulator...</echo>
<exec executable="${adb}" failonerror="true">
<arg value="uninstall" />
<arg value="${application-package}" />
</exec>
</target>
<target name="help">
<echo>Android Ant Build. Available targets:</echo>
<echo> help: Displays this help.</echo>
<echo> debug: Builds the application and sign it with a debug key.</echo>
<echo> release: Builds the application. The generated apk file must be</echo>
<echo> signed before it is published.</echo>
<echo> install: Installs the debug package onto a running emulator or</echo>
<echo> device. This can only be used if the application has </echo>
<echo> not yet been installed.</echo>
<echo> reinstall: Installs the debug package on a running emulator or</echo>
<echo> device that already has the application.</echo>
<echo> The signatures must match.</echo>
<echo> uninstall: uninstall the application from a running emulator or</echo>
<echo> device.</echo>
</target>
<target name="clean">
<delete dir="${out-folder}"/>
<delete dir="${gen-folder}"/>
</target>
</project> </project>

40
android/proguard.cfg Normal file
View file

@ -0,0 +1,40 @@
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-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.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}

View file

@ -0,0 +1,11 @@
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system use,
# "ant.properties", and override values to adapt the script to your
# project structure.
# Project target.
target=android-10

View file

@ -1,68 +0,0 @@
#!/usr/bin/env python
#
# Copyright (C) 2010 ZXing authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Translate a string from English to all locales used in the Barcode
# Scanner Android project
#
# Author: Neha Pandey
from urllib2 import urlopen
from urllib import urlencode
import sys
def translate (in_lang, out_lang, input):
"""Translate the input from in_lang to out_lang using Google Translate"""
# Create the URL
langpair = '%s|%s' % (in_lang, out_lang)
base = 'http://ajax.googleapis.com/ajax/services/language/translate?'
params = urlencode ((('v',1.0),
('q',input),
('langpair',langpair),) )
url = base + params
# Call translation
content = urlopen(url).read()
# Snip out unwanted fluff from the translation
start_index = content.find('"translatedText":"') + 18
translation = content [start_index:]
end_index = translation.find('"}, "')
output = translation[:end_index]
return output
# All the languages to translate to
language_list = ['en', 'ar', 'cs', 'da', 'de', 'es',
'fi', 'fr', 'hu', 'it', 'ja', 'nl',
'pl', 'pt', 'ru', 'sv', 'zh-CN',
'zh-TW']
if (len(sys.argv) < 3):
print "Usage: %s name String to translate" % sys.argv[0]
print "Sample: %s ask-banana Give me a banana" % sys.argv[0]
import sys
sys.exit (-1);
# First argument is the name of the string
string_name = sys.argv[1]
# Remaining arguments is the string to be translated in English
input_string =' '.join(sys.argv[2:])
# Translate all languages
for i in range(len(language_list)) :
translation = translate ('en', language_list[i], input_string)
xml_string = '<string name="' + string_name + '">' + \
translation + '</string>'
print language_list[i], xml_string

View file

@ -0,0 +1,19 @@
# This file is used to override default values used by the Ant build system.
#
# This file must be checked in Version Control Systems, as it is
# integral to the build system of your project.
# This file is only used by the Ant script.
# You can use this to override default values such as
# 'source.dir' for the location of your java source folder and
# 'out.dir' for the location of your output folder.
# You can also use it define how the release builds are signed by declaring
# the following properties:
# 'key.store' for the location of your keystore and
# 'key.alias' for the name of the key to use.
# The password will be asked during the build when you use the 'release' target.
application-package=com.google.zxing.client.androidtest
external-libs-folder=libs

View file

@ -14,330 +14,87 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--> -->
<project name="ZXingTest" default="debug"> <project name="ZXingTest" default="help">
<!-- Normally the Android build system looks for a local.properties. Since that's only used <!-- The local.properties file is created and updated by the 'android' tool.
to find the SDK location, I've removed it and pointed us at the global ZXing build.properties. --> It contains the path to the SDK. It should *NOT* be checked into
<property file="../build.properties"/> Version Control Systems. -->
<!-- Parts of the Android build system insist on the name 'sdk-location', so alias it. --> <loadproperties srcFile="local.properties" />
<property name="sdk.dir" value="${android-home}"/>
<!-- The build.properties file can be created by you and is never touched <!-- The ant.properties file can be created by you. It is only edited by the
by the 'android' tool. This is the place to change some of the default property values 'android' tool to add properties to it.
used by the Ant rules. This is the place to change some Ant specific build properties.
Here are some properties you may want to change/update: Here are some properties you may want to change/update:
application-package source.dir
the name of your application package as defined in the manifest. Used by the The name of the source directory. Default is 'src'.
'uninstall' rule. out.dir
source-folder The name of the output directory. Default is 'bin'.
the name of the source folder. Default is 'src'.
out-folder
the name of the output folder. Default is 'bin'.
Properties related to the SDK location or the project target should be updated For other overridable properties, look at the beginning of the rules
using the 'android' tool with the 'update' action. files in the SDK, at tools/ant/build.xml
This file is an integral part of the build system for your application and Properties related to the SDK location or the project target should
should be checked in in Version Control Systems. be updated using the 'android' tool with the 'update' action.
--> This file is an integral part of the build system for your
<property file="build.properties"/> application and should be checked into Version Control Systems.
<!-- 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 <property file="ant.properties" />
should be checked in in Version Control Systems. -->
<property file="default.properties"/>
<!-- Custom Android task to deal with the project target, and import the proper rules. <!-- The project.properties file is created and updated by the 'android'
This requires ant 1.6.0 or above. --> tool, as well as ADT.
<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" />
<pathelement path="${sdk.dir}/tools/lib/apkbuilder.jar" />
<pathelement path="${sdk.dir}/tools/lib/jarutils.jar" />
</path>
<taskdef name="setup" This contains project specific properties such as project target, and library
classname="com.android.ant.SetupTask" dependencies. Lower level build properties are stored in ant.properties
classpathref="android.antlibs"/> (or in .classpath for Eclipse projects).
<!-- Execute the Android Setup task that will setup some properties specific to the target, This file is an integral part of the build system for your
and import the rules files. application and should be checked into Version Control Systems. -->
To customize the rules, copy/paste them below the task, and disable import by setting <loadproperties srcFile="project.properties" />
the import attribute to false:
<setup import="false" />
This will ensure that the properties are setup correctly but that your customized <!-- quick check on sdk.dir -->
targets are used. <fail
--> message="sdk.dir is missing. Make sure to generate local.properties using 'android update project'"
<setup import="false" /> unless="sdk.dir"
/>
<!-- Custom tasks -->
<taskdef name="aaptexec"
classname="com.android.ant.AaptExecLoopTask"
classpathref="android.antlibs"/>
<taskdef name="apkbuilder" <!-- extension targets. Uncomment the ones where you want to do custom work
classname="com.android.ant.ApkBuilderTask" in between standard targets -->
classpathref="android.antlibs"/> <!--
<target name="-pre-build">
</target>
<target name="-pre-compile">
</target>
<!-- Properties --> /* 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>
-->
<property name="android-tools" value="${sdk.dir}/tools" /> <!-- Import the actual build file.
<property name="platform-tools" value="${sdk.dir}/platform-tools" />
<!-- Input directories --> To customize existing targets, there are two options:
<property name="source-folder" value="src" /> - Customize only one target:
<property name="gen-folder" value="gen" /> - copy/paste the target into this file, *before* the
<property name="resource-folder" value="res" /> <import> task.
<property name="asset-folder" value="assets" /> - customize it to your needs.
<property name="source-location" value="${basedir}/${source-folder}" /> - 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.
<!-- folder for the 3rd party java libraries --> ***********************
<!--<property name="external-libs-folder" value="../core" />--> ****** 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: 1 -->
<import file="${sdk.dir}/tools/ant/build.xml" />
<!-- folder for the native libraries -->
<property name="native-libs-folder" value="libs" />
<!-- Output directories -->
<property name="gen-folder" value="gen" />
<property name="out-folder" value="bin" />
<property name="out-classes" value="${out-folder}/classes" />
<property name="out-classes-location" value="${basedir}/${out-classes}"/>
<!-- out folders for a parent project if this project is an instrumentation project -->
<property name="main-out-folder" value="../${out-folder}" />
<property name="main-out-classes" value="${main-out-folder}/classes"/>
<!-- Intermediate files -->
<property name="dex-file" value="classes.dex" />
<property name="intermediate-dex" value="${out-folder}/${dex-file}" />
<!-- dx does not properly support incorrect / or \ based on the platform
and Ant cannot convert them because the parameter is not a valid path.
Because of this we have to compute different paths depending on the platform. -->
<condition property="intermediate-dex-location"
value="${basedir}\${intermediate-dex}"
else="${basedir}/${intermediate-dex}" >
<os family="windows"/>
</condition>
<!-- The final package file to generate -->
<property name="out-debug-package" value="${out-folder}/${ant.project.name}-debug.apk"/>
<!-- Tools -->
<condition property="exe" value=".exe" else=""><os family="windows"/></condition>
<property name="adb" value="${platform-tools}/adb${exe}"/>
<!-- rules -->
<!-- Create the output directories if they don't exist yet. All builds do a clean first
to prevent stale resources and to make ProGuard happy. -->
<target name="dirs" depends="clean">
<echo>Creating output directories if needed...</echo>
<mkdir dir="${resource-folder}" />
<mkdir dir="${external-libs-folder}" />
<mkdir dir="${gen-folder}" />
<mkdir dir="${out-folder}" />
<mkdir dir="${out-classes}" />
</target>
<!-- Generate the R.java file for this project's resources. -->
<target name="resource-src" depends="dirs">
<echo>Generating R.java / Manifest.java from the resources...</echo>
<exec executable="${aapt}" failonerror="true">
<arg value="package" />
<arg value="-m" />
<arg value="-J" />
<arg path="${gen-folder}" />
<arg value="-M" />
<arg path="AndroidManifest.xml" />
<arg value="-S" />
<arg path="${resource-folder}" />
<arg value="-I" />
<arg path="${android.jar}" />
</exec>
</target>
<!-- Generate java classes from .aidl files. -->
<target name="aidl" depends="dirs">
<echo>Compiling aidl files into Java classes...</echo>
<apply executable="${aidl}" failonerror="true">
<arg value="-p${android-aidl}" />
<arg value="-I${source-folder}" />
<arg value="-o${gen-folder}" />
<fileset dir="${source-folder}">
<include name="**/*.aidl"/>
</fileset>
</apply>
</target>
<!-- Compile this project's .java files into .class files. -->
<target name="compile" depends="resource-src, aidl">
<javac encoding="ascii" target="1.5" debug="false" extdirs=""
destdir="${out-classes}"
bootclasspathref="android.target.classpath"
includeantruntime="false">
<src path="${source-folder}" />
<src path="${gen-folder}" />
<classpath>
<fileset dir="${external-libs-folder}" includes="*.jar"/>
<!-- yeah, want to not use this mechanism above -->
<pathelement path="../core/core.jar"/>
<pathelement path="${main-out-classes}"/>
</classpath>
</javac>
<unzip src="../core/core.jar" dest="${out-classes}" overwrite="true"/>
<antcall target="optimize"/>
</target>
<target name="optimize" unless="no-optimize">
<mkdir dir="optimized"/>
<property name="libraryjars.path" refid="android.target.classpath"/>
<java jar="${proguard-jar}" fork="true" failonerror="true">
<jvmarg value="-Dmaximum.inlined.code.length=48"/>
<arg value="-injars ${out-classes}"/>
<arg value="-outjars optimized"/>
<arg value="-libraryjars ${libraryjars.path}"/>
<arg value="-keep class com.google.zxing.client.androidtest.*Activity"/>
<arg value="-keep class com.google.zxing.client.androidtest.ViewfinderView { public * ; }"/>
<arg value="-target 5"/>
<arg value="-optimizationpasses 5"/>
<arg value="-optimizations !field/*,!class/merging/*"/> <!-- works around dex VerifyError -->
<arg value="-dontshrink"/>
<arg value="-dontobfuscate"/>
<arg value="-dontskipnonpubliclibraryclasses"/>
<arg value="-verbose"/>
<arg value="-dump proguard-dump.txt"/>
</java>
<delete dir="${out-classes}"/>
<move file="optimized" tofile="${out-classes}"/>
</target>
<!-- Convert this project's .class files into .dex files. -->
<target name="dex" depends="compile">
<echo>Converting compiled files and external libraries into ${out-folder}/${dex-file}...</echo>
<apply executable="${dx}" failonerror="true" parallel="true">
<arg value="-JXmx256M"/>
<arg value="--dex" />
<arg value="--output=${intermediate-dex-location}" />
<arg path="${out-classes-location}" />
<fileset dir="${external-libs-folder}" includes="*.jar"/>
</apply>
</target>
<!-- Put 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">
<echo>Packaging resources</echo>
<aaptexec executable="${aapt}"
command="package"
manifest="AndroidManifest.xml"
assets="${asset-folder}"
androidjar="${android.jar}"
apkfolder="${out-folder}"
resourcefilename="${ant.project.name}">
<res path="${resource-folder}"/>
</aaptexec>
</target>
<!--
Getting an error like this?
[apply] UNEXPECTED TOP-LEVEL EXCEPTION:
[apply] com.android.dx.cf.code.SimException: local variable type
mismatch: attempt to set or access a value of type int using a local
variable of type com.google.zxing.qrcode.decoder.Version. This is
symptomatic of .class transformation tools that ignore local variable
information.
Build core/ with the 'build-no-debug' target. It's a long story.
-->
<!-- Package the application and sign it with a debug key.
This is the default target when building. It is used for debug. -->
<target name="debug" depends="dex, package-resources">
<apkbuilder
outfolder="${out-folder}"
resourcefile="ZXingTest"
apkfilepath="${out-folder}/ZXingTest-debug.apk"
debugpackaging="true"
debugsigning="true"
verbose="false">
<dex path="${intermediate-dex-location}" />
<sourcefolder path="${source-folder}" />
<jarfolder path="${external-libs-folder}" />
</apkbuilder>
<copy file="${out-folder}/ZXingTest-debug.apk" tofile="${out-folder}/temp.apk" overwrite="true"/>
<exec executable="${android-tools}/zipalign">
<arg value="-f"/>
<arg value="-v"/>
<arg value="4"/>
<arg value="${out-folder}/temp.apk"/>
<arg value="${out-folder}/ZXingTest-debug.apk"/>
</exec>
</target>
<!-- Package the application without signing it.
This allows for the application to be signed later with an official publishing key. -->
<target name="release" depends="dex, package-resources">
<apkbuilder
outfolder="${out-folder}"
resourcefile="ZXingTest"
apkfilepath="${out-folder}/ZXingTest-unsigned.apk"
debugpackaging="false"
debugsigning="false"
verbose="false">
<dex path="${intermediate-dex-location}" />
<sourcefolder path="${source-folder}" />
<jarfolder path="${external-libs-folder}" />
</apkbuilder>
<echo>All generated packages need to be signed with jarsigner before they are published.</echo>
<echo>Also run zipalign -f -v 4 ZXingTest.apk ZXingTest-aligned.apk after signing</echo>
</target>
<!-- Install (or reinstall) the package on the default emulator -->
<target name="install" depends="debug">
<echo>Installing ${out-debug-package} onto default emulator...</echo>
<exec executable="${adb}" failonerror="true">
<arg value="install" />
<arg value="-r" />
<arg path="${out-debug-package}" />
</exec>
</target>
<!-- Uinstall the package from the default emulator -->
<target name="uninstall">
<echo>Uninstalling ${application-package} from the default emulator...</echo>
<exec executable="${adb}" failonerror="true">
<arg value="uninstall" />
<arg value="${application-package}" />
</exec>
</target>
<target name="help">
<echo>Android Ant Build. Available targets:</echo>
<echo> help: Displays this help.</echo>
<echo> debug: Builds the application and sign it with a debug key.</echo>
<echo> release: Builds the application. The generated apk file must be</echo>
<echo> signed before it is published.</echo>
<echo> install: Installs the debug package onto a running emulator or</echo>
<echo> device. This can only be used if the application has </echo>
<echo> not yet been installed.</echo>
<echo> reinstall: Installs the debug package on a running emulator or</echo>
<echo> device that already has the application.</echo>
<echo> The signatures must match.</echo>
<echo> uninstall: uninstall the application from a running emulator or</echo>
<echo> device.</echo>
</target>
<target name="clean">
<delete dir="${out-folder}"/>
<delete dir="${gen-folder}"/>
</target>
</project> </project>

40
androidtest/proguard.cfg Normal file
View file

@ -0,0 +1,40 @@
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-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.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keepclasseswithmembernames class * {
native <methods>;
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}

View file

@ -0,0 +1,11 @@
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system use,
# "ant.properties", and override values to adapt the script to your
# project structure.
# Project target.
target=android-10

View file

@ -24,76 +24,25 @@
<tstamp/> <tstamp/>
</target> </target>
<target name="compile" depends="init"> <target name="build" depends="init">
<mkdir dir="build"/> <mkdir dir="build"/>
<javac srcdir="src" <javac srcdir="src"
destdir="build" destdir="build"
source="6" source="6"
target="6" target="6"
optimize="true" optimize="true"
debug="${generate-debug}" debug="true"
deprecation="true" deprecation="true"
fork="true" fork="true"
includeantruntime="false"/> includeantruntime="false">
<jar jarfile="core.jar" basedir="build"> </javac>
<!-- These entries allow core.jar to function as an OSGi bundle, and also specifies <jar jarfile="core.jar" basedir="build"/>
additional attributes for compatibility with BugLabs's BUG platform.
Thanks to David Albert for this change. -->
<manifest>
<attribute name="Bundle-Name" value="ZXing"/>
<attribute name="Bundle-Vendor" value="ZXing Project"/>
<attribute name="Bundle-SymbolicName" value="ZXing"/>
<attribute name="Bundle-Version" value="${version}"/>
<attribute name="Export-Package" value="com.google.zxing,com.google.zxing.common,com.google.zxing.client.result"/>
<attribute name="Bug-Bundle-Type" value="Application"/>
</manifest>
</jar>
</target> </target>
<target name="build" depends="clean"> <target name="export" depends="build">
<antcall target="compile"> <jar jarfile="core.jar" basedir="build"/>
<param name="generate-debug" value="true"/> <copy file="core.jar" todir="../android/libs" overwrite="true"/>
</antcall> <copy file="core.jar" todir="../androidtest/libs" overwrite="true"/>
</target>
<!-- This target is needed for building a core.jar which the Android client can use and run
ProGuard on successfully, because dx doesn't like debugging info. -->
<target name="build-no-debug" depends="clean">
<antcall target="compile">
<param name="generate-debug" value="false"/>
</antcall>
</target>
<!-- This target builds an optimized core.jar using ProGuard. It is not intended for our Android
client - use build-no-debug intead, then build the client which runs ProGuard on everything. -->
<target name="build-optimized" depends="clean">
<antcall target="compile">
<param name="generate-debug" value="false"/>
</antcall>
<delete file="core.jar"/>
<mkdir dir="optimized"/>
<java jar="${proguard-jar}" fork="true" failonerror="true">
<jvmarg value="-Dmaximum.inlined.code.length=48"/>
<arg value="-injars build"/>
<arg value="-outjars optimized"/>
<!-- Needed for Mac OS. -->
<!--<arg value="-libraryjars ${java.home}/../Classes/classes.jar"/>-->
<!-- Needed for other Android apps besides Barcode Scanner. -->
<!--<arg value="-libraryjars ${android-home}/platforms/android-3/android.jar"/>-->
<arg value="-keep class com.google.zxing.* {public protected *;}"/>
<arg value="-keep class com.google.zxing.common.*Binarizer {public protected *;}"/>
<!-- Remove this line is you only use the Result base object and want the smallest jar. -->
<arg value="-keep class com.google.zxing.client.result.* {public protected *;}"/>
<!-- Contains a useful UPC-E to UPC-A method. -->
<arg value="-keep class com.google.zxing.oned.UPCEReader {public *;}"/>
<arg value="-target 1.2"/>
<arg value="-optimizationpasses 4"/>
<arg value="-dontobfuscate"/>
<arg value="-dontskipnonpubliclibraryclasses"/>
<arg value="-verbose"/>
</java>
<jar jarfile="core.jar" basedir="optimized"/>
</target> </target>
<target name="build-test" depends="init,build"> <target name="build-test" depends="init,build">