XkiLoader

XkiLoader is a plugin for AML (Android Mod Loader), which serves as the core modding framework for GTA San Andreas on Android. Acting as a dynamic modloader inspired by the classic PC Modloader by thelink2012, it completely eliminates the need to manually import mod files using external applications like GTA IMG Tool or TXD Tool.

Instead of rebuilding massive game archive files, you can simply copy your GTA SA Android mod files directly into the xkiloader/ directory to load them instantly in-game.

Configuration Path Settings

By default, XkiLoader scans the directory sdcard/xkiloader/ for your mods. However, if you want to customize the search paths, you can modify the configuration file:

Configuration File
XkiiGnss.XkiLoader.ini

Open the configuration file and configure your custom directories. For example, to redirect the paths to the game's private data folder:

XkiiGnss.XkiLoader.ini
TexturePath=/storage/emulated/0/Android/data/com.rockstargames.gtasa/xkiloader
AssetsPath=/storage/emulated/0/Android/data/com.rockstargames.gtasa/xkiloader

In-game Mod Control

XkiLoader provides a native in-game options menu that allows you to manage your mods dynamically without leaving the game.

Navigate to:

Options > XkiLoader

Inside this menu, you can toggle individual mod folders ON or OFF. Note that you must restart the game for these changes to take effect.

Installing Models & Textures (.dff, .txd, .col, .png)

To install custom assets, models, and texture modifications, place your files inside the main directory:

Main Directory Path
xkiloader/

XkiLoader fully supports nested subfolders. You can create any folder structure inside the xkiloader/ directory to keep your mods organized, and the loader will automatically read all nested files recursively.

For example, you should create descriptive folders inside `xkiloader/` to group skins, vehicles, or weapons:

Folder Organization Example
xkiloader/
├── skins/ # For custom player or ped skins
│ ├── cj_outfit_hd/
│ │ ├── torso.dff
│ │ └── torso.txd
│ └── ryder_hd/
│ ├── ryder.dff
│ └── ryder.txd
└── vehicles/ # For custom vehicle mods
└── infernus_hd/
├── infernus.dff
└── infernus.txd

Installing Data Files (.cfg, .dat, etc.)

For modifications that replace game configuration and data files normally found in the game's original `data/` folder (such as handling.cfg, timecyc.dat, shopping.dat, etc.), place them inside the following subdirectory:

Data Path
xkiloader/data/

Subfolders are also supported. It supports overriding any files located inside the game's default data/ directory, including its subfolders (such as data/maps/...).

Data Folder Structure Example
xkiloader/
└── data/
├── handling.cfg # Custom vehicle physics
├── timecyc.dat # Custom atmosphere cycle
└── maps/ # Supports game data subfolders
└── lae/
└── lae.ipl

Installing Animations (.ifp)

If you want to install custom animations (such as ped.ifp, beach.ifp, or fight style animation overrides), place them into the anim directory:

Animations Path
xkiloader/anim/

You can name this folder anim or anything else inside xkiloader/. The loader will scan it recursively and replace the corresponding animation files in-game automatically.

Animations Folder Structure Example
xkiloader/
└── anim/
├── ped.ifp # Custom walk and idle animations
└── beach.ifp # Custom environment anims

Installing Custom Maps (gta.dat Patching)

Setting up custom maps (which usually require registry modifications like IDE and IPL lists inside gta.dat) is done dynamically with XkiLoader.

Follow these steps:

  • Move the game's main configuration file gta.dat into the xkiloader/data/ folder:
    xkiloader/data/gta.dat
  • Create a dedicated directory inside xkiloader/ for your map assets, for example:
    xkiloader/custom_maps/
  • Put your custom map configuration files (such as vege.ipl and vege.ide) directly inside the custom_maps/ folder.
Map Setup Folder Structure Example
xkiloader/
├── data/
│ ├── gta.dat # Copy your base gta.dat here
│ └── gta.patched.dat # Dynamically compiled at runtime
└── custom_maps/
├── vege.ipl # Map coordinates (IPL)
└── vege.ide # Map definitions (IDE)

Why this works:
When the game launches, XkiLoader scans the xkiloader/data/ directory for gta.dat. It automatically reads all layout configurations, appends the path definitions pointing to the new maps (e.g. IPL custom_maps/vege.ipl), and compiles them into a temporary combined file named gta.patched.dat. This patches the map dynamically without altering your vanilla installation.

Custom Vehicle Data Patching

XkiLoader allows you to edit vehicle data (such as handling settings, vehicle parameters, and colors) dynamically without directly modifying the game's original configuration files.

How to Set Up:

  • Move the game's default vehicle configuration files into the xkiloader/data/ directory:
    Required Base Files
    handling.cfg
    vehicles.ide
    carcols.dat
  • Inside your custom vehicle mod folder (for example, xkiloader/vehicles/infernus/), create a text file named after the vehicle:
    infernus.txt
  • Write the custom data blocks directly inside this text file:
    infernus.txt Example
    handling.cfg
    INFERNUS      1400.0  2900.0  2.0  0.0  0.0  -0.1  0.2  4  0.25  ...
    
    vehicles.ide
    411, infernus, infernus, car, INFERNUS, INF_SUIT, null, executive, 7, 0, 0, ...
    
    carcols.dat
    infernus, 1,1, 2,2, 3,3, 4,4, 5,5, 6,6, 7,7
Folder Structure for Vehicle Patching
xkiloader/
├── data/
│ ├── handling.cfg # Copy base configs here
│ ├── vehicles.ide
│ ├── carcols.dat
│ └── patched/ # Dynamic patched configs created here
│ ├── handling.cfg
│ ├── vehicles.ide
│ └── carcols.dat
└── vehicles/
└── infernus/
├── infernus.dff
├── infernus.txd
└── infernus.txt # Vehicle config overrides

Why this works:
When the game launches, XkiLoader checks the xkiloader/data/ directory for the base configuration files. If present, the loader parses the vehicle .txt files (like infernus.txt) from your custom folders, inserts their custom records into the matching tables, and generates dynamically compiled patched versions under xkiloader/data/patched/.

Texture Scaling & Renaming

You can configure folder-specific texture adjustments like scaling and renaming by creating a configuration file directly inside the target mod/texture folder:

Configuration File
texture.ini

1. Texture Scaling

If you want to automatically resize all textures inside a specific folder (e.g. downscaling high-resolution 1024x1024 textures to 512x512 to save memory and boost performance), define the scale key under the [texture] group:

texture.ini (Scaling)
[texture]
scale = 0.5  # Halves the resolution (e.g., 1024 -> 512)
# scale = 0.25 # Reduces resolution to a quarter (e.g., 1024 -> 256)

2. Texture Renaming

To avoid texture name conflicts (for example, if two model `.dff` files refer to the same texture name like baju but look different), you can rename the texture reference for specific folders. Add a [rename] section inside the texture.ini file:

texture.ini (Renaming)
[rename]
baju = hoodie  # Dynamically renames the texture reference from "baju" to "hoodie"

Real-time Texture Refresh

XkiLoader allows you to replace textures dynamically without restarting the game:

  • Move the updated texture files directly into your xkiloader/ folder.
  • Open the game and navigate to:
    Settings > XkiLoader > Refresh Texture
  • The updated textures will instantly reload and display in the game world without requiring a restart.