eclair snapshot
This commit is contained in:
@@ -3,8 +3,8 @@
|
||||
package="PACKAGE"
|
||||
android:versionCode="1"
|
||||
android:versionName="1.0">
|
||||
<application android:label="@string/app_name">
|
||||
<activity android:name=".ACTIVITY_NAME"
|
||||
<application android:label="@string/app_name" ICON>
|
||||
<activity android:name="ACTIVITY_ENTRY_NAME"
|
||||
android:label="@string/app_name">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
@@ -17,5 +17,5 @@
|
||||
-->
|
||||
<instrumentation android:name="android.test.InstrumentationTestRunner"
|
||||
android:targetPackage="PACKAGE"
|
||||
android:label="Tests for ACTIVITY_NAME"/>
|
||||
android:label="Tests for PACKAGE"/>
|
||||
</manifest>
|
||||
|
||||
@@ -5,22 +5,22 @@ THIS FILE IS CURRENTLY BROKEN AND SHOULD NOT BE USED.
|
||||
-->
|
||||
<project name="alias_rules" default="package">
|
||||
|
||||
<!-- No user servicable parts below. -->
|
||||
<!-- No user serviceable parts below. -->
|
||||
|
||||
<!-- Input directories -->
|
||||
<property name="resource-dir" value="res" />
|
||||
<property name="resource.dir" value="res" />
|
||||
|
||||
<!-- The final package file to generate -->
|
||||
<property name="out-package" value="${ant.project.name}.apk" />
|
||||
<property name="out.package" value="${ant.project.name}.apk" />
|
||||
|
||||
<!-- Tools -->
|
||||
<condition property="aapt" value="${android-tools}/aapt.exe" else="${android-tools}/aapt" >
|
||||
<os family="windows"/>
|
||||
<condition property="aapt" value="${android.tools.dir}/aapt.exe" else="${android.tools.dir}/aapt">
|
||||
<os family="windows" />
|
||||
</condition>
|
||||
<condition property="adb" value="${android-tools}/adb.exe" else="${android-tools}/adb" >
|
||||
<os family="windows"/>
|
||||
<condition property="adb" value="${android.tools.dir}/adb.exe" else="${android.tools.dir}/adb">
|
||||
<os family="windows" />
|
||||
</condition>
|
||||
<property name="android-jar" value="${sdk-folder}/android.jar" />
|
||||
<property name="android.jar" value="${sdk.dir}/android.jar" />
|
||||
|
||||
<!-- Rules -->
|
||||
|
||||
@@ -33,11 +33,11 @@ THIS FILE IS CURRENTLY BROKEN AND SHOULD NOT BE USED.
|
||||
<arg value="-M" />
|
||||
<arg value="AndroidManifest.xml" />
|
||||
<arg value="-S" />
|
||||
<arg value="${resource-dir}" />
|
||||
<arg value="${resource.dir}" />
|
||||
<arg value="-I" />
|
||||
<arg value="${android-jar}" />
|
||||
<arg value="${android.jar}" />
|
||||
<arg value="-F" />
|
||||
<arg value="${out-package}" />
|
||||
<arg value="${out.package}" />
|
||||
</exec>
|
||||
</target>
|
||||
|
||||
@@ -49,7 +49,7 @@ THIS FILE IS CURRENTLY BROKEN AND SHOULD NOT BE USED.
|
||||
<echo>Sending package to default emulator...</echo>
|
||||
<exec executable="${adb}" failonerror="true">
|
||||
<arg value="install" />
|
||||
<arg value="${out-package}" />
|
||||
<arg value="${out.package}" />
|
||||
</exec>
|
||||
</target>
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
com.android.ant.AndroidInitTask
|
||||
|
||||
The following properties are put in place by the importing task:
|
||||
android-jar, android-aidl, aapt, aidl, and dx
|
||||
android.jar, android.aidl, aapt, aidl, and dx
|
||||
|
||||
Additionnaly, the task sets up the following classpath reference:
|
||||
android.target.classpath
|
||||
@@ -16,184 +16,291 @@
|
||||
<!-- Custom tasks -->
|
||||
<taskdef name="aaptexec"
|
||||
classname="com.android.ant.AaptExecLoopTask"
|
||||
classpathref="android.antlibs"/>
|
||||
classpathref="android.antlibs" />
|
||||
|
||||
<taskdef name="apkbuilder"
|
||||
classname="com.android.ant.ApkBuilderTask"
|
||||
classpathref="android.antlibs"/>
|
||||
classpathref="android.antlibs" />
|
||||
|
||||
<taskdef name="xpath"
|
||||
classname="com.android.ant.XPathTask"
|
||||
classpathref="android.antlibs" />
|
||||
|
||||
<!-- Properties -->
|
||||
|
||||
<property name="android-tools" value="${sdk-location}/tools" />
|
||||
<!-- Tells adb which device to target. You can change this from the command line
|
||||
by invoking "ant -Dadb.device.arg=-d" for device "ant -Dadb.device.arg=-e" for
|
||||
the emulator. -->
|
||||
<property name="adb.device.arg" value="" />
|
||||
|
||||
<property name="android.tools.dir" location="${sdk.dir}/tools" />
|
||||
<!-- Name of the application package extracted from manifest file -->
|
||||
<xpath input="AndroidManifest.xml" expression="/manifest/@package"
|
||||
output="manifest.package" />
|
||||
|
||||
<!-- Input directories -->
|
||||
<property name="source-folder" value="src" />
|
||||
<property name="gen-folder" value="gen" />
|
||||
<property name="resource-folder" value="res" />
|
||||
<property name="asset-folder" value="assets" />
|
||||
<property name="source-location" value="${basedir}/${source-folder}" />
|
||||
<property name="source.dir" value="src" />
|
||||
<property name="source.absolute.dir" location="${source.dir}" />
|
||||
<property name="gen.dir" value="gen" />
|
||||
<property name="gen.absolute.dir" location="${gen.dir}" />
|
||||
<property name="resource.dir" value="res" />
|
||||
<property name="resource.absolute.dir" location="${resource.dir}" />
|
||||
<property name="asset.dir" value="assets" />
|
||||
<property name="asset.absolute.dir" location="${asset.dir}" />
|
||||
|
||||
<!-- folder for the 3rd party java libraries -->
|
||||
<property name="external-libs-folder" value="libs" />
|
||||
<!-- Directory for the third party java libraries -->
|
||||
<property name="external.libs.dir" value="libs" />
|
||||
<property name="external.libs.absolute.dir" location="${external.libs.dir}" />
|
||||
|
||||
<!-- folder for the native libraries -->
|
||||
<property name="native-libs-folder" value="libs" />
|
||||
<!-- Directory for the native libraries -->
|
||||
<property name="native.libs.dir" value="libs" />
|
||||
<property name="native.libs.absolute.dir" location="${native.libs.dir}" />
|
||||
|
||||
<!-- 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"/>
|
||||
<property name="out.dir" value="bin" />
|
||||
<property name="out.absolute.dir" location="${out.dir}" />
|
||||
<property name="out.classes.dir" value="${out.absolute.dir}/classes" />
|
||||
<property name="out.classes.absolute.dir" location="${out.classes.dir}" />
|
||||
|
||||
<!-- 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>
|
||||
<property name="dex.file.name" value="classes.dex" />
|
||||
<property name="intermediate.dex.file" location="${out.absolute.dir}/${dex.file.name}" />
|
||||
|
||||
<!-- The final package file to generate -->
|
||||
<property name="out-debug-unaligned-package" value="${out-folder}/${ant.project.name}-debug-unaligned.apk"/>
|
||||
<property name="out-debug-package" value="${out-folder}/${ant.project.name}-debug.apk"/>
|
||||
<property name="out-unsigned-package" value="${out-folder}/${ant.project.name}-unsigned.apk"/>
|
||||
<property name="out-unaligned-package" value="${out-folder}/${ant.project.name}-unaligned.apk"/>
|
||||
<property name="out-release-package" value="${out-folder}/${ant.project.name}-release.apk"/>
|
||||
<property name="out.debug.unaligned.package"
|
||||
location="${out.absolute.dir}/${ant.project.name}-debug-unaligned.apk" />
|
||||
<property name="out.debug.package"
|
||||
location="${out.absolute.dir}/${ant.project.name}-debug.apk" />
|
||||
<property name="out.unsigned.package"
|
||||
location="${out.absolute.dir}/${ant.project.name}-unsigned.apk" />
|
||||
<property name="out.unaligned.package"
|
||||
location="${out.absolute.dir}/${ant.project.name}-unaligned.apk" />
|
||||
<property name="out.release.package"
|
||||
location="${out.absolute.dir}/${ant.project.name}-release.apk" />
|
||||
|
||||
<!-- Verbosity -->
|
||||
<property name="verbose" value="false" />
|
||||
<!-- This is needed by emma as it uses multilevel verbosity instead of simple 'true' or 'false'
|
||||
The property 'verbosity' is not user configurable and depends exclusively on 'verbose'
|
||||
value.-->
|
||||
<condition property="verbosity" value="verbose" else="quiet">
|
||||
<istrue value="${verbose}" />
|
||||
</condition>
|
||||
<!-- This is needed to switch verbosity of zipalign and aapt. Depends exclusively on 'verbose'
|
||||
-->
|
||||
<condition property="v.option" value="-v" else="">
|
||||
<istrue value="${verbose}" />
|
||||
</condition>
|
||||
<!-- This is needed to switch verbosity of dx. Depends exclusively on 'verbose' -->
|
||||
<condition property="verbose.option" value="--verbose" else="">
|
||||
<istrue value="${verbose}" />
|
||||
</condition>
|
||||
|
||||
<!-- Tools -->
|
||||
<condition property="exe" value=".exe" else=""><os family="windows"/></condition>
|
||||
<property name="adb" value="${android-tools}/adb${exe}"/>
|
||||
<property name="zipalign" value="${android-tools}/zipalign${exe}" />
|
||||
<condition property="exe" value=".exe" else=""><os family="windows" /></condition>
|
||||
<property name="adb" location="${android.tools.dir}/adb${exe}" />
|
||||
<property name="zipalign" location="${android.tools.dir}/zipalign${exe}" />
|
||||
|
||||
<!-- rules -->
|
||||
<!-- Emma configuration -->
|
||||
<property name="emma.dir" value="${sdk.dir}/tools/lib" />
|
||||
<path id="emma.lib">
|
||||
<pathelement location="${emma.dir}/emma.jar" />
|
||||
<pathelement location="${emma.dir}/emma_ant.jar" />
|
||||
</path>
|
||||
<taskdef resource="emma_ant.properties" classpathref="emma.lib" />
|
||||
<!-- End of emma configuration -->
|
||||
|
||||
<!-- Create the output directories if they don't exist yet. -->
|
||||
<target name="dirs">
|
||||
<!-- Macros -->
|
||||
|
||||
<!-- Configurable macro, which allows to pass as parameters output directory,
|
||||
output dex filename and external libraries to dex (optional) -->
|
||||
<macrodef name="dex-helper">
|
||||
<element name="external-libs" optional="yes" />
|
||||
<element name="extra-parameters" optional="yes" />
|
||||
<sequential>
|
||||
<echo>Converting compiled files and external libraries into ${intermediate.dex.file}...
|
||||
</echo>
|
||||
<apply executable="${dx}" failonerror="true" parallel="true">
|
||||
<arg value="--dex" />
|
||||
<arg value="--output=${intermediate.dex.file}" />
|
||||
<extra-parameters />
|
||||
<arg line="${verbose.option}" />
|
||||
<arg path="${out.classes.absolute.dir}" />
|
||||
<fileset dir="${external.libs.absolute.dir}" includes="*.jar" />
|
||||
<external-libs />
|
||||
</apply>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<!-- This is macro that enable passing variable list of external jar files to ApkBuilder
|
||||
Example of use:
|
||||
<package-helper>
|
||||
<extra-jars>
|
||||
<jarfolder path="my_jars" />
|
||||
<jarfile path="foo/bar.jar" />
|
||||
<jarfolder path="your_jars" />
|
||||
</extra-jars>
|
||||
</package-helper> -->
|
||||
<macrodef name="package-helper">
|
||||
<attribute name="sign.package" />
|
||||
<element name="extra-jars" optional="yes" />
|
||||
<sequential>
|
||||
<apkbuilder
|
||||
outfolder="${out.absolute.dir}"
|
||||
basename="${ant.project.name}"
|
||||
signed="@{sign.package}"
|
||||
verbose="${verbose}">
|
||||
<file path="${intermediate.dex.file}" />
|
||||
<sourcefolder path="${source.absolute.dir}" />
|
||||
<nativefolder path="${native.libs.absolute.dir}" />
|
||||
<jarfolder path="${external.libs.absolute.dir}" />
|
||||
<extra-jars/>
|
||||
</apkbuilder>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<!-- This is macro which zipaligns in.package and outputs it to out.package. Used by targets
|
||||
debug, -debug-with-emma and release.-->
|
||||
<macrodef name="zipalign-helper">
|
||||
<attribute name="in.package" />
|
||||
<attribute name="out.package" />
|
||||
<sequential>
|
||||
<echo>Running zip align on final apk...</echo>
|
||||
<exec executable="${zipalign}" failonerror="true">
|
||||
<arg line="${v.option}" />
|
||||
<arg value="-f" />
|
||||
<arg value="4" />
|
||||
<arg path="@{in.package}" />
|
||||
<arg path="@{out.package}" />
|
||||
</exec>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<!-- This is macro used only for sharing code among two targets, -install and
|
||||
-install-with-emma which do exactly the same but differ in dependencies -->
|
||||
<macrodef name="install-helper">
|
||||
<sequential>
|
||||
<echo>Installing ${out.debug.package} onto default emulator or device...</echo>
|
||||
<exec executable="${adb}" failonerror="true">
|
||||
<arg line="${adb.device.arg}" />
|
||||
<arg value="install" />
|
||||
<arg value="-r" />
|
||||
<arg path="${out.debug.package}" />
|
||||
</exec>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<!-- Rules -->
|
||||
|
||||
<!-- Creates the output directories if they don't exist yet. -->
|
||||
<target name="-dirs">
|
||||
<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}" />
|
||||
<mkdir dir="${resource.absolute.dir}" />
|
||||
<mkdir dir="${external.libs.absolute.dir}" />
|
||||
<mkdir dir="${gen.absolute.dir}" />
|
||||
<mkdir dir="${out.absolute.dir}" />
|
||||
<mkdir dir="${out.classes.absolute.dir}" />
|
||||
</target>
|
||||
|
||||
<!-- Generate the R.java file for this project's resources. -->
|
||||
<target name="resource-src" depends="dirs">
|
||||
<!-- Generates 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 line="${v.option}" />
|
||||
<arg value="-m" />
|
||||
<arg value="-J" />
|
||||
<arg path="${gen-folder}" />
|
||||
<arg path="${gen.absolute.dir}" />
|
||||
<arg value="-M" />
|
||||
<arg path="AndroidManifest.xml" />
|
||||
<arg value="-S" />
|
||||
<arg path="${resource-folder}" />
|
||||
<arg path="${resource.absolute.dir}" />
|
||||
<arg value="-I" />
|
||||
<arg path="${android-jar}" />
|
||||
<arg path="${android.jar}" />
|
||||
</exec>
|
||||
</target>
|
||||
|
||||
<!-- Generate java classes from .aidl files. -->
|
||||
<target name="aidl" depends="dirs">
|
||||
<!-- Generates 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"/>
|
||||
<arg value="-p${android.aidl}" />
|
||||
<arg value="-I${source.absolute.dir}" />
|
||||
<arg value="-o${gen.absolute.dir}" />
|
||||
<fileset dir="${source.absolute.dir}">
|
||||
<include name="**/*.aidl" />
|
||||
</fileset>
|
||||
</apply>
|
||||
</target>
|
||||
|
||||
<!-- Compile this project's .java files into .class files. -->
|
||||
<target name="compile" depends="resource-src, aidl">
|
||||
<!-- Compiles this project's .java files into .class files. -->
|
||||
<target name="compile" depends="-resource-src, -aidl"
|
||||
description="Compiles project's .java files into .class files">
|
||||
<!-- 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>
|
||||
<javac encoding="ascii" target="1.5" debug="true" extdirs=""
|
||||
destdir="${out-classes}"
|
||||
bootclasspathref="android.target.classpath">
|
||||
<src path="${source-folder}" />
|
||||
<src path="${gen-folder}" />
|
||||
destdir="${out.classes.absolute.dir}"
|
||||
bootclasspathref="android.target.classpath"
|
||||
verbose="${verbose}" classpath="${extensible.classpath}">
|
||||
<src path="${source.absolute.dir}" />
|
||||
<src path="${gen.absolute.dir}" />
|
||||
<classpath>
|
||||
<fileset dir="${external-libs-folder}" includes="*.jar"/>
|
||||
<pathelement path="${main-out-classes}"/>
|
||||
<fileset dir="${external.libs.absolute.dir}" includes="*.jar" />
|
||||
</classpath>
|
||||
</javac>
|
||||
</javac>
|
||||
</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="--dex" />
|
||||
<arg value="--output=${intermediate-dex-location}" />
|
||||
<arg path="${out-classes-location}" />
|
||||
<fileset dir="${external-libs-folder}" includes="*.jar"/>
|
||||
</apply>
|
||||
<!-- Converts this project's .class files into .dex files -->
|
||||
<target name="-dex" depends="compile">
|
||||
<dex-helper />
|
||||
</target>
|
||||
|
||||
<!-- Put the project's resources into the output package file
|
||||
<!-- 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">
|
||||
<target name="-package-resources">
|
||||
<echo>Packaging resources</echo>
|
||||
<aaptexec executable="${aapt}"
|
||||
command="package"
|
||||
manifest="AndroidManifest.xml"
|
||||
resources="${resource-folder}"
|
||||
assets="${asset-folder}"
|
||||
androidjar="${android-jar}"
|
||||
outfolder="${out-folder}"
|
||||
resources="${resource.absolute.dir}"
|
||||
assets="${asset.absolute.dir}"
|
||||
androidjar="${android.jar}"
|
||||
outfolder="${out.absolute.dir}"
|
||||
basename="${ant.project.name}" />
|
||||
</target>
|
||||
|
||||
<!-- Package the application and (maybe) sign it with a debug key.
|
||||
This requires the property sign.package to be set to true or false. -->
|
||||
<target name="package">
|
||||
<apkbuilder
|
||||
outfolder="${out-folder}"
|
||||
basename="${ant.project.name}"
|
||||
signed="${sign.package}"
|
||||
verbose="true">
|
||||
<file path="${intermediate-dex}" />
|
||||
<sourcefolder path="${source-folder}" />
|
||||
<jarfolder path="${external-libs-folder}" />
|
||||
<nativefolder path="${native-libs-folder}" />
|
||||
</apkbuilder>
|
||||
<!-- Packages the application and sign it with a debug key. -->
|
||||
<target name="-package-debug-sign" depends="-dex, -package-resources">
|
||||
<package-helper sign.package="true" />
|
||||
</target>
|
||||
|
||||
<target name="no-sign">
|
||||
<property name="sign.package" value="false" />
|
||||
<!-- Packages the application without signing it. -->
|
||||
<target name="-package-no-sign" depends="-dex, -package-resources">
|
||||
<package-helper sign.package="false" />
|
||||
</target>
|
||||
|
||||
<target name="debug-sign">
|
||||
<property name="sign.package" value="true" />
|
||||
<target name="-compile-tested-if-test" if="tested.project.dir" unless="do.not.compile.again">
|
||||
<subant target="compile">
|
||||
<fileset dir="${tested.project.absolute.dir}" includes="build.xml" />
|
||||
</subant>
|
||||
</target>
|
||||
|
||||
<target name="debug" depends="dex, package-resources, debug-sign, package">
|
||||
<echo>Running zip align on final apk...</echo>
|
||||
<exec executable="${zipalign}" failonerror="true">
|
||||
<arg value="-f" />
|
||||
<arg value="4" />
|
||||
<arg path="${out-debug-unaligned-package}" />
|
||||
<arg path="${out-debug-package}" />
|
||||
</exec>
|
||||
<echo>Debug Package: ${out-debug-package}</echo>
|
||||
<!-- Builds debug output package, provided all the necessary files are already dexed -->
|
||||
<target name="debug" depends="-compile-tested-if-test, -package-debug-sign"
|
||||
description="Builds the application and signs it with a debug key.">
|
||||
<zipalign-helper in.package="${out.debug.unaligned.package}"
|
||||
out.package="${out.debug.package}" />
|
||||
<echo>Debug Package: ${out.debug.package}</echo>
|
||||
</target>
|
||||
|
||||
<target name="release-package" depends="dex, package-resources, no-sign, package">
|
||||
</target>
|
||||
|
||||
<target name="release.check">
|
||||
<target name="-release-check">
|
||||
<condition property="release.sign">
|
||||
<and>
|
||||
<isset property="key.store" />
|
||||
@@ -201,80 +308,140 @@
|
||||
</and>
|
||||
</condition>
|
||||
</target>
|
||||
<target name="release.nosign" depends="release.check" unless="release.sign">
|
||||
|
||||
<target name="-release-nosign" depends="-release-check" unless="release.sign">
|
||||
<echo>No key.store and key.alias properties found in build.properties.</echo>
|
||||
<echo>Please sign ${out-unsigned-package} manually</echo>
|
||||
<echo>Please sign ${out.unsigned.package} manually</echo>
|
||||
<echo>and run zipalign from the Android SDK tools.</echo>
|
||||
</target>
|
||||
|
||||
<target name="release" depends="release-package, release.nosign" if="release.sign">
|
||||
<!-- get passwords -->
|
||||
<target name="release" depends="-package-no-sign, -release-nosign" if="release.sign"
|
||||
description="Builds the application. The generated apk file must be signed before
|
||||
it is published.">
|
||||
<!-- Gets passwords -->
|
||||
<input
|
||||
message="Please enter keystore password (store:${key.store}):"
|
||||
addproperty="key.store.password"/>
|
||||
addproperty="key.store.password" />
|
||||
<input
|
||||
message="Please enter password for alias '${key.alias}':"
|
||||
addproperty="key.alias.password"/>
|
||||
<!-- sign the APK -->
|
||||
addproperty="key.alias.password" />
|
||||
|
||||
<!-- Signs the APK -->
|
||||
<echo>Signing final apk...</echo>
|
||||
<signjar
|
||||
jar="${out-unsigned-package}"
|
||||
signedjar="${out-unaligned-package}"
|
||||
jar="${out.unsigned.package}"
|
||||
signedjar="${out.unaligned.package}"
|
||||
keystore="${key.store}"
|
||||
storepass="${key.store.password}"
|
||||
alias="${key.alias}"
|
||||
keypass="${key.alias.password}"/>
|
||||
<!-- zip align the APK -->
|
||||
<echo>Running zip align on final apk...</echo>
|
||||
<exec executable="${zipalign}" failonerror="true">
|
||||
<arg value="-f" />
|
||||
<arg value="4" />
|
||||
<arg path="${out-unaligned-package}" />
|
||||
<arg path="${out-release-package}" />
|
||||
</exec>
|
||||
<echo>Release Package: ${out-release-package}</echo>
|
||||
keypass="${key.alias.password}"
|
||||
verbose="${verbose}" />
|
||||
|
||||
<!-- Zip aligns the APK -->
|
||||
<zipalign-helper in.package="${out.unaligned.package}"
|
||||
out.package="${out.release.package}" />
|
||||
<echo>Release Package: ${out.release.package}</echo>
|
||||
</target>
|
||||
|
||||
<!-- Install 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 name="install" depends="debug"
|
||||
description="Installs/reinstalls the debug package onto a running
|
||||
emulator or device. If the application was previously installed,
|
||||
the signatures must match." >
|
||||
<install-helper />
|
||||
</target>
|
||||
|
||||
<!-- Uinstall the package from the default emulator -->
|
||||
<target name="uninstall.check">
|
||||
<target name="-uninstall-check">
|
||||
<condition property="uninstall.run">
|
||||
<isset property="application-package" />
|
||||
<isset property="manifest.package" />
|
||||
</condition>
|
||||
</target>
|
||||
<target name="uninstall.error" depends="uninstall.check" unless="uninstall.run">
|
||||
<echo>Unable to run 'ant unintall', application-package is not defined in build.properties</echo>
|
||||
|
||||
<target name="-uninstall-error" depends="-uninstall-check" unless="uninstall.run">
|
||||
<echo>Unable to run 'ant uninstall', manifest.package property is not defined.
|
||||
</echo>
|
||||
</target>
|
||||
<target name="uninstall" depends="uninstall.error" if="uninstall.run">
|
||||
<echo>Uninstalling ${application-package} from the default emulator...</echo>
|
||||
|
||||
<!-- Uninstalls the package from the default emulator/device -->
|
||||
<target name="uninstall" depends="-uninstall-error" if="uninstall.run"
|
||||
description="Uninstalls the application from a running emulator or device.">
|
||||
<echo>Uninstalling ${manifest.package} from the default emulator or device...</echo>
|
||||
<exec executable="${adb}" failonerror="true">
|
||||
<arg line="${adb.device.arg}" />
|
||||
<arg value="uninstall" />
|
||||
<arg value="${application-package}" />
|
||||
<arg value="${manifest.package}" />
|
||||
</exec>
|
||||
</target>
|
||||
|
||||
|
||||
<target name="clean" description="Removes output files created by other targets.">
|
||||
<delete dir="${out.absolute.dir}" verbose="${verbose}" />
|
||||
<delete dir="${gen.absolute.dir}" verbose="${verbose}" />
|
||||
</target>
|
||||
|
||||
<!-- Targets for code-coverage measurement purposes, invoked from external file -->
|
||||
|
||||
<!-- Emma-instruments tested project classes (compiles the tested project if necessary)
|
||||
and writes instrumented classes to ${instrumentation.absolute.dir}/classes -->
|
||||
<target name="-emma-instrument" depends="compile">
|
||||
<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">
|
||||
</instr>
|
||||
<!-- TODO: exclusion filters on R*.class and allowing custom exclusion from
|
||||
user defined file -->
|
||||
</emma>
|
||||
</target>
|
||||
|
||||
<target name="-dex-instrumented" depends="-emma-instrument">
|
||||
<dex-helper>
|
||||
<extra-parameters>
|
||||
<arg value="--no-locals" />
|
||||
</extra-parameters>
|
||||
<external-libs>
|
||||
<fileset file="${emma.dir}/emma_device.jar" />
|
||||
</external-libs>
|
||||
</dex-helper>
|
||||
</target>
|
||||
|
||||
<!-- Invoked from external files for code coverage purposes -->
|
||||
<target name="-package-with-emma" depends="-dex-instrumented, -package-resources">
|
||||
<package-helper sign.package="true">
|
||||
<extra-jars>
|
||||
<!-- Injected from external file -->
|
||||
<jarfile path="${emma.dir}/emma_device.jar" />
|
||||
</extra-jars>
|
||||
</package-helper>
|
||||
</target>
|
||||
|
||||
<target name="-debug-with-emma" depends="-package-with-emma">
|
||||
<zipalign-helper in.package="${out.debug.unaligned.package}"
|
||||
out.package="${out.debug.package}" />
|
||||
</target>
|
||||
|
||||
<target name="-install-with-emma" depends="-debug-with-emma">
|
||||
<install-helper />
|
||||
</target>
|
||||
|
||||
<!-- End of targets for code-coverage measurement purposes -->
|
||||
|
||||
<target name="help">
|
||||
<!-- displays starts at col 13
|
||||
|13 80| -->
|
||||
<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> clean: Removes output files created by other targets.</echo>
|
||||
<echo> compile: Compiles project's .java files into .class files.</echo>
|
||||
<echo> debug: Builds the application and signs 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/reinstall the debug package onto a running</echo>
|
||||
<echo> install: Installs/reinstalls the debug package onto a running</echo>
|
||||
<echo> emulator or device.</echo>
|
||||
<echo> If the application was previously installed, the</echo>
|
||||
<echo> signatures must match.</echo>
|
||||
<echo> uninstall: uninstall the application from a running emulator or</echo>
|
||||
<echo> uninstall: Uninstalls the application from a running emulator or</echo>
|
||||
<echo> device.</echo>
|
||||
</target>
|
||||
</project>
|
||||
|
||||
104
tools/scripts/android_test_rules.xml
Normal file
104
tools/scripts/android_test_rules.xml
Normal file
@@ -0,0 +1,104 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project name="android_test_rules" default="run-tests">
|
||||
|
||||
<import file="android_rules.xml" />
|
||||
|
||||
<property name="tested.project.absolute.dir" location="${tested.project.dir}" />
|
||||
<property name="instrumentation.dir" value="instrumented" />
|
||||
<property name="instrumentation.absolute.dir" location="${instrumentation.dir}" />
|
||||
|
||||
<property name="test.runner" value="android.test.InstrumentationTestRunner" />
|
||||
<!-- Application package of the tested project extracted from its manifest file -->
|
||||
<xpath input="${tested.project.absolute.dir}/AndroidManifest.xml"
|
||||
expression="/manifest/@package" output="tested.manifest.package" />
|
||||
|
||||
<!-- TODO: make it more configurable in the next CL's - now it is default for auto-generated
|
||||
project -->
|
||||
<property name="emma.dump.file"
|
||||
value="/data/data/${tested.manifest.package}/files/coverage.ec" />
|
||||
|
||||
<macrodef name="run-tests-helper">
|
||||
<attribute name="emma.enabled" default="false" />
|
||||
<element name="extra-instrument-args" optional="yes" />
|
||||
<sequential>
|
||||
<echo>Running tests ...</echo>
|
||||
<exec executable="${adb}" failonerror="true">
|
||||
<arg value="shell" />
|
||||
<arg value="am" />
|
||||
<arg value="instrument" />
|
||||
<arg value="-w" />
|
||||
<arg value="-e" />
|
||||
<arg value="coverage" />
|
||||
<arg value="@{emma.enabled}" />
|
||||
<extra-instrument-args />
|
||||
<arg value="${manifest.package}/${test.runner}" />
|
||||
</exec>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
|
||||
<!-- Invoking this target sets the value of extensible.classpath, which is being added to javac
|
||||
classpath in target 'compile' (android_rules.xml) -->
|
||||
<target name="-set-coverage-classpath">
|
||||
<property name="extensible.classpath"
|
||||
location="${instrumentation.absolute.dir}/classes" />
|
||||
</target>
|
||||
|
||||
<!-- Ensures that tested project is installed on the device before we run the tests.
|
||||
Used for ordinary tests, without coverage measurement -->
|
||||
<target name="-install-tested-project">
|
||||
<property name="do.not.compile.again" value="true" />
|
||||
<subant target="install">
|
||||
<fileset dir="${tested.project.absolute.dir}" includes="build.xml" />
|
||||
</subant>
|
||||
</target>
|
||||
|
||||
<target name="run-tests" depends="-install-tested-project, install"
|
||||
description="Runs tests from the package defined in test.package property">
|
||||
<run-tests-helper />
|
||||
</target>
|
||||
|
||||
<target name="-install-instrumented">
|
||||
<property name="do.not.compile.again" value="true" />
|
||||
<subant target="-install-with-emma">
|
||||
<property name="out.absolute.dir" value="${instrumentation.absolute.dir}" />
|
||||
<fileset dir="${tested.project.absolute.dir}" includes="build.xml" />
|
||||
</subant>
|
||||
</target>
|
||||
|
||||
<target name="coverage" depends="-set-coverage-classpath, -install-instrumented, install"
|
||||
description="Runs the tests against the instrumented code and generates
|
||||
code coverage report">
|
||||
<run-tests-helper emma.enabled="true">
|
||||
<extra-instrument-args>
|
||||
<arg value="-e" />
|
||||
<arg value="coverageFile" />
|
||||
<arg value="${emma.dump.file}" />
|
||||
</extra-instrument-args>
|
||||
</run-tests-helper>
|
||||
<echo>Downloading coverage file into project directory...</echo>
|
||||
<exec executable="${adb}" failonerror="true">
|
||||
<arg value="pull" />
|
||||
<arg value="${emma.dump.file}" />
|
||||
<arg value="coverage.ec" />
|
||||
</exec>
|
||||
<echo>Extracting coverage report...</echo>
|
||||
<emma>
|
||||
<report sourcepath="${tested.project.absolute.dir}/${source.dir}"
|
||||
verbosity="${verbosity}">
|
||||
<!-- TODO: report.dir or something like should be introduced if necessary -->
|
||||
<infileset dir=".">
|
||||
<include name="coverage.ec" />
|
||||
<include name="coverage.em" />
|
||||
</infileset>
|
||||
<!-- TODO: reports in other, indicated by user formats -->
|
||||
<html outfile="coverage.html" />
|
||||
</report>
|
||||
</emma>
|
||||
<echo>Cleaning up temporary files...</echo>
|
||||
<delete dir="${instrumentation.absolute.dir}" />
|
||||
<delete file="coverage.ec" />
|
||||
<delete file="coverage.em" />
|
||||
<echo>Saving the report file in ${basedir}/coverage/coverage.html</echo>
|
||||
</target>
|
||||
|
||||
</project>
|
||||
@@ -37,7 +37,7 @@ import zipfile
|
||||
from google.appengine.api import memcache
|
||||
from google.appengine.ext import webapp
|
||||
from google.appengine.ext.webapp import util
|
||||
|
||||
from time import localtime, strftime
|
||||
|
||||
def create_handler(zip_files, max_age=None, public=None):
|
||||
"""Factory method to create a MemcachedZipHandler instance.
|
||||
@@ -57,7 +57,6 @@ def create_handler(zip_files, max_age=None, public=None):
|
||||
"""
|
||||
# verify argument integrity. If the argument is passed in list format,
|
||||
# convert it to list of lists format
|
||||
|
||||
if zip_files and type(zip_files).__name__ == 'list':
|
||||
num_items = len(zip_files)
|
||||
while num_items > 0:
|
||||
@@ -72,7 +71,6 @@ def create_handler(zip_files, max_age=None, public=None):
|
||||
|
||||
I'm still not sure why this is needed
|
||||
"""
|
||||
|
||||
def get(self, name):
|
||||
self.zipfilenames = zip_files
|
||||
self.TrueGet(name)
|
||||
@@ -96,12 +94,15 @@ class MemcachedZipHandler(webapp.RequestHandler):
|
||||
PUBLIC = True # public cache setting
|
||||
CACHE_PREFIX = 'cache://' # memcache key prefix for actual URLs
|
||||
NEG_CACHE_PREFIX = 'noncache://' # memcache key prefix for non-existant URL
|
||||
|
||||
def TrueGet(self, name):
|
||||
intlString = 'intl/'
|
||||
validLangs = ['en', 'de', 'es', 'fr','it','ja','zh-CN','zh-TW']
|
||||
|
||||
def TrueGet(self, reqUri):
|
||||
"""The top-level entry point to serving requests.
|
||||
|
||||
Called 'True' get because it does the work when called from the wrapper
|
||||
class' get method
|
||||
class' get method. Some logic is applied to the request to serve files
|
||||
from an intl/<lang>/... directory or fall through to the default language.
|
||||
|
||||
Args:
|
||||
name: URL requested
|
||||
@@ -109,37 +110,88 @@ class MemcachedZipHandler(webapp.RequestHandler):
|
||||
Returns:
|
||||
None
|
||||
"""
|
||||
name = self.PreprocessUrl(name)
|
||||
langName = 'en'
|
||||
resetLangCookie = False
|
||||
urlLangName = None
|
||||
retry = False
|
||||
isValidIntl = False
|
||||
|
||||
# see if we have the page in the memcache
|
||||
resp_data = self.GetFromCache(name)
|
||||
if resp_data is None:
|
||||
logging.info('Cache miss for %s', name)
|
||||
resp_data = self.GetFromNegativeCache(name)
|
||||
if resp_data is None:
|
||||
resp_data = self.GetFromStore(name)
|
||||
# Try to retrieve the user's lang pref from the cookie. If there is no
|
||||
# lang pref cookie in the request, add set-cookie to the response with the
|
||||
# default value of 'en'.
|
||||
try:
|
||||
langName = self.request.cookies['android_developer_pref_lang']
|
||||
except KeyError:
|
||||
resetLangCookie = True
|
||||
#logging.info('==========================EXCEPTION: NO LANG COOKIE FOUND, USING [%s]', langName)
|
||||
logging.info('==========================REQ INIT name [%s] langName [%s]', reqUri, langName)
|
||||
|
||||
# Preprocess the req url. If it references a directory or the domain itself,
|
||||
# append '/index.html' to the url and 302 redirect. Otherwise, continue
|
||||
# processing the request below.
|
||||
name = self.PreprocessUrl(reqUri, langName)
|
||||
if name:
|
||||
# Do some prep for handling intl requests. Parse the url and validate
|
||||
# the intl/lang substring, extract the url lang code (urlLangName) and the
|
||||
# the uri that follows the intl/lang substring(contentUri)
|
||||
sections = name.split("/", 2)
|
||||
contentUri = 0
|
||||
isIntl = len(sections) > 1 and (sections[0] == "intl")
|
||||
if isIntl:
|
||||
isValidIntl = sections[1] in self.validLangs
|
||||
if isValidIntl:
|
||||
urlLangName = sections[1]
|
||||
contentUri = sections[2]
|
||||
if (langName != urlLangName):
|
||||
# if the lang code in the request is different from that in
|
||||
# the cookie, reset the cookie to the url lang value.
|
||||
langName = urlLangName
|
||||
resetLangCookie = True
|
||||
#logging.info('INTL PREP resetting langName to urlLangName [%s]', langName)
|
||||
#else:
|
||||
# logging.info('INTL PREP no need to reset langName')
|
||||
|
||||
# Send for processing
|
||||
if self.isCleanUrl(name, langName, isValidIntl):
|
||||
# handle a 'clean' request.
|
||||
# Try to form a response using the actual request url.
|
||||
if not self.CreateResponse(name, langName, isValidIntl, resetLangCookie):
|
||||
# If CreateResponse returns False, there was no such document
|
||||
# in the intl/lang tree. Before going to 404, see if there is an
|
||||
# English-language version of the doc in the default
|
||||
# default tree and return it, else go to 404.
|
||||
self.CreateResponse(contentUri, langName, False, resetLangCookie)
|
||||
|
||||
elif isIntl:
|
||||
# handle the case where we need to pass through an invalid intl req
|
||||
# for processing (so as to get 404 as appropriate). This is needed
|
||||
# because intl urls are passed through clean and retried in English,
|
||||
# if necessary.
|
||||
logging.info(' Handling an invalid intl request...')
|
||||
self.CreateResponse(name, langName, isValidIntl, resetLangCookie)
|
||||
|
||||
# IF we have the file, put it in the memcache
|
||||
# ELSE put it in the negative cache
|
||||
if resp_data is not None:
|
||||
self.StoreOrUpdateInCache(name, resp_data)
|
||||
else:
|
||||
logging.info('Adding %s to negative cache, serving 404', name)
|
||||
self.StoreInNegativeCache(name)
|
||||
self.Write404Error()
|
||||
return
|
||||
else:
|
||||
self.Write404Error()
|
||||
return
|
||||
# handle the case where we have a non-clean url (usually a non-intl
|
||||
# url) that we need to interpret in the context of any lang pref
|
||||
# that is set. Prepend an intl/lang string to the request url and
|
||||
# send it as a 302 redirect. After the redirect, the subsequent
|
||||
# request will be handled as a clean url.
|
||||
self.RedirToIntl(name, self.intlString, langName)
|
||||
|
||||
content_type, encoding = mimetypes.guess_type(name)
|
||||
if content_type:
|
||||
self.response.headers['Content-Type'] = content_type
|
||||
self.SetCachingHeaders()
|
||||
self.response.out.write(resp_data)
|
||||
def isCleanUrl(self, name, langName, isValidIntl):
|
||||
"""Determine whether to pass an incoming url straight to processing.
|
||||
|
||||
def PreprocessUrl(self, name):
|
||||
"""Any preprocessing work on the URL when it comes it.
|
||||
Args:
|
||||
name: The incoming URL
|
||||
|
||||
Returns:
|
||||
boolean: Whether the URL should be sent straight to processing
|
||||
"""
|
||||
if (langName == 'en') or isValidIntl or not ('.html' in name) or (not isValidIntl and not langName):
|
||||
return True
|
||||
|
||||
def PreprocessUrl(self, name, langName):
|
||||
"""Any preprocessing work on the URL when it comes in.
|
||||
|
||||
Put any work related to interpretting the incoming URL here. For example,
|
||||
this is used to redirect requests for a directory to the index.html file
|
||||
@@ -150,12 +202,9 @@ class MemcachedZipHandler(webapp.RequestHandler):
|
||||
name: The incoming URL
|
||||
|
||||
Returns:
|
||||
The processed URL
|
||||
False if the request was redirected to '/index.html', or
|
||||
The processed URL, otherwise
|
||||
"""
|
||||
# handle special case of requesting the domain itself
|
||||
if not name:
|
||||
name = 'index.html'
|
||||
|
||||
# determine if this is a request for a directory
|
||||
final_path_segment = name
|
||||
final_slash_offset = name.rfind('/')
|
||||
@@ -164,12 +213,123 @@ class MemcachedZipHandler(webapp.RequestHandler):
|
||||
if final_path_segment.find('.') == -1:
|
||||
name = ''.join([name, '/'])
|
||||
|
||||
# if this is a directory, redirect to index.html
|
||||
if name[len(name) - 1:] == '/':
|
||||
return '%s%s' % (name, 'index.html')
|
||||
# if this is a directory or the domain itself, redirect to /index.html
|
||||
if not name or (name[len(name) - 1:] == '/'):
|
||||
uri = ''.join(['/', name, 'index.html'])
|
||||
logging.info('--->PREPROCESSING REDIRECT [%s] to [%s] with langName [%s]', name, uri, langName)
|
||||
self.redirect(uri, False)
|
||||
return False
|
||||
else:
|
||||
return name
|
||||
|
||||
def RedirToIntl(self, name, intlString, langName):
|
||||
"""Redirect an incoming request to the appropriate intl uri.
|
||||
|
||||
Builds the intl/lang string from a base (en) string
|
||||
and redirects (302) the request to look for a version
|
||||
of the file in the language that matches the client-
|
||||
supplied cookie value.
|
||||
|
||||
Args:
|
||||
name: The incoming, preprocessed URL
|
||||
|
||||
Returns:
|
||||
The lang-specific URL
|
||||
"""
|
||||
builtIntlLangUri = ''.join([intlString, langName, '/', name, '?', self.request.query_string])
|
||||
uri = ''.join(['/', builtIntlLangUri])
|
||||
logging.info('-->>REDIRECTING %s to %s', name, uri)
|
||||
self.redirect(uri, False)
|
||||
return uri
|
||||
|
||||
def CreateResponse(self, name, langName, isValidIntl, resetLangCookie):
|
||||
"""Process the url and form a response, if appropriate.
|
||||
|
||||
Attempts to retrieve the requested file (name) from cache,
|
||||
negative cache, or store (zip) and form the response.
|
||||
For intl requests that are not found (in the localized tree),
|
||||
returns False rather than forming a response, so that
|
||||
the request can be retried with the base url (this is the
|
||||
fallthrough to default language).
|
||||
|
||||
For requests that are found, forms the headers and
|
||||
adds the content to the response entity. If the request was
|
||||
for an intl (localized) url, also resets the language cookie
|
||||
to the language specified in the url if needed, to ensure that
|
||||
the client language and response data remain harmonious.
|
||||
|
||||
Args:
|
||||
name: The incoming, preprocessed URL
|
||||
langName: The language id. Used as necessary to reset the
|
||||
language cookie in the response.
|
||||
isValidIntl: If present, indicates whether the request is
|
||||
for a language-specific url
|
||||
resetLangCookie: Whether the response should reset the
|
||||
language cookie to 'langName'
|
||||
|
||||
Returns:
|
||||
True: A response was successfully created for the request
|
||||
False: No response was created.
|
||||
"""
|
||||
# see if we have the page in the memcache
|
||||
logging.info('PROCESSING %s langName [%s] isValidIntl [%s] resetLang [%s]',
|
||||
name, langName, isValidIntl, resetLangCookie)
|
||||
resp_data = self.GetFromCache(name)
|
||||
if resp_data is None:
|
||||
logging.info(' Cache miss for %s', name)
|
||||
resp_data = self.GetFromNegativeCache(name)
|
||||
if resp_data is None:
|
||||
resp_data = self.GetFromStore(name)
|
||||
|
||||
# IF we have the file, put it in the memcache
|
||||
# ELSE put it in the negative cache
|
||||
if resp_data is not None:
|
||||
self.StoreOrUpdateInCache(name, resp_data)
|
||||
elif isValidIntl:
|
||||
# couldn't find the intl doc. Try to fall through to English.
|
||||
#logging.info(' Retrying with base uri...')
|
||||
return False
|
||||
else:
|
||||
logging.info(' Adding %s to negative cache, serving 404', name)
|
||||
self.StoreInNegativeCache(name)
|
||||
self.Write404Error()
|
||||
return True
|
||||
else:
|
||||
# found it in negative cache
|
||||
self.Write404Error()
|
||||
return True
|
||||
|
||||
# found content from cache or store
|
||||
logging.info('FOUND CLEAN')
|
||||
if resetLangCookie:
|
||||
logging.info(' Resetting android_developer_pref_lang cookie to [%s]',
|
||||
langName)
|
||||
expireDate = time.mktime(localtime()) + 60 * 60 * 24 * 365 * 10
|
||||
self.response.headers.add_header('Set-Cookie',
|
||||
'android_developer_pref_lang=%s; path=/; expires=%s' %
|
||||
(langName, strftime("%a, %d %b %Y %H:%M:%S", localtime(expireDate))))
|
||||
mustRevalidate = False
|
||||
if ('.html' in name):
|
||||
# revalidate html files -- workaround for cache inconsistencies for
|
||||
# negotiated responses
|
||||
mustRevalidate = True
|
||||
logging.info(' Adding [Vary: Cookie] to response...')
|
||||
self.response.headers.add_header('Vary', 'Cookie')
|
||||
content_type, encoding = mimetypes.guess_type(name)
|
||||
if content_type:
|
||||
self.response.headers['Content-Type'] = content_type
|
||||
self.SetCachingHeaders(mustRevalidate)
|
||||
self.response.out.write(resp_data)
|
||||
elif (name == 'favicon.ico'):
|
||||
self.response.headers['Content-Type'] = 'image/x-icon'
|
||||
self.SetCachingHeaders(mustRevalidate)
|
||||
self.response.out.write(resp_data)
|
||||
elif name.endswith('.psd'):
|
||||
self.response.headers['Content-Type'] = 'application/octet-stream'
|
||||
self.SetCachingHeaders(mustRevalidate)
|
||||
self.response.out.write(resp_data)
|
||||
return True
|
||||
|
||||
def GetFromStore(self, file_path):
|
||||
"""Retrieve file from zip files.
|
||||
|
||||
@@ -192,7 +352,7 @@ class MemcachedZipHandler(webapp.RequestHandler):
|
||||
archive_name = self.MapFileToArchive(file_path)
|
||||
if not archive_name:
|
||||
archive_name = file_itr.next()[0]
|
||||
|
||||
|
||||
while resp_data is None and archive_name:
|
||||
zip_archive = self.LoadZipFile(archive_name)
|
||||
if zip_archive:
|
||||
@@ -326,15 +486,17 @@ class MemcachedZipHandler(webapp.RequestHandler):
|
||||
else:
|
||||
return 0
|
||||
|
||||
def SetCachingHeaders(self):
|
||||
def SetCachingHeaders(self, revalidate):
|
||||
"""Set caching headers for the request."""
|
||||
max_age = self.MAX_AGE
|
||||
self.response.headers['Expires'] = email.Utils.formatdate(
|
||||
time.time() + max_age, usegmt=True)
|
||||
cache_control = []
|
||||
#self.response.headers['Expires'] = email.Utils.formatdate(
|
||||
# time.time() + max_age, usegmt=True)
|
||||
cache_control = []
|
||||
if self.PUBLIC:
|
||||
cache_control.append('public')
|
||||
cache_control.append('max-age=%d' % max_age)
|
||||
if revalidate:
|
||||
cache_control.append('must-revalidate')
|
||||
self.response.headers['Cache-Control'] = ', '.join(cache_control)
|
||||
|
||||
def GetFromCache(self, filename):
|
||||
@@ -401,7 +563,6 @@ class MemcachedZipHandler(webapp.RequestHandler):
|
||||
"""
|
||||
return memcache.get('%s%s' % (self.NEG_CACHE_PREFIX, filename))
|
||||
|
||||
|
||||
def main():
|
||||
application = webapp.WSGIApplication([('/([^/]+)/(.*)',
|
||||
MemcachedZipHandler)])
|
||||
|
||||
@@ -8,16 +8,16 @@ THIS FILE IS CURRENTLY BROKEN AND SHOULD NOT BE USED.
|
||||
<!-- The build.properties file can be created by you and is never touched
|
||||
by activitycreator. If you want to manually set properties, this is
|
||||
the best place to set them. -->
|
||||
<property file="build.properties"/>
|
||||
<property file="build.properties" />
|
||||
|
||||
<!-- The default.properties file is created and updated by activitycreator.
|
||||
It will set any properties not already defined by build.properties. -->
|
||||
<property file="default.properties"/>
|
||||
<property file="default.properties" />
|
||||
|
||||
<!-- ************************************************************************************* -->
|
||||
<!-- Import the default Android build rules.
|
||||
<!-- Import the default Android build rules.
|
||||
This requires ant 1.6.0 or above. -->
|
||||
|
||||
<import file="${sdk-folder}/tools/lib/alias_rules.xml" />
|
||||
<import file="${sdk.dir}/tools/lib/alias_rules.xml" />
|
||||
|
||||
</project>
|
||||
|
||||
@@ -2,22 +2,22 @@
|
||||
<project name="PROJECT_NAME" default="help">
|
||||
|
||||
<!-- The local.properties file is created and updated by the 'android' tool.
|
||||
It contain the path to the SDK. It should *NOT* be checked in in Version
|
||||
It contains the path to the SDK. It should *NOT* be checked in in Version
|
||||
Control Systems. -->
|
||||
<property file="local.properties"/>
|
||||
<property file="local.properties" />
|
||||
|
||||
<!-- The build.properties file can be created by you and is never touched
|
||||
by the 'android' tool. This is the place to change some of the default property values
|
||||
used by the Ant rules.
|
||||
Here are some properties you may want to change/update:
|
||||
|
||||
application-package
|
||||
application.package
|
||||
the name of your application package as defined in the manifest. Used by the
|
||||
'uninstall' rule.
|
||||
source-folder
|
||||
the name of the source folder. Default is 'src'.
|
||||
out-folder
|
||||
the name of the output folder. Default is 'bin'.
|
||||
source.dir
|
||||
the name of the source directory. Default is 'src'.
|
||||
out.dir
|
||||
the name of the output directory. Default is 'bin'.
|
||||
|
||||
Properties related to the SDK location or the project target should be updated
|
||||
using the 'android' tool with the 'update' action.
|
||||
@@ -26,27 +26,27 @@
|
||||
should be checked in in Version Control Systems.
|
||||
|
||||
-->
|
||||
<property file="build.properties"/>
|
||||
<property file="build.properties" />
|
||||
|
||||
<!-- The default.properties file is created and updated by the 'android' tool, as well
|
||||
as ADT.
|
||||
as ADT.
|
||||
This file is an integral part of the build system for your application and
|
||||
should be checked in in Version Control Systems. -->
|
||||
<property file="default.properties"/>
|
||||
<property file="default.properties" />
|
||||
|
||||
<!-- Custom Android task to deal with the project target, and import the proper rules.
|
||||
This requires ant 1.6.0 or above. -->
|
||||
<path id="android.antlibs">
|
||||
<pathelement path="${sdk-location}/tools/lib/anttasks.jar" />
|
||||
<pathelement path="${sdk-location}/tools/lib/sdklib.jar" />
|
||||
<pathelement path="${sdk-location}/tools/lib/androidprefs.jar" />
|
||||
<pathelement path="${sdk-location}/tools/lib/apkbuilder.jar" />
|
||||
<pathelement path="${sdk-location}/tools/lib/jarutils.jar" />
|
||||
<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"
|
||||
classname="com.android.ant.SetupTask"
|
||||
classpathref="android.antlibs"/>
|
||||
classpathref="android.antlibs" />
|
||||
|
||||
<!-- Execute the Android Setup task that will setup some properties specific to the target,
|
||||
and import the build rules files.
|
||||
@@ -58,9 +58,10 @@
|
||||
- copy the content of the main node <project> from android_rules.xml
|
||||
- paste it in this build.xml below the <setup /> task.
|
||||
- disable the import by changing the setup task below to <setup import="false" />
|
||||
|
||||
|
||||
This will ensure that the properties are setup correctly but that your customized
|
||||
build steps are used.
|
||||
-->
|
||||
<setup />
|
||||
|
||||
</project>
|
||||
|
||||
62
tools/scripts/devices.xml
Normal file
62
tools/scripts/devices.xml
Normal file
@@ -0,0 +1,62 @@
|
||||
<?xml version="1.0"?>
|
||||
<d:layout-devices
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:d="http://schemas.android.com/sdk/android/layout-devices/1">
|
||||
|
||||
<d:device name="ADP1">
|
||||
<d:default>
|
||||
<d:screen-size>normal</d:screen-size>
|
||||
<d:screen-ratio>notlong</d:screen-ratio>
|
||||
<d:screen-orientation>port</d:screen-orientation>
|
||||
<d:pixel-density>mdpi</d:pixel-density>
|
||||
<d:touch-type>finger</d:touch-type>
|
||||
<d:text-input-method>qwerty</d:text-input-method>
|
||||
<d:nav-method>trackball</d:nav-method>
|
||||
<d:screen-dimension>
|
||||
<d:size>320</d:size>
|
||||
<d:size>480</d:size>
|
||||
</d:screen-dimension>
|
||||
<d:xdpi>180.6</d:xdpi>
|
||||
<d:ydpi>182</d:ydpi>
|
||||
</d:default>
|
||||
|
||||
<d:config name="Portrait">
|
||||
<d:keyboard-state>keyssoft</d:keyboard-state>
|
||||
<d:screen-orientation>port</d:screen-orientation>
|
||||
</d:config>
|
||||
<d:config name="Landscape, closed">
|
||||
<d:keyboard-state>keyssoft</d:keyboard-state>
|
||||
<d:screen-orientation>land</d:screen-orientation>
|
||||
</d:config>
|
||||
<d:config name="Landscape, open">
|
||||
<d:keyboard-state>keysexposed</d:keyboard-state>
|
||||
<d:screen-orientation>land</d:screen-orientation>
|
||||
</d:config>
|
||||
</d:device>
|
||||
|
||||
<d:device name="Ion">
|
||||
<d:default>
|
||||
<d:screen-size>normal</d:screen-size>
|
||||
<d:screen-ratio>notlong</d:screen-ratio>
|
||||
<d:screen-orientation>port</d:screen-orientation>
|
||||
<d:pixel-density>mdpi</d:pixel-density>
|
||||
<d:touch-type>finger</d:touch-type>
|
||||
<d:keyboard-state>keyssoft</d:keyboard-state>
|
||||
<d:text-input-method>nokeys</d:text-input-method>
|
||||
<d:nav-method>trackball</d:nav-method>
|
||||
<d:screen-dimension>
|
||||
<d:size>320</d:size>
|
||||
<d:size>480</d:size>
|
||||
</d:screen-dimension>
|
||||
<d:xdpi>180.6</d:xdpi>
|
||||
<d:ydpi>182</d:ydpi>
|
||||
</d:default>
|
||||
|
||||
<d:config name="Portrait">
|
||||
<d:screen-orientation>port</d:screen-orientation>
|
||||
</d:config>
|
||||
<d:config name="Landscape">
|
||||
<d:screen-orientation>land</d:screen-orientation>
|
||||
</d:config>
|
||||
</d:device>
|
||||
</d:layout-devices>
|
||||
@@ -1,4 +1,5 @@
|
||||
Pkg.UserSrc=false
|
||||
Platform.Version=1.6
|
||||
Platform.Version=2.1
|
||||
Pkg.Revision=1
|
||||
AndroidVersion.ApiLevel=4
|
||||
AndroidVersion.ApiLevel=6
|
||||
|
||||
|
||||
BIN
tools/scripts/icon_hdpi.png
Normal file
BIN
tools/scripts/icon_hdpi.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.0 KiB |
BIN
tools/scripts/icon_ldpi.png
Normal file
BIN
tools/scripts/icon_ldpi.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.7 KiB |
BIN
tools/scripts/icon_mdpi.png
Normal file
BIN
tools/scripts/icon_mdpi.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.5 KiB |
@@ -1,14 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module version="4" relativePaths="true" type="JAVA_MODULE">
|
||||
<component name="ModuleRootManager" />
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="android" level="project" />
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntryProperties />
|
||||
</component>
|
||||
</module>
|
||||
@@ -1,232 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4" relativePaths="false">
|
||||
<component name="AntConfiguration">
|
||||
<defaultAnt bundledAnt="true" />
|
||||
<buildFile url="file://$PROJECT_DIR$/build.xml">
|
||||
<additionalClassPath />
|
||||
<antReference projectDefault="true" />
|
||||
<customJdkName value="" />
|
||||
<maximumHeapSize value="128" />
|
||||
<properties />
|
||||
</buildFile>
|
||||
</component>
|
||||
<component name="BuildJarProjectSettings">
|
||||
<option name="BUILD_JARS_ON_MAKE" value="false" />
|
||||
</component>
|
||||
<component name="CodeStyleProjectProfileManger">
|
||||
<option name="PROJECT_PROFILE" />
|
||||
<option name="USE_PROJECT_LEVEL_SETTINGS" value="false" />
|
||||
</component>
|
||||
<component name="CodeStyleSettingsManager">
|
||||
<option name="PER_PROJECT_SETTINGS" />
|
||||
<option name="USE_PER_PROJECT_SETTINGS" value="false" />
|
||||
</component>
|
||||
<component name="CompilerConfiguration">
|
||||
<option name="DEFAULT_COMPILER" value="Javac" />
|
||||
<option name="DEPLOY_AFTER_MAKE" value="0" />
|
||||
<resourceExtensions>
|
||||
<entry name=".+\.(properties|xml|html|dtd|tld)" />
|
||||
<entry name=".+\.(gif|png|jpeg|jpg)" />
|
||||
</resourceExtensions>
|
||||
<wildcardResourcePatterns>
|
||||
<entry name="?*.properties" />
|
||||
<entry name="?*.xml" />
|
||||
<entry name="?*.gif" />
|
||||
<entry name="?*.png" />
|
||||
<entry name="?*.jpeg" />
|
||||
<entry name="?*.jpg" />
|
||||
<entry name="?*.html" />
|
||||
<entry name="?*.dtd" />
|
||||
<entry name="?*.tld" />
|
||||
</wildcardResourcePatterns>
|
||||
</component>
|
||||
<component name="DataSourceManagerImpl" />
|
||||
<component name="DependenciesAnalyzeManager">
|
||||
<option name="myForwardDirection" value="false" />
|
||||
</component>
|
||||
<component name="DependencyValidationManager" />
|
||||
<component name="EclipseCompilerSettings">
|
||||
<option name="DEBUGGING_INFO" value="true" />
|
||||
<option name="GENERATE_NO_WARNINGS" value="true" />
|
||||
<option name="DEPRECATION" value="false" />
|
||||
<option name="ADDITIONAL_OPTIONS_STRING" value="" />
|
||||
<option name="MAXIMUM_HEAP_SIZE" value="128" />
|
||||
</component>
|
||||
<component name="EclipseEmbeddedCompilerSettings">
|
||||
<option name="DEBUGGING_INFO" value="true" />
|
||||
<option name="GENERATE_NO_WARNINGS" value="true" />
|
||||
<option name="DEPRECATION" value="false" />
|
||||
<option name="ADDITIONAL_OPTIONS_STRING" value="" />
|
||||
<option name="MAXIMUM_HEAP_SIZE" value="128" />
|
||||
</component>
|
||||
<component name="EntryPointsManager">
|
||||
<entry_points />
|
||||
</component>
|
||||
<component name="ExportToHTMLSettings">
|
||||
<option name="PRINT_LINE_NUMBERS" value="false" />
|
||||
<option name="OPEN_IN_BROWSER" value="false" />
|
||||
<option name="OUTPUT_DIRECTORY" />
|
||||
</component>
|
||||
<component name="GUI Designer component loader factory" />
|
||||
<component name="IdProvider" IDEtalkID="F6EC4D80E2C03FEF19EDD201903A6DFE" />
|
||||
<component name="InspectionProjectProfileManager">
|
||||
<option name="PROJECT_PROFILE" value="Project Default" />
|
||||
<option name="USE_PROJECT_LEVEL_SETTINGS" value="false" />
|
||||
<scopes />
|
||||
<profiles>
|
||||
<profile version="1.0" is_locked="false">
|
||||
<option name="myName" value="Project Default" />
|
||||
<option name="myLocal" value="false" />
|
||||
<used_levels>
|
||||
<error>
|
||||
<option name="myName" value="ERROR" />
|
||||
<option name="myVal" value="400" />
|
||||
</error>
|
||||
<warning>
|
||||
<option name="myName" value="WARNING" />
|
||||
<option name="myVal" value="300" />
|
||||
</warning>
|
||||
<information>
|
||||
<option name="myName" value="INFO" />
|
||||
<option name="myVal" value="200" />
|
||||
</information>
|
||||
<server>
|
||||
<option name="myName" value="SERVER PROBLEM" />
|
||||
<option name="myVal" value="100" />
|
||||
</server>
|
||||
</used_levels>
|
||||
<inspection_tool class="ClassReferencesSubclass" level="WARNING" enabled="true" />
|
||||
<inspection_tool class="MissingOverrideAnnotation" level="WARNING" enabled="true" />
|
||||
<inspection_tool class="Finalize" level="WARNING" enabled="true" />
|
||||
<inspection_tool class="UnusedImport" level="WARNING" enabled="true" />
|
||||
<inspection_tool class="StaticInheritance" level="WARNING" enabled="true" />
|
||||
<inspection_tool class="RedundantMethodOverride" level="WARNING" enabled="true" />
|
||||
<inspection_tool class="AbstractMethodCallInConstructor" level="WARNING" enabled="true" />
|
||||
<inspection_tool class="RawUseOfParameterizedType" level="WARNING" enabled="true">
|
||||
<option name="ignoreObjectConstruction" value="true" />
|
||||
<option name="ignoreTypeCasts" value="false" />
|
||||
</inspection_tool>
|
||||
<inspection_tool class="SystemGC" level="WARNING" enabled="true" />
|
||||
<inspection_tool class="ConstantNamingConvention" level="WARNING" enabled="true">
|
||||
<option name="m_regex" value="[A-Z_\d]*" />
|
||||
<option name="m_minLength" value="5" />
|
||||
<option name="m_maxLength" value="32" />
|
||||
</inspection_tool>
|
||||
<inspection_tool class="EnumeratedConstantNamingConvention" level="WARNING" enabled="true">
|
||||
<option name="m_regex" value="[A-Z][A-Za-z\d]*" />
|
||||
<option name="m_minLength" value="5" />
|
||||
<option name="m_maxLength" value="32" />
|
||||
</inspection_tool>
|
||||
<inspection_tool class="DivideByZero" level="WARNING" enabled="true" />
|
||||
<inspection_tool class="CloneCallsConstructors" level="WARNING" enabled="true" />
|
||||
<inspection_tool class="CloneDeclaresCloneNotSupported" level="WARNING" enabled="false" />
|
||||
<inspection_tool class="CloneInNonCloneableClass" level="WARNING" enabled="true" />
|
||||
<inspection_tool class="UtilityClassWithoutPrivateConstructor" level="WARNING" enabled="true">
|
||||
<option name="ignoreClassesWithOnlyMain" value="false" />
|
||||
</inspection_tool>
|
||||
<inspection_tool class="UtilityClassWithPublicConstructor" level="WARNING" enabled="true" />
|
||||
<inspection_tool class="ConditionalExpressionWithIdenticalBranches" level="WARNING" enabled="true" />
|
||||
<inspection_tool class="CanBeFinal" level="WARNING" enabled="false">
|
||||
<option name="REPORT_CLASSES" value="false" />
|
||||
<option name="REPORT_METHODS" value="false" />
|
||||
<option name="REPORT_FIELDS" value="true" />
|
||||
</inspection_tool>
|
||||
<inspection_tool class="ThisEscapedInConstructor" level="WARNING" enabled="true" />
|
||||
<inspection_tool class="NonThreadSafeLazyInitialization" level="WARNING" enabled="true" />
|
||||
<inspection_tool class="FieldMayBeStatic" level="WARNING" enabled="true" />
|
||||
<inspection_tool class="InnerClassMayBeStatic" level="WARNING" enabled="true" />
|
||||
<inspection_tool class="MethodMayBeStatic" level="WARNING" enabled="true">
|
||||
<option name="m_onlyPrivateOrFinal" value="false" />
|
||||
<option name="m_ignoreEmptyMethods" value="true" />
|
||||
</inspection_tool>
|
||||
<inspection_tool class="ComponentRegistrationProblems" level="ERROR" enabled="false">
|
||||
<option name="CHECK_PLUGIN_XML" value="true" />
|
||||
<option name="CHECK_JAVA_CODE" value="true" />
|
||||
<option name="CHECK_ACTIONS" value="true" />
|
||||
</inspection_tool>
|
||||
<inspection_tool class="ComponentNotRegistered" level="WARNING" enabled="false">
|
||||
<option name="CHECK_ACTIONS" value="true" />
|
||||
<option name="IGNORE_NON_PUBLIC" value="true" />
|
||||
</inspection_tool>
|
||||
<inspection_tool class="BusyWait" level="WARNING" enabled="true" />
|
||||
<inspection_tool class="UnconditionalWait" level="WARNING" enabled="true" />
|
||||
<inspection_tool class="WaitNotInLoop" level="WARNING" enabled="true" />
|
||||
</profile>
|
||||
</profiles>
|
||||
</component>
|
||||
<component name="JavacSettings">
|
||||
<option name="DEBUGGING_INFO" value="true" />
|
||||
<option name="GENERATE_NO_WARNINGS" value="false" />
|
||||
<option name="DEPRECATION" value="true" />
|
||||
<option name="ADDITIONAL_OPTIONS_STRING" value="" />
|
||||
<option name="MAXIMUM_HEAP_SIZE" value="128" />
|
||||
</component>
|
||||
<component name="JavadocGenerationManager">
|
||||
<option name="OUTPUT_DIRECTORY" />
|
||||
<option name="OPTION_SCOPE" value="protected" />
|
||||
<option name="OPTION_HIERARCHY" value="true" />
|
||||
<option name="OPTION_NAVIGATOR" value="true" />
|
||||
<option name="OPTION_INDEX" value="true" />
|
||||
<option name="OPTION_SEPARATE_INDEX" value="true" />
|
||||
<option name="OPTION_DOCUMENT_TAG_USE" value="false" />
|
||||
<option name="OPTION_DOCUMENT_TAG_AUTHOR" value="false" />
|
||||
<option name="OPTION_DOCUMENT_TAG_VERSION" value="false" />
|
||||
<option name="OPTION_DOCUMENT_TAG_DEPRECATED" value="true" />
|
||||
<option name="OPTION_DEPRECATED_LIST" value="true" />
|
||||
<option name="OTHER_OPTIONS" value="" />
|
||||
<option name="HEAP_SIZE" />
|
||||
<option name="LOCALE" />
|
||||
<option name="OPEN_IN_BROWSER" value="true" />
|
||||
</component>
|
||||
<component name="JikesSettings">
|
||||
<option name="JIKES_PATH" value="" />
|
||||
<option name="DEBUGGING_INFO" value="true" />
|
||||
<option name="DEPRECATION" value="true" />
|
||||
<option name="GENERATE_NO_WARNINGS" value="false" />
|
||||
<option name="IS_EMACS_ERRORS_MODE" value="true" />
|
||||
<option name="ADDITIONAL_OPTIONS_STRING" value="" />
|
||||
</component>
|
||||
<component name="LogConsolePreferences">
|
||||
<option name="FILTER_ERRORS" value="false" />
|
||||
<option name="FILTER_WARNINGS" value="false" />
|
||||
<option name="FILTER_INFO" value="true" />
|
||||
<option name="CUSTOM_FILTER" />
|
||||
</component>
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/ACTIVITY_NAME.iml" filepath="$PROJECT_DIR$/ACTIVITY_NAME.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" assert-keyword="true" jdk-15="true" project-jdk-name="1.5" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/bin" />
|
||||
</component>
|
||||
<component name="ProjectRunConfigurationManager" />
|
||||
<component name="RmicSettings">
|
||||
<option name="IS_EANABLED" value="false" />
|
||||
<option name="DEBUGGING_INFO" value="true" />
|
||||
<option name="GENERATE_NO_WARNINGS" value="false" />
|
||||
<option name="GENERATE_IIOP_STUBS" value="false" />
|
||||
<option name="ADDITIONAL_OPTIONS_STRING" value="" />
|
||||
</component>
|
||||
<component name="StarteamVcsAdapter" />
|
||||
<component name="XSLT-Support.FileAssociationsManager" />
|
||||
<component name="com.intellij.jsf.UserDefinedFacesConfigs">
|
||||
<option name="USER_DEFINED_CONFIGS">
|
||||
<value>
|
||||
<list size="0" />
|
||||
</value>
|
||||
</option>
|
||||
</component>
|
||||
<component name="libraryTable">
|
||||
<library name="android">
|
||||
<CLASSES>
|
||||
<root url="jar://ANDROID_SDK_FOLDER/android.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC>
|
||||
<root url="file://ANDROID_SDK_FOLDER/docs/reference" />
|
||||
</JAVADOC>
|
||||
<SOURCES />
|
||||
</library>
|
||||
</component>
|
||||
<UsedPathMacros />
|
||||
</project>
|
||||
@@ -1,470 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4" relativePaths="false">
|
||||
<component name="AntConfiguration">
|
||||
<defaultAnt bundledAnt="true" />
|
||||
<buildFile url="file://$PROJECT_DIR$/build.xml">
|
||||
<additionalClassPath />
|
||||
<antReference projectDefault="true" />
|
||||
<customJdkName value="" />
|
||||
<maximumHeapSize value="128" />
|
||||
<properties />
|
||||
</buildFile>
|
||||
</component>
|
||||
<component name="BookmarkManager" />
|
||||
<component name="ChangeBrowserSettings">
|
||||
<option name="MAIN_SPLITTER_PROPORTION" value="0.3" />
|
||||
<option name="MESSAGES_SPLITTER_PROPORTION" value="0.8" />
|
||||
<option name="USE_DATE_BEFORE_FILTER" value="false" />
|
||||
<option name="USE_DATE_AFTER_FILTER" value="false" />
|
||||
<option name="USE_CHANGE_BEFORE_FILTER" value="false" />
|
||||
<option name="USE_CHANGE_AFTER_FILTER" value="false" />
|
||||
<option name="DATE_BEFORE" value="" />
|
||||
<option name="DATE_AFTER" value="" />
|
||||
<option name="CHANGE_BEFORE" value="" />
|
||||
<option name="CHANGE_AFTER" value="" />
|
||||
<option name="USE_USER_FILTER" value="false" />
|
||||
<option name="USER" value="" />
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" name="Default" comment="" />
|
||||
</component>
|
||||
<component name="ChangeListSynchronizer" />
|
||||
<component name="ChangesViewManager" flattened_view="true" />
|
||||
<component name="CheckinPanelState" />
|
||||
<component name="Commander">
|
||||
<leftPanel />
|
||||
<rightPanel />
|
||||
<splitter proportion="0.5" />
|
||||
</component>
|
||||
<component name="CompilerWorkspaceConfiguration">
|
||||
<option name="COMPILE_IN_BACKGROUND" value="false" />
|
||||
<option name="AUTO_SHOW_ERRORS_IN_EDITOR" value="true" />
|
||||
<option name="CLOSE_MESSAGE_VIEW_IF_SUCCESS" value="true" />
|
||||
<option name="COMPILE_DEPENDENT_FILES" value="false" />
|
||||
<option name="CLEAR_OUTPUT_DIRECTORY" value="false" />
|
||||
<option name="ASSERT_NOT_NULL" value="true" />
|
||||
</component>
|
||||
<component name="CoverageDataManager" />
|
||||
<component name="Cvs2Configuration">
|
||||
<option name="PRUNE_EMPTY_DIRECTORIES" value="true" />
|
||||
<option name="MERGING_MODE" value="0" />
|
||||
<option name="MERGE_WITH_BRANCH1_NAME" value="HEAD" />
|
||||
<option name="MERGE_WITH_BRANCH2_NAME" value="HEAD" />
|
||||
<option name="RESET_STICKY" value="false" />
|
||||
<option name="CREATE_NEW_DIRECTORIES" value="true" />
|
||||
<option name="DEFAULT_TEXT_FILE_SUBSTITUTION" value="kv" />
|
||||
<option name="PROCESS_UNKNOWN_FILES" value="false" />
|
||||
<option name="PROCESS_DELETED_FILES" value="false" />
|
||||
<option name="PROCESS_IGNORED_FILES" value="false" />
|
||||
<option name="RESERVED_EDIT" value="false" />
|
||||
<option name="CHECKOUT_DATE_OR_REVISION_SETTINGS">
|
||||
<value>
|
||||
<option name="BRANCH" value="" />
|
||||
<option name="DATE" value="" />
|
||||
<option name="USE_BRANCH" value="false" />
|
||||
<option name="USE_DATE" value="false" />
|
||||
</value>
|
||||
</option>
|
||||
<option name="UPDATE_DATE_OR_REVISION_SETTINGS">
|
||||
<value>
|
||||
<option name="BRANCH" value="" />
|
||||
<option name="DATE" value="" />
|
||||
<option name="USE_BRANCH" value="false" />
|
||||
<option name="USE_DATE" value="false" />
|
||||
</value>
|
||||
</option>
|
||||
<option name="SHOW_CHANGES_REVISION_SETTINGS">
|
||||
<value>
|
||||
<option name="BRANCH" value="" />
|
||||
<option name="DATE" value="" />
|
||||
<option name="USE_BRANCH" value="false" />
|
||||
<option name="USE_DATE" value="false" />
|
||||
</value>
|
||||
</option>
|
||||
<option name="SHOW_OUTPUT" value="false" />
|
||||
<option name="ADD_WATCH_INDEX" value="0" />
|
||||
<option name="REMOVE_WATCH_INDEX" value="0" />
|
||||
<option name="UPDATE_KEYWORD_SUBSTITUTION" />
|
||||
<option name="MAKE_NEW_FILES_READONLY" value="false" />
|
||||
<option name="SHOW_CORRUPTED_PROJECT_FILES" value="0" />
|
||||
<option name="TAG_AFTER_PROJECT_COMMIT" value="false" />
|
||||
<option name="OVERRIDE_EXISTING_TAG_FOR_PROJECT" value="true" />
|
||||
<option name="TAG_AFTER_PROJECT_COMMIT_NAME" value="" />
|
||||
<option name="CLEAN_COPY" value="false" />
|
||||
</component>
|
||||
<component name="DaemonCodeAnalyzer">
|
||||
<disable_hints />
|
||||
</component>
|
||||
<component name="DebuggerManager">
|
||||
<breakpoint_any>
|
||||
<breakpoint>
|
||||
<option name="NOTIFY_CAUGHT" value="true" />
|
||||
<option name="NOTIFY_UNCAUGHT" value="true" />
|
||||
<option name="ENABLED" value="false" />
|
||||
<option name="SUSPEND_POLICY" value="SuspendAll" />
|
||||
<option name="LOG_ENABLED" value="false" />
|
||||
<option name="LOG_EXPRESSION_ENABLED" value="false" />
|
||||
<option name="COUNT_FILTER_ENABLED" value="false" />
|
||||
<option name="COUNT_FILTER" value="0" />
|
||||
<option name="CONDITION_ENABLED" value="false" />
|
||||
<option name="CLASS_FILTERS_ENABLED" value="false" />
|
||||
<option name="INSTANCE_FILTERS_ENABLED" value="false" />
|
||||
<option name="CONDITION" value="" />
|
||||
<option name="LOG_MESSAGE" value="" />
|
||||
</breakpoint>
|
||||
<breakpoint>
|
||||
<option name="NOTIFY_CAUGHT" value="true" />
|
||||
<option name="NOTIFY_UNCAUGHT" value="true" />
|
||||
<option name="ENABLED" value="false" />
|
||||
<option name="SUSPEND_POLICY" value="SuspendAll" />
|
||||
<option name="LOG_ENABLED" value="false" />
|
||||
<option name="LOG_EXPRESSION_ENABLED" value="false" />
|
||||
<option name="COUNT_FILTER_ENABLED" value="false" />
|
||||
<option name="COUNT_FILTER" value="0" />
|
||||
<option name="CONDITION_ENABLED" value="false" />
|
||||
<option name="CLASS_FILTERS_ENABLED" value="false" />
|
||||
<option name="INSTANCE_FILTERS_ENABLED" value="false" />
|
||||
<option name="CONDITION" value="" />
|
||||
<option name="LOG_MESSAGE" value="" />
|
||||
</breakpoint>
|
||||
</breakpoint_any>
|
||||
<breakpoint_rules />
|
||||
<ui_properties />
|
||||
</component>
|
||||
<component name="ErrorTreeViewConfiguration">
|
||||
<option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
|
||||
<option name="HIDE_WARNINGS" value="false" />
|
||||
</component>
|
||||
<component name="FavoritesManager">
|
||||
<favorites_list name="LunarLander" />
|
||||
</component>
|
||||
<component name="FavoritesProjectViewPane" />
|
||||
<component name="FileEditorManager">
|
||||
<leaf>
|
||||
<file leaf-file-name="ACTIVITY_NAME.java" pinned="false" current="true" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/src/PACKAGE_PATH/ACTIVITY_NAME.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.08211144">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
</leaf>
|
||||
</component>
|
||||
<component name="FindManager">
|
||||
<FindUsagesManager>
|
||||
<setting name="OPEN_NEW_TAB" value="false" />
|
||||
</FindUsagesManager>
|
||||
</component>
|
||||
<component name="HierarchyBrowserManager">
|
||||
<option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
|
||||
<option name="SORT_ALPHABETICALLY" value="false" />
|
||||
<option name="HIDE_CLASSES_WHERE_METHOD_NOT_IMPLEMENTED" value="false" />
|
||||
</component>
|
||||
<component name="InspectionManager">
|
||||
<option name="AUTOSCROLL_TO_SOURCE" value="false" />
|
||||
<option name="SPLITTER_PROPORTION" value="0.5" />
|
||||
<option name="GROUP_BY_SEVERITY" value="false" />
|
||||
<option name="FILTER_RESOLVED_ITEMS" value="true" />
|
||||
<option name="ANALYZE_TEST_SOURCES" value="true" />
|
||||
<option name="SHOW_DIFF_WITH_PREVIOUS_RUN" value="false" />
|
||||
<option name="SCOPE_TYPE" value="1" />
|
||||
<option name="CUSTOM_SCOPE_NAME" value="" />
|
||||
<option name="SHOW_ONLY_DIFF" value="false" />
|
||||
<option name="myCurrentProfileName" value="Default" />
|
||||
</component>
|
||||
<component name="J2EEProjectPane" />
|
||||
<component name="JspContextManager" />
|
||||
<component name="ModuleEditorState">
|
||||
<option name="LAST_EDITED_MODULE_NAME" />
|
||||
<option name="LAST_EDITED_TAB_NAME" />
|
||||
</component>
|
||||
<component name="NamedScopeManager" />
|
||||
<component name="PackagesPane">
|
||||
<subPane>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="ACTIVITY_NAME.ipr" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageViewProjectNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="ACTIVITY_NAME" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageViewModuleNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
</subPane>
|
||||
</component>
|
||||
<component name="PerforceChangeBrowserSettings">
|
||||
<option name="USE_CLIENT_FILTER" value="true" />
|
||||
<option name="CLIENT" value="" />
|
||||
</component>
|
||||
<component name="PerforceDirect.Settings">
|
||||
<option name="useP4CONFIG" value="true" />
|
||||
<option name="port" value="<perforce_server>:1666" />
|
||||
<option name="client" value="" />
|
||||
<option name="user" value="" />
|
||||
<option name="passwd" value="" />
|
||||
<option name="showCmds" value="false" />
|
||||
<option name="useNativeApi" value="false" />
|
||||
<option name="pathToExec" value="p4" />
|
||||
<option name="useCustomPathToExec" value="false" />
|
||||
<option name="SYNC_FORCE" value="false" />
|
||||
<option name="SYNC_RUN_RESOLVE" value="true" />
|
||||
<option name="REVERT_UNCHANGED_FILES" value="true" />
|
||||
<option name="CHARSET" value="none" />
|
||||
<option name="SHOW_BRANCHES_HISTORY" value="true" />
|
||||
<option name="ENABLED" value="true" />
|
||||
<option name="USE_LOGIN" value="false" />
|
||||
<option name="LOGIN_SILENTLY" value="false" />
|
||||
<option name="INTEGRATE_RUN_RESOLVE" value="true" />
|
||||
<option name="INTEGRATE_REVERT_UNCHANGED" value="true" />
|
||||
<option name="SERVER_TIMEOUT" value="20000" />
|
||||
</component>
|
||||
<component name="ProjectLevelVcsManager">
|
||||
<OptionsSetting value="true" id="Add" />
|
||||
<OptionsSetting value="true" id="Remove" />
|
||||
<OptionsSetting value="true" id="Checkin" />
|
||||
<OptionsSetting value="true" id="Checkout" />
|
||||
<OptionsSetting value="true" id="Update" />
|
||||
<OptionsSetting value="true" id="Status" />
|
||||
<OptionsSetting value="true" id="Edit" />
|
||||
<ConfirmationsSetting value="0" id="Add" />
|
||||
<ConfirmationsSetting value="0" id="Remove" />
|
||||
</component>
|
||||
<component name="ProjectPane">
|
||||
<subPane>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="ACTIVITY_NAME.ipr" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="ACTIVITY_NAME" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
</subPane>
|
||||
</component>
|
||||
<component name="ProjectReloadState">
|
||||
<option name="STATE" value="0" />
|
||||
</component>
|
||||
<component name="ProjectView">
|
||||
<navigator currentView="ProjectPane" proportions="0.1" version="1" splitterProportion="0.5">
|
||||
<flattenPackages />
|
||||
<showMembers />
|
||||
<showModules />
|
||||
<showLibraryContents />
|
||||
<hideEmptyPackages />
|
||||
<abbreviatePackageNames />
|
||||
<showStructure PackagesPane="false" ProjectPane="false" />
|
||||
<autoscrollToSource />
|
||||
<autoscrollFromSource />
|
||||
<sortByType />
|
||||
</navigator>
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
<property name="MemberChooser.copyJavadoc" value="false" />
|
||||
<property name="GoToClass.includeLibraries" value="false" />
|
||||
<property name="MemberChooser.showClasses" value="true" />
|
||||
<property name="MemberChooser.sorted" value="false" />
|
||||
<property name="GoToFile.includeJavaFiles" value="false" />
|
||||
<property name="GoToClass.toSaveIncludeLibraries" value="false" />
|
||||
</component>
|
||||
<component name="ReadonlyStatusHandler">
|
||||
<option name="SHOW_DIALOG" value="true" />
|
||||
</component>
|
||||
<component name="RecentsManager" />
|
||||
<component name="RestoreUpdateTree" />
|
||||
<component name="RunManager">
|
||||
<configuration default="true" type="Application" factoryName="Application" enabled="false" merge="false">
|
||||
<option name="MAIN_CLASS_NAME" />
|
||||
<option name="VM_PARAMETERS" />
|
||||
<option name="PROGRAM_PARAMETERS" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" />
|
||||
<option name="ENABLE_SWING_INSPECTOR" value="false" />
|
||||
<module name="" />
|
||||
</configuration>
|
||||
<configuration default="true" type="Applet" factoryName="Applet">
|
||||
<module name="" />
|
||||
<option name="MAIN_CLASS_NAME" />
|
||||
<option name="HTML_FILE_NAME" />
|
||||
<option name="HTML_USED" value="false" />
|
||||
<option name="WIDTH" value="400" />
|
||||
<option name="HEIGHT" value="300" />
|
||||
<option name="POLICY_FILE" value="/Developer/Applications/IntelliJ IDEA 6.0.4.app/bin/appletviewer.policy" />
|
||||
<option name="VM_PARAMETERS" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" />
|
||||
</configuration>
|
||||
<configuration default="true" type="JUnit" factoryName="JUnit" enabled="false" merge="false">
|
||||
<module name="" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" />
|
||||
<option name="PACKAGE_NAME" />
|
||||
<option name="MAIN_CLASS_NAME" />
|
||||
<option name="METHOD_NAME" />
|
||||
<option name="TEST_OBJECT" value="class" />
|
||||
<option name="VM_PARAMETERS" />
|
||||
<option name="PARAMETERS" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||
<option name="ADDITIONAL_CLASS_PATH" />
|
||||
<option name="TEST_SEARCH_SCOPE">
|
||||
<value defaultName="wholeProject" />
|
||||
</option>
|
||||
</configuration>
|
||||
<configuration default="true" type="Remote" factoryName="Remote">
|
||||
<option name="USE_SOCKET_TRANSPORT" value="true" />
|
||||
<option name="SERVER_MODE" value="false" />
|
||||
<option name="SHMEM_ADDRESS" value="javadebug" />
|
||||
<option name="HOST" value="localhost" />
|
||||
<option name="PORT" value="5005" />
|
||||
</configuration>
|
||||
</component>
|
||||
<component name="ScopeViewComponent" />
|
||||
<component name="SelectInManager" />
|
||||
<component name="StarteamConfiguration">
|
||||
<option name="SERVER" value="" />
|
||||
<option name="PORT" value="49201" />
|
||||
<option name="USER" value="" />
|
||||
<option name="PASSWORD" value="" />
|
||||
<option name="PROJECT" value="" />
|
||||
<option name="VIEW" value="" />
|
||||
<option name="ALTERNATIVE_WORKING_PATH" value="" />
|
||||
<option name="LOCK_ON_CHECKOUT" value="false" />
|
||||
<option name="UNLOCK_ON_CHECKIN" value="false" />
|
||||
</component>
|
||||
<component name="StructuralSearchPlugin" />
|
||||
<component name="StructureViewFactory">
|
||||
<option name="AUTOSCROLL_MODE" value="true" />
|
||||
<option name="AUTOSCROLL_FROM_SOURCE" value="false" />
|
||||
<option name="ACTIVE_ACTIONS" value="" />
|
||||
</component>
|
||||
<component name="Struts Assistant">
|
||||
<option name="showInputs" value="true" />
|
||||
<option name="resources">
|
||||
<value>
|
||||
<option name="strutsPath" />
|
||||
<option name="strutsHelp" />
|
||||
</value>
|
||||
</option>
|
||||
<option name="selectedTaglibs" />
|
||||
<option name="selectedTaglibs" />
|
||||
<option name="myStrutsValidationEnabled" value="true" />
|
||||
<option name="myTilesValidationEnabled" value="true" />
|
||||
<option name="myValidatorValidationEnabled" value="true" />
|
||||
<option name="myReportErrorsAsWarnings" value="true" />
|
||||
</component>
|
||||
<component name="SvnChangesBrowserSettings">
|
||||
<option name="USE_AUTHOR_FIELD" value="true" />
|
||||
<option name="AUTHOR" value="" />
|
||||
<option name="LOCATION" value="" />
|
||||
<option name="USE_PROJECT_SETTINGS" value="true" />
|
||||
<option name="USE_ALTERNATE_LOCATION" value="false" />
|
||||
</component>
|
||||
<component name="SvnConfiguration">
|
||||
<option name="USER" value="" />
|
||||
<option name="PASSWORD" value="" />
|
||||
<option name="PROCESS_UNRESOLVED" value="false" />
|
||||
<option name="LAST_MERGED_REVISION" />
|
||||
<option name="UPDATE_RUN_STATUS" value="false" />
|
||||
<option name="UPDATE_RECURSIVELY" value="true" />
|
||||
<option name="MERGE_DRY_RUN" value="false" />
|
||||
<upgradeMode>auto</upgradeMode>
|
||||
</component>
|
||||
<component name="TodoView" selected-index="0">
|
||||
<todo-panel id="selected-file">
|
||||
<are-packages-shown value="false" />
|
||||
<are-modules-shown value="false" />
|
||||
<flatten-packages value="false" />
|
||||
<is-autoscroll-to-source value="true" />
|
||||
</todo-panel>
|
||||
<todo-panel id="all">
|
||||
<are-packages-shown value="true" />
|
||||
<are-modules-shown value="false" />
|
||||
<flatten-packages value="false" />
|
||||
<is-autoscroll-to-source value="true" />
|
||||
</todo-panel>
|
||||
</component>
|
||||
<component name="ToolWindowManager">
|
||||
<frame x="0" y="22" width="1440" height="834" extended-state="0" />
|
||||
<editor active="false" />
|
||||
<layout>
|
||||
<window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="-1" />
|
||||
<window_info id="CVS" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="-1" />
|
||||
<window_info id="IDEtalk" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="-1" />
|
||||
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="7" />
|
||||
<window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.24946082" order="0" />
|
||||
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="1" />
|
||||
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" order="1" />
|
||||
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="-1" />
|
||||
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" order="6" />
|
||||
<window_info id="Module Dependencies" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="-1" />
|
||||
<window_info id="Dependency Viewer" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="-1" />
|
||||
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="-1" />
|
||||
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" order="1" />
|
||||
<window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="-1" />
|
||||
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="2" />
|
||||
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" order="2" />
|
||||
<window_info id="File View" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="-1" />
|
||||
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" order="4" />
|
||||
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" order="0" />
|
||||
<window_info id="IDEtalk Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="-1" />
|
||||
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="-1" />
|
||||
<window_info id="Web" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" order="2" />
|
||||
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="0" />
|
||||
<window_info id="EJB" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" order="3" />
|
||||
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" order="5" />
|
||||
</layout>
|
||||
</component>
|
||||
<component name="VCS.FileViewConfiguration">
|
||||
<option name="SELECTED_STATUSES" value="DEFAULT" />
|
||||
<option name="SELECTED_COLUMNS" value="DEFAULT" />
|
||||
<option name="SHOW_FILTERS" value="true" />
|
||||
<option name="CUSTOMIZE_VIEW" value="true" />
|
||||
<option name="SHOW_FILE_HISTORY_AS_TREE" value="true" />
|
||||
</component>
|
||||
<component name="VcsManagerConfiguration">
|
||||
<option name="OFFER_MOVE_TO_ANOTHER_CHANGELIST_ON_PARTIAL_COMMIT" value="true" />
|
||||
<option name="CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT" value="true" />
|
||||
<option name="PERFORM_UPDATE_IN_BACKGROUND" value="false" />
|
||||
<option name="PERFORM_COMMIT_IN_BACKGROUND" value="false" />
|
||||
<option name="PUT_FOCUS_INTO_COMMENT" value="false" />
|
||||
<option name="FORCE_NON_EMPTY_COMMENT" value="false" />
|
||||
<option name="LAST_COMMIT_MESSAGE" />
|
||||
<option name="SAVE_LAST_COMMIT_MESSAGE" value="true" />
|
||||
<option name="CHECKIN_DIALOG_SPLITTER_PROPORTION" value="0.8" />
|
||||
<option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="false" />
|
||||
<option name="REFORMAT_BEFORE_PROJECT_COMMIT" value="false" />
|
||||
<option name="REFORMAT_BEFORE_FILE_COMMIT" value="false" />
|
||||
<option name="FILE_HISTORY_DIALOG_COMMENTS_SPLITTER_PROPORTION" value="0.8" />
|
||||
<option name="FILE_HISTORY_DIALOG_SPLITTER_PROPORTION" value="0.5" />
|
||||
<option name="ERROR_OCCURED" value="false" />
|
||||
<option name="ACTIVE_VCS_NAME" value="CVS" />
|
||||
<option name="UPDATE_GROUP_BY_PACKAGES" value="false" />
|
||||
<option name="SHOW_FILE_HISTORY_AS_TREE" value="false" />
|
||||
<option name="FILE_HISTORY_SPLITTER_PROPORTION" value="0.6" />
|
||||
</component>
|
||||
<component name="XPathView.XPathProjectComponent">
|
||||
<history />
|
||||
<find-history />
|
||||
</component>
|
||||
<component name="XSLT-Support.FileAssociationsSettings" />
|
||||
<component name="antWorkspaceConfiguration">
|
||||
<option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
|
||||
<option name="FILTER_TARGETS" value="false" />
|
||||
</component>
|
||||
<component name="com.intellij.ide.util.scopeChooser.ScopeChooserConfigurable" proportions="" version="1">
|
||||
<option name="myLastEditedConfigurable" />
|
||||
</component>
|
||||
<component name="com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectRootMasterDetailsConfigurable" proportions="0.1" version="1">
|
||||
<option name="myPlainMode" value="false" />
|
||||
<option name="myLastEditedConfigurable" value="android" />
|
||||
</component>
|
||||
<component name="com.intellij.profile.ui.ErrorOptionsConfigurable" proportions="" version="1">
|
||||
<option name="myLastEditedConfigurable" />
|
||||
</component>
|
||||
<component name="editorHistoryManager" />
|
||||
</project>
|
||||
@@ -3,7 +3,7 @@ package PACKAGE;
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
public class ACTIVITY_NAME extends Activity
|
||||
public class ACTIVITY_CLASS_NAME extends Activity
|
||||
{
|
||||
/** Called when the activity is first created. */
|
||||
@Override
|
||||
|
||||
@@ -9,13 +9,13 @@ import android.test.ActivityInstrumentationTestCase2;
|
||||
* <p/>
|
||||
* To run this test, you can type:
|
||||
* adb shell am instrument -w \
|
||||
* -e class PACKAGE.ACTIVITY_NAMETest \
|
||||
* -e class ACTIVITY_FQ_NAME \
|
||||
* PACKAGE.tests/android.test.InstrumentationTestRunner
|
||||
*/
|
||||
public class ACTIVITY_NAMETest extends ActivityInstrumentationTestCase2<ACTIVITY_NAME> {
|
||||
public class ACTIVITY_CLASS_NAME extends ActivityInstrumentationTestCase2<ACTIVITY_TESTED_CLASS_NAME> {
|
||||
|
||||
public ACTIVITY_NAMETest() {
|
||||
super("PACKAGE", ACTIVITY_NAME.class);
|
||||
public ACTIVITY_CLASS_NAME() {
|
||||
super("PACKAGE", ACTIVITY_TESTED_CLASS_NAME.class);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -7,7 +7,7 @@
|
||||
<TextView
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Hello World, ACTIVITY_NAME"
|
||||
android:text="Hello World, ACTIVITY_ENTRY_NAME"
|
||||
/>
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
Pkg.Desc=Android SDK Platform 1.6_r1
|
||||
Pkg.Desc=Android SDK Platform 2.1_r1
|
||||
Pkg.UserSrc=false
|
||||
Platform.Version=1.6
|
||||
Platform.Version=2.1
|
||||
Pkg.Revision=1
|
||||
AndroidVersion.ApiLevel=4
|
||||
AndroidVersion.ApiLevel=6
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
# begin plugin.prop
|
||||
plugin.version=0.9.2
|
||||
plugin.platform=android
|
||||
plugin.version=0.9.4
|
||||
# end plugin.prop
|
||||
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">ACTIVITY_NAME</string>
|
||||
<string name="app_name">ACTIVITY_ENTRY_NAME</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
Pkg.UserSrc=false
|
||||
Pkg.Revision=2
|
||||
Pkg.Revision=5
|
||||
|
||||
4
tools/scripts/usbdriver_source.properties
Executable file
4
tools/scripts/usbdriver_source.properties
Executable file
@@ -0,0 +1,4 @@
|
||||
Pkg.Revision=2
|
||||
Archive.Os=WINDOWS
|
||||
Archive.Arch=ANY
|
||||
Extra.Path=usb_driver
|
||||
Reference in New Issue
Block a user