diff options
Diffstat (limited to 'android')
64 files changed, 0 insertions, 6932 deletions
diff --git a/android/Makefile b/android/Makefile deleted file mode 100644 index ed65edf..0000000 --- a/android/Makefile +++ /dev/null @@ -1,419 +0,0 @@ -# XScreenSaver for Android - -export TERM=dumb -GRADLE = ./gradlew - -default:: debug -all:: release - -clean:: - $(GRADLE) clean - -distdepend:: - -# Set this to the set of platforms you want to compile for in debug mode. -# E.g., if you are running an x86 emulator, there's no point in compiling -# for a dozen other platforms. Release builds override this to "all". -# -export APP_ABI = all - - -# TODO: -# check_versions: - - -# These hacks have interdependencies with others, so we can't build without -# including them or there are link errors: -# -ANDROID_BASE_HACKS= \ - apple2 \ - bubble3d \ - pacman \ - polyhedra \ - sonar \ - sproingies \ - -# These are the ones that currently work, at least to some degree: -# -export ANDROID_HACKS= \ - $(ANDROID_BASE_HACKS) \ - abstractile \ - anemone \ - anemotaxis \ - antmaze \ - antspotlight \ - apollonian \ - atlantis \ - attraction \ - atunnel \ - binaryring \ - blaster \ - blinkbox \ - blitspin \ - blocktube \ - boing \ - bouboule \ - bouncingcow \ - boxed \ - boxfit \ - braid \ - bsod \ - bumps \ - cage \ - ccurve \ - celtic \ - circuit \ - cityflow \ - cloudlife \ - companioncube \ - compass \ - coral \ - crackberg \ - crumbler \ - crystal \ - cube21 \ - cubenetic \ - cubestack \ - cubestorm \ - cubetwist \ - cubicgrid \ - cwaves \ - cynosure \ - dangerball \ - decayscreen \ - deco \ - deluxe \ - demon \ - discoball \ - discrete \ - distort \ - dnalogo \ - drift \ - dymaxionmap \ - endgame \ - energystream \ - engine \ - epicycle \ - eruption \ - esper \ - euler2d \ - fadeplot \ - fiberlamp \ - filmleader \ - fireworkx \ - flame \ - flipflop \ - flipscreen3d \ - flow \ - fluidballs \ - flyingtoasters \ - fuzzyflakes \ - galaxy \ - gears \ - geodesic \ - geodesicgears \ - gflux \ - glblur \ - glcells \ - gleidescope \ - glhanoi \ - glknots \ - glmatrix \ - glplanet \ - glschool \ - glslideshow \ - glsnake \ - gltext \ - goop \ - grav \ - greynetic \ - halo \ - handsy \ - helix \ - hexadrop \ - hexstrut \ - hilbert \ - hopalong \ - hypertorus \ - hypnowheel \ - ifs \ - imsmap \ - interaggregate \ - interference \ - intermomentary \ - jigglypuff \ - jigsaw \ - julia \ - kaleidescope \ - kaleidocycle \ - klein \ - kumppa \ - lament \ - lavalite \ - loop \ - m6502 \ - maze \ - maze3d \ - memscroller \ - menger \ - metaballs \ - mirrorblob \ - moebius \ - moebiusgears \ - moire \ - moire2 \ - morph3d \ - mountain \ - munch \ - nerverot \ - noof \ - noseguy \ - peepers \ - penetrate \ - penrose \ - petri \ - piecewise \ - pinion \ - pipes \ - polytopes \ - pong \ - popsquares \ - projectiveplane \ - providence \ - pulsar \ - pyro \ - quasicrystal \ - queens \ - raverhoop \ - razzledazzle \ - rd-bomb \ - ripples \ - rocks \ - romanboy \ - rorschach \ - rotzoomer \ - rubik \ - rubikblocks \ - sballs \ - shadebobs \ - sierpinski \ - sierpinski3d \ - skytentacles \ - slidescreen \ - slip \ - spheremonics \ - splitflap \ - splodesic \ - spotlight \ - squiral \ - stairs \ - stonerview \ - strange \ - substrate \ - superquadrics \ - surfaces \ - swirl \ - tangram \ - tessellimage \ - thornbird \ - timetunnel \ - topblock \ - triangle \ - tronbit \ - truchet \ - twang \ - unknownpleasures \ - vermiculate \ - vfeedback \ - vigilance \ - voronoi \ - wander \ - whirlwindwarp \ - winduprobot \ - wormhole \ - xanalogtv \ - xflame \ - xjack \ - xlyap \ - xmatrix \ - xrayswarm \ - xspirograph \ - zoom \ - - -# These don't work well enough to turn on by default: -# -ANDROID_TODO= \ - antinspect \ - barcode \ - carousel \ - fliptext \ - fontglide \ - halftone \ - juggler3d \ - molecule \ - pedal \ - phosphor \ - photopile \ - polyominoes \ - qix \ - speedmine \ - starfish \ - starwars \ - testx11 \ - unicrud \ - - -# Download and resize images from jwz.org. -# This saves us having to include 4MB of images in the tar file -# that will only be used by a vast minority of people building -# from source. -# Android actually wants these to be 160x160 but our source is 200x150. - -URL = https://www.jwz.org/xscreensaver/screenshots/ -WGET = wget -q -U xscreensaver-build-android -CVT = -thumbnail '150x150^' -gravity center -extent 150x150 \ - \( +clone -alpha extract \ - -draw 'fill black polygon 0,0 0,15 15,0 fill white circle 15,15 15,0' \ - \( +clone -flip \) -compose Multiply -composite \ - \( +clone -flop \) -compose Multiply -composite \ - \) -alpha off -compose CopyOpacity -composite \ - -colorspace sRGB \ - -strip \ - -quality 95 \ - +dither -colors 128 - -# If we are making the m6502 hack, create the header file for Android -m6502.h:: - @for h in $(ANDROID_HACKS) ; do \ - if [ $${h} = "m6502" ] ; then \ - echo "Making $${h} header ..."; \ - ../hacks/m6502.sh ../hacks/m6502.h ../hacks/images/m6502/*.asm ; \ - echo "Made $${h} header"; \ - fi; \ - done - -xscreensaver/res/drawable/%.png: - @\ - FILE1=`echo "$@" | sed 's!^.*/\([^/]*\)\.png$$!\1.jpg!'` ; \ - FILE2="$@" ; \ - FILE1=`echo "$$FILE1" | sed s/rdbomb/rd-bomb/` ; \ - FILE2=`echo "$$FILE2" | sed s/rd-bomb/rdbomb/` ; \ - URL="$(URL)$$FILE1" ; \ - echo "converting $$URL..." ; \ - rm -f "$$FILE2" ; \ - $(WGET) -O- "$$URL" | \ - convert jpg:- $(CVT) "$$FILE2" ; \ - if [ ! -s "$$FILE2" ]; then \ - echo "$$FILE2 failed" >&2 ; \ - exit 1 ; \ - fi - -thumbs:: - @for f in $(ANDROID_HACKS) $(ANDROID_TODO) ; do \ - $(MAKE) xscreensaver/res/drawable/$$f.png ; \ - done - -clean_thumbs:: - @\ - for f in $(ANDROID_HACKS) $(ANDROID_TODO) ; do \ - rm -f xscreensaver/res/drawable/$$f.png ; \ - done - -distclean:: clean_thumbs clean - - -EXTRA_TARFILES = xscreensaver/res/drawable/thumbnail.png \ - -echo_tarfiles: - @FILES=`find . $(EXTRA_TARFILES) \( \( \ - -name .DS_Store \ - -o -name '*~' \ - -o -name '*.jks' \ - -o -name '*.keystore' \ - -o -name '*_dream.xml' \ - -o -name '*_settings.xml' \ - -o -name '*_wallpaper.xml' \ - -o -name AndroidManifest.xml \ - -o -name strings.xml \ - -o -name settings.xml \ - -o -name attrs.xml \ - -o -name .gitignore \ - -o -name .gradle \ - -o -name drawable \ - -o -name build \ - -o -name gen \ - -o -name libs \ - -o -name obj \ - \) -prune \) \ - -o \( \( -type f -o -type l \) \ - -print \) \ - | sed 's@^\./@@' \ - | sort` ; \ - echo $$FILES - -images_png_h: - cd ../hacks/images && $(MAKE) - -run_check:: - ../hacks/check-configs.pl --build-android $(ANDROID_HACKS) - -debug:: m6502.h run_check images_png_h - $(GRADLE) assembleDebug -release:: m6502.h run_check images_png_h - export APP_ABI=all ; \ - $(GRADLE) assembleRelease - - -KEYSTORE = xscreensaver.jks -$(KEYSTORE): - keytool -genkey -v -keystore $@ \ - -alias xscreensaver -keyalg RSA -keysize 2048 -validity 10000 - -APK_DIR = xscreensaver/build/outputs/apk/release/ -APK_UNSIGNED = $(APK_DIR)xscreensaver-release-unsigned.apk -APK_UNALIGNED = $(APK_DIR)xscreensaver-release-unaligned.apk -APK_SIGNED = $(APK_DIR)xscreensaver-release.apk - - TOOLDIR = $(shell ls -d $$HOME/Library/Android/sdk/build-tools/* | tail -1) - ZIPALIGN = $(TOOLDIR)/zipalign -JARSIGNER = jarsigner - -sign_release:: - cp -p $(APK_UNSIGNED) $(APK_UNALIGNED) - $(JARSIGNER) -verbose -sigalg SHA1withRSA -digestalg SHA1 \ - -keystore $(KEYSTORE) $(APK_UNALIGNED) xscreensaver - rm -f $(APK_SIGNED) - $(ZIPALIGN) -v 4 $(APK_UNALIGNED) $(APK_SIGNED) - rm -f $(APK_UNALIGNED) - $(JARSIGNER) -verify -verbose -certs $(APK_SIGNED) - @ls -lF $(APK_SIGNED) - -apk:: release - @\ - VERS=`sed -n 's/[^0-9]*\([0-9]\.[0-9][^. ]*\).*/\1/p' ../utils/version.h` ; \ - HEAD="xscreensaver-$$VERS" ; \ - if [ ! -s $(APK_SIGNED) -o $(APK_UNSIGNED) -nt $(APK_SIGNED) ]; then \ - $(MAKE) sign_release ; \ - fi ; \ - set -x ; \ - cp -p $(APK_SIGNED) ../archive/$$HEAD.apk - - -## #### Pare it down for faster debugging... -#export APP_ABI = armeabi-v7a -#export APP_ABI = x86 -# -#export ANDROID_HACKS= \ -# $(ANDROID_BASE_HACKS) \ -# bsod \ -# apollonian \ -# engine \ -# dnalogo \ -# twang \ -# memscroller \ -# phosphor \ -# discoball \ -# cubetwist \ -# cubestack \ -# splodesic \ diff --git a/android/README b/android/README deleted file mode 100644 index 2843296..0000000 --- a/android/README +++ /dev/null @@ -1,189 +0,0 @@ - -This directory contains the Android-specific code for building xscreensaver. - -It is preliminary, and very much a work in progress. - -If you're messing with this, please let us know! - - dennis@panaceasupplies.com - jwz@jwz.org - - -To set up your Android development environment: - - Install JDK 7 (http://www.oracle.com/technetwork/java/javase/downloads/) - Install Android Studio (http://developer.android.com/sdk/) - Install Android NDK (http://developer.android.com/ndk/downloads) - Rename or link the "android-ndk-*" directory to "ndk" inside your - $ANDROID_HOME (the "sdk/" directory that is the parent of - "build-tools/", etc.) That is, it should be "sdk/ndk/". - - set $ANDROID_HOME to where your SDK is installed, or - set "sdk.dir" in the file local.properties. - On MacOS, the value you want is probably ~/Library/Android/sdk/ - Also set "ndk.dir" in local.properties. - -To build: - - ./configure - cd android - make - - Hopefully an "xscreensaver-debug.apk" file will appear in - android/xscreensaver/build/outputs/apk/. - - Load that onto your device and go to: - Settings / Display / Daydream - or just click on the XScreenSaver icon, which is a shortcut to that. - - To create and configure an emulator image, use the GUI tool and and - give the emulator a name (say, "Nexus_5"). - - $ANDROID_HOME/sdk/tools/android avd - - E.g.: Nexus 5, Android 5, Intel Atom x86_64, RAM 2048 VM 64, - storage 200, use host GPU. - - Configuration options are in $HOME/.android/avd/*.avd/config.ini - - To launch it: - - $ANDROID_HOME/sdk/tools/emulator -avd Nexus_5 - - Warning! On my system at least, the emulator runs out of memory - when trying to display the Daydream page if all of the savers are - loaded. This is troubling. You can work around this by editing - your *.avd/config.ini and setting vm.heapSize=128; or by editing - android/Makefile and paring down the $ANDROID_HACKS list to a - smaller subset (60 or so with the default heapSize). - - - To load it into the currently-running emulator or device: - $ANDROID_HOME/platform-tools/adb install -r \ - xscreensaver/build/outputs/apk/xscreensaver-debug.apk - - Extremely verbose log output, including stack traces: - $ANDROID_HOME/platform-tools/adb logcat - - Non-fatal log output for only this app: - $ANDROID_HOME/platform-tools/adb logcat \ - -s xscreensaver:d AndroidRuntime:d libEGL:d - - Note that sometimes "logcat" will just sit there forever saying - "waiting for device". This is because the emulator is a piece of - shit and sometimes decides to just randomly not service connections. - If you restart the emulator, and wait minutes for the whole damned - thing to boot up again, it will probably work next time. Probably. - - -Directory structure: - - Boilerplate for the Java version of "make": - *gradle* - *.properties - xscreensaver/*gradle* - xscreensaver/build.* - xscreensaver/*.properties - - The other half of the Makefile: - xscreensaver/jni/*.mk - - Source code: - xscreensaver/src/org/jwz/xscreensaver/*.java - xscreensaver/res/layout/*.xml - - Other relevant source code is in ../jwxyz/ and ../hacks/. - - Icons: - xscreensaver/res/drawable-ldpi/ - xscreensaver/res/drawable-mdpi/ - xscreensaver/res/drawable/ - - Files that we generate: - - gen/function-table.h - xscreensaver/AndroidManifest.xml - xscreensaver/res/drawable/*.png - xscreensaver/res/values/settings.xml - xscreensaver/res/values/strings.xml - xscreensaver/res/xml/*.xml - xscreensaver/src/org/jwz/xscreensaver/gen/*.java - - Other files generated as a part of the build process: - - gen/ - .gradle/ - xscreensaver/build/ - xscreensaver/build/outputs/apk/ -- app appears here - xscreensaver/jni/ - xscreensaver/libs/ - xscreensaver/obj/ - xscreensaver/res/ - xscreensaver/res/drawable/ - xscreensaver/res/values/ - xscreensaver/res/xml/ - xscreensaver/src/org/jwz/xscreensaver/gen/ - -When adding a new hack, edit android/Makefile, then "make clean" and "make". - - -TODO list, and known bugs: - - - See the top of ../jwxyz/jwxyz-gl.c for a low level TODO list, - but here's what's wrong with the savers from a high level view: - - - Rotation is wonky (on some devices?) - - - The Android emulator is a piece of shit and crashes all the time, - so it's possible that some of these work fine on real devices. - I don't actually have an Android device, so I have no idea. - - - As mentioned above, the Android emulator runs out of memory if - more than about 60 of the Daydreams are installed with the default - heapSize. Again, I don't know if this is an issue on real devices. - I sure hope not. - - - The code that attempts to grab a screen shot before the Daydream begins - doesn't work. - - - When a saver exits abnormally, we catch the exception and attempt to - display the error message in a dialog. The catch works, but the dialog - box does not. - - antinspect renders incorrectly - apple2 text, images into pixmaps doesn't work - barcode pixmaps - bsod pixmaps, XCopyArea problems - carousel images are corrupted - cityflow shading is wrong - endgame insanely slow - engine text - esper images don't load, no text - fliptext text - fontglide text - glblur grayscale instead of color - halftone XFillArc crash - jigglypuff incredibly slow - juggler3d blank - maze lines are not the same thickness (aliased?) - molecule blank - noseguy text; images - pacman images; launches really slowly - pedal polygons - phosphor text; pixmaps - photopile text; images don't display - polyhedra text - polyominoes pixmaps - qix polygons - queens insanely slow - sonar does icmp work? - speedmine polygons - splitflap super slow - spotlight blank - starfish polygons - starwars text - unicrud pixmaps - winduprobot dome is not transparent - xanalogtv pixmaps - xflame draws only upper left corner - xmatrix pretty slow diff --git a/android/android.iml b/android/android.iml deleted file mode 100644 index 7db6b23..0000000 --- a/android/android.iml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<module external.linked.project.id="android" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/xscreensaver" external.system.id="GRADLE" type="JAVA_MODULE" version="4"> - <component name="FacetManager"> - <facet type="java-gradle" name="Java-Gradle"> - <configuration> - <option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/build" /> - <option name="BUILDABLE" value="false" /> - </configuration> - </facet> - </component> - <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="true"> - <exclude-output /> - <content url="file://$MODULE_DIR$"> - <excludeFolder url="file://$MODULE_DIR$/.gradle" /> - </content> - <orderEntry type="inheritedJdk" /> - <orderEntry type="sourceFolder" forTests="false" /> - </component> -</module>
\ No newline at end of file diff --git a/android/build.gradle b/android/build.gradle deleted file mode 100644 index 978b94c..0000000 --- a/android/build.gradle +++ /dev/null @@ -1,30 +0,0 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. -buildscript { - repositories { - google() - jcenter() - } - dependencies { - classpath 'com.android.tools.build:gradle:3.1.2' - } - -} - -allprojects { - repositories { - google() - maven { url 'https://maven.google.com' } - jcenter() - } -} - - -task clean(type: Delete) { - delete('./build') -} - -task distClean(type: Delete) { - delete('./.gradle') -} - -distClean.dependsOn clean diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar Binary files differdeleted file mode 100644 index 13372ae..0000000 --- a/android/gradle/wrapper/gradle-wrapper.jar +++ /dev/null diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 0ac000f..0000000 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -#Sat Feb 10 21:20:31 PST 2018 -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.8-bin.zip diff --git a/android/gradlew b/android/gradlew deleted file mode 100755 index 9d82f78..0000000 --- a/android/gradlew +++ /dev/null @@ -1,160 +0,0 @@ -#!/usr/bin/env bash - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; -esac - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") -} -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" - -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/android/gradlew.bat b/android/gradlew.bat deleted file mode 100644 index aec9973..0000000 --- a/android/gradlew.bat +++ /dev/null @@ -1,90 +0,0 @@ -@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windowz variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-if "%@eval[2+2]" == "4" goto 4NT_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-goto execute
-
-:4NT_args
-@rem Get arguments from the 4NT Shell from JP Software
-set CMD_LINE_ARGS=%$
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/android/local.properties b/android/local.properties deleted file mode 100644 index 238a21c..0000000 --- a/android/local.properties +++ /dev/null @@ -1,11 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must *NOT* be checked into Version Control Systems, -# as it contains information specific to your local configuration. - -# location of the SDK. This is only used by Ant -# For customization when using a Version Control System, please read the -# header note. -sdk.dir=/Users/jwz/Library/Android/sdk -ndk.dir=/Users/jwz/Library/Android/sdk/ndk diff --git a/android/screenhack-android.c b/android/screenhack-android.c deleted file mode 100644 index d5067ab..0000000 --- a/android/screenhack-android.c +++ /dev/null @@ -1,209 +0,0 @@ -/* xscreensaver, Copyright (c) 2016 Jamie Zawinski <jwz@jwz.org> - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation. No representations are made about the suitability of this - * software for any purpose. It is provided "as is" without express or - * implied warranty. - * - * Utility functions related to the hacks/ APIs. - */ - -#include <stdlib.h> -#include <unistd.h> -#include <time.h> -#include <sys/time.h> -#include <sys/utsname.h> -#include <android/log.h> -#include "screenhackI.h" -#include "xlockmoreI.h" -#include "textclient.h" - -#if defined(USE_IPHONE) || (HAVE_ANDROID) -# include "jwzgles.h" -#else -# include <OpenGL/OpenGL.h> -#endif - -#ifndef isupper -# define isupper(c) ((c) >= 'A' && (c) <= 'Z') -#endif -#ifndef _tolower -# define _tolower(c) ((c) - 'A' + 'a') -#endif - -Bool -get_boolean_resource (Display *dpy, char *res_name, char *res_class) -{ - char *tmp, buf [100]; - char *s = get_string_resource (dpy, res_name, res_class); - char *os = s; - if (! s) return 0; - for (tmp = buf; *s; s++) - *tmp++ = isupper (*s) ? _tolower (*s) : *s; - *tmp = 0; - free (os); - - while (*buf && - (buf[strlen(buf)-1] == ' ' || - buf[strlen(buf)-1] == '\t')) - buf[strlen(buf)-1] = 0; - - if (!strcmp (buf, "on") || !strcmp (buf, "true") || !strcmp (buf, "yes")) - return 1; - if (!strcmp (buf,"off") || !strcmp (buf, "false") || !strcmp (buf,"no")) - return 0; - fprintf (stderr, "%s: %s must be boolean, not %s.\n", - progname, res_name, buf); - return 0; -} - -int -get_integer_resource (Display *dpy, char *res_name, char *res_class) -{ - int val; - char c, *s = get_string_resource (dpy, res_name, res_class); - char *ss = s; - if (!s) return 0; - - while (*ss && *ss <= ' ') ss++; /* skip whitespace */ - - if (ss[0] == '0' && (ss[1] == 'x' || ss[1] == 'X')) /* 0x: parse as hex */ - { - if (1 == sscanf (ss+2, "%x %c", (unsigned int *) &val, &c)) - { - free (s); - return val; - } - } - else /* else parse as dec */ - { - /* Allow integer values to end in ".0". */ - int L = strlen(ss); - if (L > 2 && ss[L-2] == '.' && ss[L-1] == '0') - ss[L-2] = 0; - - if (1 == sscanf (ss, "%d %c", &val, &c)) - { - free (s); - return val; - } - } - - fprintf (stderr, "%s: %s must be an integer, not %s.\n", - progname, res_name, s); - free (s); - return 0; -} - -double -get_float_resource (Display *dpy, char *res_name, char *res_class) -{ - double val; - char c, *s = get_string_resource (dpy, res_name, res_class); - if (! s) return 0.0; - if (1 == sscanf (s, " %lf %c", &val, &c)) - { - free (s); - return val; - } - fprintf (stderr, "%s: %s must be a float, not %s.\n", - progname, res_name, s); - free (s); - return 0.0; -} - - -char * -textclient_mobile_date_string (void) -{ - struct utsname uts; - if (uname (&uts) < 0) - return strdup("uname() failed"); - else - { - time_t now = time ((time_t *) 0); - char *ts = ctime (&now); - char *buf, *s; - if ((s = strchr(uts.nodename, '.'))) - *s = 0; - buf = (char *) malloc(strlen(uts.machine) + - strlen(uts.sysname) + - strlen(uts.release) + - strlen(ts) + 10); - sprintf (buf, "%s %s %s\n%s", uts.machine, uts.sysname, uts.release, ts); - return buf; - } -} - - -/* used by the OpenGL screen savers - */ - -/* Does nothing - prepareContext already did the work. - */ -void -glXMakeCurrent (Display *dpy, Window window, GLXContext context) -{ -} - - -/* clear away any lingering error codes */ -void -clear_gl_error (void) -{ - while (glGetError() != GL_NO_ERROR) - ; -} - - -// needs to be implemented in Android... -/* Copy the back buffer to the front buffer. - */ -void -glXSwapBuffers (Display *dpy, Window window) -{ -} - - -/* Called by OpenGL savers using the XLockmore API. - */ -GLXContext * -init_GL (ModeInfo *mi) -{ - // Window win = mi->window; - - // Caller expects a pointer to an opaque struct... which it dereferences. - // Don't ask me, it's historical... - static int blort = -1; - return (void *) &blort; -} - -/* report a GL error. */ -void -check_gl_error (const char *type) -{ - char buf[100]; - GLenum i; - const char *e; - switch ((i = glGetError())) { - case GL_NO_ERROR: return; - case GL_INVALID_ENUM: e = "invalid enum"; break; - case GL_INVALID_VALUE: e = "invalid value"; break; - case GL_INVALID_OPERATION: e = "invalid operation"; break; - case GL_STACK_OVERFLOW: e = "stack overflow"; break; - case GL_STACK_UNDERFLOW: e = "stack underflow"; break; - case GL_OUT_OF_MEMORY: e = "out of memory"; break; -#ifdef GL_TABLE_TOO_LARGE_EXT - case GL_TABLE_TOO_LARGE_EXT: e = "table too large"; break; -#endif -#ifdef GL_TEXTURE_TOO_LARGE_EXT - case GL_TEXTURE_TOO_LARGE_EXT: e = "texture too large"; break; -#endif - default: - e = buf; sprintf (buf, "unknown GL error %d", (int) i); break; - } - __android_log_write(ANDROID_LOG_ERROR, "xscreensaver", e); -} diff --git a/android/settings.gradle b/android/settings.gradle deleted file mode 100644 index 5fc665b..0000000 --- a/android/settings.gradle +++ /dev/null @@ -1 +0,0 @@ -include ':xscreensaver' diff --git a/android/xscreensaver/.idea/caches/build_file_checksums.ser b/android/xscreensaver/.idea/caches/build_file_checksums.ser Binary files differdeleted file mode 100644 index c2ab27f..0000000 --- a/android/xscreensaver/.idea/caches/build_file_checksums.ser +++ /dev/null diff --git a/android/xscreensaver/.idea/codeStyles/Project.xml b/android/xscreensaver/.idea/codeStyles/Project.xml deleted file mode 100644 index 30aa626..0000000 --- a/android/xscreensaver/.idea/codeStyles/Project.xml +++ /dev/null @@ -1,29 +0,0 @@ -<component name="ProjectCodeStyleConfiguration"> - <code_scheme name="Project" version="173"> - <Objective-C-extensions> - <file> - <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Import" /> - <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Macro" /> - <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Typedef" /> - <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Enum" /> - <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Constant" /> - <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Global" /> - <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Struct" /> - <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="FunctionPredecl" /> - <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Function" /> - </file> - <class> - <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Property" /> - <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Synthesize" /> - <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InitMethod" /> - <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="StaticMethod" /> - <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InstanceMethod" /> - <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="DeallocMethod" /> - </class> - <extensions> - <pair source="cpp" header="h" fileNamingConvention="NONE" /> - <pair source="c" header="h" fileNamingConvention="NONE" /> - </extensions> - </Objective-C-extensions> - </code_scheme> -</component>
\ No newline at end of file diff --git a/android/xscreensaver/.idea/compiler.xml b/android/xscreensaver/.idea/compiler.xml deleted file mode 100644 index 9a8b7e5..0000000 --- a/android/xscreensaver/.idea/compiler.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="CompilerConfiguration"> - <option name="DEFAULT_COMPILER" value="Javac" /> - <resourceExtensions /> - <wildcardResourcePatterns> - <entry name="!?*.java" /> - <entry name="!?*.form" /> - <entry name="!?*.class" /> - <entry name="!?*.groovy" /> - <entry name="!?*.scala" /> - <entry name="!?*.flex" /> - <entry name="!?*.kt" /> - <entry name="!?*.clj" /> - </wildcardResourcePatterns> - <annotationProcessing> - <profile default="true" name="Default" enabled="false"> - <processorPath useClasspath="true" /> - </profile> - </annotationProcessing> - </component> -</project>
\ No newline at end of file diff --git a/android/xscreensaver/.idea/gradle.xml b/android/xscreensaver/.idea/gradle.xml deleted file mode 100644 index 3ac097a..0000000 --- a/android/xscreensaver/.idea/gradle.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="GradleSettings"> - <option name="linkedExternalProjectsSettings"> - <GradleProjectSettings> - <option name="distributionType" value="LOCAL" /> - <option name="externalProjectPath" value="$PROJECT_DIR$" /> - <option name="gradleHome" value="$APPLICATION_HOME_DIR$/gradle/gradle-4.1" /> - <option name="modules"> - <set> - <option value="$PROJECT_DIR$/.." /> - <option value="$PROJECT_DIR$" /> - </set> - </option> - <option name="resolveModulePerSourceSet" value="false" /> - </GradleProjectSettings> - </option> - </component> -</project>
\ No newline at end of file diff --git a/android/xscreensaver/.idea/libraries/Gradle__android_arch_core_common_1_1_0_jar.xml b/android/xscreensaver/.idea/libraries/Gradle__android_arch_core_common_1_1_0_jar.xml deleted file mode 100644 index 9869803..0000000 --- a/android/xscreensaver/.idea/libraries/Gradle__android_arch_core_common_1_1_0_jar.xml +++ /dev/null @@ -1,11 +0,0 @@ -<component name="libraryTable"> - <library name="Gradle: android.arch.core:common:1.1.0@jar"> - <CLASSES> - <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.core/common/1.1.0/8007981f7d7540d89cd18471b8e5dcd2b4f99167/common-1.1.0.jar!/" /> - </CLASSES> - <JAVADOC /> - <SOURCES> - <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.core/common/1.1.0/f211e8f994b67f7ae2a1bc06e4f7b974ec72ee50/common-1.1.0-sources.jar!/" /> - </SOURCES> - </library> -</component>
\ No newline at end of file diff --git a/android/xscreensaver/.idea/libraries/Gradle__android_arch_core_runtime_1_1_0.xml b/android/xscreensaver/.idea/libraries/Gradle__android_arch_core_runtime_1_1_0.xml deleted file mode 100644 index 03529f7..0000000 --- a/android/xscreensaver/.idea/libraries/Gradle__android_arch_core_runtime_1_1_0.xml +++ /dev/null @@ -1,12 +0,0 @@ -<component name="libraryTable"> - <library name="Gradle: android.arch.core:runtime-1.1.0"> - <CLASSES> - <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/runtime-1.1.0.aar/66eddde487cc032a22af511624a2dc1d/jars/classes.jar!/" /> - <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/runtime-1.1.0.aar/66eddde487cc032a22af511624a2dc1d/res" /> - </CLASSES> - <JAVADOC /> - <SOURCES> - <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.core/runtime/1.1.0/62944187d3ae3e7a4644b50da4e7b63c605a696/runtime-1.1.0-sources.jar!/" /> - </SOURCES> - </library> -</component>
\ No newline at end of file diff --git a/android/xscreensaver/.idea/libraries/Gradle__android_arch_lifecycle_common_1_1_0_jar.xml b/android/xscreensaver/.idea/libraries/Gradle__android_arch_lifecycle_common_1_1_0_jar.xml deleted file mode 100644 index 29c0049..0000000 --- a/android/xscreensaver/.idea/libraries/Gradle__android_arch_lifecycle_common_1_1_0_jar.xml +++ /dev/null @@ -1,11 +0,0 @@ -<component name="libraryTable"> - <library name="Gradle: android.arch.lifecycle:common:1.1.0@jar"> - <CLASSES> - <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.lifecycle/common/1.1.0/edf3f7bfb84a7521d0599efa3b0113a0ee90f85/common-1.1.0.jar!/" /> - </CLASSES> - <JAVADOC /> - <SOURCES> - <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.lifecycle/common/1.1.0/72f6113534923e49e8c032107ca638b97775c61b/common-1.1.0-sources.jar!/" /> - </SOURCES> - </library> -</component>
\ No newline at end of file diff --git a/android/xscreensaver/.idea/libraries/Gradle__android_arch_lifecycle_livedata_core_1_1_0.xml b/android/xscreensaver/.idea/libraries/Gradle__android_arch_lifecycle_livedata_core_1_1_0.xml deleted file mode 100644 index c43180e..0000000 --- a/android/xscreensaver/.idea/libraries/Gradle__android_arch_lifecycle_livedata_core_1_1_0.xml +++ /dev/null @@ -1,12 +0,0 @@ -<component name="libraryTable"> - <library name="Gradle: android.arch.lifecycle:livedata-core-1.1.0"> - <CLASSES> - <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/livedata-core-1.1.0.aar/01d9f7cf052a887e242d3ac9bccb130e/res" /> - <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/livedata-core-1.1.0.aar/01d9f7cf052a887e242d3ac9bccb130e/jars/classes.jar!/" /> - </CLASSES> - <JAVADOC /> - <SOURCES> - <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.lifecycle/livedata-core/1.1.0/300f89e645a95de0bdc6d8833beeee6e3045df06/livedata-core-1.1.0-sources.jar!/" /> - </SOURCES> - </library> -</component>
\ No newline at end of file diff --git a/android/xscreensaver/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_1_0.xml b/android/xscreensaver/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_1_0.xml deleted file mode 100644 index 6031fb9..0000000 --- a/android/xscreensaver/.idea/libraries/Gradle__android_arch_lifecycle_runtime_1_1_0.xml +++ /dev/null @@ -1,12 +0,0 @@ -<component name="libraryTable"> - <library name="Gradle: android.arch.lifecycle:runtime-1.1.0"> - <CLASSES> - <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/runtime-1.1.0.aar/625fea47a711c4db819aa2d6df929100/jars/classes.jar!/" /> - <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/runtime-1.1.0.aar/625fea47a711c4db819aa2d6df929100/res" /> - </CLASSES> - <JAVADOC /> - <SOURCES> - <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.lifecycle/runtime/1.1.0/a4b0d6b8e8f51c8f95d5a0641f81ffc13ab406c7/runtime-1.1.0-sources.jar!/" /> - </SOURCES> - </library> -</component>
\ No newline at end of file diff --git a/android/xscreensaver/.idea/libraries/Gradle__android_arch_lifecycle_viewmodel_1_1_0.xml b/android/xscreensaver/.idea/libraries/Gradle__android_arch_lifecycle_viewmodel_1_1_0.xml deleted file mode 100644 index 11a24fb..0000000 --- a/android/xscreensaver/.idea/libraries/Gradle__android_arch_lifecycle_viewmodel_1_1_0.xml +++ /dev/null @@ -1,12 +0,0 @@ -<component name="libraryTable"> - <library name="Gradle: android.arch.lifecycle:viewmodel-1.1.0"> - <CLASSES> - <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/viewmodel-1.1.0.aar/0c933938d5403a08c5e3efe386ac2b02/res" /> - <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/viewmodel-1.1.0.aar/0c933938d5403a08c5e3efe386ac2b02/jars/classes.jar!/" /> - </CLASSES> - <JAVADOC /> - <SOURCES> - <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/android.arch.lifecycle/viewmodel/1.1.0/e4c0c5d65f92ccad0b0148ac2f01b540ac7a711e/viewmodel-1.1.0-sources.jar!/" /> - </SOURCES> - </library> -</component>
\ No newline at end of file diff --git a/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_annotations_27_1_1_jar.xml b/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_annotations_27_1_1_jar.xml deleted file mode 100644 index 1517ad9..0000000 --- a/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_annotations_27_1_1_jar.xml +++ /dev/null @@ -1,11 +0,0 @@ -<component name="libraryTable"> - <library name="Gradle: com.android.support:support-annotations:27.1.1@jar"> - <CLASSES> - <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-annotations/27.1.1/39ded76b5e1ce1c5b2688e1d25cdc20ecee32007/support-annotations-27.1.1.jar!/" /> - </CLASSES> - <JAVADOC /> - <SOURCES> - <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-annotations/27.1.1/46bebf5bd40146178cb33c7678f3782a09dea6e4/support-annotations-27.1.1-sources.jar!/" /> - </SOURCES> - </library> -</component>
\ No newline at end of file diff --git a/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_compat_27_1_1.xml b/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_compat_27_1_1.xml deleted file mode 100644 index fba52e8..0000000 --- a/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_compat_27_1_1.xml +++ /dev/null @@ -1,12 +0,0 @@ -<component name="libraryTable"> - <library name="Gradle: com.android.support:support-compat-27.1.1"> - <CLASSES> - <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-compat-27.1.1.aar/64b85698f5c1a639182eb49d0126a2d0/res" /> - <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-compat-27.1.1.aar/64b85698f5c1a639182eb49d0126a2d0/jars/classes.jar!/" /> - </CLASSES> - <JAVADOC /> - <SOURCES> - <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-compat/27.1.1/fe233277b6eae25ce5b2afab6daf55d73c86f0b9/support-compat-27.1.1-sources.jar!/" /> - </SOURCES> - </library> -</component>
\ No newline at end of file diff --git a/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_core_ui_27_1_1.xml b/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_core_ui_27_1_1.xml deleted file mode 100644 index 3ccece0..0000000 --- a/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_core_ui_27_1_1.xml +++ /dev/null @@ -1,12 +0,0 @@ -<component name="libraryTable"> - <library name="Gradle: com.android.support:support-core-ui-27.1.1"> - <CLASSES> - <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-core-ui-27.1.1.aar/b432dca2f3c4bd72e4ef10511d8d2ba5/res" /> - <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-core-ui-27.1.1.aar/b432dca2f3c4bd72e4ef10511d8d2ba5/jars/classes.jar!/" /> - </CLASSES> - <JAVADOC /> - <SOURCES> - <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-core-ui/27.1.1/266c369a3227be5afec33e11c964472269ff2a7c/support-core-ui-27.1.1-sources.jar!/" /> - </SOURCES> - </library> -</component>
\ No newline at end of file diff --git a/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_core_utils_27_1_1.xml b/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_core_utils_27_1_1.xml deleted file mode 100644 index 69d23f2..0000000 --- a/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_core_utils_27_1_1.xml +++ /dev/null @@ -1,12 +0,0 @@ -<component name="libraryTable"> - <library name="Gradle: com.android.support:support-core-utils-27.1.1"> - <CLASSES> - <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-core-utils-27.1.1.aar/0980a98a9ec854145d292239910611d4/jars/classes.jar!/" /> - <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-core-utils-27.1.1.aar/0980a98a9ec854145d292239910611d4/res" /> - </CLASSES> - <JAVADOC /> - <SOURCES> - <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-core-utils/27.1.1/8fb37fd2f8dbc23482865700d2c340ae030ea561/support-core-utils-27.1.1-sources.jar!/" /> - </SOURCES> - </library> -</component>
\ No newline at end of file diff --git a/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_fragment_27_1_1.xml b/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_fragment_27_1_1.xml deleted file mode 100644 index 8eb356f..0000000 --- a/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_fragment_27_1_1.xml +++ /dev/null @@ -1,12 +0,0 @@ -<component name="libraryTable"> - <library name="Gradle: com.android.support:support-fragment-27.1.1"> - <CLASSES> - <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-fragment-27.1.1.aar/c39b8c3b0b8a6fd39d4cf14a5ed4d9a8/jars/classes.jar!/" /> - <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-fragment-27.1.1.aar/c39b8c3b0b8a6fd39d4cf14a5ed4d9a8/res" /> - </CLASSES> - <JAVADOC /> - <SOURCES> - <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-fragment/27.1.1/94732bda44fba11302c58e459b7c1f47e7521bf9/support-fragment-27.1.1-sources.jar!/" /> - </SOURCES> - </library> -</component>
\ No newline at end of file diff --git a/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_media_compat_27_1_1.xml b/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_media_compat_27_1_1.xml deleted file mode 100644 index c577eba..0000000 --- a/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_media_compat_27_1_1.xml +++ /dev/null @@ -1,12 +0,0 @@ -<component name="libraryTable"> - <library name="Gradle: com.android.support:support-media-compat-27.1.1"> - <CLASSES> - <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-media-compat-27.1.1.aar/68a94910a2befb2c6cb37bd04aa2aa39/res" /> - <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-media-compat-27.1.1.aar/68a94910a2befb2c6cb37bd04aa2aa39/jars/classes.jar!/" /> - </CLASSES> - <JAVADOC /> - <SOURCES> - <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-media-compat/27.1.1/3ab3f968d7cd675d2f97e67a3e9fc0ac63618f46/support-media-compat-27.1.1-sources.jar!/" /> - </SOURCES> - </library> -</component>
\ No newline at end of file diff --git a/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_v4_27_1_1.xml b/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_v4_27_1_1.xml deleted file mode 100644 index 10d3108..0000000 --- a/android/xscreensaver/.idea/libraries/Gradle__com_android_support_support_v4_27_1_1.xml +++ /dev/null @@ -1,12 +0,0 @@ -<component name="libraryTable"> - <library name="Gradle: com.android.support:support-v4-27.1.1"> - <CLASSES> - <root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-v4-27.1.1.aar/4063a17c1f54cf7b4dd719a35d318e61/res" /> - <root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/support-v4-27.1.1.aar/4063a17c1f54cf7b4dd719a35d318e61/jars/classes.jar!/" /> - </CLASSES> - <JAVADOC /> - <SOURCES> - <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.support/support-v4/27.1.1/5b8f86fea035328fc9e8c660773037a3401ce25f/support-v4-27.1.1-sources.jar!/" /> - </SOURCES> - </library> -</component>
\ No newline at end of file diff --git a/android/xscreensaver/.idea/misc.xml b/android/xscreensaver/.idea/misc.xml deleted file mode 100644 index 99202cc..0000000 --- a/android/xscreensaver/.idea/misc.xml +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="NullableNotNullManager"> - <option name="myDefaultNullable" value="android.support.annotation.Nullable" /> - <option name="myDefaultNotNull" value="android.support.annotation.NonNull" /> - <option name="myNullables"> - <value> - <list size="5"> - <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" /> - <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" /> - <item index="2" class="java.lang.String" itemvalue="javax.annotation.CheckForNull" /> - <item index="3" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.Nullable" /> - <item index="4" class="java.lang.String" itemvalue="android.support.annotation.Nullable" /> - </list> - </value> - </option> - <option name="myNotNulls"> - <value> - <list size="4"> - <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" /> - <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull" /> - <item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" /> - <item index="3" class="java.lang.String" itemvalue="android.support.annotation.NonNull" /> - </list> - </value> - </option> - </component> - <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK"> - <output url="file://$PROJECT_DIR$/build/classes" /> - </component> - <component name="ProjectType"> - <option name="id" value="Android" /> - </component> -</project>
\ No newline at end of file diff --git a/android/xscreensaver/.idea/modules.xml b/android/xscreensaver/.idea/modules.xml deleted file mode 100644 index 33191fe..0000000 --- a/android/xscreensaver/.idea/modules.xml +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="ProjectModuleManager"> - <modules> - <module fileurl="file://$PROJECT_DIR$/../android.iml" filepath="$PROJECT_DIR$/../android.iml" /> - <module fileurl="file://$PROJECT_DIR$/xscreensaver.iml" filepath="$PROJECT_DIR$/xscreensaver.iml" /> - </modules> - </component> -</project>
\ No newline at end of file diff --git a/android/xscreensaver/.idea/runConfigurations.xml b/android/xscreensaver/.idea/runConfigurations.xml deleted file mode 100644 index 7f68460..0000000 --- a/android/xscreensaver/.idea/runConfigurations.xml +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="RunConfigurationProducerService"> - <option name="ignoredProducers"> - <set> - <option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" /> - <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" /> - <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" /> - </set> - </option> - </component> -</project>
\ No newline at end of file diff --git a/android/xscreensaver/.idea/workspace.xml b/android/xscreensaver/.idea/workspace.xml deleted file mode 100644 index 9f2ef73..0000000 --- a/android/xscreensaver/.idea/workspace.xml +++ /dev/null @@ -1,2205 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="CMakeSettings"> - <configurations> - <configuration PROFILE_NAME="Debug" CONFIG_NAME="Debug" /> - </configurations> - </component> - <component name="ChangeListManager"> - <list default="true" id="41008724-035d-4e24-92b6-6dfb9231c83c" name="Default" comment="" /> - <ignored path="xscreensaver.iws" /> - <ignored path=".idea/workspace.xml" /> - <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> - <option name="TRACKING_ENABLED" value="true" /> - <option name="SHOW_DIALOG" value="false" /> - <option name="HIGHLIGHT_CONFLICTS" value="true" /> - <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> - <option name="LAST_RESOLUTION" value="IGNORE" /> - </component> - <component name="CreatePatchCommitExecutor"> - <option name="PATCH_PATH" value="" /> - </component> - <component name="ExternalProjectsData"> - <projectState path="$PROJECT_DIR$"> - <ProjectState /> - </projectState> - </component> - <component name="ExternalProjectsManager"> - <system id="GRADLE"> - <state> - <projects_view /> - </state> - </system> - </component> - <component name="FavoritesManager"> - <favorites_list name="xscreensaver" /> - </component> - <component name="FileEditorManager"> - <leaf SIDE_TABS_SIZE_LIMIT_KEY="300"> - <file leaf-file-name="gradle-wrapper.properties" pinned="false" current-in-tab="true"> - <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties"> - <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="90"> - <caret line="6" selection-start-line="6" selection-end-line="6" /> - </state> - </provider> - </entry> - </file> - </leaf> - </component> - <component name="GradleLocalSettings"> - <option name="myGradleHomes"> - <map> - <entry key="$PROJECT_DIR$" value="$USER_HOME$/.gradle/wrapper/dists/gradle-4.8-bin/divx0s2uj4thofgytb7gf9fsi/gradle-4.8" /> - </map> - </option> - <option name="myGradleVersions"> - <map> - <entry key="$PROJECT_DIR$" value="4.8" /> - </map> - </option> - <option name="availableProjects"> - <map> - <entry> - <key> - <ExternalProjectPojo> - <option name="name" value="xscreensaver" /> - <option name="path" value="$PROJECT_DIR$" /> - </ExternalProjectPojo> - </key> - <value> - <list> - <ExternalProjectPojo> - <option name="name" value="android" /> - <option name="path" value="$PROJECT_DIR$/.." /> - </ExternalProjectPojo> - <ExternalProjectPojo> - <option name="name" value=":xscreensaver" /> - <option name="path" value="$PROJECT_DIR$" /> - </ExternalProjectPojo> - </list> - </value> - </entry> - </map> - </option> - <option name="availableTasks"> - <map> - <entry key="$PROJECT_DIR$/.."> - <value> - <list> - <ExternalTaskPojo> - <option name="description" value="Displays all buildscript dependencies declared in root project 'android'." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="buildEnvironment" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="clean" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Displays the components produced by root project 'android'. [incubating]" /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="components" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Displays all dependencies declared in root project 'android'." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="dependencies" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Displays the insight into a specific dependency in root project 'android'." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="dependencyInsight" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Displays the dependent components of components in root project 'android'. [incubating]" /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="dependentComponents" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="distClean" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Displays a help message." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="help" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Initializes a new Gradle build." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="init" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Displays the configuration model of root project 'android'. [incubating]" /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="model" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Displays the sub-projects of root project 'android'." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="projects" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Displays the properties of root project 'android'." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="properties" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Displays the tasks runnable from root project 'android' (some of the displayed tasks may belong to subprojects)." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="tasks" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Generates Gradle wrapper files." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="wrapper" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Displays the Android dependencies of the project." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="androidDependencies" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Assembles all variants of all applications and secondary packages." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="assemble" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Assembles all the Test applications." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="assembleAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Assembles all Debug builds." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="assembleDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="assembleDebugAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="assembleDebugUnitTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Assembles all Release builds." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="assembleRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="assembleReleaseUnitTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Assembles and tests this project." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="build" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Assembles and tests this project and all projects that depend on it." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="buildDependents" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Assembles and tests this project and all projects it depends on." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="buildNeeded" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="bundleAppClassesDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="bundleAppClassesDebugAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="bundleAppClassesDebugUnitTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="bundleAppClassesRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="bundleAppClassesReleaseUnitTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="bundleDebugAndroidTestResources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="bundleDebugResources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="bundleReleaseResources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Runs all checks." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="check" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="checkDebugManifest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="checkReleaseManifest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Deletes the build cache directory." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="cleanBuildCache" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="compileDebugAidl" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="compileDebugAndroidTestAidl" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="compileDebugAndroidTestJavaWithJavac" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="compileDebugAndroidTestNdk" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="compileDebugAndroidTestRenderscript" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="compileDebugAndroidTestShaders" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="compileDebugAndroidTestSources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="compileDebugJavaWithJavac" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="compileDebugNdk" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="compileDebugRenderscript" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="compileDebugShaders" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="compileDebugSources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="compileDebugUnitTestJavaWithJavac" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="compileDebugUnitTestSources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="compileLint" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="compileReleaseAidl" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="compileReleaseJavaWithJavac" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="compileReleaseNdk" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="compileReleaseRenderscript" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="compileReleaseShaders" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="compileReleaseSources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="compileReleaseUnitTestJavaWithJavac" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="compileReleaseUnitTestSources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Installs and runs instrumentation tests for all flavors on connected devices." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="connectedAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Runs all device checks on currently connected devices." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="connectedCheck" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Installs and runs the tests for debug on connected devices." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="connectedDebugAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="consumeConfigAttr" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="createDebugCompatibleScreenManifests" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="createReleaseCompatibleScreenManifests" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Installs and runs instrumentation tests using all Device Providers." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="deviceAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Runs all device checks using Device Providers and Test Servers." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="deviceCheck" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="downloadNeededDrawables" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="extractProguardFiles" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="generateDebugAndroidTestAssets" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="generateDebugAndroidTestBuildConfig" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="generateDebugAndroidTestResValues" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="generateDebugAndroidTestResources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="generateDebugAndroidTestSources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="generateDebugAssets" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="generateDebugBuildConfig" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="generateDebugResValues" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="generateDebugResources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="generateDebugSources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="generateReleaseAssets" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="generateReleaseBuildConfig" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="generateReleaseResValues" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="generateReleaseResources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="generateReleaseSources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Installs the Debug build." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="installDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Installs the android (on device) tests for the Debug build." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="installDebugAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="javaPreCompileDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="javaPreCompileDebugAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="javaPreCompileDebugUnitTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="javaPreCompileRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="javaPreCompileReleaseUnitTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Runs lint on all variants." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="lint" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Runs lint on the Debug build." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="lintDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Runs lint on the Release build." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="lintRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Runs lint on just the fatal issues in the release build." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="lintVitalRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="mainApkListPersistenceDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="mainApkListPersistenceDebugAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="mainApkListPersistenceRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="mergeDebugAndroidTestAssets" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="mergeDebugAndroidTestJniLibFolders" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="mergeDebugAndroidTestResources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="mergeDebugAndroidTestShaders" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="mergeDebugAssets" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="mergeDebugJniLibFolders" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="mergeDebugResources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="mergeDebugShaders" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="mergeReleaseAssets" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="mergeReleaseJniLibFolders" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="mergeReleaseResources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="mergeReleaseShaders" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Creates a version of android.jar that's suitable for unit tests." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="mockableAndroidJar" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="ndkBuild" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="objlibClean" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="packageDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="packageDebugAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="packageRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="perlBuild" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="perlClean" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="platformAttrExtractor" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="preBuild" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="preDebugAndroidTestBuild" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="preDebugBuild" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="preDebugUnitTestBuild" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="preReleaseBuild" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="preReleaseUnitTestBuild" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="prepareLintJar" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="preparePUBLISHED_DEXDebugAndroidTestForPublishing" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="preparePUBLISHED_DEXDebugForPublishing" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="preparePUBLISHED_DEXReleaseForPublishing" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="preparePUBLISHED_JAVA_RESDebugAndroidTestForPublishing" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="preparePUBLISHED_JAVA_RESDebugForPublishing" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="preparePUBLISHED_JAVA_RESReleaseForPublishing" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="preparePUBLISHED_NATIVE_LIBSDebugAndroidTestForPublishing" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="preparePUBLISHED_NATIVE_LIBSDebugForPublishing" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="preparePUBLISHED_NATIVE_LIBSReleaseForPublishing" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="processDebugAndroidTestJavaRes" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="processDebugAndroidTestManifest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="processDebugAndroidTestResources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="processDebugJavaRes" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="processDebugManifest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="processDebugResources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="processDebugUnitTestJavaRes" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="processReleaseJavaRes" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="processReleaseManifest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="processReleaseResources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="processReleaseUnitTestJavaRes" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="reportBuildArtifactsDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="reportBuildArtifactsRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="resolveConfigAttr" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Displays the signing info for each variant." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="signingReport" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Prints out all the source sets defined in this project." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="sourceSets" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="splitsDiscoveryTaskDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="splitsDiscoveryTaskRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Run unit tests for all variants." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="test" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Run unit tests for the debug build." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="testDebugUnitTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Run unit tests for the release build." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="testReleaseUnitTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="transformClassesWithDexBuilderForDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="transformClassesWithDexBuilderForDebugAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="transformClassesWithDexBuilderForRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="transformDexArchiveWithDexMergerForDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="transformDexArchiveWithDexMergerForDebugAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="transformDexArchiveWithDexMergerForRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="transformDexArchiveWithExternalLibsDexMergerForDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="transformDexArchiveWithExternalLibsDexMergerForDebugAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="transformDexArchiveWithExternalLibsDexMergerForRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="transformNativeLibsWithMergeJniLibsForDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="transformNativeLibsWithMergeJniLibsForDebugAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="transformNativeLibsWithMergeJniLibsForRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="transformNativeLibsWithStripDebugSymbolForDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="transformNativeLibsWithStripDebugSymbolForRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="transformResourcesWithMergeJavaResForDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="transformResourcesWithMergeJavaResForDebugAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="transformResourcesWithMergeJavaResForDebugUnitTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="transformResourcesWithMergeJavaResForRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="transformResourcesWithMergeJavaResForReleaseUnitTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Uninstall all applications." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="uninstallAll" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Uninstalls the Debug build." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="uninstallDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Uninstalls the android (on device) tests for the Debug build." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="uninstallDebugAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Uninstalls the Release build." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="uninstallRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="validateSigningDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="validateSigningDebugAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="writeDebugApplicationId" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/.." /> - <option name="name" value="writeReleaseApplicationId" /> - </ExternalTaskPojo> - </list> - </value> - </entry> - <entry key="$PROJECT_DIR$"> - <value> - <list> - <ExternalTaskPojo> - <option name="description" value="Displays the sub-projects of project ':xscreensaver'." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="projects" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="bundleAppClassesRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="validateSigningDebugAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="transformClassesWithDexBuilderForDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="assembleReleaseUnitTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="bundleReleaseResources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="processReleaseJavaRes" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="generateReleaseAssets" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Runs lint on the Debug build." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="lintDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="preparePUBLISHED_JAVA_RESReleaseForPublishing" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="reportBuildArtifactsRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="assembleDebugUnitTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="createReleaseCompatibleScreenManifests" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Creates a version of android.jar that's suitable for unit tests." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="mockableAndroidJar" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Displays the configuration model of project ':xscreensaver'. [incubating]" /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="model" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="preparePUBLISHED_DEXReleaseForPublishing" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="bundleAppClassesDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Displays the tasks runnable from project ':xscreensaver'." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="tasks" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="compileDebugSources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="bundleDebugAndroidTestResources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Runs all device checks using Device Providers and Test Servers." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="deviceCheck" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Displays all dependencies declared in project ':xscreensaver'." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="dependencies" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="processDebugResources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="transformNativeLibsWithStripDebugSymbolForRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Runs lint on all variants." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="lint" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="packageDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="transformClassesWithDexBuilderForRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="compileReleaseNdk" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="generateDebugResources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="bundleAppClassesReleaseUnitTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="compileDebugJavaWithJavac" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="mainApkListPersistenceDebugAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Assembles and tests this project and all projects it depends on." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="buildNeeded" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="generateDebugAndroidTestBuildConfig" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="processDebugUnitTestJavaRes" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Run unit tests for the release build." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="testReleaseUnitTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Deletes the build cache directory." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="cleanBuildCache" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="compileDebugAndroidTestShaders" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="mergeDebugShaders" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="preparePUBLISHED_JAVA_RESDebugAndroidTestForPublishing" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="compileDebugAndroidTestJavaWithJavac" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Displays the components produced by project ':xscreensaver'. [incubating]" /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="components" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="compileReleaseRenderscript" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Assembles all Debug builds." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="assembleDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="processDebugAndroidTestManifest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="compileDebugUnitTestJavaWithJavac" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="transformResourcesWithMergeJavaResForReleaseUnitTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="preDebugAndroidTestBuild" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="processDebugAndroidTestJavaRes" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="processReleaseUnitTestJavaRes" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="reportBuildArtifactsDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="transformDexArchiveWithExternalLibsDexMergerForRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="javaPreCompileDebugAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="splitsDiscoveryTaskDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="bundleAppClassesDebugUnitTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Uninstalls the Release build." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="uninstallRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="compileReleaseShaders" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="mergeReleaseResources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="generateDebugAndroidTestSources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="checkReleaseManifest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="javaPreCompileDebugUnitTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="compileDebugAndroidTestSources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="createDebugCompatibleScreenManifests" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="preparePUBLISHED_NATIVE_LIBSReleaseForPublishing" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="mergeReleaseJniLibFolders" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="prepareLintJar" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="processReleaseResources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Installs and runs instrumentation tests using all Device Providers." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="deviceAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="mergeDebugAndroidTestAssets" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="preparePUBLISHED_NATIVE_LIBSDebugForPublishing" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="processReleaseManifest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Uninstalls the android (on device) tests for the Debug build." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="uninstallDebugAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Displays the insight into a specific dependency in project ':xscreensaver'." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="dependencyInsight" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="generateReleaseSources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="transformDexArchiveWithDexMergerForRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="preReleaseBuild" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="writeDebugApplicationId" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Assembles all variants of all applications and secondary packages." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="assemble" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Displays a help message." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="help" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="compileReleaseUnitTestSources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Installs the android (on device) tests for the Debug build." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="installDebugAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="mainApkListPersistenceDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="transformClassesWithDexBuilderForDebugAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="mergeDebugAssets" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="javaPreCompileReleaseUnitTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="preparePUBLISHED_DEXDebugAndroidTestForPublishing" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="javaPreCompileRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="splitsDiscoveryTaskRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Runs all device checks on currently connected devices." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="connectedCheck" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Installs and runs the tests for debug on connected devices." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="connectedDebugAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="transformDexArchiveWithDexMergerForDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Uninstall all applications." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="uninstallAll" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="transformNativeLibsWithMergeJniLibsForDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Assembles all the Test applications." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="assembleAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="processDebugAndroidTestResources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="preparePUBLISHED_DEXDebugForPublishing" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="packageRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="validateSigningDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="compileDebugAidl" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="mergeDebugResources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="preDebugUnitTestBuild" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="compileLint" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="generateDebugAndroidTestResValues" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="mainApkListPersistenceRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="transformNativeLibsWithMergeJniLibsForDebugAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="mergeReleaseShaders" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Displays the Android dependencies of the project." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="androidDependencies" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="compileDebugAndroidTestNdk" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="compileDebugUnitTestSources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="transformNativeLibsWithMergeJniLibsForRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="transformDexArchiveWithExternalLibsDexMergerForDebugAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="generateDebugSources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="mergeDebugAndroidTestJniLibFolders" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="extractProguardFiles" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="assembleDebugAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="preparePUBLISHED_JAVA_RESDebugForPublishing" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="objlibClean" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="processDebugJavaRes" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="consumeConfigAttr" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="generateDebugAndroidTestAssets" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="compileReleaseJavaWithJavac" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="transformResourcesWithMergeJavaResForDebugAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="downloadNeededDrawables" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Run unit tests for all variants." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="test" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="transformNativeLibsWithStripDebugSymbolForDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="compileDebugNdk" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="mergeDebugAndroidTestResources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="preReleaseUnitTestBuild" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="generateDebugResValues" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Runs all checks." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="check" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="javaPreCompileDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Run unit tests for the debug build." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="testDebugUnitTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Installs and runs instrumentation tests for all flavors on connected devices." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="connectedAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Installs the Debug build." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="installDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="preBuild" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="transformResourcesWithMergeJavaResForRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="compileReleaseSources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="compileReleaseUnitTestJavaWithJavac" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="compileDebugShaders" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="transformResourcesWithMergeJavaResForDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="compileReleaseAidl" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Runs lint on the Release build." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="lintRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Assembles and tests this project and all projects that depend on it." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="buildDependents" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="generateDebugAssets" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="transformDexArchiveWithDexMergerForDebugAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Displays the dependent components of components in project ':xscreensaver'. [incubating]" /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="dependentComponents" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Displays all buildscript dependencies declared in project ':xscreensaver'." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="buildEnvironment" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="checkDebugManifest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="mergeDebugJniLibFolders" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Prints out all the source sets defined in this project." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="sourceSets" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="transformResourcesWithMergeJavaResForDebugUnitTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="perlBuild" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="bundleDebugResources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="mergeReleaseAssets" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="compileDebugRenderscript" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="generateReleaseBuildConfig" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="preparePUBLISHED_NATIVE_LIBSDebugAndroidTestForPublishing" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="perlClean" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="generateReleaseResources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Runs lint on just the fatal issues in the release build." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="lintVitalRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="ndkBuild" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="platformAttrExtractor" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Uninstalls the Debug build." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="uninstallDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Displays the signing info for each variant." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="signingReport" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="compileDebugAndroidTestAidl" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="mergeDebugAndroidTestShaders" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="bundleAppClassesDebugAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Deletes the build directory." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="clean" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="preDebugBuild" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="generateDebugBuildConfig" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="transformDexArchiveWithExternalLibsDexMergerForDebug" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Assembles and tests this project." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="build" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Assembles all Release builds." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="assembleRelease" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="resolveConfigAttr" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="compileDebugAndroidTestRenderscript" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="generateDebugAndroidTestResources" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="processDebugManifest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="writeReleaseApplicationId" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="packageDebugAndroidTest" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="generateReleaseResValues" /> - </ExternalTaskPojo> - <ExternalTaskPojo> - <option name="description" value="Displays the properties of project ':xscreensaver'." /> - <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" /> - <option name="name" value="properties" /> - </ExternalTaskPojo> - </list> - </value> - </entry> - </map> - </option> - <option name="projectBuildClasspath"> - <map> - <entry key="$PROJECT_DIR$"> - <value> - <ExternalProjectBuildClasspathPojo> - <option name="modulesBuildClasspath"> - <map> - <entry key="$PROJECT_DIR$/.."> - <value> - <ExternalModuleBuildClasspathPojo> - <option name="entries"> - <list> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/gradle/3.1.2/1608fa49add4d13366db7844998c6e59711f7e2a/gradle-3.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/gradle-core/3.1.2/ccab33656c1baa6514d88f4d9356db19d0e9823b/gradle-core-3.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/bundletool/0.1.0-alpha01/f7c303e37818223bd98566fcbea29aa0964c4d06/bundletool-0.1.0-alpha01.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/builder/3.1.2/133b1f665104f0ebf01f71b61e4794385d7b5f1b/builder-3.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.lint/lint-gradle-api/26.1.2/8c54aedfe9da66e64402de04883cee083c127a3b/lint-gradle-api-26.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/gradle-api/3.1.2/427e25639a55911cadcf70657c9b2ded2ad6af2b/gradle-api-3.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.databinding/compilerCommon/3.1.2/be65c11ded4242932046f23ecfa5c7ccb0e98f46/compilerCommon-3.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jre8/1.2.0/505f55b9619bbc5f5e26c77427dd24a6a441eef1/kotlin-stdlib-jre8-1.2.0.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/transform-api/2.0.0-deprecated-use-gradle-api/47f6c56527c42425742fa9b56ffd3fd80763fe03/transform-api-2.0.0-deprecated-use-gradle-api.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm/5.1/5ef31c4fe953b1fd00b8a88fa1d6820e8785bb45/asm-5.1.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-analysis/5.1/6d1bf8989fc7901f868bee3863c44f21aa63d110/asm-analysis-5.1.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-commons/5.1/25d8a575034dd9cfcb375a39b5334f0ba9c8474e/asm-commons-5.1.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-util/5.1/b60e33a6bd0d71831e0c249816d01e6c1dd90a47/asm-util-5.1.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.sf.jopt-simple/jopt-simple/4.9/ee9e9eaa0a35360dcfeac129ff4923215fd65904/jopt-simple-4.9.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.sf.proguard/proguard-gradle/5.3.3/ad23a0505f58d0dfc95bb1472decc397460406c9/proguard-gradle-5.3.3.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.auto.value/auto-value/1.5.2/1b94ab7ec707e2220a0d1a7517488d1843236345/auto-value-1.5.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.guava/guava/22.0/3564ef3803de51fb0530a8377ec6100b33b0d073/guava-22.0.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.protobuf/protobuf-java/3.4.0/b32aba0cbe737a4ca953f71688725972e3ee927c/protobuf-java-3.4.0.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.protobuf/protobuf-java-util/3.4.0/96aba8ab71c16018c6adf66771ce15c6491bc0fe/protobuf-java-util-3.4.0.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.errorprone/error_prone_annotations/2.1.2/6dcc08f90f678ac33e5ef78c3c752b6f59e63e0c/error_prone_annotations-2.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/aapt2-proto/0.1.0/d1eb93a21a8d3590c3bfac574a8b6dffb2dbd21c/aapt2-proto-0.1.0.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/builder-model/3.1.2/4504b655fa8fe72302020ca9a2387f3f23fbfb57/builder-model-3.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/builder-test-api/3.1.2/ffb00b786822df6538377a90df9f2d11c022efc3/builder-test-api-3.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools/sdklib/26.1.2/94697a9dff499b64b6e101bedb89a89825150af/sdklib-26.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools/sdk-common/26.1.2/2cf773af3fb0e1bbd56a80fc6903a9d2a40a248/sdk-common-26.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools/common/26.1.2/c31bbd68c51ed0ef3b8d7cdd5615acf762473887/common-26.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/manifest-merger/26.1.2/79f398427650c76f0c66c89f10e4886a1fe68c26/manifest-merger-26.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.ddms/ddmlib/26.1.2/1d423e621fb5c89fed13e41d0ed026cf5d8d7e7b/ddmlib-26.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.analytics-library/protos/26.1.2/ba53bcde9703b2bf9871128952dce844c5d743fa/protos-26.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.analytics-library/shared/26.1.2/bc21fe64fdaa64e59672e7d546d373f430e7557c/shared-26.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.analytics-library/tracker/26.1.2/2d2260da92e50ac072f89d60a596d03aab3a8757/tracker-26.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/apksig/3.1.2/5af360dd30015a9a47c8ab0af0e6b05f64760edc/apksig-3.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup/javawriter/2.5.0/81241ff7078ef14f42ea2a8995fa09c096256e6b/javawriter-2.5.0.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.bouncycastle/bcpkix-jdk15on/1.56/4648af70268b6fdb24674fb1fd7c1fcc73db1231/bcpkix-jdk15on-1.56.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.bouncycastle/bcprov-jdk15on/1.56/a153c6f9744a3e9dd6feab5e210e1c9861362ec7/bcprov-jdk15on-1.56.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-tree/5.1/87b38c12a0ea645791ead9d3e74ae5268d1d6c34/asm-tree-5.1.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/it.unimi.dsi/fastutil/7.2.0/5ad3a2bb04143f70aa0765fc29fc29571a7d6b34/fastutil-7.2.0.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.googlecode.json-simple/json-simple/1.1/5e303a03d04e6788dddfa3655272580ae0fc13bb/json-simple-1.1.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-reflect/1.2.0/4bbda3b5425aa38a9f6960468a29c5ef3e8a28c9/kotlin-reflect-1.2.0.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.databinding/baseLibrary/3.1.2/1b6a1add6a577708b62737dc31c479549f77750d/baseLibrary-3.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.antlr/antlr4/4.5.3/f35db7e4b2446e4174ba6a73db7bd6b3e6bb5da1/antlr4-4.5.3.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/commons-io/commons-io/2.4/b1b6ea3b7e4aa4f492509a4952029cd8e48019ad/commons-io-2.4.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.googlecode.juniversalchardet/juniversalchardet/1.0.3/cd49678784c46aa8789c060538e0154013bb421b/juniversalchardet-1.0.3.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup/javapoet/1.8.0/e858dc62ef484048540d27d36f3ec2177a3fa9b1/javapoet-1.8.0.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.code.gson/gson/2.7/751f548c85fa49f330cecbb1875893f971b33c4e/gson-2.7.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools/annotations/26.1.2/4f4e0ee71b9ccaa4a70cc86e40fb84ada2ed99a3/annotations-26.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.sf.proguard/proguard-base/5.3.3/988b6b0636ce343d4962b3b37f6319dcc6e99a61/proguard-base-5.3.3.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.layoutlib/layoutlib-api/26.1.2/3697abf628d30042c1082ea846454dfd1e8da3e/layoutlib-api-26.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools/dvlib/26.1.2/eb39925fee6e726468fc10344ec988c086301ed7/dvlib-26.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools/repository/26.1.2/c8209ccb8ee0e5e3f293fd71d2a827f440ab811c/repository-26.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-compress/1.12/84caa68576e345eb5e7ae61a0e5a9229eb100d7b/commons-compress-1.12.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpclient/4.2.6/e4ca30a6a3a075053a61c6fc850d2432dc012ba7/httpclient-4.2.6.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpmime/4.1/9ba2dcdf94ce35c8a8e9bff242db0618ca932e92/httpmime-4.1.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.sf.kxml/kxml2/2.3.0/ccbc77a5fd907ef863c29f3596c6f54ffa4e9442/kxml2-2.3.0.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.sun.activation/javax.activation/1.2.0/bf744c1e2776ed1de3c55c8dac1057ec331ef744/javax.activation-1.2.0.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.glassfish.jaxb/jaxb-runtime/2.2.11/65510afc78679e347b0d774617a97fedac94f8/jaxb-runtime-2.2.11.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.jimfs/jimfs/1.1/8fbd0579dc68aba6186935cc1bee21d2f3e7ec1c/jimfs-1.1.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpcore/4.2.5/472f0f5f8dba5d1962cb9d7739feed739a31c30d/httpcore-4.2.5.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/commons-logging/commons-logging/1.1.1/5043bfebc3db072ed80fbd362e7caf00e885d8ae/commons-logging-1.1.1.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/commons-codec/commons-codec/1.6/b7f0fc8f61ecadeb3695f0b9464755eee44374d4/commons-codec-1.6.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.2.0/25eb440d6eeb9fc60299121020fe726eb2100d03/kotlin-stdlib-1.2.0.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.glassfish.jaxb/jaxb-core/2.2.11/f5745049f5fb9cb9d9b5f513c207727f475983e9/jaxb-core-2.2.11.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jvnet.staxex/stax-ex/1.7.7/18bed5a0da27a6b43efe01282f2dc911b1cb3a72/stax-ex-1.7.7.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.sun.xml.fastinfoset/FastInfoset/1.2.13/98f56b9354e27bd2941cc5d461344e240ae51ae/FastInfoset-1.2.13.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jre7/1.2.0/ec8b969e26fbcf2265a4d1a1539c4d1d4c5af380/kotlin-stdlib-jre7-1.2.0.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.code.findbugs/jsr305/1.3.9/40719ea6961c0cb6afaeb6a921eaa1f6afd4cfdf/jsr305-1.3.9.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.j2objc/j2objc-annotations/1.1/976d8d30bebc251db406f2bdb3eb01962b5685b3/j2objc-annotations-1.1.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.codehaus.mojo/animal-sniffer-annotations/1.14/775b7e22fb10026eed3f86e8dc556dfafe35f2d5/animal-sniffer-annotations-1.14.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/javax.xml.bind/jaxb-api/2.2.12-b140109.1041/7ed0e0d01198614194d56dfb03d9d95aa311824c/jaxb-api-2.2.12-b140109.1041.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.glassfish.jaxb/txw2/2.2.11/2df047d8c187a62f2177bf6013f1f9786cdfc8a2/txw2-2.2.11.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.sun.istack/istack-commons-runtime/2.21/c969d8f15c467f0ef7d7b04889afbe7b5d48e22f/istack-commons-runtime-2.21.jar" /> - </list> - </option> - <option name="path" value="$PROJECT_DIR$/.." /> - </ExternalModuleBuildClasspathPojo> - </value> - </entry> - <entry key="$PROJECT_DIR$"> - <value> - <ExternalModuleBuildClasspathPojo> - <option name="entries"> - <list> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/gradle/3.1.2/1608fa49add4d13366db7844998c6e59711f7e2a/gradle-3.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/gradle-core/3.1.2/ccab33656c1baa6514d88f4d9356db19d0e9823b/gradle-core-3.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/bundletool/0.1.0-alpha01/f7c303e37818223bd98566fcbea29aa0964c4d06/bundletool-0.1.0-alpha01.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/builder/3.1.2/133b1f665104f0ebf01f71b61e4794385d7b5f1b/builder-3.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.lint/lint-gradle-api/26.1.2/8c54aedfe9da66e64402de04883cee083c127a3b/lint-gradle-api-26.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/gradle-api/3.1.2/427e25639a55911cadcf70657c9b2ded2ad6af2b/gradle-api-3.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.databinding/compilerCommon/3.1.2/be65c11ded4242932046f23ecfa5c7ccb0e98f46/compilerCommon-3.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jre8/1.2.0/505f55b9619bbc5f5e26c77427dd24a6a441eef1/kotlin-stdlib-jre8-1.2.0.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/transform-api/2.0.0-deprecated-use-gradle-api/47f6c56527c42425742fa9b56ffd3fd80763fe03/transform-api-2.0.0-deprecated-use-gradle-api.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm/5.1/5ef31c4fe953b1fd00b8a88fa1d6820e8785bb45/asm-5.1.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-analysis/5.1/6d1bf8989fc7901f868bee3863c44f21aa63d110/asm-analysis-5.1.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-commons/5.1/25d8a575034dd9cfcb375a39b5334f0ba9c8474e/asm-commons-5.1.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-util/5.1/b60e33a6bd0d71831e0c249816d01e6c1dd90a47/asm-util-5.1.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.sf.jopt-simple/jopt-simple/4.9/ee9e9eaa0a35360dcfeac129ff4923215fd65904/jopt-simple-4.9.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.sf.proguard/proguard-gradle/5.3.3/ad23a0505f58d0dfc95bb1472decc397460406c9/proguard-gradle-5.3.3.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.auto.value/auto-value/1.5.2/1b94ab7ec707e2220a0d1a7517488d1843236345/auto-value-1.5.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.guava/guava/22.0/3564ef3803de51fb0530a8377ec6100b33b0d073/guava-22.0.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.protobuf/protobuf-java/3.4.0/b32aba0cbe737a4ca953f71688725972e3ee927c/protobuf-java-3.4.0.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.protobuf/protobuf-java-util/3.4.0/96aba8ab71c16018c6adf66771ce15c6491bc0fe/protobuf-java-util-3.4.0.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.errorprone/error_prone_annotations/2.1.2/6dcc08f90f678ac33e5ef78c3c752b6f59e63e0c/error_prone_annotations-2.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/aapt2-proto/0.1.0/d1eb93a21a8d3590c3bfac574a8b6dffb2dbd21c/aapt2-proto-0.1.0.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/builder-model/3.1.2/4504b655fa8fe72302020ca9a2387f3f23fbfb57/builder-model-3.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/builder-test-api/3.1.2/ffb00b786822df6538377a90df9f2d11c022efc3/builder-test-api-3.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools/sdklib/26.1.2/94697a9dff499b64b6e101bedb89a89825150af/sdklib-26.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools/sdk-common/26.1.2/2cf773af3fb0e1bbd56a80fc6903a9d2a40a248/sdk-common-26.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools/common/26.1.2/c31bbd68c51ed0ef3b8d7cdd5615acf762473887/common-26.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/manifest-merger/26.1.2/79f398427650c76f0c66c89f10e4886a1fe68c26/manifest-merger-26.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.ddms/ddmlib/26.1.2/1d423e621fb5c89fed13e41d0ed026cf5d8d7e7b/ddmlib-26.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.analytics-library/protos/26.1.2/ba53bcde9703b2bf9871128952dce844c5d743fa/protos-26.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.analytics-library/shared/26.1.2/bc21fe64fdaa64e59672e7d546d373f430e7557c/shared-26.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.analytics-library/tracker/26.1.2/2d2260da92e50ac072f89d60a596d03aab3a8757/tracker-26.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/apksig/3.1.2/5af360dd30015a9a47c8ab0af0e6b05f64760edc/apksig-3.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup/javawriter/2.5.0/81241ff7078ef14f42ea2a8995fa09c096256e6b/javawriter-2.5.0.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.bouncycastle/bcpkix-jdk15on/1.56/4648af70268b6fdb24674fb1fd7c1fcc73db1231/bcpkix-jdk15on-1.56.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.bouncycastle/bcprov-jdk15on/1.56/a153c6f9744a3e9dd6feab5e210e1c9861362ec7/bcprov-jdk15on-1.56.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-tree/5.1/87b38c12a0ea645791ead9d3e74ae5268d1d6c34/asm-tree-5.1.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/it.unimi.dsi/fastutil/7.2.0/5ad3a2bb04143f70aa0765fc29fc29571a7d6b34/fastutil-7.2.0.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.googlecode.json-simple/json-simple/1.1/5e303a03d04e6788dddfa3655272580ae0fc13bb/json-simple-1.1.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-reflect/1.2.0/4bbda3b5425aa38a9f6960468a29c5ef3e8a28c9/kotlin-reflect-1.2.0.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.databinding/baseLibrary/3.1.2/1b6a1add6a577708b62737dc31c479549f77750d/baseLibrary-3.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.antlr/antlr4/4.5.3/f35db7e4b2446e4174ba6a73db7bd6b3e6bb5da1/antlr4-4.5.3.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/commons-io/commons-io/2.4/b1b6ea3b7e4aa4f492509a4952029cd8e48019ad/commons-io-2.4.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.googlecode.juniversalchardet/juniversalchardet/1.0.3/cd49678784c46aa8789c060538e0154013bb421b/juniversalchardet-1.0.3.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.squareup/javapoet/1.8.0/e858dc62ef484048540d27d36f3ec2177a3fa9b1/javapoet-1.8.0.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.code.gson/gson/2.7/751f548c85fa49f330cecbb1875893f971b33c4e/gson-2.7.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools/annotations/26.1.2/4f4e0ee71b9ccaa4a70cc86e40fb84ada2ed99a3/annotations-26.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.sf.proguard/proguard-base/5.3.3/988b6b0636ce343d4962b3b37f6319dcc6e99a61/proguard-base-5.3.3.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.layoutlib/layoutlib-api/26.1.2/3697abf628d30042c1082ea846454dfd1e8da3e/layoutlib-api-26.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools/dvlib/26.1.2/eb39925fee6e726468fc10344ec988c086301ed7/dvlib-26.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools/repository/26.1.2/c8209ccb8ee0e5e3f293fd71d2a827f440ab811c/repository-26.1.2.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-compress/1.12/84caa68576e345eb5e7ae61a0e5a9229eb100d7b/commons-compress-1.12.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpclient/4.2.6/e4ca30a6a3a075053a61c6fc850d2432dc012ba7/httpclient-4.2.6.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpmime/4.1/9ba2dcdf94ce35c8a8e9bff242db0618ca932e92/httpmime-4.1.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.sf.kxml/kxml2/2.3.0/ccbc77a5fd907ef863c29f3596c6f54ffa4e9442/kxml2-2.3.0.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.sun.activation/javax.activation/1.2.0/bf744c1e2776ed1de3c55c8dac1057ec331ef744/javax.activation-1.2.0.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.glassfish.jaxb/jaxb-runtime/2.2.11/65510afc78679e347b0d774617a97fedac94f8/jaxb-runtime-2.2.11.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.jimfs/jimfs/1.1/8fbd0579dc68aba6186935cc1bee21d2f3e7ec1c/jimfs-1.1.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpcore/4.2.5/472f0f5f8dba5d1962cb9d7739feed739a31c30d/httpcore-4.2.5.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/commons-logging/commons-logging/1.1.1/5043bfebc3db072ed80fbd362e7caf00e885d8ae/commons-logging-1.1.1.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/commons-codec/commons-codec/1.6/b7f0fc8f61ecadeb3695f0b9464755eee44374d4/commons-codec-1.6.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.2.0/25eb440d6eeb9fc60299121020fe726eb2100d03/kotlin-stdlib-1.2.0.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.glassfish.jaxb/jaxb-core/2.2.11/f5745049f5fb9cb9d9b5f513c207727f475983e9/jaxb-core-2.2.11.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jvnet.staxex/stax-ex/1.7.7/18bed5a0da27a6b43efe01282f2dc911b1cb3a72/stax-ex-1.7.7.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.sun.xml.fastinfoset/FastInfoset/1.2.13/98f56b9354e27bd2941cc5d461344e240ae51ae/FastInfoset-1.2.13.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jre7/1.2.0/ec8b969e26fbcf2265a4d1a1539c4d1d4c5af380/kotlin-stdlib-jre7-1.2.0.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.code.findbugs/jsr305/1.3.9/40719ea6961c0cb6afaeb6a921eaa1f6afd4cfdf/jsr305-1.3.9.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.j2objc/j2objc-annotations/1.1/976d8d30bebc251db406f2bdb3eb01962b5685b3/j2objc-annotations-1.1.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.codehaus.mojo/animal-sniffer-annotations/1.14/775b7e22fb10026eed3f86e8dc556dfafe35f2d5/animal-sniffer-annotations-1.14.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/javax.xml.bind/jaxb-api/2.2.12-b140109.1041/7ed0e0d01198614194d56dfb03d9d95aa311824c/jaxb-api-2.2.12-b140109.1041.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.glassfish.jaxb/txw2/2.2.11/2df047d8c187a62f2177bf6013f1f9786cdfc8a2/txw2-2.2.11.jar" /> - <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.sun.istack/istack-commons-runtime/2.21/c969d8f15c467f0ef7d7b04889afbe7b5d48e22f/istack-commons-runtime-2.21.jar" /> - </list> - </option> - <option name="path" value="$PROJECT_DIR$" /> - </ExternalModuleBuildClasspathPojo> - </value> - </entry> - </map> - </option> - <option name="name" value="android" /> - <option name="projectBuildClasspath"> - <list> - <option value="$PROJECT_DIR$/buildSrc/src/main/java" /> - <option value="$PROJECT_DIR$/buildSrc/src/main/groovy" /> - </list> - </option> - </ExternalProjectBuildClasspathPojo> - </value> - </entry> - </map> - </option> - </component> - <component name="ProjectFrameBounds"> - <option name="x" value="105" /> - <option name="y" value="23" /> - <option name="width" value="1339" /> - <option name="height" value="859" /> - </component> - <component name="ProjectView"> - <navigator currentView="Scope" currentSubView="Project Files" proportions="" version="1"> - <foldersAlwaysOnTop value="true" /> - </navigator> - <panes> - <pane id="ProjectPane" /> - <pane id="Scope"> - <subPane subId="Project Files"> - <expand> - <path> - <item name="Root" type="cbb8eebc:String" user="Root" /> - <item name="android" type="cbb8eebc:String" user="android" /> - </path> - <path> - <item name="Root" type="cbb8eebc:String" user="Root" /> - <item name="android" type="cbb8eebc:String" user="android" /> - <item name="$PROJECT_DIR$/.." type="cbb8eebc:String" user="$PROJECT_DIR$/.." /> - </path> - <path> - <item name="Root" type="cbb8eebc:String" user="Root" /> - <item name="android" type="cbb8eebc:String" user="android" /> - <item name="$PROJECT_DIR$/.." type="cbb8eebc:String" user="$PROJECT_DIR$/.." /> - <item name="gradle/wrapper" type="cbb8eebc:String" user="gradle/wrapper" /> - </path> - </expand> - <select /> - </subPane> - </pane> - <pane id="AndroidView"> - <subPane> - <expand> - <path> - <item name="xscreensaver" type="1abcf292:AndroidViewProjectNode" /> - <item name="Gradle Scripts" type="ae0cef3a:AndroidBuildScriptsGroupNode" /> - </path> - </expand> - <select /> - </subPane> - </pane> - <pane id="PackagesPane" /> - </panes> - </component> - <component name="PropertiesComponent"> - <property name="GoToClass.includeLibraries" value="false" /> - <property name="GoToClass.toSaveIncludeLibraries" value="false" /> - <property name="GoToFile.includeJavaFiles" value="false" /> - <property name="MemberChooser.sorted" value="false" /> - <property name="MemberChooser.showClasses" value="true" /> - <property name="MemberChooser.copyJavadoc" value="false" /> - <property name="settings.editor.selected.configurable" value="android.sdk-updates" /> - <property name="settings.editor.splitter.proportion" value="0.2" /> - <property name="SearchEverywhereHistoryKey" value="sdk manager	ACTION	WelcomeScreen.RunAndroidSdkManager" /> - <property name="last_opened_file_path" value="$PROJECT_DIR$" /> - <property name="show.do.not.ask.upgrade.gradle.plugin" value="2.1.0" /> - <property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1545885427557" /> - <property name="device.picker.selection" value="Nexus_5_8.1" /> - <property name="sync.plugin.last.upgrade.timestamp" value="1538463643381" /> - </component> - <component name="RunDashboard"> - <option name="ruleStates"> - <list> - <RuleState> - <option name="name" value="ConfigurationTypeDashboardGroupingRule" /> - </RuleState> - <RuleState> - <option name="name" value="StatusDashboardGroupingRule" /> - </RuleState> - </list> - </option> - </component> - <component name="RunManager"> - <configuration default="true" type="AndroidJUnit" factoryName="Android JUnit"> - <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="file://$MODULE_DIR$" /> - <option name="PASS_PARENT_ENVS" value="true" /> - <option name="TEST_SEARCH_SCOPE"> - <value defaultName="singleModule" /> - </option> - <patterns /> - <method> - <option name="Make" enabled="false" /> - <option name="Android.Gradle.BeforeRunTask" enabled="true" /> - </method> - </configuration> - <configuration default="true" type="AndroidRunConfigurationType" factoryName="Android App"> - <option name="DEPLOY" value="true" /> - <option name="DEPLOY_APK_FROM_BUNDLE" value="false" /> - <option name="ARTIFACT_NAME" value="" /> - <option name="PM_INSTALL_OPTIONS" value="" /> - <option name="DYNAMIC_FEATURES_DISABLED_LIST" value="" /> - <option name="ACTIVITY_EXTRA_FLAGS" value="" /> - <option name="MODE" value="default_activity" /> - <option name="CLEAR_LOGCAT" value="false" /> - <option name="SHOW_LOGCAT_AUTOMATICALLY" value="false" /> - <option name="SKIP_NOOP_APK_INSTALLATIONS" value="true" /> - <option name="FORCE_STOP_RUNNING_APP" value="true" /> - <option name="TARGET_SELECTION_MODE" value="SHOW_DIALOG" /> - <option name="USE_LAST_SELECTED_DEVICE" value="false" /> - <option name="PREFERRED_AVD" value="" /> - <option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" /> - <option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" /> - <option name="DEBUGGER_TYPE" value="Auto" /> - <Auto> - <option name="USE_JAVA_AWARE_DEBUGGER" value="false" /> - <option name="SHOW_STATIC_VARS" value="true" /> - <option name="WORKING_DIR" value="" /> - <option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" /> - <option name="SHOW_OPTIMIZED_WARNING" value="true" /> - </Auto> - <Hybrid> - <option name="USE_JAVA_AWARE_DEBUGGER" value="false" /> - <option name="SHOW_STATIC_VARS" value="true" /> - <option name="WORKING_DIR" value="" /> - <option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" /> - <option name="SHOW_OPTIMIZED_WARNING" value="true" /> - </Hybrid> - <Java /> - <Native> - <option name="USE_JAVA_AWARE_DEBUGGER" value="false" /> - <option name="SHOW_STATIC_VARS" value="true" /> - <option name="WORKING_DIR" value="" /> - <option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" /> - <option name="SHOW_OPTIMIZED_WARNING" value="true" /> - </Native> - <Profilers> - <option name="ADVANCED_PROFILING_ENABLED" value="false" /> - <option name="STARTUP_CPU_PROFILING_ENABLED" value="false" /> - <option name="STARTUP_CPU_PROFILING_CONFIGURATION_NAME" value="Sampled (Java)" /> - </Profilers> - <option name="DEEP_LINK" value="" /> - <option name="ACTIVITY_CLASS" value="" /> - <method> - <option name="Android.Gradle.BeforeRunTask" enabled="true" /> - </method> - </configuration> - <configuration name="xscreensaver" type="AndroidRunConfigurationType" factoryName="Android App"> - <module name="xscreensaver" /> - <option name="DEPLOY" value="true" /> - <option name="DEPLOY_APK_FROM_BUNDLE" value="false" /> - <option name="ARTIFACT_NAME" value="" /> - <option name="PM_INSTALL_OPTIONS" value="" /> - <option name="DYNAMIC_FEATURES_DISABLED_LIST" value="" /> - <option name="ACTIVITY_EXTRA_FLAGS" value="" /> - <option name="MODE" value="default_activity" /> - <option name="CLEAR_LOGCAT" value="false" /> - <option name="SHOW_LOGCAT_AUTOMATICALLY" value="false" /> - <option name="SKIP_NOOP_APK_INSTALLATIONS" value="true" /> - <option name="FORCE_STOP_RUNNING_APP" value="true" /> - <option name="TARGET_SELECTION_MODE" value="SHOW_DIALOG" /> - <option name="USE_LAST_SELECTED_DEVICE" value="false" /> - <option name="PREFERRED_AVD" value="" /> - <option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" /> - <option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" /> - <option name="DEBUGGER_TYPE" value="Auto" /> - <Auto> - <option name="USE_JAVA_AWARE_DEBUGGER" value="false" /> - <option name="SHOW_STATIC_VARS" value="true" /> - <option name="WORKING_DIR" value="" /> - <option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" /> - <option name="SHOW_OPTIMIZED_WARNING" value="true" /> - </Auto> - <Hybrid> - <option name="USE_JAVA_AWARE_DEBUGGER" value="false" /> - <option name="SHOW_STATIC_VARS" value="true" /> - <option name="WORKING_DIR" value="" /> - <option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" /> - <option name="SHOW_OPTIMIZED_WARNING" value="true" /> - </Hybrid> - <Java /> - <Native> - <option name="USE_JAVA_AWARE_DEBUGGER" value="false" /> - <option name="SHOW_STATIC_VARS" value="true" /> - <option name="WORKING_DIR" value="" /> - <option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" /> - <option name="SHOW_OPTIMIZED_WARNING" value="true" /> - </Native> - <Profilers> - <option name="ADVANCED_PROFILING_ENABLED" value="false" /> - <option name="STARTUP_CPU_PROFILING_ENABLED" value="false" /> - <option name="STARTUP_CPU_PROFILING_CONFIGURATION_NAME" value="Sampled (Java)" /> - </Profilers> - <option name="DEEP_LINK" value="" /> - <option name="ACTIVITY_CLASS" value="" /> - </configuration> - <configuration default="true" type="Application" factoryName="Application"> - <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" /> - </configuration> - <configuration default="true" type="TestNG" factoryName="TestNG"> - <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" /> - <option name="ALTERNATIVE_JRE_PATH" /> - <option name="SUITE_NAME" /> - <option name="PACKAGE_NAME" /> - <option name="MAIN_CLASS_NAME" /> - <option name="METHOD_NAME" /> - <option name="GROUP_NAME" /> - <option name="TEST_OBJECT" value="CLASS" /> - <option name="VM_PARAMETERS" value="-ea" /> - <option name="PARAMETERS" /> - <option name="WORKING_DIRECTORY" value="$MODULE_DIR$" /> - <option name="OUTPUT_DIRECTORY" /> - <option name="PASS_PARENT_ENVS" value="true" /> - <option name="TEST_SEARCH_SCOPE"> - <value defaultName="singleModule" /> - </option> - <option name="USE_DEFAULT_REPORTERS" value="false" /> - <option name="PROPERTIES_FILE" /> - <properties /> - <listeners /> - </configuration> - <configuration name="<template>" type="Applet" default="true" selected="false"> - <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="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" /> - <option name="VM_PARAMETERS" /> - </configuration> - <configuration name="<template>" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" default="true" selected="false"> - <option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" /> - </configuration> - </component> - <component name="SvnConfiguration"> - <configuration /> - </component> - <component name="TaskManager"> - <task active="true" id="Default" summary="Default task"> - <changelist id="41008724-035d-4e24-92b6-6dfb9231c83c" name="Default" comment="" /> - <created>1475536195508</created> - <option name="number" value="Default" /> - <option name="presentableId" value="Default" /> - <updated>1475536195508</updated> - </task> - <servers /> - </component> - <component name="ToolWindowManager"> - <frame x="105" y="23" width="1339" height="859" extended-state="0" /> - <layout> - <window_info anchor="bottom" id="Android Profiler" order="7" show_stripe_button="false" /> - <window_info anchor="bottom" id="TODO" order="6" /> - <window_info anchor="right" id="Palette	" order="3" /> - <window_info id="Image Layers" order="3" /> - <window_info id="Build Variants" order="3" side_tool="true" /> - <window_info anchor="right" id="Capture Analysis" order="3" /> - <window_info active="true" anchor="bottom" id="Event Log" order="7" sideWeight="0.5188897" side_tool="true" visible="true" weight="0.32882273" /> - <window_info anchor="bottom" id="Run" order="2" /> - <window_info anchor="bottom" id="Version Control" order="7" show_stripe_button="false" /> - <window_info anchor="bottom" id="Terminal" order="7" /> - <window_info anchor="bottom" id="Logcat" order="7" /> - <window_info id="Captures" order="2" weight="0.25" /> - <window_info id="Capture Tool" order="3" /> - <window_info id="Designer" order="3" /> - <window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.2544333" /> - <window_info anchor="right" id="Assistant" visible="true" weight="0.3299923" /> - <window_info anchor="bottom" id="Build" order="8" sideWeight="0.47185814" weight="0.32928476" /> - <window_info anchor="bottom" id="Find" order="1" sideWeight="0.48111024" visible="true" weight="0.32882273" /> - <window_info anchor="right" id="Gradle" order="3" /> - <window_info id="Structure" order="1" side_tool="true" weight="0.25" /> - <window_info anchor="right" id="Device File Explorer" order="3" side_tool="true" /> - <window_info anchor="right" id="Theme Preview" order="3" /> - <window_info anchor="bottom" id="Debug" order="3" weight="0.4" /> - <window_info id="Favorites" order="3" side_tool="true" /> - <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" /> - <window_info anchor="bottom" id="Messages" order="7" sideWeight="0.49730146" visible="true" weight="0.32839838" /> - <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" /> - <window_info anchor="right" id="Android Model" order="3" side_tool="true" /> - <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" /> - <window_info id="Nl-Palette" order="3" /> - <window_info anchor="right" id="Properties" order="3" /> - <window_info anchor="right" id="Ant Build" order="1" weight="0.25" /> - <window_info anchor="bottom" id="Message" order="0" /> - <window_info anchor="bottom" id="Gradle Console" order="7" side_tool="true" /> - <window_info anchor="bottom" id="Android Monitor" order="7" /> - <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" /> - </layout> - </component> - <component name="Vcs.Log.UiProperties"> - <option name="RECENTLY_FILTERED_USER_GROUPS"> - <collection /> - </option> - <option name="RECENTLY_FILTERED_BRANCH_GROUPS"> - <collection /> - </option> - </component> - <component name="VcsContentAnnotationSettings"> - <option name="myLimit" value="2678400000" /> - </component> - <component name="VcsManagerConfiguration"> - <ignored-roots> - <path value="$PROJECT_DIR$/../.." /> - </ignored-roots> - </component> - <component name="editorHistoryManager"> - <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties"> - <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="90"> - <caret line="6" selection-start-line="6" selection-end-line="6" /> - </state> - </provider> - </entry> - <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties"> - <provider selected="true" editor-type-id="text-editor"> - <state /> - </provider> - </entry> - <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties"> - <provider selected="true" editor-type-id="text-editor"> - <state /> - </provider> - </entry> - <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties"> - <provider selected="true" editor-type-id="text-editor"> - <state /> - </provider> - </entry> - <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties"> - <provider selected="true" editor-type-id="text-editor"> - <state /> - </provider> - </entry> - <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties"> - <provider selected="true" editor-type-id="text-editor"> - <state /> - </provider> - </entry> - <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties"> - <provider selected="true" editor-type-id="text-editor"> - <state /> - </provider> - </entry> - <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties"> - <provider selected="true" editor-type-id="text-editor"> - <state /> - </provider> - </entry> - <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties"> - <provider selected="true" editor-type-id="text-editor"> - <state /> - </provider> - </entry> - <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties"> - <provider selected="true" editor-type-id="text-editor"> - <state /> - </provider> - </entry> - <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties"> - <provider selected="true" editor-type-id="text-editor"> - <state /> - </provider> - </entry> - <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties"> - <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="90"> - <caret line="6" selection-start-line="6" selection-end-line="6" /> - </state> - </provider> - </entry> - </component> -</project>
\ No newline at end of file diff --git a/android/xscreensaver/assets/fonts/OCRAStd.otf b/android/xscreensaver/assets/fonts/OCRAStd.otf deleted file mode 120000 index 6259345..0000000 --- a/android/xscreensaver/assets/fonts/OCRAStd.otf +++ /dev/null @@ -1 +0,0 @@ -../../../../OSX/OCRAStd.otf
\ No newline at end of file diff --git a/android/xscreensaver/assets/fonts/PxPlus_IBM_VGA8.ttf b/android/xscreensaver/assets/fonts/PxPlus_IBM_VGA8.ttf deleted file mode 120000 index 184d654..0000000 --- a/android/xscreensaver/assets/fonts/PxPlus_IBM_VGA8.ttf +++ /dev/null @@ -1 +0,0 @@ -../../../../OSX/PxPlus_IBM_VGA8.ttf
\ No newline at end of file diff --git a/android/xscreensaver/assets/fonts/YearlReg.ttf b/android/xscreensaver/assets/fonts/YearlReg.ttf deleted file mode 120000 index 8977be4..0000000 --- a/android/xscreensaver/assets/fonts/YearlReg.ttf +++ /dev/null @@ -1 +0,0 @@ -../../../../OSX/YearlReg.ttf
\ No newline at end of file diff --git a/android/xscreensaver/build.gradle b/android/xscreensaver/build.gradle deleted file mode 100644 index 038e613..0000000 --- a/android/xscreensaver/build.gradle +++ /dev/null @@ -1,113 +0,0 @@ -apply plugin: 'android' - -dependencies { - implementation fileTree(include: '*.jar', dir: 'libs') - implementation "com.android.support:support-v4:27.1.1" -} - -android { - compileSdkVersion 27 - buildToolsVersion "27.0.3" - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_7 - targetCompatibility JavaVersion.VERSION_1_7 - } - sourceSets { - main { - manifest.srcFile 'AndroidManifest.xml' - java.srcDirs = ['src'] - resources.srcDirs = ['src'] - aidl.srcDirs = ['src'] - renderscript.srcDirs = ['src'] - res.srcDirs = ['res'] - assets.srcDirs = ['assets'] - // jniLibs.srcDirs = ['jni'] - jniLibs.srcDirs = ['libs'] - jni.srcDirs = [] // disable automatic ndk-build call - } - - // Move the tests to tests/java, tests/res, etc... - androidTest.setRoot('tests') - - // Move the build types to build-types/<type> - // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ... - // This moves them out of them default location under src/<type>/... which would - // conflict with src/ being used by the main source set. - // Adding new build types or product flavors should be accompanied - // by a similar customization. - debug.setRoot('build-types/debug') - release.setRoot('build-types/release') - } - project.ext.versionCodes = ['armeabi': 1, 'armeabi-v7a': 2, 'arm64-v8a': 3, 'mips': 5, 'mips64': 6, 'x86': 8, 'x86_64': 9] - //versionCode digit for each supported ABI, with 64bit>32bit and x86>armeabi-* - - - // put ndk-build in build's path, or replace below with its full path - task ndkBuild(type: Exec) { - Properties properties = new Properties() - properties.load(project.rootProject.file('local.properties').newDataInputStream()) - def ndkDir = properties.getProperty('ndk.dir') - commandLine "$ndkDir/ndk-build", '-C', file('jni').absolutePath, - '-j' + Runtime.getRuntime().availableProcessors().toString() - } - - // generate files early in the process - task perlBuild(type: Exec) { - commandLine 'sh', '-c', - 'cd ..; ../hacks/check-configs.pl --build-android $ANDROID_HACKS' - } - - task perlClean(type: Delete) { - delete('../gen') - delete('res/values') - delete('res/xml') - delete('src/org/jwz/xscreensaver/gen') - delete('AndroidManifest.xml') - } - - task objlibClean(type: Delete) { - delete('./build') - delete('./libs') - delete('./obj') - } - - task downloadNeededDrawables(type: Exec) { - commandLine 'sh', '-c', - 'cd ../ ; \ - for f in $ANDROID_HACKS; do \ - f=`echo "$f" | sed s/rd-bomb/rdbomb/` ; \ - make -s xscreensaver/res/drawable/$f.png ; \ - done' - } - preBuild.dependsOn downloadNeededDrawables - - preBuild.dependsOn perlBuild - - clean.dependsOn perlClean - clean.dependsOn objlibClean - - tasks.withType(JavaCompile) { - options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" - } - - tasks.withType(JavaCompile) { - compileTask -> compileTask.dependsOn ndkBuild - } - - - defaultConfig { - // Previous applicationId was "org.jwz.xscreensaver" but I had - // to change it because I managed to lose the signing key... - // Note that the Java class tree is still "org.jwz.xscreensaver". - applicationId "org.jwz.android.xscreensaver" - minSdkVersion 15 - targetSdkVersion 27 - } - productFlavors { - } - buildTypes { - debug { - jniDebuggable true - } - } -} diff --git a/android/xscreensaver/build.xml b/android/xscreensaver/build.xml deleted file mode 100644 index abda7fe..0000000 --- a/android/xscreensaver/build.xml +++ /dev/null @@ -1,92 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project name="Xscreensaver" default="help"> - - <!-- The local.properties file is created and updated by the 'android' tool. - It contains the path to the SDK. It should *NOT* be checked into - Version Control Systems. --> - <property file="local.properties" /> - - <!-- The ant.properties file can be created by you. It is only edited by the - 'android' tool to add properties to it. - This is the place to change some Ant specific build properties. - Here are some properties you may want to change/update: - - source.dir - The name of the source directory. Default is 'src'. - out.dir - The name of the output directory. Default is 'bin'. - - For other overridable properties, look at the beginning of the rules - files in the SDK, at tools/ant/build.xml - - Properties related to the SDK location or the project target should - be updated using the 'android' tool with the 'update' action. - - This file is an integral part of the build system for your - application and should be checked into Version Control Systems. - - --> - <property file="ant.properties" /> - - <!-- if sdk.dir was not set from one of the property file, then - get it from the ANDROID_HOME env var. - This must be done before we load project.properties since - the proguard config can use sdk.dir --> - <property environment="env" /> - <condition property="sdk.dir" value="${env.ANDROID_HOME}"> - <isset property="env.ANDROID_HOME" /> - </condition> - - <!-- The project.properties file is created and updated by the 'android' - tool, as well as ADT. - - This contains project specific properties such as project target, and library - dependencies. Lower level build properties are stored in ant.properties - (or in .classpath for Eclipse projects). - - This file is an integral part of the build system for your - application and should be checked into Version Control Systems. --> - <loadproperties srcFile="project.properties" /> - - <!-- quick check on sdk.dir --> - <fail - message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable." - unless="sdk.dir" - /> - - <!-- - Import per project custom build rules if present at the root of the project. - This is the place to put custom intermediary targets such as: - -pre-build - -pre-compile - -post-compile (This is typically used for code obfuscation. - Compiled code location: ${out.classes.absolute.dir} - If this is not done in place, override ${out.dex.input.absolute.dir}) - -post-package - -post-build - -pre-clean - --> - <import file="custom_rules.xml" optional="true" /> - - <!-- Import the actual build file. - - To customize existing targets, there are two options: - - Customize only one target: - - copy/paste the target into this file, *before* the - <import> task. - - customize it to your needs. - - Customize the whole content of build.xml - - copy/paste the content of the rules files (minus the top node) - into this file, replacing the <import> task. - - customize to your needs. - - *********************** - ****** IMPORTANT ****** - *********************** - In all cases you must update the value of version-tag below to read 'custom' instead of an integer, - in order to avoid having your file be overridden by tools such as "android update project" - --> - <!-- version-tag: 1 --> - <import file="${sdk.dir}/tools/ant/build.xml" /> - -</project> diff --git a/android/xscreensaver/gradle/wrapper/gradle-wrapper.jar b/android/xscreensaver/gradle/wrapper/gradle-wrapper.jar Binary files differdeleted file mode 100644 index 13372ae..0000000 --- a/android/xscreensaver/gradle/wrapper/gradle-wrapper.jar +++ /dev/null diff --git a/android/xscreensaver/gradle/wrapper/gradle-wrapper.properties b/android/xscreensaver/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 3524910..0000000 --- a/android/xscreensaver/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -#Sat Feb 10 21:20:31 PST 2018 -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip diff --git a/android/xscreensaver/gradlew b/android/xscreensaver/gradlew deleted file mode 100644 index 9d82f78..0000000 --- a/android/xscreensaver/gradlew +++ /dev/null @@ -1,160 +0,0 @@ -#!/usr/bin/env bash - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; -esac - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") -} -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" - -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/android/xscreensaver/gradlew.bat b/android/xscreensaver/gradlew.bat deleted file mode 100644 index aec9973..0000000 --- a/android/xscreensaver/gradlew.bat +++ /dev/null @@ -1,90 +0,0 @@ -@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windowz variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-if "%@eval[2+2]" == "4" goto 4NT_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-goto execute
-
-:4NT_args
-@rem Get arguments from the 4NT Shell from JP Software
-set CMD_LINE_ARGS=%$
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/android/xscreensaver/jni/Android.mk b/android/xscreensaver/jni/Android.mk deleted file mode 100644 index 3396bd9..0000000 --- a/android/xscreensaver/jni/Android.mk +++ /dev/null @@ -1,200 +0,0 @@ -LOCAL_PATH := $(call my-dir)/../../.. - -# -Wnested-externs would also be here, but for Android unistd.h. -SHARED_CFLAGS = \ - -std=c99 \ - -Wall \ - -Wstrict-prototypes \ - -Wmissing-prototypes \ - -DGL_GLEXT_PROTOTYPES \ - -DSTANDALONE=1 \ - -DHAVE_ANDROID=1 \ - -DHAVE_GL=1 \ - -DHAVE_JWXYZ=1 \ - -DJWXYZ_GL=1 \ - -DJWXYZ_IMAGE=1 \ - -DHAVE_JWZGLES=1 \ - -DHAVE_XUTF8DRAWSTRING=1 \ - -DHAVE_GLBINDTEXTURE=1 \ - -DHAVE_UNISTD_H=1 \ - -DHAVE_INTTYPES_H=1 \ - -DHAVE_UNAME=1 \ - -DHAVE_UTIL_H=1 \ - -DGETTIMEOFDAY_TWO_ARGS=1 \ - -DHAVE_ICMP=1 \ - -DHAVE_PTHREAD=1 \ - -SHARED_C_INCLUDES = \ - $(LOCAL_PATH) \ - $(LOCAL_PATH)/android \ - $(LOCAL_PATH)/utils \ - $(LOCAL_PATH)/jwxyz \ - $(LOCAL_PATH)/hacks \ - $(LOCAL_PATH)/hacks/glx \ - -include $(CLEAR_VARS) - -LOCAL_MODULE := xscreensaver-gl - -LOCAL_SRC_FILES := \ - android/screenhack-android.c \ - hacks/glx/dropshadow.c \ - hacks/glx/chessmodels.c \ - hacks/glx/fps-gl.c \ - hacks/glx/gltrackball.c \ - hacks/glx/glut_stroke.c \ - hacks/glx/glut_swidth.c \ - hacks/glx/grab-ximage.c \ - hacks/glx/marching.c \ - hacks/glx/normals.c \ - hacks/glx/rotator.c \ - hacks/glx/sphere.c \ - hacks/glx/texfont.c \ - hacks/glx/trackball.c \ - hacks/glx/tube.c \ - -# Some savers occupy more than one source file: -LOCAL_SRC_FILES += \ - hacks/glx/b_draw.c \ - hacks/glx/b_lockglue.c \ - hacks/glx/b_sphere.c \ - hacks/glx/buildlwo.c \ - hacks/glx/companion_quad.c \ - hacks/glx/companion_disc.c \ - hacks/glx/companion_heart.c \ - hacks/glx/cow_face.c \ - hacks/glx/cow_hide.c \ - hacks/glx/cow_hoofs.c \ - hacks/glx/cow_horns.c \ - hacks/glx/cow_tail.c \ - hacks/glx/cow_udder.c \ - hacks/glx/dolphin.c \ - hacks/glx/dymaxionmap-coords.c \ - hacks/glx/gllist.c \ - hacks/glx/glschool_alg.c \ - hacks/glx/glschool_gl.c \ - hacks/glx/handsy_model.c \ - hacks/glx/involute.c \ - hacks/glx/lament_model.c \ - hacks/glx/pipeobjs.c \ - hacks/glx/quickhull.c \ - hacks/glx/robot.c \ - hacks/glx/robot-wireframe.c \ - hacks/glx/polyhedra-gl.c \ - hacks/glx/s1_1.c \ - hacks/glx/s1_2.c \ - hacks/glx/s1_3.c \ - hacks/glx/s1_4.c \ - hacks/glx/s1_5.c \ - hacks/glx/s1_6.c \ - hacks/glx/s1_b.c \ - hacks/glx/seccam.c \ - hacks/glx/shark.c \ - hacks/glx/ships.c \ - hacks/glx/sonar-sim.c \ - hacks/glx/sonar-icmp.c \ - hacks/glx/splitflap_obj.c \ - hacks/glx/sproingiewrap.c \ - hacks/glx/stonerview-move.c \ - hacks/glx/stonerview-osc.c \ - hacks/glx/stonerview-view.c \ - hacks/glx/swim.c \ - hacks/glx/tangram_shapes.c \ - hacks/glx/teapot.c \ - hacks/glx/toast.c \ - hacks/glx/toast2.c \ - hacks/glx/toaster.c \ - hacks/glx/toaster_base.c \ - hacks/glx/toaster_handle.c \ - hacks/glx/toaster_handle2.c \ - hacks/glx/toaster_jet.c \ - hacks/glx/toaster_knob.c \ - hacks/glx/toaster_slots.c \ - hacks/glx/toaster_wing.c \ - hacks/glx/tronbit_idle1.c \ - hacks/glx/tronbit_idle2.c \ - hacks/glx/tronbit_no.c \ - hacks/glx/tronbit_yes.c \ - hacks/glx/tunnel_draw.c \ - hacks/glx/whale.c \ - -# The source files of the currently active GL hacks: -LOCAL_SRC_FILES += $(shell \ - for f in $$ANDROID_HACKS ; do \ - if [ "$$f" = "companioncube" ]; then f="companion"; fi ; \ - if [ -f "../../../hacks/glx/$$f.c" ]; then \ - echo "hacks/glx/$$f.c" ; \ - fi ; \ - done ) - -LOCAL_C_INCLUDES := $(SHARED_C_INCLUDES) -LOCAL_CFLAGS += $(SHARED_CFLAGS) -DUSE_GL - -include $(BUILD_STATIC_LIBRARY) - -############################################################################## - -include $(CLEAR_VARS) - -LOCAL_MODULE := xscreensaver - -LOCAL_STATIC_LIBRARIES := xscreensaver-gl - -# The base framework files: -LOCAL_SRC_FILES := \ - jwxyz/jwxyz-android.c \ - jwxyz/jwxyz-common.c \ - jwxyz/jwxyz-gl.c \ - jwxyz/jwxyz-image.c \ - jwxyz/jwxyz-timers.c \ - jwxyz/jwzgles.c \ - -# Utilities used by the hacks: -LOCAL_SRC_FILES += \ - hacks/analogtv.c \ - hacks/delaunay.c \ - hacks/fps.c \ - hacks/xlockmore.c \ - hacks/ximage-loader.c \ - utils/async_netdb.c \ - utils/aligned_malloc.c \ - utils/colorbars.c \ - utils/colors.c \ - utils/erase.c \ - utils/font-retry.c \ - utils/grabclient.c \ - utils/hsv.c \ - utils/logo.c \ - utils/minixpm.c \ - utils/pow2.c \ - utils/resources.c \ - utils/spline.c \ - utils/textclient-mobile.c \ - utils/thread_util.c \ - utils/usleep.c \ - utils/utf8wc.c \ - utils/xft.c \ - utils/xshm.c \ - utils/yarandom.c \ - -# The source files of the currently active Xlib hacks: -LOCAL_SRC_FILES += $(shell \ - for f in $$ANDROID_HACKS ; do \ - if [ -f "../../../hacks/$$f.c" ]; then \ - echo "hacks/$$f.c" ; \ - fi ; \ - done ) - -# Some savers occupy more than one source file: -LOCAL_SRC_FILES += \ - hacks/apple2-main.c \ - hacks/asm6502.c \ - hacks/pacman_ai.c \ - hacks/pacman_level.c \ - -LOCAL_LDLIBS := -lGLESv1_CM -ldl -llog -lEGL -latomic -landroid -ljnigraphics - -LOCAL_C_INCLUDES := $(SHARED_C_INCLUDES) -LOCAL_CFLAGS += $(SHARED_CFLAGS) - -include $(BUILD_SHARED_LIBRARY) diff --git a/android/xscreensaver/jni/Application.mk b/android/xscreensaver/jni/Application.mk deleted file mode 100644 index 311946d..0000000 --- a/android/xscreensaver/jni/Application.mk +++ /dev/null @@ -1,7 +0,0 @@ -# Get this value from android/Makefile -APP_ABI := $(shell echo $$APP_ABI) -APP_STL := c++_static -APP_PLATFORM := android-16 -# ^^ APP_PLATFORM is minimum API version supported -# https://android.googlesource.com/platform/ndk/+/master/docs/user/common_problems.md#target-api-set-higher-than-device-api - diff --git a/android/xscreensaver/local.properties b/android/xscreensaver/local.properties deleted file mode 100644 index d530e0d..0000000 --- a/android/xscreensaver/local.properties +++ /dev/null @@ -1,11 +0,0 @@ -## This file is automatically generated by Android Studio. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must *NOT* be checked into Version Control Systems, -# as it contains information specific to your local configuration. -# -# Location of the SDK. This is only used by Gradle. -# For customization when using a Version Control System, please read the -# header note. -#Mon Oct 03 16:09:56 PDT 2016 -sdk.dir=/Users/jwz/Library/Android/sdk diff --git a/android/xscreensaver/project.properties b/android/xscreensaver/project.properties deleted file mode 100644 index 1e1e7a3..0000000 --- a/android/xscreensaver/project.properties +++ /dev/null @@ -1,15 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system edit -# "ant.properties", and override values to adapt the script to your -# project structure. -# -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt - -android.library.reference.1= -# Project target. -target=android-19 diff --git a/android/xscreensaver/res/drawable-ldpi/icon.png b/android/xscreensaver/res/drawable-ldpi/icon.png Binary files differdeleted file mode 100644 index c4d1934..0000000 --- a/android/xscreensaver/res/drawable-ldpi/icon.png +++ /dev/null diff --git a/android/xscreensaver/res/drawable-mdpi/icon.png b/android/xscreensaver/res/drawable-mdpi/icon.png Binary files differdeleted file mode 100644 index 1e14e4b..0000000 --- a/android/xscreensaver/res/drawable-mdpi/icon.png +++ /dev/null diff --git a/android/xscreensaver/res/drawable/thumbnail.png b/android/xscreensaver/res/drawable/thumbnail.png Binary files differdeleted file mode 100644 index a86c16c..0000000 --- a/android/xscreensaver/res/drawable/thumbnail.png +++ /dev/null diff --git a/android/xscreensaver/res/layout-land/activity_xscreensaver.xml b/android/xscreensaver/res/layout-land/activity_xscreensaver.xml deleted file mode 100644 index d9094b9..0000000 --- a/android/xscreensaver/res/layout-land/activity_xscreensaver.xml +++ /dev/null @@ -1,59 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- TODO: Remove action bar; it's redundant. --> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - android:orientation="horizontal" - android:gravity="center_horizontal" - tools:context="org.jwz.xscreensaver.Activity"> - - <LinearLayout - android:layout_width="wrap_content" - android:layout_height="fill_parent" - android:layout_centerHorizontal="true" - android:layout_centerVertical="true" - android:gravity="center_vertical" - android:orientation="vertical"> - - <ImageView - android:layout_width="256sp" - android:layout_height="256sp" - android:layout_centerHorizontal="true" - android:src="@drawable/thumbnail" /> - <!-- TODO: Version number! --> - </LinearLayout> - - <LinearLayout - android:layout_width="wrap_content" - android:layout_height="fill_parent" - android:layout_centerHorizontal="true" - android:layout_centerVertical="true" - android:gravity="center_vertical" - android:orientation="vertical"> - - - <TextView - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:gravity="center" - android:text="XScreenSaver" - android:textSize="32sp" /> - <Button - android:id="@+id/apply_wallpaper" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="Open live wallpaper list" /> - <Button - android:id="@+id/apply_daydream" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="Open Daydream list" /> - <TextView - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:autoLink="web" - android:gravity="center" - android:text="https://www.jwz.org/xscreensaver/" /> - </LinearLayout> -</LinearLayout> diff --git a/android/xscreensaver/res/layout/activity_tv_xscreensaver.xml b/android/xscreensaver/res/layout/activity_tv_xscreensaver.xml deleted file mode 100644 index 4c658bd..0000000 --- a/android/xscreensaver/res/layout/activity_tv_xscreensaver.xml +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- TODO: Flip layout orientation on rotation. And maybe make scrollable? --> -<!-- TODO: Remove action bar; it's redundant. --> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - tools:context="org.jwz.xscreensaver.TVActivity"> - <LinearLayout - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_centerHorizontal="true" - android:layout_centerVertical="true" - android:orientation="vertical"> - <ImageView - android:layout_width="256sp" - android:layout_height="256sp" - android:layout_centerHorizontal="true" - android:src="@drawable/thumbnail" /> - <!-- TODO: Version number! --> - <TextView - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:gravity="center" - android:text="XScreenSaver" - android:textSize="32sp" /> - <!-- TODO: Either figure out how to open daydream settings directly on - Android TV, or change this to say "Open Settings". --> - <Button - android:id="@+id/apply_daydream" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="Open Daydream list" /> - <TextView - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:autoLink="web" - android:gravity="center" - android:text="https://www.jwz.org/xscreensaver/" /> - </LinearLayout> -</RelativeLayout> diff --git a/android/xscreensaver/res/layout/activity_xscreensaver.xml b/android/xscreensaver/res/layout/activity_xscreensaver.xml deleted file mode 100644 index 88372e6..0000000 --- a/android/xscreensaver/res/layout/activity_xscreensaver.xml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- TODO: Flip layout orientation on rotation. And maybe make scrollable? --> -<!-- TODO: Remove action bar; it's redundant. --> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - tools:context="org.jwz.xscreensaver.Activity"> - <LinearLayout - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_centerHorizontal="true" - android:layout_centerVertical="true" - android:orientation="vertical"> - <ImageView - android:layout_width="256sp" - android:layout_height="256sp" - android:layout_centerHorizontal="true" - android:src="@drawable/thumbnail" /> - <!-- TODO: Version number! --> - <TextView - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:gravity="center" - android:text="XScreenSaver" - android:textSize="32sp" /> - <Button - android:id="@+id/apply_wallpaper" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="Open live wallpaper list" /> - <Button - android:id="@+id/apply_daydream" - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:text="Open Daydream list" /> - <TextView - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:autoLink="web" - android:gravity="center" - android:text="https://www.jwz.org/xscreensaver/" /> - </LinearLayout> -</RelativeLayout> diff --git a/android/xscreensaver/res/layout/main.xml b/android/xscreensaver/res/layout/main.xml deleted file mode 100644 index 4361cfe..0000000 --- a/android/xscreensaver/res/layout/main.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" - android:layout_width="fill_parent" - android:layout_height="fill_parent" - > -</LinearLayout> diff --git a/android/xscreensaver/res/layout/preference_blurb.xml b/android/xscreensaver/res/layout/preference_blurb.xml deleted file mode 100644 index 66e6d82..0000000 --- a/android/xscreensaver/res/layout/preference_blurb.xml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> - -<!-- Layout for the description of each screen saver, that appears - at the bottom of the preferences screen. Based on - sdk/platforms/android-21/data/res/layout/preference.xml - --> - -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:minHeight="?android:attr/listPreferredItemHeight" - android:gravity="center_vertical" - android:paddingEnd="?android:attr/scrollbarSize" - android:background="?android:attr/selectableItemBackground" > - - <ImageView - android:id="@+android:id/icon" - android:layout_gravity="top" - android:layout_width="40dip" - android:layout_height="40dip" - android:layout_marginTop="0dip" - /> - - <RelativeLayout - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="0dip" - android:layout_marginEnd="0dip" - android:layout_marginTop="6dip" - android:layout_marginBottom="6dip" - android:layout_weight="1"> - - <TextView android:id="@+android:id/summary" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_below="@android:id/title" - android:layout_alignStart="@android:id/title" - android:textAppearance="?android:attr/textAppearanceSmall" - android:textColor="?android:attr/textColorPrimary" - android:layout_marginTop="8dip" - android:maxLines="1000" /> - - </RelativeLayout> - -</LinearLayout> diff --git a/android/xscreensaver/res/layout/slider_preference.xml b/android/xscreensaver/res/layout/slider_preference.xml deleted file mode 100644 index 69647ff..0000000 --- a/android/xscreensaver/res/layout/slider_preference.xml +++ /dev/null @@ -1,60 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> - -<!-- Layout for org/jwz/xscreensaver/SliderPreference.java --> - -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:minHeight="?android:attr/listPreferredItemHeight" - android:gravity="center_vertical" - android:paddingEnd="?android:attr/scrollbarSize" - android:background="?android:attr/selectableItemBackground" > - - <TextView - android:id="@+android:id/title" - android:textAppearance="?android:attr/textAppearanceMedium" - android:ellipsize="end" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_weight="40" - android:width="0dp" - android:layout_marginLeft="16dip" /> - - <LinearLayout - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_weight="60" - android:orientation="vertical" - android:layout_marginLeft="0dip" > - - <SeekBar - android:id="@+id/slider_preference_seekbar" - android:layout_width="match_parent" - android:layout_height="wrap_content" /> - - <RelativeLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" > - - <TextView - android:id="@+id/slider_preference_low" - android:textAppearance="?android:attr/textAppearanceSmall" - android:ellipsize="end" - android:singleLine="true" - android:layout_alignParentLeft="true" - android:layout_width="wrap_content" - android:layout_height="wrap_content" /> - - <TextView - android:id="@+id/slider_preference_high" - android:layout_alignParentRight="true" - android:textAppearance="?android:attr/textAppearanceSmall" - android:ellipsize="end" - android:singleLine="true" - android:layout_width="wrap_content" - android:layout_height="wrap_content" /> - - </RelativeLayout> - </LinearLayout> -</LinearLayout> diff --git a/android/xscreensaver/src/org/jwz/xscreensaver/Activity.java b/android/xscreensaver/src/org/jwz/xscreensaver/Activity.java deleted file mode 100644 index ac0ab4c..0000000 --- a/android/xscreensaver/src/org/jwz/xscreensaver/Activity.java +++ /dev/null @@ -1,169 +0,0 @@ -/* -*- Mode: java; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * xscreensaver, Copyright (c) 2016 Jamie Zawinski <jwz@jwz.org> - * and Dennis Sheil <dennis@panaceasupplies.com> - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation. No representations are made about the suitability of this - * software for any purpose. It is provided "as is" without express or - * implied warranty. - * - * This is the XScreenSaver "application" that just brings up the - * Live Wallpaper preferences. - */ - -package org.jwz.xscreensaver; - -import android.app.WallpaperManager; -import android.content.ComponentName; -import android.content.Intent; -import android.os.Build; -import android.os.Bundle; -import android.view.View; -import android.provider.Settings; -import android.Manifest; -import android.support.v4.app.ActivityCompat; -import android.support.v4.content.ContextCompat; -import android.os.Build; -import android.content.pm.PackageManager; - -public class Activity extends android.app.Activity - implements View.OnClickListener { - - private boolean wallpaperButtonClicked, daydreamButtonClicked; - private final static int MY_REQ_READ_EXTERNAL_STORAGE = 271828; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - // openList(); - setContentView(R.layout.activity_xscreensaver); - wallpaperButtonClicked = false; - daydreamButtonClicked = false; - - findViewById(R.id.apply_wallpaper).setOnClickListener(this); - findViewById(R.id.apply_daydream).setOnClickListener(this); - } - - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.apply_wallpaper: - wallpaperButtonClicked(); - break; - case R.id.apply_daydream: - daydreamButtonClicked(); - break; - } - } - - // synchronized when dealing with wallpaper state - perhaps can - // narrow down more - private synchronized void withProceed() { - if (daydreamButtonClicked) { - String action; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { - action = Settings.ACTION_DREAM_SETTINGS; - } else { - action = Settings.ACTION_DISPLAY_SETTINGS; - } - startActivity(new Intent(action)); - } else if (wallpaperButtonClicked) { - startActivity(new Intent(WallpaperManager.ACTION_LIVE_WALLPAPER_CHOOSER)); - } - } - - private void wallpaperButtonClicked() { - wallpaperButtonClicked = true; - checkPermission(); - } - - private void daydreamButtonClicked() { - daydreamButtonClicked = true; - checkPermission(); - } - - void checkPermission() { - // RES introduced in API 16 - String permission = Manifest.permission.READ_EXTERNAL_STORAGE; - if (havePermission(permission)) { - withProceed(); - } else { - noPermission(permission); - } - } - - private void noPermission(String permission) { - int myRequestCode; - myRequestCode = MY_REQ_READ_EXTERNAL_STORAGE; - - if (permissionsDeniedRationale(permission)) { - showDeniedRationale(); - } else { - requestPermission(permission, myRequestCode); - } - } - - private boolean permissionsDeniedRationale(String permission) { - boolean rationale = ActivityCompat.shouldShowRequestPermissionRationale(this, - permission); - return rationale; - } - - private void requestPermission(String permission, int myRequestCode) { - ActivityCompat.requestPermissions(this, - new String[]{permission}, - myRequestCode); - - // myRequestCode is an app-defined int constant. - // The callback method gets the result of the request. - } - - // TODO: This method should be asynchronous, and not block the thread - private void showDeniedRationale() { - withProceed(); - } - - boolean havePermission(String permission) { - - if (Build.VERSION.SDK_INT < 16) { - return true; - } - - if (permissionGranted(permission)) { - return true; - } - - return false; - } - - private boolean permissionGranted(String permission) { - boolean check = ContextCompat.checkSelfPermission(this, permission) == - PackageManager.PERMISSION_GRANTED; - return check; - } - - public void proceedIfPermissionGranted(int[] grantResults) { - - // If request is cancelled, the result arrays are empty. - if (grantResults.length > 0 - && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - withProceed(); - } else if (grantResults.length > 0) { - withProceed(); - } - } - - @Override - public void onRequestPermissionsResult(int requestCode, - String permissions[], int[] grantResults) { - switch (requestCode) { - case MY_REQ_READ_EXTERNAL_STORAGE: - proceedIfPermissionGranted(grantResults); - } - } - -} diff --git a/android/xscreensaver/src/org/jwz/xscreensaver/App.java b/android/xscreensaver/src/org/jwz/xscreensaver/App.java deleted file mode 100644 index 3d39788..0000000 --- a/android/xscreensaver/src/org/jwz/xscreensaver/App.java +++ /dev/null @@ -1,22 +0,0 @@ -/* -*- Mode: java; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * xscreensaver, Copyright (c) 2016 Jamie Zawinski <jwz@jwz.org> - * and Dennis Sheil <dennis@panaceasupplies.com> - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation. No representations are made about the suitability of this - * software for any purpose. It is provided "as is" without express or - * implied warranty. - */ - -package org.jwz.xscreensaver; - -import android.app.Application; - -public class App extends Application { - public App() { - super(); - } -} diff --git a/android/xscreensaver/src/org/jwz/xscreensaver/Daydream.java b/android/xscreensaver/src/org/jwz/xscreensaver/Daydream.java deleted file mode 100644 index 372af95..0000000 --- a/android/xscreensaver/src/org/jwz/xscreensaver/Daydream.java +++ /dev/null @@ -1,269 +0,0 @@ -/* -*- Mode: java; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * xscreensaver, Copyright (c) 2016-2017 Jamie Zawinski <jwz@jwz.org> - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation. No representations are made about the suitability of this - * software for any purpose. It is provided "as is" without express or - * implied warranty. - * - * The superclass of every saver's Daydream. - * - * Each Daydream needs a distinct subclass in order to show up in the list. - * We know which saver we are running by the subclass name; we know which - * API to use by how the subclass calls super(). - */ - -package org.jwz.xscreensaver; - -import android.view.Display; -import android.view.Surface; -import android.view.SurfaceHolder; -import android.view.SurfaceView; -import android.view.View; -import android.view.Window; -import android.view.WindowManager; -import android.view.KeyEvent; -import android.service.dreams.DreamService; -import android.view.GestureDetector; -import android.view.KeyEvent; -import android.view.MotionEvent; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.os.Message; -import android.os.Handler; -import android.os.Looper; -import android.util.Log; - -public class Daydream extends DreamService { - - private class SaverView extends SurfaceView - implements SurfaceHolder.Callback { - - private boolean initTried = false; - private jwxyz jwxyz_obj; - - private GestureDetector detector; - - private Runnable on_quit = new Runnable() { - @Override - public void run() { - finish(); // Exit the Daydream - } - }; - - SaverView () { - super (Daydream.this); - getHolder().addCallback(this); - } - - @Override - public void surfaceChanged (SurfaceHolder holder, int format, - int width, int height) { - - if (width == 0 || height == 0) { - detector = null; - jwxyz_obj.close(); - jwxyz_obj = null; - } - - Log.d ("xscreensaver", - String.format("surfaceChanged: %dx%d", width, height)); - - /* - double r = 0; - - Display d = view.getDisplay(); - - if (d != null) { - switch (d.getRotation()) { - case Surface.ROTATION_90: r = 90; break; - case Surface.ROTATION_180: r = 180; break; - case Surface.ROTATION_270: r = 270; break; - } - } - */ - - if (jwxyz_obj == null) { - jwxyz_obj = new jwxyz (jwxyz.saverNameOf (Daydream.this), - Daydream.this, screenshot, width, height, - holder.getSurface(), on_quit); - detector = new GestureDetector (Daydream.this, jwxyz_obj); - } else { - jwxyz_obj.resize (width, height); - } - - jwxyz_obj.start(); - } - - @Override - public void surfaceCreated (SurfaceHolder holder) { - if (!initTried) { - initTried = true; - } else { - if (jwxyz_obj != null) { - jwxyz_obj.close(); - jwxyz_obj = null; - } - } - } - - @Override - public void surfaceDestroyed (SurfaceHolder holder) { - if (jwxyz_obj != null) { - jwxyz_obj.close(); - jwxyz_obj = null; - } - } - - @Override - public boolean onTouchEvent (MotionEvent event) { - detector.onTouchEvent (event); - if (event.getAction() == MotionEvent.ACTION_UP) - jwxyz_obj.dragEnded (event); - return true; - } - - @Override - public boolean onKeyDown (int keyCode, KeyEvent event) { - // In the emulator, this doesn't receive keyboard arrow keys, PgUp, etc. - // Some other keys like "Home" are interpreted before we get here, and - // function keys do weird shit. - - // TODO: Does this still work? And is the above still true? - - if (view.jwxyz_obj != null) - view.jwxyz_obj.sendKeyEvent (event); - return true; - } - } - - private SaverView view; - Bitmap screenshot; - - private void LOG (String fmt, Object... args) { - Log.d ("xscreensaver", - this.getClass().getSimpleName() + ": " + - String.format (fmt, args)); - } - - protected Daydream () { - super(); - } - - // Called when jwxyz_abort() is called, or other exceptions are thrown. - // -/* - @Override - public void uncaughtException (Thread thread, Throwable ex) { - - renderer = null; - String err = ex.toString(); - LOG ("Caught exception: %s", err); - - this.finish(); // Exit the Daydream - - final AlertDialog.Builder b = new AlertDialog.Builder(this); - b.setMessage (err); - b.setCancelable (false); - b.setPositiveButton ("Bummer", - new DialogInterface.OnClickListener() { - public void onClick(DialogInterface d, int id) { - } - }); - - // #### This isn't working: - // "Attempted to add window with non-application token" - // "Unable to add window -- token null is not for an application" - // I think I need to get an "Activity" to run it on somehow? - - new Handler (Looper.getMainLooper()).post (new Runnable() { - public void run() { - AlertDialog alert = b.create(); - alert.setTitle (this.getClass().getSimpleName() + " crashed"); - alert.setIcon(android.R.drawable.ic_dialog_alert); - alert.show(); - } - }); - - old_handler.uncaughtException (thread, ex); - } -*/ - - - @Override - public void onAttachedToWindow() { - super.onAttachedToWindow(); - - setInteractive (true); - setFullscreen (true); - saveScreenshot(); - - view = new SaverView (); - setContentView (view); - } - - public void onDreamingStarted() { - super.onDreamingStarted(); - // view.jwxyz_obj.start(); - } - - public void onDreamingStopped() { - super.onDreamingStopped(); - view.jwxyz_obj.pause(); - } - - public void onDetachedFromWindow() { - super.onDetachedFromWindow(); - try { - if (view.jwxyz_obj != null) - view.jwxyz_obj.pause(); - } catch (Exception exc) { - // Fun fact: Android swallows exceptions coming from here, then crashes - // elsewhere. - LOG ("onDetachedFromWindow: %s", exc.toString()); - throw exc; - } - } - - - // At startup, before we have blanked the screen, save a screenshot - // for later use by the hacks. - // - private void saveScreenshot() { - View view = getWindow().getDecorView().getRootView(); - if (view == null) { - LOG ("unable to get root view for screenshot"); - } else { - - // This doesn't work: - /* - boolean was = view.isDrawingCacheEnabled(); - if (!was) view.setDrawingCacheEnabled (true); - view.buildDrawingCache(); - screenshot = view.getDrawingCache(); - if (!was) view.setDrawingCacheEnabled (false); - if (screenshot == null) { - LOG ("unable to get screenshot bitmap from %s", view.toString()); - } else { - screenshot = Bitmap.createBitmap (screenshot); - } - */ - - // This doesn't work either: width and height are both -1... - - int w = view.getLayoutParams().width; - int h = view.getLayoutParams().height; - if (w <= 0 || h <= 0) { - LOG ("unable to get root view for screenshot"); - } else { - screenshot = Bitmap.createBitmap (w, h, Bitmap.Config.ARGB_8888); - Canvas c = new Canvas (screenshot); - view.layout (0, 0, w, h); - view.draw (c); - } - } - } -} diff --git a/android/xscreensaver/src/org/jwz/xscreensaver/Settings.java b/android/xscreensaver/src/org/jwz/xscreensaver/Settings.java deleted file mode 100644 index 17bac0f..0000000 --- a/android/xscreensaver/src/org/jwz/xscreensaver/Settings.java +++ /dev/null @@ -1,179 +0,0 @@ -/* -*- Mode: java; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * xscreensaver, Copyright (c) 2016 Jamie Zawinski <jwz@jwz.org> - * and Dennis Sheil <dennis@panaceasupplies.com> - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation. No representations are made about the suitability of this - * software for any purpose. It is provided "as is" without express or - * implied warranty. - * - * The superclass of every saver's preferences panel. - * - * The only reason the subclasses of this class exist is so that we know - * which "_settings.xml" to read -- we extract the base name from self's - * class. - * - * project/xscreensaver/res/xml/SAVER_dream.xml refers to it as - * android:settingsActivity="SAVER_Settings". If there was some way - * to pass an argument from the XML into here, or to otherwise detect - * which Dream was instantiating this Settings, we wouldn't need those - * hundreds of Settings subclasses. - */ - -package org.jwz.xscreensaver; - -import android.content.SharedPreferences; -import android.os.Bundle; - -import android.content.SharedPreferences; -import android.preference.PreferenceActivity; -import android.preference.Preference; -import android.preference.ListPreference; -import android.preference.EditTextPreference; -import android.preference.CheckBoxPreference; -import org.jwz.xscreensaver.SliderPreference; - -import org.jwz.xscreensaver.R; -import java.util.Map; -import java.lang.reflect.Field; - -public abstract class Settings extends PreferenceActivity - implements SharedPreferences.OnSharedPreferenceChangeListener { - - @Override - protected void onCreate (Bundle icicle) { - super.onCreate (icicle); - - // Extract the saver name from e.g. "BouncingCowSettings" - String name = this.getClass().getSimpleName(); - String tail = "Settings"; - if (name.endsWith(tail)) - name = name.substring (0, name.length() - tail.length()); - name = name.toLowerCase(); - - // #### All of these have been deprecated: - // getPreferenceManager() - // addPreferencesFromResource(int) - // findPreference(CharSequence) - - getPreferenceManager().setSharedPreferencesName (name); - - // read R.xml.SAVER_settings dynamically - int res = -1; - String pref_class = name + "_settings"; - try { res = R.xml.class.getDeclaredField(pref_class).getInt (null); } - catch (Exception e) { } - if (res != -1) - addPreferencesFromResource (res); - - final int res_final = res; - - SharedPreferences prefs = getPreferenceManager().getSharedPreferences(); - prefs.registerOnSharedPreferenceChangeListener (this); - updateAllPrefsSummaries (prefs); - - // Find the "Reset to defaults" button and install a click handler on it. - // - Preference reset = findPreference (name + "_reset"); - reset.setOnPreferenceClickListener( - new Preference.OnPreferenceClickListener() { - @Override - public boolean onPreferenceClick(Preference preference) { - - SharedPreferences prefs = - getPreferenceManager().getSharedPreferences(); - - // Wipe everything from the preferences hash, then reload defaults. - prefs.edit().clear().commit(); - getPreferenceScreen().removeAll(); - addPreferencesFromResource (res_final); - - // I guess we need to re-get this after the removeAll? - prefs = getPreferenceManager().getSharedPreferences(); - - // But now we need to iterate over every Preference widget and - // push the new value down into it. If you think this all looks - // ridiculously non-object-oriented and completely insane, that's - // because it is. - - Map <String, ?> keys = prefs.getAll(); - for (Map.Entry <String, ?> entry : keys.entrySet()) { - String key = entry.getKey(); - String val = String.valueOf (entry.getValue()); - - Preference pref = findPreference (key); - if (pref instanceof ListPreference) { - ((ListPreference) pref).setValue (prefs.getString (key, "")); - } else if (pref instanceof SliderPreference) { - ((SliderPreference) pref).setValue (prefs.getFloat (key, 0)); - } else if (pref instanceof EditTextPreference) { - ((EditTextPreference) pref).setText (prefs.getString (key, "")); - } else if (pref instanceof CheckBoxPreference) { - ((CheckBoxPreference) pref).setChecked ( - prefs.getBoolean (key,false)); - } - - updatePrefsSummary (prefs, pref); - } - return true; - } - }); - } - - @Override - protected void onResume() { - super.onResume(); - SharedPreferences prefs = getPreferenceManager().getSharedPreferences(); - prefs.registerOnSharedPreferenceChangeListener (this); - updateAllPrefsSummaries(prefs); - } - - @Override - protected void onPause() { - getPreferenceManager().getSharedPreferences(). - unregisterOnSharedPreferenceChangeListener(this); - super.onPause(); - } - - @Override - protected void onDestroy() { - getPreferenceManager().getSharedPreferences(). - unregisterOnSharedPreferenceChangeListener(this); - super.onDestroy(); - } - - public void onSharedPreferenceChanged (SharedPreferences sharedPreferences, - String key) { - updatePrefsSummary(sharedPreferences, findPreference(key)); - } - - protected void updatePrefsSummary(SharedPreferences sharedPreferences, - Preference pref) { - if (pref == null) - return; - - if (pref instanceof ListPreference) { - pref.setTitle (((ListPreference) pref).getEntry()); - } else if (pref instanceof SliderPreference) { - float v = ((SliderPreference) pref).getValue(); - int i = (int) Math.floor (v); - if (v == i) - pref.setSummary (String.valueOf (i)); - else - pref.setSummary (String.valueOf (v)); - } else if (pref instanceof EditTextPreference) { - pref.setSummary (((EditTextPreference) pref).getText()); - } - } - - protected void updateAllPrefsSummaries(SharedPreferences prefs) { - - Map <String, ?> keys = prefs.getAll(); - for (Map.Entry <String, ?> entry : keys.entrySet()) { - updatePrefsSummary (prefs, findPreference (entry.getKey())); - } - } -} diff --git a/android/xscreensaver/src/org/jwz/xscreensaver/SliderPreference.java b/android/xscreensaver/src/org/jwz/xscreensaver/SliderPreference.java deleted file mode 100644 index c1a1a1d..0000000 --- a/android/xscreensaver/src/org/jwz/xscreensaver/SliderPreference.java +++ /dev/null @@ -1,160 +0,0 @@ -/* -*- Mode: java; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * xscreensaver, Copyright (c) 2016 Jamie Zawinski <jwz@jwz.org> - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation. No representations are made about the suitability of this - * software for any purpose. It is provided "as is" without express or - * implied warranty. - * - * A numeric preference as a slider, inline in the preferences list. - * XML options include: - * - * low, high (floats) -- smallest and largest allowed values. - * If low > high, the value increases as the slider's thumb moves left. - * - * lowLabel, highLabel (strings) -- labels shown at the left and right - * ends of the slider. - * - * integral (boolean) -- whether to use whole numbers instead of floats; - */ - -package org.jwz.xscreensaver; - -import android.content.Context; -import android.content.res.TypedArray; -import android.content.res.Resources; -import android.preference.Preference; -import android.util.AttributeSet; -import android.view.View; -import android.view.ViewGroup; -import android.widget.SeekBar; -import android.widget.TextView; -import android.util.Log; - -public class SliderPreference extends Preference { - - protected float low, high; - protected String low_label, high_label; - protected boolean integral; - protected float mValue; - protected int seekbar_ticks; - - public SliderPreference(Context context, AttributeSet attrs) { - this (context, attrs, 0); - } - - public SliderPreference (Context context, AttributeSet attrs, int defStyle) { - super (context, attrs, defStyle); - - Resources res = context.getResources(); - - // Parse these from the "<SliderPreference>" tag - low = Float.parseFloat (attrs.getAttributeValue (null, "low")); - high = Float.parseFloat (attrs.getAttributeValue (null, "high")); - integral = attrs.getAttributeBooleanValue (null, "integral", false); - low_label = res.getString( - attrs.getAttributeResourceValue (null, "lowLabel", 0)); - high_label = res.getString( - attrs.getAttributeResourceValue (null, "highLabel", 0)); - - seekbar_ticks = (integral - ? (int) Math.floor (Math.abs (high - low)) - : 100000); - - setWidgetLayoutResource (R.layout.slider_preference); - } - - - @Override - protected void onSetInitialValue (boolean restore, Object def) { - if (restore) { - mValue = getPersistedFloat (low); - } else { - mValue = (Float) def; - persistFloat (mValue); - } - //Log.d("xscreensaver", String.format("SLIDER INIT %s: %f", - // low_label, mValue)); - } - - @Override - protected Object onGetDefaultValue(TypedArray a, int index) { - return a.getFloat (index, low); - } - - - public float getValue() { - return mValue; - } - - public void setValue (float value) { - - if (low < high) { - value = Math.max (low, Math.min (high, value)); - } else { - value = Math.max (high, Math.min (low, value)); - } - - if (integral) - value = Math.round (value); - - if (value != mValue) { - //Log.d("xscreensaver", String.format("SLIDER %s: %f", low_label, value)); - persistFloat (value); - mValue = value; - notifyChanged(); - } - } - - - @Override - protected View onCreateView (ViewGroup parent) { - View view = super.onCreateView(parent); - - TextView low_view = (TextView) - view.findViewById (R.id.slider_preference_low); - low_view.setText (low_label); - - TextView high_view = (TextView) - view.findViewById (R.id.slider_preference_high); - high_view.setText (high_label); - - SeekBar seekbar = (SeekBar) - view.findViewById (R.id.slider_preference_seekbar); - seekbar.setMax (seekbar_ticks); - - float ratio = (mValue - low) / (high - low); - int seek_value = (int) (ratio * (float) seekbar_ticks); - - seekbar.setProgress (seek_value); - - final SliderPreference slider = this; - - seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - } - - @Override - public void onProgressChanged (SeekBar seekBar, int progress, - boolean fromUser) { - if (fromUser) { - float ratio = (float) progress / (float) seekbar_ticks; - float value = low + (ratio * (high - low)); - slider.setValue (value); - callChangeListener (progress); - } - } - }); - - return view; - } -} diff --git a/android/xscreensaver/src/org/jwz/xscreensaver/TTFAnalyzer.java b/android/xscreensaver/src/org/jwz/xscreensaver/TTFAnalyzer.java deleted file mode 100644 index 3d01345..0000000 --- a/android/xscreensaver/src/org/jwz/xscreensaver/TTFAnalyzer.java +++ /dev/null @@ -1,153 +0,0 @@ -/* -*- Mode: java; indent-tabs-mode: nil; c-basic-offset: 2 -*- - - * Copyright (C) 2011 George Yunaev @ Ulduzsoft - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - - http://www.ulduzsoft.com/2012/01/enumerating-the-fonts-on-android-platform/ - */ - -package org.jwz.xscreensaver; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.RandomAccessFile; -import java.util.HashMap; - -// The class which loads the TTF file, parses it and returns the TTF font name -class TTFAnalyzer -{ - // This function parses the TTF file and returns the font name specified in the file - public String getTtfFontName( String fontFilename ) - { - try - { - // Parses the TTF file format. - // See http://developer.apple.com/fonts/ttrefman/rm06/Chap6.html - m_file = new RandomAccessFile( fontFilename, "r" ); - - // Read the version first - int version = readDword(); - - // The version must be either 'true' (0x74727565) or 0x00010000 or 'OTTO' (0x4f54544f) for CFF style fonts. - if ( version != 0x74727565 && version != 0x00010000 && version != 0x4f54544f) - return null; - - // The TTF file consist of several sections called "tables", and we need to know how many of them are there. - int numTables = readWord(); - - // Skip the rest in the header - readWord(); // skip searchRange - readWord(); // skip entrySelector - readWord(); // skip rangeShift - - // Now we can read the tables - for ( int i = 0; i < numTables; i++ ) - { - // Read the table entry - int tag = readDword(); - readDword(); // skip checksum - int offset = readDword(); - int length = readDword(); - - // Now here' the trick. 'name' field actually contains the textual string name. - // So the 'name' string in characters equals to 0x6E616D65 - if ( tag == 0x6E616D65 ) - { - // Here's the name section. Read it completely into the allocated buffer - byte[] table = new byte[ length ]; - - m_file.seek( offset ); - read( table ); - - // This is also a table. See http://developer.apple.com/fonts/ttrefman/rm06/Chap6name.html - // According to Table 36, the total number of table records is stored in the second word, at the offset 2. - // Getting the count and string offset - remembering it's big endian. - int count = getWord( table, 2 ); - int string_offset = getWord( table, 4 ); - - // Record starts from offset 6 - for ( int record = 0; record < count; record++ ) - { - // Table 37 tells us that each record is 6 words -> 12 bytes, and that the nameID is 4th word so its offset is 6. - // We also need to account for the first 6 bytes of the header above (Table 36), so... - int nameid_offset = record * 12 + 6; - int platformID = getWord( table, nameid_offset ); - int nameid_value = getWord( table, nameid_offset + 6 ); - - // Table 42 lists the valid name Identifiers. We're interested in 4 but not in Unicode encoding (for simplicity). - // The encoding is stored as PlatformID and we're interested in Mac encoding - if ( nameid_value == 4 && platformID == 1 ) - { - // We need the string offset and length, which are the word 6 and 5 respectively - int name_length = getWord( table, nameid_offset + 8 ); - int name_offset = getWord( table, nameid_offset + 10 ); - - // The real name string offset is calculated by adding the string_offset - name_offset = name_offset + string_offset; - - // Make sure it is inside the array - if ( name_offset >= 0 && name_offset + name_length < table.length ) - return new String( table, name_offset, name_length ); - } - } - } - } - - return null; - } - catch (FileNotFoundException e) - { - // Permissions? - return null; - } - catch (IOException e) - { - // Most likely a corrupted font file - return null; - } - } - - // Font file; must be seekable - private RandomAccessFile m_file = null; - - // Helper I/O functions - private int readByte() throws IOException - { - return m_file.read() & 0xFF; - } - - private int readWord() throws IOException - { - int b1 = readByte(); - int b2 = readByte(); - - return b1 << 8 | b2; - } - - private int readDword() throws IOException - { - int b1 = readByte(); - int b2 = readByte(); - int b3 = readByte(); - int b4 = readByte(); - - return b1 << 24 | b2 << 16 | b3 << 8 | b4; - } - - private void read( byte [] array ) throws IOException - { - if ( m_file.read( array ) != array.length ) - throw new IOException(); - } - - // Helper - private int getWord( byte [] array, int offset ) - { - int b1 = array[ offset ] & 0xFF; - int b2 = array[ offset + 1 ] & 0xFF; - - return b1 << 8 | b2; - } -} diff --git a/android/xscreensaver/src/org/jwz/xscreensaver/TVActivity.java b/android/xscreensaver/src/org/jwz/xscreensaver/TVActivity.java deleted file mode 100644 index 0015c9d..0000000 --- a/android/xscreensaver/src/org/jwz/xscreensaver/TVActivity.java +++ /dev/null @@ -1,50 +0,0 @@ -/* -*- Mode: java; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * xscreensaver, Copyright (c) 2017 Jamie Zawinski <jwz@jwz.org> - * and Dennis Sheil <dennis@panaceasupplies.com> - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation. No representations are made about the suitability of this - * software for any purpose. It is provided "as is" without express or - * implied warranty. - * - * This is the XScreenSaver "application" that just brings up the - * Daydream preferences for Android TV. - */ - -package org.jwz.xscreensaver; - -import android.app.Activity; -import android.app.WallpaperManager; -import android.content.ComponentName; -import android.content.Intent; -import android.os.Build; -import android.os.Bundle; -import android.view.View; -import android.provider.Settings; - -public class TVActivity extends Activity - implements View.OnClickListener { - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_tv_xscreensaver); - findViewById(R.id.apply_daydream).setOnClickListener(this); - } - - @Override - public void onClick(View v) { - switch (v.getId()) { - - case R.id.apply_daydream: - String action; - Intent intent = new Intent(android.provider.Settings.ACTION_SETTINGS); - startActivityForResult(intent, 0); - break; - } - } -} diff --git a/android/xscreensaver/src/org/jwz/xscreensaver/Wallpaper.java b/android/xscreensaver/src/org/jwz/xscreensaver/Wallpaper.java deleted file mode 100644 index 93896f2..0000000 --- a/android/xscreensaver/src/org/jwz/xscreensaver/Wallpaper.java +++ /dev/null @@ -1,128 +0,0 @@ -/* -*- Mode: java; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * xscreensaver, Copyright (c) 2016-2018 Jamie Zawinski <jwz@jwz.org> - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation. No representations are made about the suitability of this - * software for any purpose. It is provided "as is" without express or - * implied warranty. - * - * The superclass of every saver's Wallpaper. - * - * Each Wallpaper needs a distinct subclass in order to show up in the list. - * We know which saver we are running by the subclass name; we know which - * API to use by how the subclass calls super(). - */ - -package org.jwz.xscreensaver; - -import android.content.res.Configuration; -import android.service.wallpaper.WallpaperService; -import android.view.GestureDetector; -import android.view.SurfaceHolder; -import android.util.Log; -import java.lang.RuntimeException; -import java.lang.Thread; -import org.jwz.xscreensaver.jwxyz; -import android.graphics.PixelFormat; -import android.view.WindowManager; -import android.view.Display; -import android.graphics.Point; - -public class Wallpaper extends WallpaperService -/*implements GestureDetector.OnGestureListener, - GestureDetector.OnDoubleTapListener, */ { - - /* TODO: Input! */ - private Engine engine; - - @Override - public Engine onCreateEngine() { - // Log.d("xscreensaver", "tid = " + Thread.currentThread().getId()); - engine = new XScreenSaverGLEngine(); - return engine; - } - - @Override - public void onConfigurationChanged(Configuration config) { - super.onConfigurationChanged(config); - Log.d("xscreensaver", "wallpaper onConfigurationChanged"); - /* - WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE); - Display display = wm.getDefaultDisplay(); - Point size = new Point(); - display.getSize(size); - int width = size.x; - int height = size.y; - engine.onSurfaceChanged(engine.getSurfaceHolder(), PixelFormat.RGBA_8888, width, height); - */ - - } - - class XScreenSaverGLEngine extends Engine { - - private boolean initTried = false; - private jwxyz jwxyz_obj; - - @Override - public void onSurfaceCreated (SurfaceHolder holder) { - super.onSurfaceCreated(holder); - - if (!initTried) { - initTried = true; - } else { - if (jwxyz_obj != null) { - jwxyz_obj.close(); - jwxyz_obj = null; - } - } - } - - @Override - public void onVisibilityChanged(final boolean visible) { - if (jwxyz_obj != null) { - if (visible) - jwxyz_obj.start(); - else - jwxyz_obj.pause(); - } - } - - @Override - public void onSurfaceChanged (SurfaceHolder holder, int format, - int width, int height) { - - super.onSurfaceChanged(holder, format, width, height); - - if (width == 0 || height == 0) { - jwxyz_obj.close(); - jwxyz_obj = null; - } - - Log.d ("xscreensaver", - String.format("surfaceChanged: %dx%d", width, height)); - - if (jwxyz_obj == null) { - jwxyz_obj = new jwxyz (jwxyz.saverNameOf(Wallpaper.this), - Wallpaper.this, null, width, height, - holder.getSurface(), null); - } else { - jwxyz_obj.resize (width, height); - } - - jwxyz_obj.start(); - } - - @Override - public void onSurfaceDestroyed (SurfaceHolder holder) { - super.onSurfaceDestroyed (holder); - - if (jwxyz_obj != null) { - jwxyz_obj.close(); - jwxyz_obj = null; - } - } - } -} diff --git a/android/xscreensaver/src/org/jwz/xscreensaver/jwxyz.java b/android/xscreensaver/src/org/jwz/xscreensaver/jwxyz.java deleted file mode 100644 index a22a26d..0000000 --- a/android/xscreensaver/src/org/jwz/xscreensaver/jwxyz.java +++ /dev/null @@ -1,1115 +0,0 @@ -/* -*- Mode: java; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * xscreensaver, Copyright (c) 2016-2018 Jamie Zawinski <jwz@jwz.org> - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation. No representations are made about the suitability of this - * software for any purpose. It is provided "as is" without express or - * implied warranty. - * - * This class is how the C implementation of jwxyz calls back into Java - * to do things that OpenGL does not have access to without Java-based APIs. - * It is the Java companion to jwxyz-android.c and screenhack-android.c. - */ - -package org.jwz.xscreensaver; - -import java.util.Map; -import java.util.HashMap; -import java.util.Hashtable; -import java.util.ArrayList; -import java.util.Random; -import android.app.AlertDialog; -import android.view.KeyEvent; -import android.content.SharedPreferences; -import android.content.Context; -import android.content.ContentResolver; -import android.content.DialogInterface; -import android.content.res.AssetManager; -import android.graphics.Typeface; -import android.graphics.Rect; -import android.graphics.Paint; -import android.graphics.Paint.FontMetrics; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.Matrix; -import android.net.Uri; -import android.view.GestureDetector; -import android.view.KeyEvent; -import android.view.MotionEvent; -import java.net.URL; -import java.nio.ByteBuffer; -import java.io.File; -import java.io.InputStream; -import java.io.FileOutputStream; -import java.lang.InterruptedException; -import java.lang.Runnable; -import java.lang.Thread; -import java.util.TimerTask; -import android.database.Cursor; -import android.provider.MediaStore; -import android.provider.MediaStore.MediaColumns; -import android.media.ExifInterface; -import org.jwz.xscreensaver.TTFAnalyzer; -import android.util.Log; -import android.view.Surface; -import android.Manifest; -import android.support.v4.app.ActivityCompat; -import android.support.v4.content.ContextCompat; -import android.os.Build; -import android.content.pm.PackageManager; - -public class jwxyz - implements GestureDetector.OnGestureListener, - GestureDetector.OnDoubleTapListener { - - private class PrefListener - implements SharedPreferences.OnSharedPreferenceChangeListener { - - @Override - public void onSharedPreferenceChanged (SharedPreferences sharedPreferences, String key) - { - if (key.startsWith(hack + "_")) { - if (render != null) { - boolean was_animating; - synchronized (render) { - was_animating = animating_p; - } - close(); - if (was_animating) - start(); - } - } - } - }; - - private static class SurfaceLost extends Exception { - SurfaceLost () { - super("surface lost"); - } - - SurfaceLost (String detailMessage) { - super(detailMessage); - } - } - - public final static int STYLE_BOLD = 1; - public final static int STYLE_ITALIC = 2; - public final static int STYLE_MONOSPACE = 4; - - public final static int FONT_FAMILY = 0; - public final static int FONT_FACE = 1; - public final static int FONT_RANDOM = 2; - - public final static int MY_REQ_READ_EXTERNAL_STORAGE = 271828; - - private long nativeRunningHackPtr; - - private String hack; - private Context app; - private Bitmap screenshot; - - SharedPreferences prefs; - SharedPreferences.OnSharedPreferenceChangeListener pref_listener; - Hashtable<String, String> defaults = new Hashtable<String, String>(); - - - // Maps font names to either: String (system font) or Typeface (bundled). - private Hashtable<String, Object> all_fonts = - new Hashtable<String, Object>(); - - int width, height; - Surface surface; - boolean animating_p; - - // Doubles as the mutex controlling width/height/animating_p. - private Thread render; - - private Runnable on_quit; - boolean button_down_p; - - // These are defined in jwxyz-android.c: - // - private native long nativeInit (String hack, - Hashtable<String,String> defaults, - int w, int h, Surface window) - throws SurfaceLost; - private native void nativeResize (int w, int h, double rot); - private native long nativeRender (); - private native void nativeDone (); - public native void sendButtonEvent (int x, int y, boolean down); - public native void sendMotionEvent (int x, int y); - public native void sendKeyEvent (boolean down_p, int code, int mods); - - private void LOG (String fmt, Object... args) { - Log.d ("xscreensaver", hack + ": " + String.format (fmt, args)); - } - - static public String saverNameOf (Object obj) { - // Extract the saver name from e.g. "gen.Daydream$BouncingCow" - String name = obj.getClass().getSimpleName(); - int index = name.lastIndexOf('$'); - if (index != -1) { - index++; - name = name.substring (index, name.length() - index); - } - return name.toLowerCase(); - } - - // Constructor - public jwxyz (String hack, Context app, Bitmap screenshot, int w, int h, - Surface surface, Runnable on_quit) { - - this.hack = hack; - this.app = app; - this.screenshot = screenshot; - this.on_quit = on_quit; - this.width = w; - this.height = h; - this.surface = surface; - - // nativeInit populates 'defaults' with the default values for keys - // that are not overridden by SharedPreferences. - - prefs = app.getSharedPreferences (hack, 0); - - // Keep a strong reference to pref_listener, because - // registerOnSharedPreferenceChangeListener only uses a weak reference. - pref_listener = new PrefListener(); - prefs.registerOnSharedPreferenceChangeListener (pref_listener); - - scanSystemFonts(); - } - - protected void finalize() { - if (render != null) { - LOG ("jwxyz finalized without close. This might be OK."); - close(); - } - } - - - public String getStringResource (String name) { - - name = hack + "_" + name; - - if (prefs.contains(name)) { - - // SharedPreferences is very picky that you request the exact type that - // was stored: if it is a float and you ask for a string, you get an - // exception instead of the float converted to a string. - - String s = null; - try { return prefs.getString (name, ""); - } catch (Exception e) { } - - try { return Float.toString (prefs.getFloat (name, 0)); - } catch (Exception e) { } - - try { return Long.toString (prefs.getLong (name, 0)); - } catch (Exception e) { } - - try { return Integer.toString (prefs.getInt (name, 0)); - } catch (Exception e) { } - - try { return (prefs.getBoolean (name, false) ? "true" : "false"); - } catch (Exception e) { } - } - - // If we got to here, it's not in there, so return the default. - return defaults.get (name); - } - - - private String mungeFontName (String name) { - // Roboto-ThinItalic => RobotoThin - // AndroidCock Regular => AndroidClock - String tails[] = { "Bold", "Italic", "Oblique", "Regular" }; - for (String tail : tails) { - String pres[] = { " ", "-", "_", "" }; - for (String pre : pres) { - int i = name.indexOf(pre + tail); - if (i > 0) name = name.substring (0, i); - } - } - return name; - } - - - private void scanSystemFonts() { - - // First parse the system font directories for the global fonts. - - String[] fontdirs = { "/system/fonts", "/system/font", "/data/fonts" }; - TTFAnalyzer analyzer = new TTFAnalyzer(); - for (String fontdir : fontdirs) { - File dir = new File(fontdir); - if (!dir.exists()) - continue; - File[] files = dir.listFiles(); - if (files == null) - continue; - - for (File file : files) { - String name = analyzer.getTtfFontName (file.getAbsolutePath()); - if (name == null) { - // LOG ("unparsable system font: %s", file); - } else { - name = mungeFontName (name); - if (! all_fonts.contains (name)) { - // LOG ("system font \"%s\" %s", name, file); - all_fonts.put (name, name); - } - } - } - } - - // Now parse our assets, for our bundled fonts. - - AssetManager am = app.getAssets(); - String dir = "fonts"; - String[] files = null; - try { files = am.list(dir); } - catch (Exception e) { LOG("listing assets: %s", e.toString()); } - - for (String fn : files) { - String fn2 = dir + "/" + fn; - Typeface t = Typeface.createFromAsset (am, fn2); - - File tmpfile = null; - try { - tmpfile = new File(app.getCacheDir(), fn); - if (tmpfile.createNewFile() == false) { - tmpfile.delete(); - tmpfile.createNewFile(); - } - - InputStream in = am.open (fn2); - FileOutputStream out = new FileOutputStream (tmpfile); - byte[] buffer = new byte[1024 * 512]; - while (in.read(buffer, 0, 1024 * 512) != -1) { - out.write(buffer); - } - out.close(); - in.close(); - - String name = analyzer.getTtfFontName (tmpfile.getAbsolutePath()); - tmpfile.delete(); - - name = mungeFontName (name); - all_fonts.put (name, t); - // LOG ("asset font \"%s\" %s", name, fn); - } catch (Exception e) { - if (tmpfile != null) tmpfile.delete(); - LOG ("error: %s", e.toString()); - } - } - } - - - // Parses family names from X Logical Font Descriptions, including a few - // standard X font names that aren't handled by try_xlfd_font(). - // Returns [ String name, Typeface ] - private Object[] parseXLFD (int mask, int traits, - String name, int name_type) { - boolean fixed = false; - boolean serif = false; - - int style_jwxyz = mask & traits; - - if (name_type != FONT_RANDOM) { - if ((style_jwxyz & STYLE_BOLD) != 0 || - name.equals("fixed") || - name.equals("courier") || - name.equals("console") || - name.equals("lucidatypewriter") || - name.equals("monospace")) { - fixed = true; - } else if (name.equals("times") || - name.equals("georgia") || - name.equals("serif")) { - serif = true; - } else if (name.equals("serif-monospace")) { - fixed = true; - serif = true; - } - } else { - Random r = new Random(); - serif = r.nextBoolean(); // Not much to randomize here... - fixed = (r.nextInt(8) == 0); - } - - name = (fixed - ? (serif ? "serif-monospace" : "monospace") - : (serif ? "serif" : "sans-serif")); - - int style_android = 0; - if ((style_jwxyz & STYLE_BOLD) != 0) - style_android |= Typeface.BOLD; - if ((style_jwxyz & STYLE_ITALIC) != 0) - style_android |= Typeface.ITALIC; - - return new Object[] { name, Typeface.create(name, style_android) }; - } - - - // Parses "Native Font Name One 12, Native Font Name Two 14". - // Returns [ String name, Typeface ] - private Object[] parseNativeFont (String name) { - Object font2 = all_fonts.get (name); - if (font2 instanceof String) - font2 = Typeface.create (name, Typeface.NORMAL); - return new Object[] { name, (Typeface)font2 }; - } - - - // Returns [ Paint paint, String family_name, Float ascent, Float descent ] - public Object[] loadFont(int mask, int traits, String name, int name_type, - float size) { - Object pair[]; - - if (name_type != FONT_RANDOM && name.equals("")) return null; - - if (name_type == FONT_FACE) { - pair = parseNativeFont (name); - } else { - pair = parseXLFD (mask, traits, name, name_type); - } - - String name2 = (String) pair[0]; - Typeface font = (Typeface) pair[1]; - - size *= 2; - - String suffix = (font.isBold() && font.isItalic() ? " bold italic" : - font.isBold() ? " bold" : - font.isItalic() ? " italic" : - ""); - Paint paint = new Paint(); - paint.setTypeface (font); - paint.setTextSize (size); - paint.setColor (Color.argb (0xFF, 0xFF, 0xFF, 0xFF)); - - LOG ("load font \"%s\" = \"%s %.1f\"", name, name2 + suffix, size); - - FontMetrics fm = paint.getFontMetrics(); - return new Object[] { paint, name2, -fm.ascent, fm.descent }; - } - - - /* Returns a byte[] array containing XCharStruct with an optional - bitmap appended to it. - lbearing, rbearing, width, ascent, descent: 2 bytes each. - Followed by a WxH pixmap, 32 bits per pixel. - */ - public ByteBuffer renderText (Paint paint, String text, boolean render_p, - boolean antialias_p) { - - if (paint == null) { - LOG ("no font"); - return null; - } - - /* Font metric terminology, as used by X11: - - "lbearing" is the distance from the logical origin to the leftmost - pixel. If a character's ink extends to the left of the origin, it is - negative. - - "rbearing" is the distance from the logical origin to the rightmost - pixel. - - "descent" is the distance from the logical origin to the bottommost - pixel. For characters with descenders, it is positive. For - superscripts, it is negative. - - "ascent" is the distance from the logical origin to the topmost pixel. - It is the number of pixels above the baseline. - - "width" is the distance from the logical origin to the position where - the logical origin of the next character should be placed. - - If "rbearing" is greater than "width", then this character overlaps the - following character. If smaller, then there is trailing blank space. - - The bbox coordinates returned by getTextBounds grow down and right: - for a character with ink both above and below the baseline, top is - negative and bottom is positive. - */ - paint.setAntiAlias (antialias_p); - FontMetrics fm = paint.getFontMetrics(); - Rect bbox = new Rect(); - paint.getTextBounds (text, 0, text.length(), bbox); - - /* The bbox returned by getTextBounds measures from the logical origin - with right and down being positive. This means most characters have - a negative top, and characters with descenders have a positive bottom. - */ - int lbearing = bbox.left; - int rbearing = bbox.right; - int ascent = -bbox.top; - int descent = bbox.bottom; - int width = (int) paint.measureText (text); - - int w = rbearing - lbearing; - int h = ascent + descent; - int size = 5 * 2 + (render_p ? w * h * 4 : 0); - - ByteBuffer bits = ByteBuffer.allocateDirect (size); - - bits.put ((byte) ((lbearing >> 8) & 0xFF)); - bits.put ((byte) ( lbearing & 0xFF)); - bits.put ((byte) ((rbearing >> 8) & 0xFF)); - bits.put ((byte) ( rbearing & 0xFF)); - bits.put ((byte) ((width >> 8) & 0xFF)); - bits.put ((byte) ( width & 0xFF)); - bits.put ((byte) ((ascent >> 8) & 0xFF)); - bits.put ((byte) ( ascent & 0xFF)); - bits.put ((byte) ((descent >> 8) & 0xFF)); - bits.put ((byte) ( descent & 0xFF)); - - if (render_p && w > 0 && h > 0) { - Bitmap bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); - Canvas canvas = new Canvas (bitmap); - canvas.drawText (text, -lbearing, ascent, paint); - bitmap.copyPixelsToBuffer (bits); - bitmap.recycle(); - } - - return bits; - } - - - /* Returns the contents of the URL. - Loads the URL in a background thread: if the URL has not yet loaded, - this will return null. Once the URL has completely loaded, the full - contents will be returned. Calling this again after that starts the - URL loading again. - */ - private String loading_url = null; - private ByteBuffer loaded_url_body = null; - - public synchronized ByteBuffer loadURL (String url) { - - if (loaded_url_body != null) { // Thread finished - - // LOG ("textclient finished %s", loading_url); - - ByteBuffer bb = loaded_url_body; - loading_url = null; - loaded_url_body = null; - return bb; - - } else if (loading_url != null) { // Waiting on thread - // LOG ("textclient waiting..."); - return null; - - } else { // Launch thread - - loading_url = url; - LOG ("textclient launching %s...", url); - - new Thread (new Runnable() { - public void run() { - int size0 = 10240; - int size = size0; - int count = 0; - ByteBuffer body = ByteBuffer.allocateDirect (size); - - try { - URL u = new URL (loading_url); - // LOG ("textclient thread loading: %s", u.toString()); - InputStream s = u.openStream(); - byte buf[] = new byte[10240]; - while (true) { - int n = s.read (buf); - if (n == -1) break; - // LOG ("textclient thread read %d", n); - if (count + n + 1 >= size) { - int size2 = (int) (size * 1.2 + size0); - // LOG ("textclient thread expand %d -> %d", size, size2); - ByteBuffer body2 = ByteBuffer.allocateDirect (size2); - body.rewind(); - body2.put (body); - body2.position (count); - body = body2; - size = size2; - } - body.put (buf, 0, n); - count += n; - } - } catch (Exception e) { - LOG ("load URL error: %s", e.toString()); - body.clear(); - body.put (e.toString().getBytes()); - body.put ((byte) 0); - } - - // LOG ("textclient thread finished %s (%d)", loading_url, size); - loaded_url_body = body; - } - }).start(); - - return null; - } - } - - - // Returns [ Bitmap bitmap, String name ] - private Object[] convertBitmap (String name, Bitmap bitmap, - int target_width, int target_height, - ExifInterface exif, boolean rotate_p) { - if (bitmap == null) return null; - - { - - int width = bitmap.getWidth(); - int height = bitmap.getHeight(); - Matrix matrix = new Matrix(); - - LOG ("read image %s: %d x %d", name, width, height); - - // First rotate the image as per EXIF. - - if (exif != null) { - int deg = 0; - switch (exif.getAttributeInt (ExifInterface.TAG_ORIENTATION, - ExifInterface.ORIENTATION_NORMAL)) { - case ExifInterface.ORIENTATION_ROTATE_90: deg = 90; break; - case ExifInterface.ORIENTATION_ROTATE_180: deg = 180; break; - case ExifInterface.ORIENTATION_ROTATE_270: deg = 270; break; - } - if (deg != 0) { - LOG ("%s: EXIF rotate %d", name, deg); - matrix.preRotate (deg); - if (deg == 90 || deg == 270) { - int temp = width; - width = height; - height = temp; - } - } - } - - // If the caller requested that we rotate the image to best fit the - // screen, rotate it again. - - if (rotate_p && - (width > height) != (target_width > target_height)) { - LOG ("%s: rotated to fit screen", name); - matrix.preRotate (90); - - int temp = width; - width = height; - height = temp; - } - - // Resize the image to be not larger than the screen, potentially - // copying it for the third time. - // Actually, always scale it, scaling up if necessary. - -// if (width > target_width || height > target_height) - { - float r1 = target_width / (float) width; - float r2 = target_height / (float) height; - float r = (r1 > r2 ? r2 : r1); - LOG ("%s: resize %.1f: %d x %d => %d x %d", name, - r, width, height, (int) (width * r), (int) (height * r)); - matrix.preScale (r, r); - } - - bitmap = Bitmap.createBitmap (bitmap, 0, 0, - bitmap.getWidth(), bitmap.getHeight(), - matrix, true); - - if (bitmap.getConfig() != Bitmap.Config.ARGB_8888) - bitmap = bitmap.copy(Bitmap.Config.ARGB_8888, false); - - return new Object[] { bitmap, name }; - - } - } - - - boolean havePermission(String permission) { - - if (Build.VERSION.SDK_INT < 16) { - return true; - } - - if (permissionGranted(permission)) { - return true; - } - - return false; - } - - - private boolean permissionGranted(String permission) { - boolean check = ContextCompat.checkSelfPermission(app, permission) == - PackageManager.PERMISSION_GRANTED; - return check; - } - - public Object[] checkThenLoadRandomImage (int target_width, int target_height, - boolean rotate_p) { - // RES introduced in API 16 - String permission = Manifest.permission.READ_EXTERNAL_STORAGE; - - if (havePermission(permission)) { - return loadRandomImage(target_width,target_height,rotate_p); - } else { - return null; - } - } - - public Object[] loadRandomImage (int target_width, int target_height, - boolean rotate_p) { - - int min_size = 480; - int max_size = 0x7FFF; - - ArrayList<String> imgs = new ArrayList<String>(); - - ContentResolver cr = app.getContentResolver(); - String[] cols = { MediaColumns.DATA, - MediaColumns.MIME_TYPE, - MediaColumns.WIDTH, - MediaColumns.HEIGHT }; - Uri uris[] = { - android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI, - android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI }; - - for (int i = 0; i < uris.length; i++) { - Cursor cursor = cr.query (uris[i], cols, null, null, null); - if (cursor == null) - continue; - int j = 0; - int path_col = cursor.getColumnIndexOrThrow (cols[j++]); - int type_col = cursor.getColumnIndexOrThrow (cols[j++]); - int width_col = cursor.getColumnIndexOrThrow (cols[j++]); - int height_col = cursor.getColumnIndexOrThrow (cols[j++]); - while (cursor.moveToNext()) { - String path = cursor.getString(path_col); - String type = cursor.getString(type_col); - if (path != null && type != null && type.startsWith("image/")) { - String wc = cursor.getString(width_col); - String hc = cursor.getString(height_col); - if (wc != null && hc != null) { - int w = Integer.parseInt (wc); - int h = Integer.parseInt (hc); - if (w > min_size && h > min_size && - w < max_size && h < max_size) { - imgs.add (path); - } - } - } - } - cursor.close(); - } - - String which = null; - - int count = imgs.size(); - if (count == 0) { - LOG ("no images"); - return null; - } - - int i = new Random().nextInt (count); - which = imgs.get (i); - LOG ("picked image %d of %d: %s", i, count, which); - - Uri uri = Uri.fromFile (new File (which)); - String name = uri.getLastPathSegment(); - Bitmap bitmap = null; - ExifInterface exif = null; - - try { - try { - bitmap = MediaStore.Images.Media.getBitmap (cr, uri); - } catch (Exception e) { - LOG ("image %s unloadable: %s", which, e.toString()); - return null; - } - - try { - exif = new ExifInterface (uri.getPath()); // If it fails, who cares - } catch (Exception e) { - } - - return convertBitmap (name, bitmap, target_width, target_height, - exif, rotate_p); - } catch (java.lang.OutOfMemoryError e) { - LOG ("image %s got OutOfMemoryError: %s", which, e.toString()); - return null; - } - } - - - public Object[] getScreenshot (int target_width, int target_height, - boolean rotate_p) { - return convertBitmap ("Screenshot", screenshot, - target_width, target_height, - null, rotate_p); - } - - - public Bitmap decodePNG (byte[] data) { - BitmapFactory.Options opts = new BitmapFactory.Options(); - opts.inPreferredConfig = Bitmap.Config.ARGB_8888; - return BitmapFactory.decodeByteArray (data, 0, data.length, opts); - } - - - // Sadly duplicated from jwxyz.h (and thence X.h and keysymdef.h) - // - private static final int ShiftMask = (1<<0); - private static final int LockMask = (1<<1); - private static final int ControlMask = (1<<2); - private static final int Mod1Mask = (1<<3); - private static final int Mod2Mask = (1<<4); - private static final int Mod3Mask = (1<<5); - private static final int Mod4Mask = (1<<6); - private static final int Mod5Mask = (1<<7); - private static final int Button1Mask = (1<<8); - private static final int Button2Mask = (1<<9); - private static final int Button3Mask = (1<<10); - private static final int Button4Mask = (1<<11); - private static final int Button5Mask = (1<<12); - - private static final int XK_Shift_L = 0xFFE1; - private static final int XK_Shift_R = 0xFFE2; - private static final int XK_Control_L = 0xFFE3; - private static final int XK_Control_R = 0xFFE4; - private static final int XK_Caps_Lock = 0xFFE5; - private static final int XK_Shift_Lock = 0xFFE6; - private static final int XK_Meta_L = 0xFFE7; - private static final int XK_Meta_R = 0xFFE8; - private static final int XK_Alt_L = 0xFFE9; - private static final int XK_Alt_R = 0xFFEA; - private static final int XK_Super_L = 0xFFEB; - private static final int XK_Super_R = 0xFFEC; - private static final int XK_Hyper_L = 0xFFED; - private static final int XK_Hyper_R = 0xFFEE; - - private static final int XK_Home = 0xFF50; - private static final int XK_Left = 0xFF51; - private static final int XK_Up = 0xFF52; - private static final int XK_Right = 0xFF53; - private static final int XK_Down = 0xFF54; - private static final int XK_Prior = 0xFF55; - private static final int XK_Page_Up = 0xFF55; - private static final int XK_Next = 0xFF56; - private static final int XK_Page_Down = 0xFF56; - private static final int XK_End = 0xFF57; - private static final int XK_Begin = 0xFF58; - - private static final int XK_F1 = 0xFFBE; - private static final int XK_F2 = 0xFFBF; - private static final int XK_F3 = 0xFFC0; - private static final int XK_F4 = 0xFFC1; - private static final int XK_F5 = 0xFFC2; - private static final int XK_F6 = 0xFFC3; - private static final int XK_F7 = 0xFFC4; - private static final int XK_F8 = 0xFFC5; - private static final int XK_F9 = 0xFFC6; - private static final int XK_F10 = 0xFFC7; - private static final int XK_F11 = 0xFFC8; - private static final int XK_F12 = 0xFFC9; - - public void sendKeyEvent (KeyEvent event) { - int uc = event.getUnicodeChar(); - int jcode = event.getKeyCode(); - int jmods = event.getModifiers(); - int xcode = 0; - int xmods = 0; - - switch (jcode) { - case KeyEvent.KEYCODE_SHIFT_LEFT: xcode = XK_Shift_L; break; - case KeyEvent.KEYCODE_SHIFT_RIGHT: xcode = XK_Shift_R; break; - case KeyEvent.KEYCODE_CTRL_LEFT: xcode = XK_Control_L; break; - case KeyEvent.KEYCODE_CTRL_RIGHT: xcode = XK_Control_R; break; - case KeyEvent.KEYCODE_CAPS_LOCK: xcode = XK_Caps_Lock; break; - case KeyEvent.KEYCODE_META_LEFT: xcode = XK_Meta_L; break; - case KeyEvent.KEYCODE_META_RIGHT: xcode = XK_Meta_R; break; - case KeyEvent.KEYCODE_ALT_LEFT: xcode = XK_Alt_L; break; - case KeyEvent.KEYCODE_ALT_RIGHT: xcode = XK_Alt_R; break; - - case KeyEvent.KEYCODE_HOME: xcode = XK_Home; break; - case KeyEvent.KEYCODE_DPAD_LEFT: xcode = XK_Left; break; - case KeyEvent.KEYCODE_DPAD_UP: xcode = XK_Up; break; - case KeyEvent.KEYCODE_DPAD_RIGHT: xcode = XK_Right; break; - case KeyEvent.KEYCODE_DPAD_DOWN: xcode = XK_Down; break; - //case KeyEvent.KEYCODE_NAVIGATE_PREVIOUS: xcode = XK_Prior; break; - case KeyEvent.KEYCODE_PAGE_UP: xcode = XK_Page_Up; break; - //case KeyEvent.KEYCODE_NAVIGATE_NEXT: xcode = XK_Next; break; - case KeyEvent.KEYCODE_PAGE_DOWN: xcode = XK_Page_Down; break; - case KeyEvent.KEYCODE_MOVE_END: xcode = XK_End; break; - case KeyEvent.KEYCODE_MOVE_HOME: xcode = XK_Begin; break; - - case KeyEvent.KEYCODE_F1: xcode = XK_F1; break; - case KeyEvent.KEYCODE_F2: xcode = XK_F2; break; - case KeyEvent.KEYCODE_F3: xcode = XK_F3; break; - case KeyEvent.KEYCODE_F4: xcode = XK_F4; break; - case KeyEvent.KEYCODE_F5: xcode = XK_F5; break; - case KeyEvent.KEYCODE_F6: xcode = XK_F6; break; - case KeyEvent.KEYCODE_F7: xcode = XK_F7; break; - case KeyEvent.KEYCODE_F8: xcode = XK_F8; break; - case KeyEvent.KEYCODE_F9: xcode = XK_F9; break; - case KeyEvent.KEYCODE_F10: xcode = XK_F10; break; - case KeyEvent.KEYCODE_F11: xcode = XK_F11; break; - case KeyEvent.KEYCODE_F12: xcode = XK_F12; break; - default: xcode = uc; break; - } - - if (0 != (jmods & KeyEvent.META_SHIFT_ON)) xmods |= ShiftMask; - if (0 != (jmods & KeyEvent.META_CAPS_LOCK_ON)) xmods |= LockMask; - if (0 != (jmods & KeyEvent.META_CTRL_MASK)) xmods |= ControlMask; - if (0 != (jmods & KeyEvent.META_ALT_MASK)) xmods |= Mod1Mask; - if (0 != (jmods & KeyEvent.META_META_ON)) xmods |= Mod1Mask; - if (0 != (jmods & KeyEvent.META_SYM_ON)) xmods |= Mod2Mask; - if (0 != (jmods & KeyEvent.META_FUNCTION_ON)) xmods |= Mod3Mask; - - /* If you touch and release Shift, you get no events. - If you type Shift-A, you get Shift down, A down, A up, Shift up. - So let's just ignore all lone modifier key events. - */ - if (xcode >= XK_Shift_L && xcode <= XK_Hyper_R) - return; - - boolean down_p = event.getAction() == KeyEvent.ACTION_DOWN; - sendKeyEvent (down_p, xcode, xmods); - } - - void start () { - if (render == null) { - animating_p = true; - render = new Thread(new Runnable() { - @Override - public void run() - { - int currentWidth, currentHeight; - synchronized (render) { - while (true) { - while (!animating_p || width == 0 || height == 0) { - try { - render.wait(); - } catch(InterruptedException exc) { - return; - } - } - - try { - nativeInit (hack, defaults, width, height, surface); - currentWidth = width; - currentHeight= height; - break; - } catch (SurfaceLost exc) { - width = 0; - height = 0; - } - } - } - - main_loop: - while (true) { - synchronized (render) { - assert width != 0; - assert height != 0; - while (!animating_p) { - try { - render.wait(); - } catch(InterruptedException exc) { - break main_loop; - } - } - - if (currentWidth != width || currentHeight != height) { - currentWidth = width; - currentHeight = height; - nativeResize (width, height, 0); - } - } - - long delay = nativeRender(); - - synchronized (render) { - if (delay != 0) { - try { - render.wait(delay / 1000, (int)(delay % 1000) * 1000); - } catch (InterruptedException exc) { - break main_loop; - } - } else { - if (Thread.interrupted ()) { - break main_loop; - } - } - } - } - - assert nativeRunningHackPtr != 0; - nativeDone (); - } - }); - - render.start(); - } else { - synchronized(render) { - animating_p = true; - render.notify(); - } - } - } - - void pause () { - if (render == null) - return; - synchronized (render) { - animating_p = false; - render.notify(); - } - } - - void close () { - if (render == null) - return; - synchronized (render) { - animating_p = false; - render.interrupt(); - } - try { - render.join(); - } catch (InterruptedException exc) { - } - render = null; - } - - void resize (int w, int h) { - assert w != 0; - assert h != 0; - if (render != null) { - synchronized (render) { - width = w; - height = h; - render.notify(); - } - } else { - width = w; - height = h; - } - } - - - /* We distinguish between taps and drags. - - - Drags/pans (down, motion, up) are sent to the saver to handle. - - Single-taps exit the saver. - - Long-press single-taps are sent to the saver as ButtonPress/Release; - - Double-taps are sent to the saver as a "Space" keypress. - - #### TODO: - - Swipes (really, two-finger drags/pans) send Up/Down/Left/RightArrow. - */ - - @Override - public boolean onSingleTapConfirmed (MotionEvent event) { - if (on_quit != null) - on_quit.run(); - return true; - } - - @Override - public boolean onDoubleTap (MotionEvent event) { - sendKeyEvent (new KeyEvent (KeyEvent.ACTION_DOWN, - KeyEvent.KEYCODE_SPACE)); - return true; - } - - @Override - public void onLongPress (MotionEvent event) { - if (! button_down_p) { - int x = (int) event.getX (event.getPointerId (0)); - int y = (int) event.getY (event.getPointerId (0)); - sendButtonEvent (x, y, true); - sendButtonEvent (x, y, false); - } - } - - @Override - public void onShowPress (MotionEvent event) { - if (! button_down_p) { - button_down_p = true; - int x = (int) event.getX (event.getPointerId (0)); - int y = (int) event.getY (event.getPointerId (0)); - sendButtonEvent (x, y, true); - } - } - - @Override - public boolean onScroll (MotionEvent e1, MotionEvent e2, - float distanceX, float distanceY) { - // LOG ("onScroll: %d", button_down_p ? 1 : 0); - if (button_down_p) - sendMotionEvent ((int) e2.getX (e2.getPointerId (0)), - (int) e2.getY (e2.getPointerId (0))); - return true; - } - - // If you drag too fast, you get a single onFling event instead of a - // succession of onScroll events. I can't figure out how to disable it. - @Override - public boolean onFling (MotionEvent e1, MotionEvent e2, - float velocityX, float velocityY) { - return false; - } - - public boolean dragEnded (MotionEvent event) { - if (button_down_p) { - int x = (int) event.getX (event.getPointerId (0)); - int y = (int) event.getY (event.getPointerId (0)); - sendButtonEvent (x, y, false); - button_down_p = false; - } - return true; - } - - @Override - public boolean onDown (MotionEvent event) { - return false; - } - - @Override - public boolean onSingleTapUp (MotionEvent event) { - return false; - } - - @Override - public boolean onDoubleTapEvent (MotionEvent event) { - return false; - } - - - static { - System.loadLibrary ("xscreensaver"); - -/* - Thread.setDefaultUncaughtExceptionHandler( - new Thread.UncaughtExceptionHandler() { - Thread.UncaughtExceptionHandler old_handler = - Thread.currentThread().getUncaughtExceptionHandler(); - - @Override - public void uncaughtException (Thread thread, Throwable ex) { - String err = ex.toString(); - Log.d ("xscreensaver", "Caught exception: " + err); - old_handler.uncaughtException (thread, ex); - } - }); -*/ - } -} diff --git a/android/xscreensaver/xscreensaver.iml b/android/xscreensaver/xscreensaver.iml deleted file mode 100644 index 18e9fb0..0000000 --- a/android/xscreensaver/xscreensaver.iml +++ /dev/null @@ -1,117 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<module external.linked.project.id=":xscreensaver" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" type="JAVA_MODULE" version="4"> - <component name="FacetManager"> - <facet type="android-gradle" name="Android-Gradle"> - <configuration> - <option name="GRADLE_PROJECT_PATH" value=":xscreensaver" /> - </configuration> - </facet> - <facet type="android" name="Android"> - <configuration> - <option name="SELECTED_BUILD_VARIANT" value="debug" /> - <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" /> - <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" /> - <afterSyncTasks> - <task>generateDebugSources</task> - </afterSyncTasks> - <option name="ALLOW_USER_CONFIGURATION" value="false" /> - <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/res" /> - </configuration> - </facet> - </component> - <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7"> - <output url="file://$MODULE_DIR$/build/intermediates/classes/debug" /> - <output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/debug" /> - <exclude-output /> - <content url="file://$MODULE_DIR$"> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/debug" isTestSource="false" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/test/debug" isTestSource="true" generated="true" /> - <sourceFolder url="file://$MODULE_DIR$/build-types/debug/res" type="java-resource" /> - <sourceFolder url="file://$MODULE_DIR$/build-types/debug/resources" type="java-resource" /> - <sourceFolder url="file://$MODULE_DIR$/build-types/debug/assets" type="java-resource" /> - <sourceFolder url="file://$MODULE_DIR$/build-types/debug/aidl" isTestSource="false" /> - <sourceFolder url="file://$MODULE_DIR$/build-types/debug/java" isTestSource="false" /> - <sourceFolder url="file://$MODULE_DIR$/build-types/debug/rs" isTestSource="false" /> - <sourceFolder url="file://$MODULE_DIR$/build-types/debug/shaders" isTestSource="false" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/res" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/resources" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/assets" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/aidl" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/java" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/rs" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/shaders" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/res" type="java-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src" type="java-resource" /> - <sourceFolder url="file://$MODULE_DIR$/assets" type="java-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" /> - <sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" /> - <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/tests/res" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/tests/resources" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/tests/assets" type="java-test-resource" /> - <sourceFolder url="file://$MODULE_DIR$/tests/aidl" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/tests/java" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/tests/rs" isTestSource="true" /> - <sourceFolder url="file://$MODULE_DIR$/tests/shaders" isTestSource="true" /> - <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" /> - <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" /> - <excludeFolder url="file://$MODULE_DIR$/build/intermediates/check-manifest" /> - <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" /> - <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" /> - <excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaPrecompile" /> - <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" /> - <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" /> - <excludeFolder url="file://$MODULE_DIR$/build/intermediates/prebuild" /> - <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" /> - <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" /> - <excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" /> - <excludeFolder url="file://$MODULE_DIR$/build/intermediates/splits-support" /> - <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" /> - <excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" /> - <excludeFolder url="file://$MODULE_DIR$/build/outputs" /> - <excludeFolder url="file://$MODULE_DIR$/build/reports" /> - <excludeFolder url="file://$MODULE_DIR$/build/tmp" /> - </content> - <orderEntry type="jdk" jdkName="Android API 27 Platform" jdkType="Android SDK" /> - <orderEntry type="sourceFolder" forTests="false" /> - <orderEntry type="library" name="Gradle: com.android.support:support-v4-27.1.1" level="project" /> - <orderEntry type="library" name="Gradle: android.arch.lifecycle:common:1.1.0@jar" level="project" /> - <orderEntry type="library" name="Gradle: com.android.support:support-fragment-27.1.1" level="project" /> - <orderEntry type="library" name="Gradle: com.android.support:support-annotations:27.1.1@jar" level="project" /> - <orderEntry type="library" name="Gradle: android.arch.core:runtime-1.1.0" level="project" /> - <orderEntry type="library" name="Gradle: com.android.support:support-compat-27.1.1" level="project" /> - <orderEntry type="library" name="Gradle: android.arch.lifecycle:viewmodel-1.1.0" level="project" /> - <orderEntry type="library" name="Gradle: android.arch.lifecycle:livedata-core-1.1.0" level="project" /> - <orderEntry type="library" name="Gradle: com.android.support:support-media-compat-27.1.1" level="project" /> - <orderEntry type="library" name="Gradle: com.android.support:support-core-ui-27.1.1" level="project" /> - <orderEntry type="library" name="Gradle: android.arch.core:common:1.1.0@jar" level="project" /> - <orderEntry type="library" name="Gradle: com.android.support:support-core-utils-27.1.1" level="project" /> - <orderEntry type="library" name="Gradle: android.arch.lifecycle:runtime-1.1.0" level="project" /> - </component> -</module>
\ No newline at end of file |