Take the 2-minute tour ×

Monotouch compiles the app into the native code. How can Apple know that the app was built using MonoTouch? Does Monotouch leaves a signature in the application?

Does Monotouch has its own libraries which could be a trace of the origin or it compiles all the code and all its .NET libraries into native code?

share|improve this question

2 Answers 2

up vote 1 down vote accepted

The resulting .app package contains the application binary, your resources as well as the required additional libraries, such as:

  • montouch.dll;
  • System.dll;
  • System.Xml.dll and so on.

As such, it would be trivial for them to check if the application was built with monotouch or not - it is as simple as right clicking the package and then select "Show package contents" in Finder.

However, you need not worry about that, as Apple has just relaxed their License Agreement: http://daringfireball.net/2010/09/app_store_guidelines

share|improve this answer
I am not worried, but we do not if Apple will change its policy. You mention *.dll files, but how come DLLs when MT compiles the code into native code? –  sandalone Sep 29 '10 at 9:04
The way i see it, the .dll naming is just a convention, it does not imply that they contain managed code. I guess they could have just as well named them using .a extension or .so –  AlexB Sep 29 '10 at 12:15
Only your own code is compiled to native Objective-C. Mono and MonoTouch SDKs are pre-compiled into these DLL files so you don't need to compile the whole SDK codebase yourself. –  riha Feb 3 '11 at 12:14
DLLs assemblies contain just the metadata, all the code is compiled and linked to the application bundle. Open your project settings in Monodevelop, go to the compiler, set the additional params to -v -v -v and check the compiler output, you can see what is going on under the hood there. –  Pavel Sich Feb 22 '11 at 12:46

And even if the assemblies containing metadata were not included in the app bundle (directory), I am quite sure it is relatively trivial to learn how to recognize from the patterns in the actual code in the app executable that it was produced by MonoTouch, if one would want to. So there is not reason for MonoTouch to try to "hide" that fact.

share|improve this answer

Your Answer


