Essential cross platform APIs for your Xamarin, Desktop and WebAssembly Apps
Перейти к файлу
Matthew Leibowitz 307bb14c4b
Exported types need public constructors
2018-05-02 17:54:14 +02:00
.github Update links in markdown files 2018-04-10 11:05:46 +02:00
Assets New Icons! (#218) 2018-04-27 08:03:43 -07:00
DeviceTests New Icons! (#218) 2018-04-27 08:03:43 -07:00
Samples GH-168 Update sample error messages (#217) 2018-04-27 09:20:48 -07:00
Tests Rebranding to Xamarin.Essentials (#152) 2018-04-05 20:46:34 -04:00
Xamarin.Essentials Exported types need public constructors 2018-05-02 17:54:14 +02:00
docs Cleaned docs a bit more 2018-05-02 17:43:55 +02:00
.editorconfig No nested classes and no default access modifiers 2018-04-11 19:45:59 +02:00
.gitattributes Fixing line endings and added .gitattributes to make sure it stays fixed 2018-02-28 23:44:18 +02:00
.gitignore Using the new mdoc frameworks (#161) 2018-04-10 10:28:45 -04:00
.openpublishing.build.ps1 Initialize open publishing repository: https://github.com/xamarin/Essentials of branch master 2018-04-10 19:29:18 +00:00
.openpublishing.publish.config.json Update .openpublishing.publish.config.json 2018-04-10 12:31:25 -07:00
CODE_OF_CONDUCT.md Initial attempt at contribution, submission docs, and templates 2018-02-23 22:35:58 +00:00
CONTRIBUTING.md Update links in CONTRIBUTING.md 2018-04-10 11:11:56 +02:00
CodeStyles.targets Rebranding to Xamarin.Essentials (#152) 2018-04-05 20:46:34 -04:00
LICENSE Rebranding to Xamarin.Essentials (#152) 2018-04-05 20:46:34 -04:00
LICENSE-CODE Initialize open publishing repository: https://github.com/xamarin/Essentials of branch master 2018-04-10 19:29:18 +00:00
README.md Update README.md (#212) 2018-04-25 14:17:17 -07:00
SUBMITTING-ISSUES.md Update links in markdown files 2018-04-10 11:05:46 +02:00
ThirdPartyNotices Initialize open publishing repository: https://github.com/xamarin/Essentials of branch master 2018-04-10 19:29:18 +00:00
Xamarin.Essentials.ruleset Rebranding to Xamarin.Essentials (#152) 2018-04-05 20:46:34 -04:00
Xamarin.Essentials.sln Rebranding to Xamarin.Essentials (#152) 2018-04-05 20:46:34 -04:00
build.ps1 Fix restore / build issue 2018-04-25 21:13:57 -04:00
stylecop.json We want to use spaces and not tabs 2018-02-28 23:07:46 +02:00

README.md

Xamarin.Essentials

Xamarin.Essentials gives developers essential cross-platform APIs for their mobile applications.

iOS, Android, and UWP offer unique operating system and platform APIs that developers have access to all in C# leveraging Xamarin. It is great that developers have 100% API access in C# with Xamarin, but these APIs are different per platform. This means developers have to learn three different APIs to access platform specific features. With Xamarin.Essentials developers have a single cross-platform API that works with any iOS, Android, or UWP application that can be accessed from shared code no matter how the user interface is created.

Build Status

Build Server Type Platform Status
Jenkins Build Windows Jenkins Build Status
VSTS Build Windows VSTS Build Status
Jenkins Device Tests macOS Build Status

Installation

Coming soon...

Supported Platforms

Xamarin.Essentials is focused on the following platforms for our first release:

  • iOS (10+)
  • Android (4.4+)
  • UWP (Fall Creators Update+)

Current Features:

The following cross-platform APIs are planned for our first release:

  • Accelerometer
  • App Information
  • Battery
  • Clipboard
  • Compass
  • Connectivity
  • Data Transfer
  • Device Information
  • File System Helpers
  • Email
  • Flashlight
  • Geocoding
  • Geolocation
  • Gyroscope
  • Magnetometer
  • Open Browser
  • Phone Dialer
  • Preferences
  • Screen Lock
  • Secure Storage
  • SMS
  • Text-to-Speech
  • Version Tracking
  • Vibrate

Contributing

Please read through our Contribution Guide. We are not accepting new PRs for full features, however any issue that is marked as up for grabs are open for community contributions. We encourage creating new issues for bugs found during usage that the team will triage. Additionally, we are open for code refactoring suggestions in PRs.

Building Xamarin.Essentials

Xamarin.Essentials is built with the new SDK style projects with multi-targeting enabled. This means that all code for iOS, Android, and UWP exist inside of the Xamarin.Essentials project.

If building on Visual Studio 2017 simply open the solution and build the project.

If using Visual Studio for Mac the project can be built at the command line with MSBuild. To change the project type that you are working with simply edit Xamarin.Essentials.csproj and modify the TargetFrameworks for only the project type you want to use.

FAQ

Here are some frequently asked questions about Xamarin.Essentials, but be sure to read our full FAQ on our Wiki.

Where are the interfaces?

Some developers prefer an interface based programming model for dependency injection and testing of code. Xamarin.Essentials does not offer any interfaces and delivers straight API access via direct classes and static properties/methods. There are many reasons that Xamarin.Essentials is architected this way that include performance, simplicity, and ease of use. We also consider Xamarin.Essentials a core API of the platform just like System classes, HttpClient, and our platform bindings.

Additionally, we found most developers create their own interfaces even when using a library that have interfaces. They do this so they have control over the APIs they actually use, which may be a very small percentage of the overall APIs in the library. Creating your own IXamarinEssentials and exposing only the methods and properties you would like to use gives you more flexibility as Xamarin.Essentials grows and adds additional APIs. Using this type of architecture will enable you to both have dependency injection and work with unit testing.

Does Xamarin.Essentials replace plugins?

Plugins offer a wide variety of cross-platform APIs for developers to use in their applications. Plugins will still continue to grow and flourish as they can offer a wider range of APIs and handle unique scenarios that Xamarin.Essentials may not offer including additional platform support or add features unique to a single platform.

License

Please see the License.