.NET MAUI Android 및 iOS 개발용 NuGet 패키지를 빌드하는 방법
전제 조건
다운로드Dynamsoft Mobile Barcode Scanner SDK
Android 및 iOS용 .NET 바인딩 라이브러리 만들기
Windows 및 macOS에 Visual Studio 2022 Preview를 설치했다고 가정합니다. macOS에 원격으로 페어링하기 위해 Mac용 Visual Studio를 설치할 필요는 없지만 iOS용 .NET 바인딩 라이브러리의 출력 패키지는 Windows와 macOS 간에 다릅니다. 다음 단락에서 이에 대해 이야기하겠습니다.
Visual Studio 라이브러리 바인딩 프로젝트
Visual Studio 2022에서
binding
를 검색하면 두 종류의 라이브러리 바인딩 프로젝트가 있음을 알 수 있습니다. 하나는 Xamarin용이고 다른 하나는 .NET 6용입니다. .NET MAUI 호환 라이브러리를 빌드하려면 (Xamarin)
없이 프로젝트 템플릿을 선택합니다..NET 6용 Android AAR 패키지 바인딩
DynamsoftBarcodeReader.aar
를 Android 바인딩 프로젝트로 드래그합니다. DynamsoftBarcodeReader.aar
를 선택하고 빌드 작업을 AndroidLibrary
로 변경합니다.Release
로 변경합니다. 프로젝트를 빌드합니다. 출력 파일은 다음과 같습니다.
csproj
파일을 마우스 오른쪽 버튼으로 클릭하고 Pack
를 선택하여 NuGet 패키지를 생성합니다..NET 6용 바인딩 iOS 프레임워크
DynamsoftBarcodeReader.xcframework
를 iOS 바인딩 프로젝트로 드래그합니다. csproj 파일에 다음 코드를 추가합니다.
<ItemGroup>
<NativeReference Include="DynamsoftBarcodeReader.xcframework">
<Kind>Framework</Kind>
<Frameworks></Frameworks>
</NativeReference>
</ItemGroup>
ApiDefinition.cs
및 StructsAndEnums.cs
파일을 생성합니다. 프로젝트를 빌드합니다. 출력 파일은 다음과 같습니다.
Pack
를 클릭하여 NuGet 패키지를 생성합니다. 이제 Windows와 macOS의 차이점을 볼 수 있습니다. Windows용 Visual Studio에서 생성된 출력 패키지에는 ios.dll
만 포함되어 있습니다. 반대로 macOS용 Visual Studio에서 생성한 패키지에는 ios.dll
, manifest
및 DynamsoftBarcodeReader.xcframework
가 포함되어 있습니다. 분명히 Windows에서 빌드된 패키지는 작동하지 않습니다. 하지만 걱정하지 마세요. macOS에서 빌드된 패키지 구조에 따라 Windows에서 실행 가능한 패키지를 구성할 수 있습니다.단일 NuGet 패키지에 Android 및 iOS SDK 패키징
Visual Studio를 사용하여 Android 및 iOS 패키지를 빌드했으므로 각각 NuGet.org에 게시할 수 있습니다. 하지만 단일 NuGet 패키지로 빌드하려면 어떻게 해야 할까요? nuspec 파일을 사용하여 이를 구현할 수 있습니다.
단계는 다음과 같습니다.
nuspec
파일을 만듭니다.nuget spec
files 요소를 추가하고 패키지에 포함할 파일 목록을 지정합니다.
<files>
<file src="README.md" target="" />
<file src="android/bin/Release/net6.0-android/android.dll" target="lib/net6.0-android31.0/" />
<file src="android/bin/Release/net6.0-android/android.xml" target="lib/net6.0-android31.0/" />
<file src="android/bin/Release/net6.0-android/DynamsoftBarcodeReader.aar" target="lib/net6.0-android31.0/" />
<file src="ios/bin/Release/net6.0-ios/ios.dll" target="lib/net6.0-ios15.4/" />
<file src="ios/manifest" target="lib/net6.0-ios15.4/ios.resources" />
<file src="ios/bin/Release/net6.0-ios/ios.resources/DynamsoftBarcodeReader.xcframework/Info.plist" target="lib/net6.0-ios15.4/ios.resources/DynamsoftBarcodeReader.xcframework" />
<file src="ios/bin/Release/net6.0-ios/ios.resources/DynamsoftBarcodeReader.xcframework/ios-arm64/DynamsoftBarcodeReader.framework/Info.plist" target="lib/net6.0-ios15.4/ios.resources/DynamsoftBarcodeReader.xcframework/ios-arm64/DynamsoftBarcodeReader.framework" />
<file src="ios/bin/Release/net6.0-ios/ios.resources/DynamsoftBarcodeReader.xcframework/ios-arm64/DynamsoftBarcodeReader.framework/DynamsoftBarcodeReader" target="lib/net6.0-ios15.4/ios.resources/DynamsoftBarcodeReader.xcframework/ios-arm64/DynamsoftBarcodeReader.framework" />
<file src="ios/bin/Release/net6.0-ios/ios.resources/DynamsoftBarcodeReader.xcframework/ios-arm64/DynamsoftBarcodeReader.framework/Headers/DynamsoftBarcodeReader.h" target="lib/net6.0-ios15.4/ios.resources/DynamsoftBarcodeReader.xcframework/ios-arm64/DynamsoftBarcodeReader.framework/Headers" />
<file src="ios/bin/Release/net6.0-ios/ios.resources/DynamsoftBarcodeReader.xcframework/ios-arm64/DynamsoftBarcodeReader.framework/Headers/DynamsoftBarcodeSDK.h" target="lib/net6.0-ios15.4/ios.resources/DynamsoftBarcodeReader.xcframework/ios-arm64/DynamsoftBarcodeReader.framework/Headers" />
<file src="ios/bin/Release/net6.0-ios/ios.resources/DynamsoftBarcodeReader.xcframework/ios-arm64/DynamsoftBarcodeReader.framework/Modules/module.modulemap" target="lib/net6.0-ios15.4/ios.resources/DynamsoftBarcodeReader.xcframework/ios-arm64/DynamsoftBarcodeReader.framework/Modules" />
<file src="ios/bin/Release/net6.0-ios/ios.resources/DynamsoftBarcodeReader.xcframework/ios-arm64_x86_64-simulator/DynamsoftBarcodeReader.framework/Info.plist" target="lib/net6.0-ios15.4/ios.resources/DynamsoftBarcodeReader.xcframework/ios-arm64_x86_64-simulator/DynamsoftBarcodeReader.framework" />
<file src="ios/bin/Release/net6.0-ios/ios.resources/DynamsoftBarcodeReader.xcframework/ios-arm64_x86_64-simulator/DynamsoftBarcodeReader.framework/DynamsoftBarcodeReader" target="lib/net6.0-ios15.4/ios.resources/DynamsoftBarcodeReader.xcframework/ios-arm64_x86_64-simulator/DynamsoftBarcodeReader.framework" />
<file src="ios/bin/Release/net6.0-ios/ios.resources/DynamsoftBarcodeReader.xcframework/ios-arm64_x86_64-simulator/DynamsoftBarcodeReader.framework/Headers/DynamsoftBarcodeReader.h" target="lib/net6.0-ios15.4/ios.resources/DynamsoftBarcodeReader.xcframework/ios-arm64_x86_64-simulator/DynamsoftBarcodeReader.framework/Headers" />
<file src="ios/bin/Release/net6.0-ios/ios.resources/DynamsoftBarcodeReader.xcframework/ios-arm64_x86_64-simulator/DynamsoftBarcodeReader.framework/Headers/DynamsoftBarcodeSDK.h" target="lib/net6.0-ios15.4/ios.resources/DynamsoftBarcodeReader.xcframework/ios-arm64_x86_64-simulator/DynamsoftBarcodeReader.framework/Headers" />
<file src="ios/bin/Release/net6.0-ios/ios.resources/DynamsoftBarcodeReader.xcframework/ios-arm64_x86_64-simulator/DynamsoftBarcodeReader.framework/Modules/module.modulemap" target="lib/net6.0-ios15.4/ios.resources/DynamsoftBarcodeReader.xcframework/ios-arm64_x86_64-simulator/DynamsoftBarcodeReader.framework/Modules" />
</files>
iOS 빌드에 사용되는
manifest
파일은 Mac용 Visual Studio에서 자동 생성됩니다.<BindingAssembly>
<NativeReference Name="DynamsoftBarcodeReader.xcframework">
<ForceLoad></ForceLoad>
<Frameworks></Frameworks>
<IsCxx></IsCxx>
<Kind>Framework</Kind>
<LinkerFlags></LinkerFlags>
<NeedsGccExceptionHandling></NeedsGccExceptionHandling>
<SmartLink></SmartLink>
<WeakFrameworks></WeakFrameworks>
</NativeReference>
</BindingAssembly>
또한 다양한 대상 프레임워크에 대한 종속성을 추가합니다.
<dependencies>
<group targetFramework="net6.0-android31.0">
</group>
<group targetFramework="net6.0-ios15.4">
<dependency id="System.Runtime.InteropServices.NFloat.Internal" version="6.0.1" exclude="Build,Analyzers" />
</group>
</dependencies>
패키지를 빌드합니다.
nuget pack
이제 .NET MAUI 모바일 개발을 위해 Barcode.NET.Mobile을 설치할 수 있습니다.
.NET MAUI 바코드 QR 코드 스캐너 사용해보기
https://github.com/yushulx/maui-barcode-qrcode-scanner
소스 코드
https://github.com/yushulx/barcode-dotnet-mobile
Reference
이 문제에 관하여(.NET MAUI Android 및 iOS 개발용 NuGet 패키지를 빌드하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/yushulx/how-to-build-a-nuget-package-for-net-maui-android-and-ios-development-37pl텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)