Skip to content

Instantly share code, notes, and snippets.

@deniska
Created July 13, 2024 13:16
Show Gist options
  • Save deniska/f1ee73e18e1444eb724c01f933b6785d to your computer and use it in GitHub Desktop.
Save deniska/f1ee73e18e1444eb724c01f933b6785d to your computer and use it in GitHub Desktop.
Example of building raylib app for android
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android" package="org.example.pongpong">
<uses-sdk android:minSdkVersion="29"
android:targetSdkVersion="29" />
<uses-permission android:name="android.permission.SET_RELEASE_APP"/>
<application android:debuggable="true" android:hasCode="false" android:label="PongPong" tools:replace="android:icon,android:theme,android:allowBackup,label" android:icon="@mipmap/icon">
<activity android:configChanges="keyboardHidden|orientation" android:label="PongPong" android:name="android.app.NativeActivity" android:exported="true">
<meta-data android:name="android.app.lib_name" android:value="pongpong"/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
#!/bin/bash
set -xe
ANDROID_SDK=/home/denis/Android/Sdk
ANDROID_NDK=/home/denis/sdk/android-ndk-r25b
ARCH=aarch64
CC=$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/$ARCH-linux-android29-clang
BUILD_TOOLS=/home/denis/Android/Sdk/build-tools/33.0.0/
AAPT=$BUILD_TOOLS/aapt
STOREPASS=secret
DNAME="CN=example.com, OU=ID, O=Example, L=Doe, S=John, C=GB"
KEYSTOREFILE=my-release-key.keystore
ALIASNAME=standkey
# only need to run once to generate a key
#keytool -genkey -v -keystore $KEYSTOREFILE -alias $ALIASNAME -keyalg RSA -keysize 2048 -validity 10000 -storepass $STOREPASS -keypass $STOREPASS -dname "$DNAME"
#exit 0
$CC -c ../pongpong.c -I/home/denis/private/prg/raylib/src -fPIC
$CC -c /home/denis/sdk/android-ndk-r25b/sources/android/native_app_glue/android_native_app_glue.c -fPIC
$CC pongpong.o android_native_app_glue.o \
-L/home/denis/private/prg/raylib/src \
-landroid -llog -lEGL -lGLESv2 -lraylib -lm \
-shared \
-o libpongpong.so
rm -rf pongpong_apk pongpong.apk pongpong_u.apk
mkdir -p pongpong_apk/lib/arm64-v8a
cp libpongpong.so pongpong_apk/lib/arm64-v8a/
mkdir -p pongpong_apk/assets
$AAPT package -f -F pongpong_u.apk -I $ANDROID_SDK/platforms/android-32/android.jar \
-M AndroidManifest.xml -S res -A pongpong_apk/assets -v --target-sdk-version 29
cd pongpong_apk
$AAPT add ../pongpong_u.apk lib/arm64-v8a/libpongpong.so
cd ..
$BUILD_TOOLS/zipalign -v 4 -p pongpong_u.apk pongpong.apk
$BUILD_TOOLS/apksigner sign --key-pass "pass:$STOREPASS" --ks-pass "pass:$STOREPASS" --ks $KEYSTOREFILE pongpong.apk
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment