Skip to content

nitewulf/XamarinComponents

 
 

Repository files navigation

Open Source Components for Xamarin

GitHub License contributions welcome GitHub contributors

Open Source Components for Xamarin are a collection of open source components (including bindings and plugins) created by Xamarin and others in the community.

Building

Prerequisites

Before building the libraries and samples in this repository, you will need to install .NET Core and the Cake .NET Core Tool:

dotnet tool install -g cake.tool

When building on macOS, you may also need to install CocoaPods:

# Homebrew
brew install cocoapods

# Ruby Gems
gem install cocoapods

Compiling

You can either build all the libraries and samples in the repository from the root:

dotnet cake --name=<name-from-manifest>

Or, you can build each component separately:

cd <path-to-component>
dotnet cake

The name of each component can be found in the manifest.yaml. For example, to build the ARCore component, you can either start the build from the root:

dotnet cake --name=ARCore --target=nuget

Or, you can navigate to the folder and run it from there:

cd Android/ARCore
dotnet cake --target=nuget

The following targets can be specified using the --target=<target-name>:

  • libs builds the class library bindings (depends on externals)
  • externals downloads and builds the external dependencies
  • samples builds all of the samples (depends on libs)
  • nuget builds the nuget packages (depends on libs)
  • clean cleans up everything

Working in Visual Studio

Before the .sln files will compile in the IDEs, the external dependencies need to be downloaded. This can be done by running the externals target:

dotnet cake --target=externals

After the externals are downloaded and built, the .sln files should compile in your IDE.


Xamarin Supported Open Source Components

Xamarin Supported Open Source components are a collection of Xamarin built bindings and libraries.

Name Description Source
Android Support Libraries Bindings for Google's Android Support Libraries GitHub
Google Play Services Client Libraries Bindings for Google's Play Services Client Libraries GitHub
Google API's for iOS Bindings for Google's API's for iOS Libraries GitHub
Facebook SDK's Bindings for Facebook's iOS & Android SDK's GitHub
Xamarin.Auth Cross-platform API for authenticating users and storing their accounts. GitHub

Xamarin.Essentials

Xamarin.Essentials gives developers essential cross-platform APIs for their mobile applications. Xamarin.Essentials exposes over 25 native APIs in a single cross-platform package for developers to consume in their iOS, Android, UWP, or Xamarin.Forms application. Browse through the documentation on how to get started today.

The repository for Xamarin.Essentials can be found at https://github.com/xamarin/Essentials. If you have any suggestions or feature requests, or if you find any issues, please open a new issue.


Community Provided Open Source Plugins

Plugins for Xamarin are community built NuGet and Components that add cross-platform functionality or abstracts platform specific functionality to a common API. These are both completely cross-platform and extremely small (i.e., they do 1 or 2 things really well with minimal-to-no dependencies). The Plugin API can be accessed on each platform, however, you will most likely only use the common API in a Portable Class Library or Shared Code project.

Notice: Plugins for Xamarin featured here are produced by the amazing open source community of Xamarin developers. Xamarin does not provide official support for these plugins, please contact their creator with any issues.

Popular Plugins

Browse through the most popular plugins out there today!

