百科页面 'Working for Android' 删除后无法恢复,是否继续?
[!NOTE] This guide is intended for Android development on Windows platform, for alternative platforms, check:
Android requires a set of tools to do all the build process to generate an APK:
You can download the JDK from here and extract it to a directory. The raylib Makefile.Android
scripts expect it to be located at C:\open-jdk
.
Actually, the Android SDK consists of several tools, but you can install everything at once by downloading Android Studio and installing the full package.
Alternatively, you can install only the required tools manually. To do this, download the Command line tools package, located at the bottom of this page.
Decompress the downloaded sdk-tools-...
file into a folder named android-sdk
. One of the included tools is sdkmanager, a command-line utility for installing the required packages.
Open a command prompt, navigate to android-sdk/tools/bin
, and run the following commands:
sdkmanager --sdk_root=<path_to_sdk> --update
sdkmanager --sdk_root=<path_to_sdk> --install build-tools;<version>
sdkmanager --sdk_root=<path_to_sdk> --install platform-tools
sdkmanager --sdk_root=<path_to_sdk> --install platforms;android-<api_level>
sdkmanager --sdk_root=<path_to_sdk> --install extras;google;usb_driver
[!NOTE] To find available versions and API levels:
sdkmanager --sdk_root=<path_to_sdk> --list
To develop with Raylib in C, you need to install the Android Native Development Kit (NDK).
sdkmanager
:
sdkmanager --sdk_root=<your_path_sdk> --install ndk;<version>
The Android NDK supports multiple Android APIs and architectures (ABIs). The supported ABIs are: armeabi-v7a
, arm64-v8a
, x86
, and x86_64
. Support for riscv64
is experimental in the latest NDK versions (see this for details).
By default, Raylib’s scripts use NDK r21 and expect it to be located at C:\android-ndk
.
You can build raylib using either CMake or Make. Follow the steps below depending on your preferred method.
Using CMake
Clone the repository:
git clone https://github.com/raysan5/raylib.git
cd raylib
Build raylib as a static library:
cmake -B Build \
-G <build_system> \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_TOOLCHAIN_FILE=<path_to_ndk>/build/cmake/android.toolchain.cmake \
-DPLATFORM=Android \
-DANDROID_ABI=<abi> \
-DANDROID_PLATFORM=<minimum-api-level> \
-DBUILD_EXAMPLES=OFF # or ON if you want examples
cmake --build Build
Explanation of placeholders:
<build_system>
→ Your build system generator. Ninja
is recommended.<path_to_ndk>
→ Full path to your installed Android NDK directory.<abi>
→ Target CPU architecture: armeabi-v7a
, arm64-v8a
, x86
, or x86_64
.<minimum-api-level>
→ Minimum Android API level to support (See this for details).After building, the static library libraylib.a
will be located in Build/raylib/
Using Make
cd raylib/src
make PLATFORM=PLATFORM_ANDROID \
ANDROID_NDK=<path_to_ndk> \
ANDROID_API_VERSION=<minimum-api-level> \
ANDROID_ARCH=<abi>
libraylib.a
will be generated in raylib/src/
Build raylib as a shared library:
You can build raylib as a shared library by passing the appropriate option for your build system:
-DBUILD_SHARED_LIBS=ON
RAYLIB_LIBTYPE=SHARED
You might also find this discussion helpful.
[!WARNING] Your Android device may have a 64-bit CPU, but the installed OS could still be 32-bit. Make sure the selected ABI matches your device architecture.
The Raymob repository offers an implementation of raylib specifically designed for Android Studio. This template provides a ready-to-use configuration for developing applications using raylib.
This implementation for Android Studio includes the following:
gradle.properties
file to define all configuration variables of your project.To use the Raymob template:
app/cpp
directory.If you already have the NDK and SDK API 33 without Android Studio, you should still be able to compile using the gradlew
or gradlew.bat
files.
The Raymob template can be customized to fit the specific needs of your project. You can add additional dependencies or libraries to the project by modifying gradle.build
or CMakeLists.txt
.
By default, the Raymob template targets APIs 24 to 33, which corresponds to Android 7.0 to Android 13 (so 96.2% of devices according to apilevels.com). You can also adapt it to target other API versions if necessary.
If you have any questions or encounter issues while using this implementation, you can seek help by submitting an issue on the Raymob repository.
Step 1. To build an APK, navigate to directory raylib-game-template/src/
and edit Makefile.Android
. Replace these
settings with yours where apropriate:
ANDROID_ARCH ?= ARM
ANDROID_API_VERSION = 28
JAVA_HOME ?= C:/open-jdk
ANDROID_HOME ?= C:/android-sdk
ANDROID_NDK ?= C:/android-ndk
ANDROID_TOOLCHAIN ?= $(ANDROID_NDK)/toolchains/llvm/prebuilt/windows-x86_64
ANDROID_BUILD_TOOLS ?= $(ANDROID_HOME)/build-tools/29.0.3
ANDROID_PLATFORM_TOOLS = $(ANDROID_HOME)/platform-tools
Then build the apk with:
mingw32-make PLATFORM=PLATFORM_ANDROID
WARNING: Make sure the MAKE tool to use is properly configured in the Makefile:
# Define default make program
MAKE = make
ifeq ($(PLATFORM),PLATFORM_DESKTOP)
ifeq ($(PLATFORM_OS),WINDOWS)
MAKE = mingw32-make
endif
endif
ifeq ($(PLATFORM),PLATFORM_ANDROID)
MAKE = mingw32-make
endif
WARNING: If compiled project is developed in C++ instead of C, there are additional considerations:
To compile the game into a shared library (libmain.so
) the following flags are required:
clang
: -std=c99 -lc
clang++
: -std=c++11 -lc++
Add required shared libraries to the generated APK:
$BUILD_TOOLS/aapt add $__OUTP/$NAME.apk lib/$ABI/libmain.so
cp $TOOLCHAIN/../../../../sources/cxx-stl/llvm-libc++/libs/$ABI/libc++_shared.so lib/$ABI/libc++_shared.so
$BUILD_TOOLS/aapt add $__OUTP/$NAME.apk lib/$ABI/libc++_shared.so
$BUILD_TOOLS/aapt add $__OUTP/$NAME.apk lib/$ABI/libmain.so
Step 2: To install the APK into connected device (previously intalled drivers and activated USB debug mode on device):
%ANDROID_SDK_TOOLS%\adb install simple_game.apk
Step 4: To view log output from device:
%ANDROID_SDK_TOOLS%\adb logcat -c
%ANDROID_SDK_TOOLS%\adb -d logcat raylib:V *:S
My pc os is win8.1 x64
_Step 1.need to download these (需要下载这些)
msys2-x86-64 https://www.msys2.org/
run command in msys:
pacman -S mingw-w64-i686-toolchain (select default 选择默认的)
pacman -S mingw-w64-x86_64-make
android-studio https://developer.android.com/studio
use SDK Manager download these:
sdk with android-29
NDK 25.0.8775105
build tools 29.0.3
platform-tools
openjdk-8u332-b09-windows-64 https://www.openlogic.com/openjdk-downloads
raylib https://github.com/raysan5/raylib
raylib-game-template https://github.com/raysan5/raylib-game-template
_Step 2.confirm the installation path (确认安装路径)
mingw-w64 C:\msys64\mingw64\bin
NDK D:\Program_Files\android_sdk\ndk\25.0.8775105
openjdk D:\Program_Files\openjdk
android sdk D:\Program_Files\android_sdk
raylib C:\raylib
raylib-game-template D:\raylib-game-template-main
_Step 3.set environment variables (设置环境变量)
JAVA_HOME D:\Program_Files\openjdk
Path C:\msys64\mingw64\bin
_Step 4.edit makefile and makefile.android (编辑makefle和makefile.android)
c:\raylib\src\Makefile
line 203 ANDROID_NDK ?= D:/Program_Files/android_sdk/ndk/25.0.8775105
line 197 ANDROID_ARCH ?= arm64
line 198 ANDROID_API_VERSION ?= 29
d:\raylib-game-template-main\src\Makefile.Android
line 28 RAYLIB_PATH ?= C:\raylib
line 33 ANDROID_ARCH ?= ARM64
line 34 ANDROID_API_VERSION = 29
line 51 JAVA_HOME ?= D:/Program_Files/openjdk
line 52 ANDROID_HOME ?= D:/Program_Files/android_sdk
line 53 ANDROID_NDK ?= D:/Program_Files/android_sdk/ndk/25.0.8775105
line 55 ANDROID_BUILD_TOOLS ?= $(ANDROID_HOME)/build-tools/29.0.3
_Step 5.generate libraylib.a for android (生成安卓平台的libraylib.a)
in c:\raylib\src
run command:
mingw32-make PLATFORM=PLATFORM_ANDROID
_Step 6.generate APK (生成APK)
in d:\raylib-game-template-main\src
run command:
mingw32-make PLATFORM=PLATFORM_ANDROID
when compiling,if report "fatal error: 'asm/types.h' file not found ", you need copy "asm-generic" and renamed as "asm". (the path "D:\Program_Files\android_sdk\ndk\25.0.8775105\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\asm-generic")
If you have any doubt, just let me know.
www.raylib.com | itch.io | GitHub | Discord | YouTube
百科页面 'Working for Android' 删除后无法恢复,是否继续?