Bridges the worlds of .NET with the native APIs of macOS, iOS, tvOS, and watchOS.
Перейти к файлу
Miguel de Icaza c453776ac0 [Xcode9] Add IOSurface bindings (#2363)
* This framework was a private framework before iOS 11.

This framework was a private framework before iOS 11, yet the headers claim
many API were introduced in iOS 10.

So take account of this difference by using the private framework location in
iOS 10.3 or earlier.

Testing these API from Xcode works fine when run on an iOS 10.3 device, and
I've confirmed the IOSurface framework is loaded from the private frameworks
path on older devices (and when built using Xcode 9 and linked with the public
framework path).

* Disable code to make IOSurface work on iOS 10.

Disable the code to make IOSurface work on iOS 10, since it may be rejected by
the App Store.

This also means adjusting the availability attributes, so that the
introspection tests pass (and to document that technically these API won't
work when used with Xamarin.iOS in iOS 10).

I've filed bug #[59201][1] to keep track of this, maybe we can re-enable this later.

[1]: https://bugzilla.xamarin.com/show_bug.cgi?id=59201
2017-09-05 08:57:58 -04:00
builds [builds] Tell LLVM to stay away from newer macOS functions. (#2459) 2017-08-09 17:50:06 +02:00
docs [mtouch] Don't allow building for 32-bit when deployment target is >= 11. Fixes #57966. (#2303) 2017-07-11 08:54:50 +02:00
external Backport d15-3 SR2 fixes (#2515) 2017-08-22 21:00:03 -04:00
fsharp [builds] Don't install symlinks to iOS/Classic assemblies in the iOS/Unified profile. (#844) 2016-09-16 20:02:25 +02:00
jenkins [tests] Fix missing information in test reporting on Jenkins. Fixes #51661. (#2246) 2017-06-26 17:34:32 +02:00
mk Bump maccore to get fix for bug #55064. (#2487) 2017-08-14 15:18:04 -04:00
mono/4.5 [build] Add .NET Core open source key 2017-03-14 11:47:06 +01:00
msbuild Merge d15-3 (#2322) 2017-07-13 08:16:25 -04:00
opentk Build the platform assemblies. 2016-04-24 14:47:26 -04:00
runtime [ModelIO] Fix MDLVoxelIndexExtent struct. (#2564) 2017-08-30 13:36:35 -04:00
src [Xcode9] Add IOSurface bindings (#2363) 2017-09-05 08:57:58 -04:00
tests [Xcode9] Add IOSurface bindings (#2363) 2017-09-05 08:57:58 -04:00
tools [Xcode9] Add IOSurface bindings (#2363) 2017-09-05 08:57:58 -04:00
.gitignore Update .gitignore with pdb files 2017-03-21 00:00:13 +01:00
.gitmodules Backport d15-3 SR2 fixes (#2515) 2017-08-22 21:00:03 -04:00
LICENSE Adjust license to match requested format 2016-04-25 16:38:57 -04:00
Make.config Bump version for preview #8 (#2576) 2017-09-01 08:19:45 -04:00
Makefile [build] Fix dependencies for various files to rebuild more intelligently when needed. (#2094) 2017-05-15 20:13:02 -04:00
NuGet.config Add a 'repositorypath' to our NuGet.Config and update paths everywhere accordingly. (#1110) 2016-11-04 09:13:33 +01:00
README.md [README] Explain that 'make world' should not be used to rebuild. (#1984) 2017-04-11 08:56:49 -04:00
Versions-ios.plist.in Bump to Xcode 9 (#2176) 2017-06-06 16:21:26 -04:00
Versions-mac.plist.in Bump to Xcode 9 (#2176) 2017-06-06 16:21:26 -04:00
Xamarin.Mac.sln Fix path to Mono.Linker.csproj. (#1997) 2017-04-12 09:14:57 -04:00
Xamarin.iOS.sln [mtouch] Add the mtouch test project to the Xamarin.iOS solution. (#1510) 2017-01-16 18:46:15 +01:00
banner.png [README] Add Xamarin.iOS + Xamarin.Mac banner (#1665) 2017-02-08 17:42:48 -05:00
configure Emit configure arguments into configure.inc to make it easier to re-run it. 2016-05-27 15:37:21 -04:00
product.snk Add our mono runtimes to the build. 2016-04-24 14:47:24 -04:00
system-dependencies.sh [system-dependencies] Clear xcrun cache after switching system Xcode. (#2281) 2017-07-03 07:16:02 +02:00
versions-check.csharp [Versions-ios.plist] watchOS started at 1.0 (#1328) 2016-12-13 10:52:58 +01:00

README.md

Xamarin.iOS + Xamarin.Mac logo

Xamarin.iOS & Xamarin.Mac

Status
master xamarin-macios-builds-master

Welcome!

This module is the main repository for both Xamarin.iOS and Xamarin.Mac.

These frameworks allow us to create native iOS, tvOS, watchOS and Mac applications using the same UI controls we would in Objective-C and Xcode, except with the flexibility and elegance of a modern language (C#), the power of the .NET Base Class Library (BCL), and two first-class IDEs—Xamarin Studio and Visual Studio—at our fingertips.

Continuous Builds

You can download continuous builds of our main development branches from our wiki page.

Build requirements

  • Autoconf, automake and libtool.

    You can use brew, or this script to get it directly from gnu.org (you'll have to edit your PATH to include /opt/bin if you use the script)

    To install brew and all the tool dependencies:

    $ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    $ brew update
    $ brew install libtool autoconf automake bison flex
    
  • CMake

    You can use brew, or download manually from cmake.org.

    CMake must be in PATH, so if you install it somewhere else, you'll have to fix up your PATH accordingly (not necessary if installed using brew).

    To install using brew:

    $ brew install cmake
    
  • Xcode

    To build the Xamarin.iOS and Xamarin.Mac SDKs you need a certain version of Xcode. The build will tell you exactly which version you need.

    You can download the Xcode version you need from Apple's Developer Center (requires an Apple Developer account).

    To ease development with different versions of the SDK that require different versions of Xcode, we require Xcode to be in a non-standard location (based on the Xcode version).

    For example Xcode 7.0 must be installed in /Applications/Xcode7.app.

    The recommended procedure is to download the corresponding Xcode dmg from Apple's Developer Center, extract Xcode.app to your system, and rename it before launching it the first time. Renaming Xcode.app after having launched it once may confuse Xcode, and strange errors start occuring.

  • Mono MDK.

    The build will tell you if you need to update, and where to get it.

  • Xamarin Studio.

    The build will tell you if you need to update, and where to get it.

  • You can also provision some of the dependencies with an included script:

      $ ./system-dependencies.sh --provision-[xcode|xamarin-studio|mono|all]
    

Quick build & install

Follow the following steps to build and install Xamarin.iOS and Xamarin.Mac:

  1. Clone this repository and its submodules

     $ git clone --recursive git@github.com:xamarin/xamarin-macios.git
     $ cd xamarin-macios
    
  2. Fetch dependencies and build everything

     $ make world
    
  3. Make sure permissions are OK to install into system directories (this will ask for your password)

     $ make fix-install-permissions
    
  4. Install into the system

     $ make install-system
    
  5. Build again after any local changes

    Don't use make world again to rebuild, because it resets dependencies and causes unnecessary rebuilds. Instead use the standard make all install (our Makefiles are parallel safe, which greatly speeds up the build):

     $ make all -j8 && make install -j8
    

Configure

There is a configure script that can optionally be used to configure the build. By default, everything required for both Xamarin.iOS and Xamarin.Mac will be built.

  • --disable-mac: Disable Mac-related parts.

  • --disable-ios: Disable iOS-related parts.

    In both cases the resulting build will contain both iOS and Mac bits because:

    • Parts of the iOS build depends on Mac parts (in particular mtouch uses Xamarin.Mac).

    • The class libraries builds can not be disabled because a very common error is to end up with code that only works/builds in either iOS or Mac.

  • --enable-ccache: Enables cached builds with ccache (default if ccache is found in the path).

  • --disable-ccache: Disables cached builds with ccache, even if it is present.

  • --disable-strip: If executables should be stripped or not. This makes it easier to debug native executables using lldb.

  • --help: Show the help.

Contributing

Mailing Lists

To discuss this project, and participate in the design, we use the macios-devel@lists.xamarin.com mailing list.

Chat

There is also a gitter chat room that can be used to discuss this project, and participate in the design: Gitter

Coding Guidelines

We use Mono's Coding Guidelines.

Reporting Bugs

We use Bugzilla to track issues.