Recently, my Xamarin mobile app was rejected from the App store with the following error.
Non-PIE Binary – The executable ‘appname.app’ is not a Position Independent Executable. Please ensure that your build settings are configured to create PIE executables.
Turns out Apple recently introduced an extra step in the build process , which now requires your app to be built as Position Independent Executable (PIE). Position Independent Executable (PIE) applications can be loaded at a random memory address when run. This has security benefits for your application. iOS 4.3 or later, and OS X 10.7 or later, fully support PIE executables.
Fortunately, Xamarin has also updated their framework to support building applications as PIE. You can find this update via the Beta Channel, Xamarin iOS 6.3.7 to be exact. So any native executable is now built as PIE by default.
I hope anyone who runs into the PIE issue finds this helpful.