csharp-flutter/README.md

63 lines
2.0 KiB
Markdown

# CSharp to Flutter
## Requirements
All the following tools must be in your `PATH` :
* All platforms
+ [Bash >= 4.0](https://www.gnu.org/software/bash/)
+ [BeyondNetGen](https://github.com/royalapplications/beyondnet)
+ [Android NDK](https://developer.android.com/ndk/downloads) if you want to build for Android
* MacOS
+ [XCode](https://developer.apple.com/xcode/) if you want to build for iOS
## Quick start
> **Warning** Your dotnet project must be at the root of this repository
Simply run the build script
```bash
./build.sh -i MyLib.Managed
```
More advanced usage:
> Context: You want to build a library named `AwesomeFeature` for Android only, and you have the Android NDK installed in `$ANDROID_NDK_ROOT` but not in `$ANDROID_NDK_HOME`.
```bash
./build.sh -i AwesomeFeature --ndk $ANDROID_NDK_ROOT --no-ios
```
[![session recording](./demo.png)](./demo.cast)
> **Note** Open the recording with [asciinema](https://asciinema.org/) or by clicking on the image above
## Usage
```shell-session
Usage: ./build.sh [options]
Options:
-h, --help Print this help and exit
-i Input project name (required)
-g Generated project name (default: <input-project-name>.Generated)
-o Output folder name (default: libs)
--ndk Android NDK path (default: ANDROID_NDK_HOME environment variable)
--no-android Disable Android build (default: false)
--no-ios Disable iOS build (default: false)
--spec Net spec (default: net8.0)
```
## What is this?
This script:
* Run `dotnet publish` on the CoreRT managed library to get intermediate dlls
* Copy configuration files templates
* Android:
* Run `beyondnetgen` to generate the C header file and the *unmanaged* csharp code
* Build a complete intermediate csproject with the *unmanaged* csharp code and the generated header file
* Run `dotnet publish` on the *unmanaged* csharp code for the target platforms.
* iOS:
* Run `beyondnetgen` and follow full process to get xframework
* Copy the generated files to the output folder