Skip to content

ipasimulator/ipasim

Repository files navigation

ipasim

Build status Downloads

This repository contains source code of ipasim, an iOS emulator for Windows. It takes a compiled iOS application and emulates it. However, only the application's machine code is emulated, whereas system functionality originally provided by iOS is translated to an equivalent functionality available on Windows. More detailed documentation is available.

Project status

Currently, only simple applications can be emulated. Working samples can be found in folder samples. For more information about (un)implemented features, see author's thesis, its Conclusion in particular.

Alternatives

Cloning the repository

We use Git Submodules (recursively), so make sure you clone with --recurse-submodules. We also use Git LFS, so make sure you have that installed if you want to get all files. You might also want to use --depth 1 for a faster checkout.

Building and installation

If you want to use the emulator, you can either build it from sources (that's slow), use partially prebuilt artifacts (that's fast and recommended if you want to make changes; however, you still need to have Docker and Visual Studio installed) or just use prebuilt binaries (recommended if you don't want to make changes).

Directory structure

  • deps contains third-party dependencies (mostly as Git submodules because patching was necessary).
  • docs contains documentation and issues.
  • include has C++ headers of the project.
  • samples contains sources of sample iOS applications and some other samples.
  • scripts contains various scripts, mostly supporting build of the project.
  • src contains C++ sources of the project.
    • HeadersAnalyzer is a tool that runs at compile-time, generating supporting code for the emulator.
    • IpaSimulator is the emulator itself.
    • objc contains our port of Apple's Objective-C runtime to Windows.

Executive summary

Poster preview

Research