Porting git-annex to Android will use the Android native SDK. A hopefully small Java app will be developed, which runs the webapp daemon, and a web browser to display it. ### programs to port These will probably need to be bundled into the Android app, unless already available in the App Store. * ssh (native ssh needed for scp, not a client like ConnectBot) * rsync * gpg * git (not all git commands are needed, but core plumbing and a few like `git-add` are.) ### Android specific features The app should be aware of power status, and avoid expensive background jobs when low on battery or run flat out when plugged in. The app should be aware of network status, and avoid expensive data transfers when not on wifi. This may need to be configurable. ### FAT sucks The main media partition will use some awful FAT filesystem format from 1982 that cannot support git-annex's symlinks. (Hopefully it can at least handle all of git's filenames.) Possible approaches to this follow. (May want to consider which of these would make a Windows port easier too.) #### bare git repo with file browser Keep only a bare git repo on Android. The app would then need to include a file browser to access the files in there, and adding a file would move it into the repo. Not ideal. Could be improved some by registering git-annex as a file handling app on Android, allowing you to "send to" git-annex. #### implement git smudge filters See [[todo/smudge]]. Difficult. Would make git-annex generally better. #### keep files outside bare git repo Use a bare git repo but don't keep files in `annex/objects`, instead leave them outside the repo, and add some local mapping to find them. Problem: Would leave files unlocked to modification, which might lose a version git-annex dependend upon existing on the phone. (Maybe the phone would have to be always considered an untrusted repo, which probably makes sense anyway.) Problem: #### crazy `LD_PRELOAD` wrapper Need I say more? (Also, Android's linker may not even support it.)