63 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			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
 | |
| ```
 | |
| 
 | |
| [](./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
 |