Now you can.
You produce real apps, identical to those that can be produced with XCode (they are not "web apps"). They're iOS 6, iOS 5, iOS 4 and iOS 3 (starting from version 3.1) compatible, thus deployable on iPhone, iPod and iPads.
You may write your code in Objective-C, in C++, C or ARM assembly, like in XCode (ARC and blocks are supported).
+ Full support for iOS 6.1: All the new frameworks are available.
+ The environnement provides the GDB interactive debugger version 1822.
+ Project folders are now relocatable.
+ Professionals: integrate this compiler, linker and binary tools easily in your own production toolchain!
+ Ability to target a particular architecture: armv6, armv7, armv7f (Apple A5), armv7s (Apple A6).
+ Automatic Reference Counting (ARC) is supported.
+ Remote debug console: error messages now display live on your PC.
+ Use the very XCode tools! Compiler/assembler: clang/llvm 3.2-svn, linker: ld64 v134.9
+ Compile your iPhone apps directly inside Visual Studio (Visual C++ Express is also supported).
+ Generate automatically .deb packages (Cydia) and .ipa (iTunes). Sync with iTunes.
+ Includes 18 examples, among which an improved port of the Wolfenstein 3D game with OpenGL rendering, spatialized audio, 3D models, accelerometer-based movement and fully commented source code (see screenshot here)
All this for only €30 (ar. $40 USD)!
Download an free evaluation version here
The build environnement comprises:
+ a native assembly/C/C++/Objective-C iOS cross-compiler (clang/llvm), compiled for Windows
+ an iOS linker (Apple ld64), ported to Windows
+ the XCode binary development tools for iOS (Apple cctools), ported to Windows
+ an improved code pseudo-signature tool
+ an interactive debugger for iOS (Apple's branch of GDB)
+ a Visual Studio project creation wizard and Makefile creator + a remote debug console
+ an automatic .plist file converter (requires the iTunes DLLs)
+ a PNG file normalizer
As well as 18 examples, including source code and Makefile, compilable out of the box.
Project creation wizard
A successful compilation
Your first app!
The unmissable OpenGL cube
A preferences bundle (Windows Sharing)
The installed sample apps
NEW: Exclusive improved Wolf3D port!
In order to download the software, a fixed contribution of €30 (ar. $40 USD) is requested.
You will receive an e-mail containing the download link as soon as your donation will have been committed.
If you have no PayPal account, just click on the Continue link at the bottom left of the PayPal page, above the bank card logos.
If you have no credit card, you may do a bank transfer. Send me an e-mail and I will give you my bank information code. As soon as I receive your donation I will send you the software.
If you don't receive the download link by e-mail once your donation has been committed, please click here to get a direct link.
If there was the slightest problem just e-mail me and provide your name, and the date and amount of your contribution. I will help you solve it right away.
To download an evaluation version, click here. This version is limited to 1 launch on a real iDevice for each compiled app. It enables you nevertheless to review thoroughly all the features of the software.
The following samples provided with this build environment are available for free (all of them include fully commented source code & Makefile):
All these examples now come with a Visual Studio project file (*.vcproj).
AdobeNativeExtensionDemo - Shows how to create a native Adobe AIR extension that enables the user to interact with the device's audio volume.
AVMeter - A nice MP3 player with a vu-meter. Shows how to retrieve noise analysis informations from an AVAudioPlayer object and display them in a custom UIView control.
CamTest - This sample shows how to acquire, process and display a video stream from the device's cameras, using the AVFoundation framework.
ConsoleHello - A simple Hello World in console mode.
CoverFlow - A scrollable music album cover flow control example. Subclassed from UIScrollView, these effects use the CoreAnimation framework.
DatePicker - Displays a date picker control where a date can be selected between two limits and shows how to retrieve its content.
FlipDemo - A sample that allows to flip the pages of a book, showing how to switch from one view to another in an application. Uses the CoreAnimation framework.
HelloWorld - The most basic iPhone application there is. Displays "Hello iPhone world!" in a UIKit window.
GLCube - A simple 3D cube that you can rotate with your fingers. Demonstrates the use of the OpenGL/ES framework and the touch screen capabilities.
GPSSample - Displays your location data on screen. Demonstrates the use of the CoreLocation framework and the GPS system.
MobileSubstrateDemo - A SpringBoard code injection example. Hooks into SpringBoard to display an alert box when an app is launched.
MoviePlayer - This sample plays in streaming a video from the Apple website. Shows how to implement a basic multimedia player.
NavBarDemo - A simple text area with a nav bar on top of it. Shows how to implement a navigation bar in an iOS app.
PreferenceLoaderDemo - A system-wide Preferences bundle. Demonstrates how to create a system-wide Preferences bundle that can be integrated in the system's Settings app.
RotationDemo - Displays a phrase on screen that changes when the device is tilted on its side. Demonstrates the support for device orientation detection in a iOS app.
SBSettingsToggle - A simple toggle switch for SBSettings. Demonstrates how to build a SBSettings toggle library in C.
TableDemo - Displays all files in the default app folder in an editable table view with sections, similar to the contacts list. Shows how to implement an UITableView control.
WifiScanner - Almost a full-featured app, this example demonstrates how to call functions from an external dynamic library, how to navigate through a UINavigationController's different views, how to present data in tables in different view styles, and how to use a gesture recognizer to make a UILabel clickable and make Safari open a specific URL.
Note: the Samba server itself is available on Cydia under the name PC Networking.
The following tools provided with this build environment are also available for free:
iOS PNG normalizer - A convenient drag-n-drop tool to convert Apple's non-standard PNG images back to standard, PC-readable images.
Click on an item to expand it:
- Added a sample that shows how to build an Adobe Native Extension for Adobe AIR.
- Fixed a bug in strip, where the input file could not overwrite itself when no output file was specified.
- Fixed a bug in makedeb, where some long pathnames would be stored incorrectly in the tar structure.
- Support for all the APIs of the iOS 6.1 SDK.
- Added a console program sample.
- Added the crt_externs.h missing header (forgotten by Apple in the 6.1 SDK).
- Fixed a bug where the resources copy in the final IPA would fail on Windows XP.
- Removed the PList editor which was causing false positives by some antiviruses (AVG).
- All PList files (binary or XML) now open in Visual Studio and are automatically converted to binary in the final IPA.
- Added the AppSync packages to the installer.
- Added the possibility to deploy AppSync and the GNU debugger directly from the www.pmbaty.com/cydia source in Cydia.
- Fixed a bug in the demo version.
- IMPORTANT: Fixed a bug in ld64 responsible for the "ld: file too small for inferred architecture" error.
- Added instructions on how to link a dynamic library or a third-party framework to an iOS project.
- The installer uses now the Nullsoft Scriptable Install System (NSIS).
- This new installer handles the problem of corrupted or broken downloads.
- This new installer facilitates uninstalling the environment using the Windows control panel.
- Support for all the APIs of the iOS 6 SDK.
- Makes use of the latest available Apple sources (ld64-134.9, cctools-836).
- Added the GNU debugger, a debugging tutorial and the according Makefile rules for symbol generation.
- Added armv7s architecture support (Apple A6, iPhone 5/iPad mini).
- Rewrote and improved the code signature manipulation tool.
- Got rid of the Cygwin compatibility layer.
- Makes use of the latest available Apple sources (ld64-127.2, cctools-809).
- Toolchain is now 100% Win32 and 100% relocatable.
- Fixed a bug in the ar static library archiver.
- Support for the armv7 and armv7f architectures (Apple A5, iPhone 4S/New iPad).
- Memory management by automatic reference counting (ARC) is supported.
- Added the CamTest example.
- Private version for Sproing GmbH and Vicarious Visions Inc.
- Better Visual Studio integration for projects created with the Creation Wizard.
- Fixed a Makefile bug that could prevent the creation of .deb files with Visual Studio 2010.
- Refactored the SambaSettings and smbtoggle examples into PreferenceLoaderDemo and SBSettingsToggle, with package generation rules.
- Added the WifiScanner example to demonstrate external dylib loading and UIViewController navigation.
- Support for all the APIs of the 5.1.1 SDK.
- Updated the iOS Project Creation Wizard.
- Automatic generation of the _CodeSignature directory, mandatory in case of deployment in a non-jailbreaked environment.
- Correction of the instruction set type in use by the assembler (previously armv4t, now armv6 by default).
- Removed the possibility to choose the armv7 instruction set, not supported by the current linker (but will be in a later version).
- Correction of the SRC rule in the default Makefile.
- The SpringBoard icons are automatically refreshed when deploying an app as a .deb file using iFile.
- Added a SpringBoard code injection example via MobileSubstrate.
- Updated the iOS Project Creation Wizard.
- Added a graphical remote debugging console applet.
- Newly created projects now support the streaming of error messages to a remote console on the PC.
- Newly created projects now support the redirection of error messages to a log file.
- Added 9 more examples.
- iOS 5 full support (compatible with the frameworks from the 5.0.1 SDK).
- New compiler (clang/llvm), much faster in replacement of GCC.
- Support for the lightweight threads (blocks) Objective-C syntax.
- Compiler errors are better indicated (a mark is displayed below the first incriminated character).
- Better integration with the IDE (a click on a compiler error line takes you directly to the source code).
- Added the possibility to target a minimal supported iOS version for each project.
- Added the possibility to specify the processor instruction set to use (ARMv6 or ARMv7).
- Rearrangement of the build environment directory layout.
- Added the C++ headers in the Makefiles by default (they had to be explicitly included beforehand).
- Added a drop-list to the Project Creation Wizard to explicitly enable iPad support in newly created apps.
- Fixed an ACL permissions problem that could cause the generation of invalid IPAs on some computers.
- Automatic creation of .deb packages (Cydia) from compiled projects.
- Added the /s command-line flag to the PNG normalizer (idea: Per Andersson).
- Extension of the default Makefile rules in the project creation wizard.
- Automatic creation of IPA packages (app bundles) from compiled projects.
- Modified the build script to support project directory relocation (idea: Jonathan Garrett).
- Corrected a typographic bug in the project creation wizard.
- Installing your apps can now be done directly within iTunes.
- Added support for Visual Studio 2008, 2010 and Visual C++ Express as IDE.
- Basic Objective-C syntax colouring in Visual Studio (settable option).
- Added an iOS project creation wizard that creates Visual C++ (.vcproj) projects.
- Added a script that enables ARM compilation directly in Visual Studio.
- Complete refactoring of the headers tree (implying a substantial save in megabytes).
- Added back missing headers in some frameworks.
- Stripped the multi-architecture code from "fat" Mach-O binaries so as to keep only the ARM code.
- Created universal Makefiles.
- Added a PNG image normalizer to convert the Apple PNG files into standard images readable on a PC.
- Added a rotating OpenGL cube as a sample project.
- Added an elaborate 3D game (Wolfenstein 3D) as a sample project.
- Changed the default install path to avoid write permission problems in Program Files.
- Added the Preferences framework for the creation of applications that integrate themselves into iOS Settings.
- Replaced iCopyBot's PList editor with a non commercial version.
- Added basic and useful practical advices in the compiler prompt window.
- Initial release.
- Unpublished initial version (private use).
Click on an item to expand it:
The iOS Build Environment works on all versions of Windows from NT 5.1 which means Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Server 2012 and Windows 8, undistinctively 32 or 64 bits. All the Visual Studio versions from version 2008 are supported, which means Visual Studio 2008, Visual Studio 2010 and Visual Studio 2012.
You can do so in 3 different ways, but first your device must be jailbroken.
· Automatically with iTunes: Install AppSync (this Cydia package is hosted on the http://www.pmbaty.com/cydia source, just add this source to Cydia). Then, just double-click on the app package (.ipa file) to open it in iTunes, and sync.
· Automatically with iFile: Install iFile (Cydia package). Copy your app's .deb file to your device. Open it with iFile and choose Install. Your app icon appears.
· Manually with SSH: Copy the YourApp.app folder created during the build into the /Applications directory on your device, and restart SpringBoard. Your app icon appears.
No, there is no emulator ; testing may be done on the iPhone itself. It's very simple: a little script to update the binary on the phone after each successful compilation, and you get the real experience. Building a phone emulator is illegal anyway, since it implies running iOS in a software sandbox, and that operating system is copyrighted by Apple Inc.
You can run your app inside a debugger on the device itself by installing gdb, the GNU Debugger (the package is provided, as well as a quick handling tutorial). You can also use all the standard C/C++ file I/O to log your program's activity to a file wherever you want. If you are making a console program, you may use the NSLog() macros that are supported by the iOS SDK. Personally, I do my debug in-situ using logging macros, and I use gdb for the bugs that the first method fails to put into evidence.
Visit http://jailbrea.kr and follow the instructions. This process is 100% legal, reversible, and for its greatmost part automated. No particular technical skills are required.
To send your app to Cydia, it only depends on which source (repository) you want to host it.
· For the Modmyi repository, it's here: http://modmyi.com/devportal (the process is automated)
· For the BigBoss repository, it's here: http://thebigboss.org/hosting-repository/submit-your-app
· For the other repositories, please refer to their owner's website.
While it may be technically possible to sign your app with an official Apple-approved signature on Windows and submit it as is, there is a risk that your final application be rejected - for Apple's app election rules are vastly undisclosed. In order to prevent this, I recommend that you do the final compilation and submission step on a genuine Mac. Meanwhile, all the development process for your app can take place on Windows, especially if it's the work environment you're familiar with.
Indeed. This is the first iOS application I developed. It enables me to have my iPhone permanently in Windows' Network Neighbourhood, so that I can transfer files easily. I can then use it as a storage server, and I have access to the complete filesystem. This app is available now on Cydia under the name PC Networking :)
Before, when a programmer wanted to create apps for his iPhone, iPod or iPad, he was also required to buy a $1500 worth Mac. This was even more aberrant since all programmers obviously already have a computer. Being not disposed myself to buy that an expensive and redundant hardware in order to do exactly the same thing that I was doing everyday on my Windows computer (I am an independent programmer), I managed to build and gather in one single package all the tools needed to compile your iOS applications on Windows. With Visual Studio.
I am an independent IT professionnal and an experienced programmer. If you think your company could hire me, feel free to make an offer. Here is my resume.
Of course! Some companies already used this means so that I could provide them quickly with some features they were interested in. Among those:
+ mobileFX (http://www.mobilefx.com) - Marketing software
+ Sproing Interactive Media (http://www.sproing.at) - One Jump Ahead!
If you wish to sponsor this project, get in touch with me so we can discuss the terms.
This project already benefited from the following sponsors:
Their upcoming MobileFX Studio 7 IDE will use iOS Build Environment!
Specialized in the creation of gaming and multimedia content
"Austria's leading game development studio!"
"This is such a great tool, and I can't wait to recommend it to my students." -- Christopher S.
"I've just tested my project with the new framework folders, everything went well and the compilation ended successfully which enabled me to try my audio player project in real conditions."
"Thanks for these additions which give alot more possibilities to your potential users. The idea of a universal makefile is awesome, it removes the need to add the frameworks one after the other."
"Your build environment turns out to be really interesting. Kudos!" -- Louis A.
"Installed and working perfectly on my iphone 4. I feel the weekend's gonna be productive ;-)" -- Fred D.
"Things worked great from vs2010. Thanks for this project - I'm very happy being able to tinker on windows laptop." -- Jonathan G.
"Thank you Pierre for your great work. As first example i compiled GLCube and tested it with execution privilege on iOS 5, ran perfectly. Really great job." -- Nima P.
If you intend to write a review about this software, please tell me about it, so that I can add the link and your website logo here.