android implementation of the Exapunks's solitaire varient
  • C++ 50.7%
  • Shell 40.6%
  • GLSL 5.7%
  • CMake 3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-07-28 07:56:50 +00:00
app Make win text more stylish 2026-07-28 09:55:39 +02:00
gradle/wrapper android+raylib skeleton 2026-07-23 16:58:49 +02:00
scripts Optimizing image loading and avoid copying objects 2026-07-27 10:59:47 +02:00
.gitignore Add apk signing keystore 2026-07-26 15:28:29 +02:00
.gitmodules android+raylib skeleton 2026-07-23 16:58:49 +02:00
build.gradle android+raylib skeleton 2026-07-23 16:58:49 +02:00
compile_commands.json Add compile-commands.json 2026-07-23 17:09:15 +02:00
gradle.properties android+raylib skeleton 2026-07-23 16:58:49 +02:00
gradlew android+raylib skeleton 2026-07-23 16:58:49 +02:00
README.md README: Add APK signing guidelines 2026-07-27 16:15:06 +02:00
settings.gradle android+raylib skeleton 2026-07-23 16:58:49 +02:00

exataire C++ Android app with raylib

Prerequisites

  • Android Studio (Flamingo or newer) or command-line tools
  • Android SDK API 24+
  • Android NDK r21+
  • CMake 3.22.1+

Project structure

exataire/
├── app/
│   ├── build.gradle                  # Android module config + CMake wiring
│   ├── proguard-rules.pro
│   └── src/main/
│       ├── AndroidManifest.xml       # NativeActivity, OpenGL ES 3 feature
│       ├── cpp/
│       │   ├── CMakeLists.txt        # Builds libexataire.so, links raylib
│       │   ├── main.cpp              # Entry point (standard main())
│       │   ├── include/              # Your headers
│       │   └── raylib/               # raylib source (submodule  see below)
│       └── res/values/strings.xml
├── build.gradle
├── settings.gradle
├── gradle.properties
└── gradle/wrapper/gradle-wrapper.properties

Adding raylib

raylib is expected at app/src/main/cpp/raylib/. Add it as a Git submodule:

git init
git submodule add https://github.com/raysan5/raylib.git app/src/main/cpp/raylib

Or clone it manually:

git clone https://github.com/raysan5/raylib.git app/src/main/cpp/raylib

Build

Android Studio

  1. Open the project root in Android Studio.
  2. Let Gradle sync finish.
  3. Build > Make Project, or run on a device/emulator.

Command line

./gradlew assembleDebug
# APK will be at app/build/outputs/apk/debug/app-debug.apk

Install on device

adb install app/build/outputs/apk/debug/app-debug.apk

Signing key (release builds)

Release APKs must be signed. The build reads signing credentials from a keystore.properties file at the project root (never commit this file).

1. Generate a keystore

keytool -genkeypair \
  -v \
  -keystore exataire-release.jks \
  -alias exataire \
  -keyalg RSA \
  -keysize 2048 \
  -validity 10000

You will be prompted for a keystore password, key password, and certificate details. Store the resulting exataire-release.jks somewhere safe outside the repo.

2. Create keystore.properties

Create keystore.properties at the project root with the following content, replacing values with your own:

storeFile=/absolute/path/to/exataire-release.jks
storePassword=your_keystore_password
keyAlias=exataire
keyPassword=your_key_password

3. Add to .gitignore

Make sure both files are excluded from version control:

keystore.properties
*.jks

4. Build a signed release APK

./gradlew assembleRelease
# APK will be at app/build/outputs/apk/release/app-release.apk

C++ entry point

main.cpp uses the standard int main() signature. raylib's Android backend (android_native_app_glue) bridges this to android_main automatically.

Adding your own source files

Place .cpp files under app/src/main/cpp/src/ — the CMakeLists.txt glob-collects everything there with GLOB_RECURSE.

Assets credits

card textures by art-brickles