This repository contains the JIT Enabler iOS app and backend server for enabling Just-In-Time (JIT) compilation on iOS devices.
The iOS app is located in the root directory and consists of:
JITEnabler/- The Swift source code for the iOS appJITEnabler.xcodeproj/- The Xcode project file
The backend server is located in the JIT Backend/ directory and is built with Flask.
-
Navigate to the JIT Backend directory:
cd "JIT Backend" -
Install the required dependencies:
pip install -r requirements.txt -
Run the server:
python app.py
The iOS app is built using GitHub Actions with a robust build process that:
- Sets up the iOS build environment
- Builds the app for iOS simulator (no code signing required)
- Creates a properly structured IPA file
- Verifies the IPA file structure
- Uploads the build as a GitHub Actions artifact
The repository includes multiple build methods to ensure reliability:
- Makefile:
Makefile.iosprovides a structured build process with various targets - Build Script:
build-ios.shoffers a simplified way to run the Makefile - GitHub Actions Workflow: Orchestrates the build process in CI/CD
The build process is defined in .github/workflows/ios-app-build.yml. The workflow is triggered on:
- Push to the main branch
- Pull requests to the main branch
- Manual workflow dispatch
The workflow has been simplified to not require any GitHub secrets. All necessary values are hardcoded in the workflow file.
After the workflow completes:
- Go to the Actions tab in your GitHub repository
- Click on the completed workflow run
- Scroll down to the "Artifacts" section
- Download the "ios-app-build" artifact which contains the IPA file
You can build the app locally using the following methods:
./build-ios.shmake -f Makefile.ios clean setup build-ipaThe IPA file will be created in the build/ios/ipa/ directory.
- Open the Xcode project:
open JITEnabler.xcodeproj - Configure the backend URL in the app settings
- Build and run the app on your iOS device or simulator
The Makefile provides several targets for different build scenarios:
clean: Removes all build artifactssetup: Sets up the build environmentbuild-simulator: Builds the app for iOS simulatorcreate-simulator-ipa: Creates an IPA from the simulator buildbuild-ipa: Creates the final IPA fileinfo: Shows information about the build configuration
The generated IPA file is a standard iOS app package with the following structure:
Payload/
JITEnabler.app/
Info.plist
...app contents...
The JIT Enabler system works by:
- Registering your device with the secure JIT backend
- Requesting JIT enablement for your selected app
- Applying the necessary memory permission changes to enable JIT
- All communication is encrypted and secure
The app uses different techniques based on your iOS version to ensure compatibility with iOS 15, 16, and 17+.
The JIT Enabler works with many apps, including:
- Emulators: Delta, PPSSPP, UTM, iNDS, Provenance
- JavaScript Apps: JavaScriptCore-based apps
- Development Tools: iSH, a-Shell, Pythonista
- Custom Apps: Any app that could benefit from JIT
This project is for educational and personal use only.