Android port (OpenXcom)

From UFOpaedia
Jump to navigation Jump to search

Current version

Currently, the ongoing development is split in two parts. First, there's the SDL 2 branch of OpenXcom, which is basically OpenXcom ported to SDL2, with a few platform-specific #ifdefs thrown here and there. Then, there's the "one-click-build" Android Studio project with Android-specific stuff and submodules for dependencies. The project is (ir)regularly updated to be up-to-date with the current OpenXcom version.


The application is now a lot more user-friendly and doesn't require OpenXcom data from your PC. You still need the X-Com: Enemy Unknown and/or Terror From The Deep data files on your device.

Installation now goes like this:

  • Copy your X-Com: Enemy Unknown/Terror From The Deep files to a folder on your device. Each game should be in a separate folder!
  • Install the .apk on your device. You will need to enable installing apps from unknown sources.
  • Run the app. It will display a first-time configuration menu. There you might want to change your data/savefiles/configuration folders. After you've done that, tap one of the "Copy UFO/TFTD data from directory..." and navigate to the folder containing the game data (folders like GEODATA, GEOGRAPH, MAPS, ROUTES). If done correctly, the data will be copied to your game folder, and the "Status: " will become green and will contain a version string.
  • And that's it! You're ready to go.


You'll need a recent Android SDK, Android NDK r10d+ (currently built using r10e), JDK 7+.

  • Checkout the Android Studio project
  • Init submodules (git submodule init, git submodule update)
  • Create a file in the project root and put sdk.dir= and ndk.dir= properties there (pointing to your Android SDK and NDK respectively)
  • Run gradlew assemble

Some more specific instructions are on the Android Studio project page itself.

v1.0 (outdated)

There is a work-in-progress port to Android of OpenXcom here: github link

Installation instructions

  • Install OpenXcom on your PC/Mac and make sure it's working. You'll need original data for this step.
  • Get the OpenXcom apk from the official site or android port forum thread and install it on your device. Note that the builds in the forum thread are signed with a debug certificate, so you'll need to uninstall first if you're coming from an earlier build.
  • Copy the contents of your data folder from PC/Mac to /sdcard/OpenXcom/data on your device.
  • That's it! You're good to go.

Differences from PC version


  • Base naming dialogue box is moved higher than in the PC version; this is required to prevent on-screen keyboard from obscuring the input field.
  • You can cancel the placement of your first base if you accidentally put it in the wrong place (but see Known Issues).
  • Globe drag-scrolling is enabled by default.
  • You can pinch-zoom the globe.


  • Path preview and shoot preview are enabled by default.
  • Drag scrolling is enabled by default.
  • Turning is done by swiping from your soldier in the direction you want him to turn.

Known issues

  • There is currently no way to force firing.
  • If you cancel building your first base, the base will still be on the globe. It's just a graphical glitch, the base will disappear as soon as you select a new place for it.
  • Advanced options menu gets filled with duplicate items if you quit the game by using the "Quit game" button and then re-open it. You have to "swipe" it from recents to prevent this from happening.
  • The game won't recognize your device's locale. You'll still be able to select your language in the options menu.
  • Display filters are not yet properly supported. The only two options that actually work is "Disabled" and "Linear".


There is a work-in-progress port to Android of OpenXcom here: github link

I just want to play

Ok, so if you're too lazy to build it ;) and just want to give it a try, here are the steps you should follow:

  • Get the beta3 apk from here and install (you'll have to trust me on this, but it only asks for filesystem access)
  • Get the OpenXcom data. Unzip all of this in your phone under /storage/sdcard0/openxcom (you should have a /sdcard simlink, so /sdcard/openxcom should work too). If you have an external sd card, you can also place it there (/storage/extSdCard/openxcom).
  • You also need a copy of the original data (you can get that in many places if you don't have it, like steam). Copy the following folders in the same place (/sdcard/openxcom/data): GEODATA GEOGRAPH MAPS ROUTES SOUND TERRAIN UFOGRAPH UFOINTRO UNITS
  • Another, easier way to get the proper data would be to install the desktop version of OpenXcom, then copy the contents of its data folder to /sdcard/openxcom/data. Note that you STILL need the original data during the desktop OpenXcom installation.

Building from sources (linux)

So you're in for the hard route. It's been a while since I set up my build env so I might miss some detail, but I'll try to give an overview of how to build and point out the main caveats you may encounter:

  • Install android sdk & ndk
  • Check out the android branch from my github clone mentioned above
  • Put all the dependencies sources in the jni folder. Simlinks come in really handy, mine ended up looking like this:
[page@leaf:~/dev/OpenXcom/android]$ ls -l jni/
total 10
-rw-r--r--  1 page users   37 13 mai 21:43
-rw-r--r--  1 page users  216 18 mai 02:19
lrwxrwxrwx  1 page users   64 11 nov  2013 boost -> /nix/store/jqahwzcg7lags4k21vhr2d8zq931c359-boost-headers-1.54.0
lrwxrwxrwx  1 page users   37 16 nov  2013 libmikmod -> SDL2_mixer/external/libmikmod-3.1.12/
lrwxrwxrwx  1 page users   34 16 nov  2013 libwebp -> SDL2_image/external/libwebp-0.3.0/
lrwxrwxrwx  1 page users   28 11 nov  2013 SDL -> /home/page/dev/3rdparty/SDL/
lrwxrwxrwx  1 page users   21 11 nov  2013 SDL2_image -> /tmp/SDL2_image-2.0.0
lrwxrwxrwx  1 page users   21 16 nov  2013 SDL2_mixer -> /tmp/SDL2_mixer-2.0.0
drwxr-xr-x 10 page users 1736  1 mai 17:20 SDL_gfx
lrwxrwxrwx  1 page users   33 16 nov  2013 smpeg -> SDL2_mixer/external/smpeg2-2.0.0/
drwxr-xr-x  2 page users  120 18 mai 02:19 src
lrwxrwxrwx  1 page users   20 11 nov  2013 yamlcpp -> /tmp/yaml-cpp-0.5.1/
  • SDL version used is written in the changelog below
  • Notice that it's SDL_gfx, not SDL2_gfx. Also, you need to apply this patch (only present in svn, not latest tarball) for it to compile against SDL2.
  • Go to android folder and run 'ndk-build' and 'ant debug' (for release you need to setup a key)
  • If you have your android device plugged in, 'ant debug install'

Differences with PC version (battlescape)

  • Path preview is enabled by default
  • Shoot works in the same way as path preview, first press to aim, second to shoot
  • Phone back button acts as right button (quits shooting mode, for instance)
  • Swipe map to scroll
  • Swipe from selected soldier to make him turn and open doors

Known issues

  • Don't leave the game while in text enter mode. When going back, it won't reappear and you'll be stuck editing the text.
  • On a few devices, the colors appear wrong (shades of pink). It can be worked around by disabling the 'hardware overlay' in 'developer settings'


  • beta3 (13/05/14)
    • Update to upstream 9d292a2a82
    • Update SDL2 to 8767
    • OGG music is no longer needed (thanks to upstream)
    • Music no longer plays when entering background
    • Fixed turning on change soldier bug
    • Swiping map to scroll doesn't update destination position
  • beta2(r1) (21/02/14)
    • Update to upstream 0d04dcc
    • Update SDL2 to 8225
    • Exiting the app now works (thanks to SDL update)
    • Fixes #460 (exit units stats page with back button)
  • beta1


You can post on the forum thread or try to reach me on irc channel openxcom@freenode (nick 'page').