CommunityToolkit / CommunityToolkit/Maui.NativeLibraryInterop
How to use with CocoaPods
- 主要语言
- C#
- 星标
- 249
- 派生
- 48
- PR 合并指标
- 30 天内没有已合并 PR
描述
Hello!
I've tried to bind MLKit BarcodeScanning for iOS.
1. Initialize cocoapods : `pod init`
2. Add pod to Podfile: `pod 'GoogleMLKit/BarcodeScanning', '7.0.0'`
3. Run `pod install`
4. Add new method to DotnetNewBindings.swift:
```swift
@objc
public static func detectBarcodes(image: UIImage) async throws -> String? {
let format = BarcodeFormat.all
let barcodeOptions = BarcodeScannerOptions(formats: format)
let barcodeScanner = BarcodeScanner.barcodeScanner(options: barcodeOptions)
let visionImage = VisionImage(image: image)
visionImage.orientation = image.imageOrientation
let barcodes = try await barcodeScanner.process(visionImage)
guard !barcodes.isEmpty else {
return nil
}
for barcode in barcodes {
return barcode.displayValue
}
return nil
}
```
5. Ensure the target platform is arm64 (It doesn't work with emulators)
6. Build project. Build passed.
7. Add `ios-arm64;` in csproj
8. Run dotnet build.
I get errors:
```
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -Xlinker -reproducible -target arm64-apple-ios16.6 -dynamiclib -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.2.sdk -Os -L/Users/vladislav/Virtual\ Machines.localized/Shared/MLKitBinding/macios/NewBinding.MaciOS.Binding/obj/Debug/net9.0-ios/xcode/DerivedData/Build/Intermediates.noindex/ArchiveIntermediates/NewBinding/IntermediateBuildFilesPath/EagerLinkingTBDs/Release-iphoneos -L/Users/vladislav/Virtual\ Machines.localized/Shared/MLKitBinding/macios/NewBinding.MaciOS.Binding/obj/Debug/net9.0-ios/xcode/DerivedData/Build/Intermediates.noindex/ArchiveIntermediates/NewBinding/BuildProductsPath/Release-iphoneos -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos -L/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.2.sdk/usr/lib/swift -F/Users/vladislav/Virtual\ Machines.localized/Shared/MLKitBinding/macios/NewBinding.MaciOS.Binding/obj/Debug/net9.0-ios/xcode/DerivedData/Build/Intermediates.noindex/ArchiveIntermediates/NewBinding/IntermediateBuildFilesPath/EagerLinkingTBDs/Release-iphoneos -F/Users/vladislav/Virtual\ Machines.localized/Shared/MLKitBinding/macios/NewBinding.MaciOS.Binding/obj/Debug/net9.0-ios/xcode/DerivedData/Build/Intermediates.noindex/ArchiveIntermediates/NewBinding/BuildProductsPath/Release-iphoneos -F/Users/vladislav/Virtual\ Machines.localized/Shared/MLKitBinding/macios/NewBinding.MaciOS.Binding/obj/Debug/net9.0-ios/xcode/DerivedData/Build/Intermediates.noindex/ArchiveIntermediates/NewBinding/BuildProductsPath/Release-iphoneos/GTMSessionFetcher -F/Users/vladislav/Virtual\ Machines.localized/Shared/MLKitBinding/macios/NewBinding.MaciOS.Binding/obj/Debug/net9.0-ios/xcode/DerivedData/Build/Intermediates.noindex/ArchiveIntermediates/NewBinding/BuildProductsPath/Release-iphoneos/GoogleDataTransport -F/Users/vladislav/Virtual\ Machines.localized/Shared/MLKitBinding/macios/NewBinding.MaciOS.Binding/obj/Debug/net9.0-ios/xcode/DerivedData/Build/Intermediates.noindex/ArchiveIntermediates/NewBinding/BuildProductsPath/Release-iphoneos/GoogleToolboxForMac -F/Users/vladislav/Virtual\ Machines.localized/Shared/MLKitBinding/macios/NewBinding.MaciOS.Binding/obj/Debug/net9.0-ios/xcode/DerivedData/Build/Intermediates.noindex/ArchiveIntermediates/NewBinding/BuildProductsPath/Release-iphoneos/GoogleUtilities -F/Users/vladislav/Virtual\ Machines.localized/Shared/MLKitBinding/macios/NewBinding.MaciOS.Binding/obj/Debug/net9.0-ios/xcode/DerivedData/Build/Intermediates.noindex/ArchiveIntermediates/NewBinding/BuildProductsPath/Release-iphoneos/PromisesObjC -F/Users/vladislav/Virtual\ Machines.localized/Shared/MLKitBinding/macios/NewBinding.MaciOS.Binding/obj/Debug/net9.0-ios/xcode/DerivedData/Build/Intermediates.noindex/ArchiveIntermediates/NewBinding/BuildProductsPath/Release-iphoneos/nanopb -F/Users/vladislav/Virtual\ Machines.localized/Shared/MLKitBinding/macios/native/NewBinding/Pods/MLImage/Frameworks -F/Users/vladislav/Virtual\ Machines.localized/Shared/MLKitBinding/macios/native/NewBinding/Pods/MLKitBarcodeScanning/Frameworks -F/Users/vladislav/Virtual\ Machines.localized/Shared/MLKitBinding/macios/native/NewBinding/Pods/MLKitCommon/Frameworks -F/Users/vladislav/Virtual\ Machines.localized/Shared/MLKitBinding/macios/native/NewBinding/Pods/MLKitVision/Frameworks -filelist /Users/vladislav/Virtual\ Machines.localized/Shared/MLKitBinding/macios/NewBinding.MaciOS.Binding/obj/Debug/net9.0-ios/xcode/DerivedData/Build/Intermediates.noindex/ArchiveIntermediates/NewBinding/IntermediateBuildFilesPath/NewBinding.build/Release-iphoneos/NewBinding.build/Objects-normal/arm64/NewBinding.LinkFileList -install_name @rpath/NewBinding.framework/NewBinding -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -rpath -Xlinker @loader_path/Frameworks -dead_strip -Xlinker -object_path_lto -Xlinker /Users/vladislav/Virtual\ Machines.localized/Shared/MLKitBinding/macios/NewBinding.MaciOS.Binding/obj/Debug/net9.0-ios/xcode/DerivedData/Build/Intermediates.noindex/ArchiveIntermediates/NewBinding/IntermediateBuildFilesPath/NewBinding.build/Release-iphoneos/NewBinding.build/Objects-normal/arm64/NewBinding_lto.o -Xlinker -final_output -Xlinker /Library/Frameworks/NewBinding.framework/NewBinding -fobjc-link-runtime -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos -L/usr/lib/swift -Xlinker -add_ast_path -Xlinker /Users/vladislav/Virtual\ Machines.localized/Shared/MLKitBinding/macios/NewBinding.MaciOS.Binding/obj/Debug/net9.0-ios/xcode/DerivedData/Build/Intermediates.noindex/ArchiveIntermediates/NewBinding/IntermediateBuildFilesPath/NewBinding.build/Release-iphoneos/NewBinding.build/Objects-normal/arm64/NewBinding.swiftmodule -ObjC -framework Pods_NewBinding -Xlinker -no_adhoc_codesign -compatibility_version 1 -current_version 1 -Xlinker -dependency_info -Xlinker /Users/vladislav/Virtual\ Machines.localized/Shared/MLKitBinding/macios/NewBinding.MaciOS.Binding/obj/Debug/net9.0-ios/xcode/DerivedData/Build/Intermediates.noindex/ArchiveIntermediates/NewBinding/IntermediateBuildFilesPath/NewBinding.build/Release-iphoneos/NewBinding.build/Objects-normal/arm64/NewBinding_dependency_info.dat -o /Users/vladislav/Virtual\ Machines.localized/Shared/MLKitBinding/macios/NewBinding.MaciOS.Binding/obj/Debug/net9.0-ios/xcode/DerivedData/Build/Intermediates.noindex/ArchiveIntermediates/NewBinding/InstallationBuildProductsLocation/Library/Frameworks/NewBinding.framework/NewBinding
ld: warning: search path '/Users/vladislav/Virtual Machines.localized/Shared/MLKitBinding/macios/NewBinding.MaciOS.Binding/obj/Debug/net9.0-ios/xcode/DerivedData/Build/Intermediates.noindex/ArchiveIntermediates/NewBinding/BuildProductsPath/Release-iphoneos/GTMSessionFetcher' not found
ld: warning: search path '/Users/vladislav/Virtual Machines.localized/Shared/MLKitBinding/macios/NewBinding.MaciOS.Binding/obj/Debug/net9.0-ios/xcode/DerivedData/Build/Intermediates.noindex/ArchiveIntermediates/NewBinding/BuildProductsPath/Release-iphoneos/GoogleDataTransport' not found
ld: warning: search path '/Users/vladislav/Virtual Machines.localized/Shared/MLKitBinding/macios/NewBinding.MaciOS.Binding/obj/Debug/net9.0-ios/xcode/DerivedData/Build/Intermediates.noindex/ArchiveIntermediates/NewBinding/BuildProductsPath/Release-iphoneos/GoogleToolboxForMac' not found
ld: warning: search path '/Users/vladislav/Virtual Machines.localized/Shared/MLKitBinding/macios/NewBinding.MaciOS.Binding/obj/Debug/net9.0-ios/xcode/DerivedData/Build/Intermediates.noindex/ArchiveIntermediates/NewBinding/BuildProductsPath/Release-iphoneos/GoogleUtilities' not found
ld: warning: search path '/Users/vladislav/Virtual Machines.localized/Shared/MLKitBinding/macios/NewBinding.MaciOS.Binding/obj/Debug/net9.0-ios/xcode/DerivedData/Build/Intermediates.noindex/ArchiveIntermediates/NewBinding/BuildProductsPath/Release-iphoneos/PromisesObjC' not found
ld: warning: search path '/Users/vladislav/Virtual Machines.localized/Shared/MLKitBinding/macios/NewBinding.MaciOS.Binding/obj/Debug/net9.0-ios/xcode/DerivedData/Build/Intermediates.noindex/ArchiveIntermediates/NewBinding/BuildProductsPath/Release-iphoneos/nanopb' not found
ld: framework 'Pods_NewBinding' not found
clang: error: linker command failed with exit code 1 (use -v to see invocation)
note: Disabling previews because SWIFT_VERSION is set and SWIFT_OPTIMIZATION_LEVEL=-O, expected -Onone (in target 'NewBinding' from project 'NewBinding')
** ARCHIVE FAILED **
The following build commands failed:
Ld /Users/vladislav/Virtual\ Machines.localized/Shared/MLKitBinding/macios/NewBinding.MaciOS.Binding/obj/Debug/net9.0-ios/xcode/DerivedData/Build/Intermediates.noindex/ArchiveIntermediates/NewBinding/InstallationBuildProductsLocation/Library/Frameworks/NewBinding.framework/NewBinding normal (in target 'NewBinding' from project 'NewBinding')
Archiving project NewBinding with scheme NewBinding
(2 failures)
0>Microsoft.MaciOS.Sdk.Xcode.targets(80,5): Error : xcodebuild exited with code 65:
** ARCHIVE FAILED **
The following build commands failed:
Ld /Users/vladislav/Virtual\ Machines.localized/Shared/MLKitBinding/macios/NewBinding.MaciOS.Binding/obj/Debug/net9.0-ios/xcode/DerivedData/Build/Intermediates.noindex/ArchiveIntermediates/NewBinding/InstallationBuildProductsLocation/Library/Frameworks/NewBinding.framework/NewBinding normal (in target 'NewBinding' from project 'NewBinding')
Archiving project NewBinding with scheme NewBinding
(2 failures)
```
贡献指南
这个仓库没有索引到贡献指南
调研方向
先从复现中描述的 Podfile、DotnetNewBindings.swift 和 .csproj 设置开始,然后检查缺失的 Pods_NewBinding framework 附近的 xcodebuild archive 输出,并在仓库中搜索 native binding 的 build 入口点。当文档所述的 CocoaPods 设置能够在 arm64 上完成 dotnet build/archive,且不再出现报告中的 linker 失败时,即视为完成。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- csharp, ios, swift
- 领域
- build-system, mobile-dev
- Issue 类型
- 缺陷
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 停滞
- 描述清晰度
- 需要澄清
- 新手友好度
- 28/100