Name Description NuGet Docs & Source Creator
Audio Recorder Record audio on a device's microphone input. NuGet GitHub @NateRickard
Battery Status Gather battery level, charging status, and type. NuGet GitHub @JamesMontemagno
Barcode Scanner Scan and create barcodes with ZXing.NET.Mobile. NuGet GitHub @Redth
Bluetooth LE Scan and connect to Bluetooth devices. NuGet GitHub @allanritchie911
Calendar Query and modify device calendars NuGet GitHub Caleb Clarke
Compass Access device compass heading. NuGet GitHub @cbartonnh & @JamesMontemagno
Config Define the settings of the application for each environment in which it will run. NuGet GitHub @abonilla93
Connectivity Get network connectivity info such as type and if connection is available. NuGet GitHub @JamesMontemagno
Cryptography PCL Crypto provides a consistent, portable set of crypto APIs. NuGet GitHub @aarnott
Custom Vision Runs CoreML and TensorFlow models from https://CustomVision.ai on device NuGet GitHub @JimBobBennett
Device Info Properties about device such as OS, Model, and Id. NuGet GitHub @JamesMontemagno
Device Motion Provides access to Accelerometer, Gyroscope, Magnetometer, and Compass. NuGet GitHub @rdelrosario
Embedded Resource Unpack embedded resource cross-platform. NuGet GitHub @JosephHill
External Maps Launch external maps from Lat/Long or Address. NuGet GitHub @JamesMontemagno
File Picker Pick and save files. NuGet GitHub @studyxnet
File Uploader Upload files using multipart request. NuGet GitHub @rdelrosario
Fingerprint Access Fingerprint sensor on iOS, Android, and Windows. NuGet GitHub @smstuebe
FFImageLoading Image loading with caching, placeholders, transformations and more NuGet GitHub @molinch, @daniel-luberda
Geofencing Monitor regions when user enters/exits. NuGet GitHub @allanritchie911
Geolocator Easily detect GPS location of device. NuGet GitHub @JamesMontemagno
HTTP Transfers Download or upload files in the background. Provides speed metrics and estimates NuGet GitHub @allanritchie911
iBeacon & Estimote Range and monitor Bluetooth beacons. NuGet GitHub @allanritchie911
Identity document scanning Enable scanning of various identity documents in your app. NuGet GitHub @microblink
In-App Billing Make, Query, and get In-App Purchases and Subscriptions. NuGet GitHub @JamesMontemagno
Lamp Access to LED NuGet GitHub @kphillpotts
Latest Version Detect if your users are using the latest version of your app. NuGet GitHub @EdSnider
Local Notifications Show local notifications NuGet GitHub @EdSnider, @JamesMontemagno
Local Notifications Manage local notifications NuGet GitHub @allanritchie911
Manage Sleep Manage auto sleep/auto lock. NuGet GitHub @molinch0
Media Take or pick photos and videos. NuGet GitHub @JamesMontemagno
Media Manager Playback for Audio and Video. NuGet GitHub @mhvdijk
Messaging Make phone call, send sms, and send e-mail NuGet GitHub @cjlotz
Microsoft Band Connect and communicate with the Microsoft Band from shared code! NuGet GitHub @mattleibow
Multilingual Plugin Simple cross platform plugin for handling language localization. NuGet GitHub @CrossGeeks
Permissions Easily check and request runtime permissions. NuGet GitHub @JamesMontemagno
Portable Razor Lightweight implemenation of ASP.NET MVC APIs for mobile. NuGet GitHub @JosephHill
Push Notifications Cross platform iOS and Android Push Notifications. NuGet GitHub @rdelrosario
Secure Storage Provides secure storage for key value pair string data NuGet GitHub @sameerIOTApps
Settings Simple & Consistent cross platform settings API. NuGet GitHub @JamesMontemagno
Share Easily share text, links, or open a browser. NuGet GitHub @JamesMontemagno & @Jakob Gürtl
Sensors Device sensors - accelerometer, ambient light, barometer, compass, device orientation, gyroscope, magnetometer, pedometer, and proximity NuGet GitHub @allanritchie911
Sockets TCP & UDP Listeners and Clients + UDP multicast. NuGet GitHub @rdavis_au
Speech Recognition Speech to Text. NuGet GitHub @allanritchie911
Simple Audio Player Play multiple MP3 or wave files from a shared library. NuGet GitHub @adrianstevens
Store Review Ask for store review or launch app store page. NuGet GitHub @jamesmontemagno
Text To Speech Talk back text from shared code. NuGet GitHub @JamesMontemagno
Toast A simple way of showing toast/pop-up notifications. NuGet GitHub @AdamPed & @EgorBo
User Dialogs Message box style dialogs. NuGet GitHub @allanritchie911
Version Tracking Track which versions of your app a user has previously installed. NuGet GitHub @ColbyLWilliams
Vibrate Vibrate any device. NuGet GitHub @JamesMontemagno
Device Orientation Plugin to work with screen orientation (change and lock) NuGet GitHub @YauheniPakala

Data Caching & Databases

Name Description NuGet Docs & Source Creator
Akavache An asynchronous, persistent (i.e. writes to disk) key-value store. NuGet GitHub @paulcbetts
Azure Mobile Apps Offline sync-enabled Windows and Xamarin mobile apps that connect to Azure Mobile App. NuGet GitHub @microsoft
Cosmos DB Azure Cosmos DB is a globally distributed, multi-model database service. NuGet GitHub @azurecosmosdb
LiteDB LiteDB - A .NET NoSQL Document Store in a single data file NuGet GitHub @mbdavid
🐒 Monkey Cache Cache any data structure for a specific amount of time with minimal dependencies. NuGet GitHub @jamesmontemagno
Mono.Data.Sqlite Add Mono.Data.Sqlite to any Xamarin or Windows .NET app. NuGet GitHub @mattleibow
Realm Realm is a mobile database: a replacement for SQLite and ORMs. NuGet GitHub @realm
SQLite-net Simple, powerful, cross-platform SQLite client and ORM for .NET NuGet GitHub @praeclarum

Create a Plugin for Xamarin

If you are looking to create a plugin be sure to browse through NuGet first and ensure that the plugin doesn't exist. If one does join in on the fun and collaborate. If it doesn't and you want to start building a Plugin here are some tools and guidelines to get you started.

Tools to get Started

Requirements of a Plugin

  • Open source on GitHub
  • Documentation on GitHub's README file
  • Name: "FEATURE_NAME Plugin for Xamarin and Windows"
  • Namespace: Plugin.FEATURE_NAME
  • App-store friendly OSS license (we like MIT)
  • No dependency on Xamarin.Forms
  • Have a list of supported and unsupported OSs in its GitHub wiki

Perks

  • Help out fellow developers speed up development
  • Have fun and learn new tools
  • Our undying love

About

Plugins for Xamarin

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 97.9%
  • Kotlin 0.6%
  • Objective-C 0.6%
  • Makefile 0.3%
  • HTML 0.2%
  • GLSL 0.2%
  • Other 0.2%