<video controls src="http://downloads.kitenet.net/videos/git-annex-android.ogv" width="100%"></video>
<a href="http://downloads.kitenet.net/videos/git-annex-android.ogv">video</a>

Today's work:

* Fixed `git annex add` of a modified file in direct mode.
* Fixed bugs in the inode sentinal file code added yesterday.
* With some help from Kevin Boone, I now understand how KBOX works and
  how to use similar techniques to build my own standalone Android app
  that includes git-annex.

  Kevin is using a cute hack; he ships a tarball and some other stuff
  as (pseudo-)library files (`libfoo.so`), which are the only files
  the Android package manager deigns to install. Then the app runs one
  of these, which installs the programs.

  This avoids needing to write Java code that extracts the programs from
  one of its assets and writes it to an executable file, which is the
  canonical way to do this sort of thing. But I noticed it has a benefit too
  (which KBOX does not yet exploit). Since the pseudo-library file is installed
  with the X bit set, if it's really a program, such as busybox or git-annex,
  that program can be run without needing to copy it to an executable file.
  This can save a lot of disk space. So, I'm planning to include all
  the binaries needed by git-annex as these pseudo-libraries.
* Got the Android Terminal Emulator to build. I will be basing my first
  git-annex Android app on this, since a terminal is needed until there's 
  a webapp.
* Wasted several hours fighting with `Android.mk` files to include
  my pseudo shared library. This abuse of Makefiles by the NDK is what CDBS
  wants to grow up to be.. or is it the other way around? Anyway, it
  sucks horribly, and I finally found a way to do it without
  modifying the file at all. Ugh.
* At this point, I can build a `git-annex.apk` file containing a
  `libgit-annex.so`, and a `libbusybox.so`, that can both be directly
  run. The plan from here is to give git-annex the ability to
  auto-install itself, and the other pseudo-libraries, when it's run as
  `libgit-annex.so`.
