summaryrefslogtreecommitdiffstats
path: root/android/README
diff options
context:
space:
mode:
authorSimon Rettberg2018-10-16 10:08:48 +0200
committerSimon Rettberg2018-10-16 10:08:48 +0200
commitd3a98cf6cbc3bd0b9efc570f58e8812c03931c18 (patch)
treecbddf8e50f35a9c6e878a5bfe3c6d625d99e12ba /android/README
downloadxscreensaver-d3a98cf6cbc3bd0b9efc570f58e8812c03931c18.tar.gz
xscreensaver-d3a98cf6cbc3bd0b9efc570f58e8812c03931c18.tar.xz
xscreensaver-d3a98cf6cbc3bd0b9efc570f58e8812c03931c18.zip
Original 5.40
Diffstat (limited to 'android/README')
-rw-r--r--android/README189
1 files changed, 189 insertions, 0 deletions
diff --git a/android/README b/android/README
new file mode 100644
index 0000000..2843296
--- /dev/null
+++ b/android/README
@@ -0,0 +1,189 @@
+
+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