Automated Extension Building, No More Manual Hustle
Make Extensions For App Inventor, Kodular, Niotron & Other AI2 Based No-code App Builders.
AIXER is a powerful build system for MIT App Inventor extensions. Create dependency-based extensions like AdMob, Play Billing, ExoPlayer, and more with CLI tools, a desktop GUI, and a reproducible packaging pipeline.
AIXER ships with professional-grade tooling for building, testing, and shipping App Inventor extensions.
| Capability | AIXER |
|---|---|
| CLI builds | Yes |
| Desktop GUI (AIXER Studio) | Yes |
Environment diagnostics (aixer doctor) | Yes |
| Maven + Gradle dependency resolution | Yes |
| Auto-import → dependency inference | Yes |
| ProGuard / R8 release builds | Yes |
| Kotlin support | Yes |
| Multi-component extensions | Yes |
Markdown docs (build --docs) | Yes |
Annotation stripping in output .aix | Yes (default) |
| FAST / Rush project migration | aixer migrate |
AIXER ships with everything you need to build, test, and ship professional App Inventor extensions.
Create new extension projects instantly with aixer init. Supports Java and Kotlin with optional SDK presets.
Automatically resolve Maven & Gradle dependencies. Auto-detect dependencies from Java/Kotlin imports.
Curated SDK presets for AdMob, Lottie, Play Billing, ExoPlayer, OneSignal, Firebase, and more.
Build production-ready .aix files with ProGuard/R8 optimization. Smaller, obfuscated, and secure.
Launch the AIXER Studio desktop application with aixer gui for a visual build experience.
Audit your development environment and project with aixer doctor — catch issues early.
Auto-generate Markdown documentation for your extension with aixer build --docs.
Add custom XML for ExoPlayer, FileProvider, layouts, drawables, and more. Validated with aixer xml check.
Seamlessly migrate existing FAST or Rush projects to AIXER with aixer migrate.
Write your extensions in Kotlin with full build support and dependency resolution.
Support for red dropdown helper blocks via @Options and OptionList enums.
Works on Windows, Linux, and macOS with bundled Python and JDK support.
Manage shared JARs across all projects with aixer global-jar commands.
Build extensions with multiple components in a single .aix package.
Automatically strip compile-time annotations from shipped bytecode for smaller .aix files.
Dex JAR files with D8/R8 and manage optional build tools like rt.jar, desugar.jar, jetifier.jar.
Update AIXER to the latest version with aixer update.
Automatically generated GitHub Actions workflow on init for continuous integration.
AIXER is smart enough to automatically handle to bring the extensions in your hands with its smart auto proguard rules handling, shrinking and sdks' jar packaging capabilities.
Choose your platform and follow the steps to get AIXER up and running.
Install Python 3.8+ on your system
Open Command Prompt (Cmd) > navigate to the AIXER folder > run this command:
After that run this command:
Installation Done!
Install Python 3.8+ on your system
Open Terminal > navigate to the AIXER folder > run this command:
After that, run this command:
Installation Done!
pip3 instead of python3 -m pip, or add --user if you hit a permissions error.
Install Python 3.8+ on your system
Open Terminal > navigate to the AIXER folder > run this command:
After that, run this command:
Installation Done!
pip3 instead of python3 -m pip, or add --user if you hit a permissions error.
Get started with a free trial, then unlock all features with a premium license.
Try AIXER free for 1 day with full access to all features. No credit card required. Start building extensions immediately.
Master AIXER with its complete set of CLI commands for building, managing, and deploying extensions.
| Command | Description | Example |
|---|---|---|
| aixer init | Create a new extension project with optional SDK presets | aixer init MyExtension --sdk admob --sdk billing |
| aixer build | Build extension into .aix file. Use --release for ProGuard/R8 |
aixer build --release --docs |
| aixer sync | Download/sync all Maven/Gradle dependencies | aixer sync --clean |
| aixer doctor | Audit your AIXER environment and current project | aixer doctor --json |
| aixer sdk | Manage SDK presets (list, info, add, suggest) | aixer sdk list aixer sdk add lottie billing aixer sdk info admob |
| aixer migrate | Convert FAST or Rush project to AIXER | aixer migrate --force |
| aixer xml | Validate and normalize custom XML resources | aixer xml check aixer xml normalize res/xml/foo.xml |
| aixer gui | Launch AIXER Studio desktop GUI application | aixer gui |
| aixer install | Install Python, JDK, and AIXER build tools | aixer install |
| aixer update | Update AIXER to the latest version | aixer update aixer update --pip |
| aixer activate | Register email or refresh AIXER license | aixer activate --email user@example.com |
| aixer license | Show current license status | aixer license |
| aixer setup | Download required global JARs (android.jar, simple_components.jar) | aixer setup |
| aixer global-jar | Manage global JARs shared across all projects | aixer global-jar list aixer global-jar add mylib.jar aixer global-jar remove mylib.jar |
| aixer dex | Dex a JAR using D8/R8 from bundled tools | aixer dex input.jar --output output.jar |
| aixer tools | Manage optional build tools (rt.jar, desugar.jar, etc.) | aixer tools status aixer tools get rt.jar |
| aixer uninstall | Uninstall AIXER and remove local cached data | aixer uninstall --yes |
| aixer version | Show AIXER version | aixer version |
Understand the AIXER project structure, key configuration files, and how to edit them for your extensions.
When you run aixer init MyExtension, AIXER generates the following project layout:
src/, dependencies go in deps/, custom XML in xml/, and the built extension lands in output/. All configuration is centralized in aixer.yml.Your extension's main Java class extends AndroidNonvisibleComponent and uses App Inventor annotations. Here is a typical AdMob extension as an example:
| Element | Change | Why |
|---|---|---|
| package | Set to your unique package name, e.g. com.yourcompany.yourext |
Uniquely identifies your extension in App Inventor |
| @DesignerComponent(version) | Increment when you publish updates | Tells App Inventor to update the component |
| @DesignerComponent(description) | Describe what your extension does | Shown to users in the App Inventor palette |
| className | Rename your class (e.g. AdmobAdsPro) |
Must be unique; becomes the component name in App Inventor |
| @UsesPermissions | Add Android permissions your extension needs | Required for accessing device features (Internet, Camera, etc.) |
| @UsesLibraries | Reference library JARs your extension depends on | Ensures required libraries are bundled in the .aix |
| @SimpleFunction | Add methods with this annotation | Each annotated method becomes a block in App Inventor |
@SimpleEvent to fire events back to App Inventor, @SimpleProperty for properties, and @Options for dropdown helper blocks. Use aixer init --lang kotlin to generate a Kotlin version instead.This is the central configuration file for your AIXER project. AIXER reads this file to understand how to build your extension, what dependencies to resolve, and which tools to use.
| Field | What to Change | Why |
|---|---|---|
| name | Set to your extension name, e.g. AdmobAdsPro |
Used as the output filename (AdmobAdsPro.aix) and component name |
| package | Your unique Java package, e.g. com.yourcompany.ads |
Must match the package in your Java file. Prevents conflicts with other extensions |
| version / version_name | Increment version (integer) for each release; version_name is the display string |
Users see version_name; code uses version to check for updates |
| language | java or kotlin |
Tells AIXER which compiler to use. Must match your source code language |
| proguard | Set true for release builds |
Shrinks and obfuscates your extension code. Use aixer build --release to activate |
| dependencies.remote | List Maven coordinates: group:artifact:version |
AIXER downloads these automatically during aixer sync. Add your SDK dependencies here |
| dependencies.local_jars | List JAR filenames placed in deps/jars/ |
For dependencies you've downloaded manually. AIXER bundles them into the .aix |
| xmls | Map XML source files: source: xml/file.xml, target: xml/file.xml |
Custom XML resources like FileProvider paths, ExoPlayer layouts. The target must NOT start with res/ (App Inventor adds it). Use aixer xml check to validate |
| strip_annotations | Keep true (default) |
Removes compile-time annotations from bytecode, resulting in a smaller .aix file |
| sdks | Add preset IDs like admob, billing, lottie |
Pre-configures dependencies, ProGuard rules, and manifest entries. Use aixer sdk list to see all available presets |
aixer sync after adding new dependencies in dependencies.remote. Always run sync before building!This file is auto-generated by aixer build and controls which JARs are included in or excluded from your final .aix file. You can edit it to fine-tune the content of your extension package.
| Section | Usage | Why |
|---|---|---|
| whitelist | Add partial JAR names to force include them in the .aix | Use when AIXER's auto-detection misses a required library. The name is matched as a substring against all resolved JAR filenames |
| blacklist | Add partial JAR names to exclude them from the .aix | Use to strip unwanted libraries (e.g. kotlin-stdlib if the user already has it, or documentation JARs). Reduces .aix file size |
jars_config: aixer_jars.yml to your aixer.yml. Delete this file to regenerate it from scratch on the next build.You can add permissions, activities etc. directly to AndroidManifest.xml file.
AIXER is lightweight and works with standard development tools.
Bundled with Windows installer
JDK 17 recommended (auto-installed)
Fully cross-platform
Have questions or need support? We're here to help.