Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

clang++ exited with code 1: building for 'iOS', but linking in object file libswiftCompatibility50.a[arm64][7](Overrides.cpp.o) built for 'iOS-simulator' #22231

Open
FlavioGoncalves-Cayas opened this issue Feb 21, 2025 · 17 comments
Labels
need-info Waiting for more information before the bug can be investigated
Milestone

Comments

@FlavioGoncalves-Cayas
Copy link

Description

Hello,

I am having issues building my net9.0 MAUI app for iOS on Azure DevOps, while it works perfectly fine locally. I already compared the workloads, sdks and XCode versions.

Here is the error I am receiving:

/Users/runner/hostedtoolcache/dotnet/packs/Microsoft.iOS.Sdk.net9.0_18.2/18.2.9180/targets/Xamarin.Shared.Sdk.targets(1665,3): error : clang++ exited with code 1: [redacted.csproj]
/Users/runner/hostedtoolcache/dotnet/packs/Microsoft.iOS.Sdk.net9.0_18.2/18.2.9180/targets/Xamarin.Shared.Sdk.targets(1665,3): error : ld: building for 'iOS', but linking in object file (/Applications/Xcode_16.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphonesimulator/libswiftCompatibility50.a[arm64][7](Overrides.cpp.o)) built for 'iOS-simulator' [redacted.csproj]
/Users/runner/hostedtoolcache/dotnet/packs/Microsoft.iOS.Sdk.net9.0_18.2/18.2.9180/targets/Xamarin.Shared.Sdk.targets(1665,3): error : clang++: error: linker command failed with exit code 1 (use -v to see invocation) [redacted.csproj]

This is the pipeline configuration:

vmImage: macOS-15
.NET SDK: 9.0.102
XCode: 16.2
workloads:
  ios                        18.2.9180/9.0.100      SDK 9.0.100        
  maui                       9.0.14/9.0.100         SDK 9.0.100        
  maui-ios                   9.0.14/9.0.100         SDK 9.0.100 

I am using dotnet publish:

dotnet publish redacted.csproj -f net9.0-ios -c Release -p:ArchiveOnBuild=true -p:RuntimeIdentifier=ios-arm64 -p:CodesignKey="$(APPLE_CERTIFICATE_SIGNING_IDENTITY)"

Any ideas on how to fix it, or what's the underlying issue?

I am also wondering why it says Xcode_16.app in the error, when I specifically selected XCode 16.2 with sudo xcode-select -s /Applications/Xcode_16.2.app

@rolfbjarne maybe it's more of a macios issue?

Steps to Reproduce

No response

Link to public reproduction project repository

No response

Version with bug

9.0.30 SR3

Is this a regression from previous behavior?

No, this is something new

Last version that worked well

Unknown/Other

Affected platforms

iOS

Affected platform versions

No response

Did you find any workaround?

No response

Relevant log output

@rolfbjarne
Copy link
Member

I am also wondering why it says Xcode_16.app in the error, when I specifically selected XCode 16.2 with sudo xcode-select -s /Applications/Xcode_16.2.app

That's probably the issue.

Check if this file exists, and if it does, just delete it:

~/Library/Preferences/Xamarin/Settings.plist

For more information see: #11172 (comment)

@rolfbjarne rolfbjarne transferred this issue from dotnet/maui Feb 21, 2025
@rolfbjarne rolfbjarne added need-info Waiting for more information before the bug can be investigated and removed t/bug labels Feb 21, 2025
@rolfbjarne rolfbjarne added this to the Future milestone Feb 21, 2025
@FlavioGoncalves-Cayas
Copy link
Author

FlavioGoncalves-Cayas commented Feb 24, 2025

@rolfbjarne thanks for the reply.

cat ~/Library/Preferences/Xamarin/Settings.plist returns no such file or directory

So it looks like that is not the issue.

Also xcode-select -p returns /Applications/Xcode_16.2.app/Contents/Developer as expected, after sudo xcode-select -s /Applications/Xcode_16.2.app

@dotnet-policy-service dotnet-policy-service bot added need-attention An issue requires our attention/response and removed need-info Waiting for more information before the bug can be investigated labels Feb 24, 2025
@rolfbjarne
Copy link
Member

Can you get an MSBuild binlog that shows the build failure?

@rolfbjarne rolfbjarne added need-info Waiting for more information before the bug can be investigated no-auto-reply For internal use and removed need-attention An issue requires our attention/response labels Feb 24, 2025
@dotnet-policy-service dotnet-policy-service bot removed the no-auto-reply For internal use label Feb 24, 2025
@FlavioGoncalves-Cayas
Copy link
Author

Heres the binlog you requested:

msbuild.binlog.zip

Thanks for the help.

@dotnet-policy-service dotnet-policy-service bot added need-attention An issue requires our attention/response and removed need-info Waiting for more information before the bug can be investigated labels Feb 25, 2025
@rolfbjarne
Copy link
Member

Is either /Applications/Xcode_16.2.app or /Applications/Xcode_16.app a symlink to somewhere else?

What's the output of this command?

ls -lad /Applications/Xcode*.app

@rolfbjarne rolfbjarne added need-info Waiting for more information before the bug can be investigated no-auto-reply For internal use and removed need-attention An issue requires our attention/response labels Feb 25, 2025
@dotnet-policy-service dotnet-policy-service bot removed the no-auto-reply For internal use label Feb 25, 2025
@FlavioGoncalves-Cayas
Copy link
Author

The output is

lrwxr-xr-x  1 runner  admin  26 Jan 20 05:07 /Applications/Xcode.app -> /Applications/Xcode_16.app
lrwxr-xr-x  1 runner  admin  28 Jan 20 05:06 /Applications/Xcode_15.4.0.app -> /Applications/Xcode_15.4.app
drwxr-xr-x  3 runner  staff  96 Jan 20 04:10 /Applications/Xcode_15.4.app
lrwxr-xr-x  1 runner  admin  26 Jan 20 05:06 /Applications/Xcode_16.0.0.app -> /Applications/Xcode_16.app
lrwxr-xr-x  1 runner  admin  26 Jan 20 05:06 /Applications/Xcode_16.0.app -> /Applications/Xcode_16.app
lrwxr-xr-x  1 runner  admin  28 Jan 20 05:06 /Applications/Xcode_16.1.0.app -> /Applications/Xcode_16.1.app
drwxr-xr-x  3 runner  staff  96 Jan 20 04:10 /Applications/Xcode_16.1.app
lrwxr-xr-x  1 runner  admin  28 Jan 20 05:06 /Applications/Xcode_16.2.0.app -> /Applications/Xcode_16.2.app
drwxr-xr-x  3 runner  staff  96 Jan 20 04:10 /Applications/Xcode_16.2.app
drwxr-xr-x  3 runner  staff  96 Jan 20 04:10 /Applications/Xcode_16.app

@dotnet-policy-service dotnet-policy-service bot added need-attention An issue requires our attention/response and removed need-info Waiting for more information before the bug can be investigated labels Feb 25, 2025
@rolfbjarne
Copy link
Member

Can you try executing this, just before executing dotnet publish, and see if that fixes anything:

xcrun -k

This removes a cache used when looking up Xcode's development tools and properties on the command line (you can verify this by looking at xcrun's man page ("man xcrun")).

@rolfbjarne rolfbjarne added need-info Waiting for more information before the bug can be investigated no-auto-reply For internal use and removed need-attention An issue requires our attention/response labels Feb 25, 2025
@dotnet-policy-service dotnet-policy-service bot removed the no-auto-reply For internal use label Feb 25, 2025
@FlavioGoncalves-Cayas
Copy link
Author

Unfortunately that did not help.

@rolfbjarne
Copy link
Member

This is getting stranger and stranger :(

Next idea to get more verbose output from the native linker, please add this to the csproj and get an updated binlog:

<ItemGroup>
    <_CustomLinkFlags Include="-v" />
</ItemGroup>

@FlavioGoncalves-Cayas
Copy link
Author

Here's the new binlog
msbuild (2).binlog.zip

@dotnet-policy-service dotnet-policy-service bot added need-attention An issue requires our attention/response and removed need-info Waiting for more information before the bug can be investigated labels Feb 25, 2025
@rolfbjarne
Copy link
Member

I think I see something wrong with the Org.Jitsi.Meet.Sdk.iOS package, it adds linker flags to the build that hardcodes paths to /Application/Xcode.app, which is a symlink that ends up resolving to /Application/Xcode_16.app.

I couldn't find this package on NuGet.org, so I assume it's a private package? Do you control it / do you have the source code for it?

@rolfbjarne rolfbjarne added need-info Waiting for more information before the bug can be investigated no-auto-reply For internal use and removed need-attention An issue requires our attention/response labels Feb 25, 2025
@dotnet-policy-service dotnet-policy-service bot removed the no-auto-reply For internal use label Feb 25, 2025
@FlavioGoncalves-Cayas
Copy link
Author

FlavioGoncalves-Cayas commented Feb 25, 2025

Oh, I see. Yes that is a private package I control.
It has LinkerFlags like these

<NativeReference Include="..\iOS\JitsiMeetSdkProxy\Pods\JitsiMeetSDK\Frameworks\JitsiMeetSDK.xcframework">
        <Kind>Framework</Kind>
          <SmartLink>False</SmartLink>
        <Frameworks>Foundation UIKit</Frameworks>
          <LinkerFlags>-L /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphonesimulator/ -L /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos -Wl,-rpath -Wl,@executable_path/Frameworks -ObjC </LinkerFlags>
      </NativeReference>

I don't quite remember when and why I added them. Probably read it somewhere when I was trying to get the binding working.
Do you happen to know if they are necessary?

@dotnet-policy-service dotnet-policy-service bot added need-attention An issue requires our attention/response and removed need-info Waiting for more information before the bug can be investigated labels Feb 25, 2025
@rolfbjarne
Copy link
Member

Can you try and see if this works?

<NativeReference Include="..\iOS\JitsiMeetSdkProxy\Pods\JitsiMeetSDK\Frameworks\JitsiMeetSDK.xcframework">
    <Kind>Framework</Kind>
    <SmartLink>False</SmartLink>
    <Frameworks>Foundation UIKit</Frameworks>
    <LinkWithSwiftSystemLibraries>true</LinkWithSwiftSystemLibraries>
</NativeReference>

If not, please attach an updated binlog.

@FlavioGoncalves-Cayas
Copy link
Author

Did that. Now I'm facing other errors

/Users/runner/hostedtoolcache/dotnet/packs/Microsoft.iOS.Sdk.net9.0_18.2/18.2.9180/targets/Xamarin.Shared.Sdk.targets(1665,3): error : Undefined symbols for architecture arm64: [/Users/runner/work/1/s/redacted.csproj]
/Users/runner/hostedtoolcache/dotnet/packs/Microsoft.iOS.Sdk.net9.0_18.2/18.2.9180/targets/Xamarin.Shared.Sdk.targets(1665,3): error :   "_OBJC_CLASS_$_JitsiMeetConferenceOptionsBuilderProxy", referenced from: [/Users/runner/work/1/s/redacted.csproj]
/Users/runner/hostedtoolcache/dotnet/packs/Microsoft.iOS.Sdk.net9.0_18.2/18.2.9180/targets/Xamarin.Shared.Sdk.targets(1665,3): error :        in registrar.o [/Users/runner/work/1/s/redacted.csproj]
/Users/runner/hostedtoolcache/dotnet/packs/Microsoft.iOS.Sdk.net9.0_18.2/18.2.9180/targets/Xamarin.Shared.Sdk.targets(1665,3): error :   "_OBJC_CLASS_$_JitsiMeetViewProxy", referenced from: [/Users/runner/work/1/s/redacted.csproj]
/Users/runner/hostedtoolcache/dotnet/packs/Microsoft.iOS.Sdk.net9.0_18.2/18.2.9180/targets/Xamarin.Shared.Sdk.targets(1665,3): error :        in registrar.o [/Users/runner/work/1/s/redacted.csproj]
/Users/runner/hostedtoolcache/dotnet/packs/Microsoft.iOS.Sdk.net9.0_18.2/18.2.9180/targets/Xamarin.Shared.Sdk.targets(1665,3): error :   "_OBJC_CLASS_$__TtC17JitsiMeetSdkProxy25JitsiMeetViewDelegateImpl", referenced from: [/Users/runner/work/1/s/redacted.csproj]
/Users/runner/hostedtoolcache/dotnet/packs/Microsoft.iOS.Sdk.net9.0_18.2/18.2.9180/targets/Xamarin.Shared.Sdk.targets(1665,3): error :        in registrar.o [/Users/runner/work/1/s/redacted.csproj]

msbuild (4).binlog.zip

@rolfbjarne
Copy link
Member

Can you show how these classes are bound in ApiDefinition.cs + how they're defined in Objective-C?

  • JitsiMeetConferenceOptionsBuilderProxy
  • JitsiMeetViewProxy
  • JitsiMeetViewDelegateImpl

@rolfbjarne rolfbjarne added need-info Waiting for more information before the bug can be investigated no-auto-reply For internal use and removed need-attention An issue requires our attention/response labels Feb 26, 2025
@dotnet-policy-service dotnet-policy-service bot removed the no-auto-reply For internal use label Feb 26, 2025
@FlavioGoncalves-Cayas
Copy link
Author

The classes are defined in swift with @objc annotations:

import Foundation
import JitsiMeetSDK

@objc(JitsiMeetViewProxy)
public class JitsiMeetViewProxy : NSObject
{
    private var jitsiMeetView: JitsiMeetView?
    private var delegateImpl: JitsiMeetViewDelegateImpl?
    
    @objc
    public func createJitsiMeetView(_ delegate: JitsiMeetViewDelegateProxy) -> UIView {
        jitsiMeetView = JitsiMeetView()
        delegateImpl = JitsiMeetViewDelegateImpl(delegate)
        jitsiMeetView!.delegate = delegateImpl!
        
        return jitsiMeetView!
    }
    
    @objc
    public func joinConference(_ options: JitsiMeetConferenceOptionsBuilderProxy)
    {
        jitsiMeetView!.join(options.build())
    }
    
    @objc
    public func leaveConference()
    {
        jitsiMeetView!.leave()
    }
    
    @objc
    public func hangUp()
    {
        jitsiMeetView!.hangUp()
    }
    
    @objc
    public func setVideoMuted(_ muted: Bool)
    {
        jitsiMeetView!.setVideoMuted(muted)
    }
    
    @objc
    public func setAudioMuted(_ muted: Bool)
    {
        jitsiMeetView!.setAudioMuted(muted)
    }
    
    @objc
    public func sendChatMessage(_ message: String, _ to: String?)
    {
        jitsiMeetView!.sendChatMessage(message, to)
    }
    
    @objc
    public func retrieveParticipantInfo() async -> [Any]?
    {
        return await jitsiMeetView!.retrieveParticipantsInfo()
    }
}

@objc(JitsiMeetConferenceOptionsBuilderProxy)
public class JitsiMeetConferenceOptionsBuilderProxy : NSObject
{
    var serverUrl: URL?
    var room: String?
    var flags: [String: Any] = [:]
    var userInfo: JitsiMeetUserInfo?
    
    @objc
    public func setServerUrl(_ serverUrl: URL) -> JitsiMeetConferenceOptionsBuilderProxy
    {
        self.serverUrl = serverUrl
        
        return self
    }
    
    @objc
    public func setRoom(_ room: String) -> JitsiMeetConferenceOptionsBuilderProxy
    {
        self.room = room
        
        return self
    }
    
    @objc
    public func setUserInfo(_ displayName: String, _ email: String) -> JitsiMeetConferenceOptionsBuilderProxy
    {
        if userInfo == nil
        {
            userInfo = JitsiMeetUserInfo()
        }
        
        userInfo!.displayName = displayName
        userInfo!.email = email
        
        return self
    }
    
    @objc
    public func setFeatureFlag(_ flag: String, _ value: Bool) -> JitsiMeetConferenceOptionsBuilderProxy
    {
        flags[flag] = value
        
        return self
    }
    
    internal func build() -> JitsiMeetConferenceOptions
    {
        JitsiMeetConferenceOptions.fromBuilder(buildWithBuilder)
    }
    
    private func buildWithBuilder(_ builder: JitsiMeetConferenceOptionsBuilder)
    {
        if self.serverUrl != nil
        {
            builder.serverURL = serverUrl
        }
        if self.room != nil
        {
            builder.room = room
        }
        if self.userInfo != nil
        {
            builder.userInfo = self.userInfo!
        }
        
        for (key, value) in self.flags
        {
            builder.setFeatureFlag(key, withValue: value)
        }
    }
}

@objc(JitsiMeetViewDelegateProxy)
public protocol JitsiMeetViewDelegateProxy
{
    @objc
    func conferenceJoined(_ url: String)
    
    @objc
    func conferenceTerminated(_ url: String, _ error: String?)
    
    @objc
    func conferenceWillJoin(_ url: String)
    
    @objc
    func enterPictureInPicture()
    
    @objc
    func participantJoined(_ email: String?, _ name: String, _ rol: String, _ participantId: String)
    
    @objc
    func participantLeft(_ participantId: String)
    
    @objc
    func audioMutedChanged(_ muted: Bool)
    
    @objc
    func videoMutedChanged(_ muted: Bool)
    
    @objc
    func endpointTextMessageReceived(_ senderId: String, _ message: String)
    
    @objc
    func screenShareToggled(_ participantId: String, _ isSharing: Bool)
    
    @objc
    func chatMessageReceived(_ senderId: String, _ message: String, _ isPrivate: Bool)
    
    @objc
    func chatToggled(_ isOpen: Bool)
    
    @objc
    func readyToClose()
}

public class JitsiMeetViewDelegateImpl : NSObject, JitsiMeetViewDelegate
{
    var delegateProxy: JitsiMeetViewDelegateProxy
    
    init(_ delegateProxy: JitsiMeetViewDelegateProxy) {
        self.delegateProxy = delegateProxy
    }
    
    public func conferenceJoined(_ data: [AnyHashable : Any]!) {
        delegateProxy.conferenceJoined(data["url"] as! String)
    }
    
    public func conferenceTerminated(_ data: [AnyHashable : Any]!) {
        delegateProxy.conferenceTerminated(data["url"] as! String, data["error"] as? String)
    }
    
    public func conferenceWillJoin(_ data: [AnyHashable : Any]!) {
        delegateProxy.conferenceWillJoin(data["url"] as! String)
    }
    
    public func enterPicture(inPicture data: [AnyHashable : Any]!) {
        delegateProxy.enterPictureInPicture()
    }
    
    public func participantJoined(_ data: [AnyHashable : Any]!) {
        delegateProxy.participantJoined(data["email"] as? String, data["name"] as! String, data["role"] as! String, data["participantId"] as! String)
    }
    
    public func participantLeft(_ data: [AnyHashable : Any]!) {
        delegateProxy.participantLeft(data["participantId"] as! String)
    }
    
    public func audioMutedChanged(_ data: [AnyHashable : Any]!) {
        delegateProxy.audioMutedChanged(data["muted"] as! Bool)
    }
    
    public func videoMutedChanged(_ data: [AnyHashable : Any]!) {
        var muted: Bool = true
        let mutedInt: Int = data["muted"] as! Int
        
        if mutedInt == 0
        {
            muted = false
        }
        else
        {
            muted = true
        }
        
        delegateProxy.videoMutedChanged(muted)
    }
    
    public func endpointTextMessageReceived(_ data: [AnyHashable : Any]!) {
        delegateProxy.endpointTextMessageReceived(data["senderId"] as! String, data["message"] as! String)
    }
    
    public func screenShareToggled(_ data: [AnyHashable : Any]!) {
        delegateProxy.screenShareToggled(data["participantId"] as! String, data["sharing"] as! Bool)
    }
    
    public func chatMessageReceived(_ data: [AnyHashable : Any]!) {
        delegateProxy.chatMessageReceived(data["senderId"] as! String, data["message"] as! String, data["isPrivate"] as! Bool)
    }
    
    public func chatToggled(_ data: [AnyHashable : Any]!) {
        delegateProxy.chatToggled(data["isOpen"] as! Bool)
    }
    
    public func ready(toClose data: [AnyHashable : Any]!) {
        delegateProxy.readyToClose()
    }
}

ApiDefinition.cs

using System;
using Foundation;
using UIKit;

namespace Org.Jitsi.Meet.Sdk.iOS
{
	// @interface JitsiMeetConferenceOptionsBuilderProxy : NSObject
	[BaseType (typeof(NSObject))]
	interface JitsiMeetConferenceOptionsBuilderProxy
	{
		// -(JitsiMeetConferenceOptionsBuilderProxy * _Nonnull)setServerUrl:(NSURL * _Nonnull)serverUrl __attribute__((warn_unused_result("")));
		[Export ("setServerUrl:")]
		JitsiMeetConferenceOptionsBuilderProxy SetServerUrl (NSUrl serverUrl);

		// -(JitsiMeetConferenceOptionsBuilderProxy * _Nonnull)setRoom:(NSString * _Nonnull)room __attribute__((warn_unused_result("")));
		[Export ("setRoom:")]
		JitsiMeetConferenceOptionsBuilderProxy SetRoom (string room);

		// -(JitsiMeetConferenceOptionsBuilderProxy * _Nonnull)setUserInfo:(NSString * _Nonnull)displayName :(NSString * _Nonnull)email __attribute__((warn_unused_result("")));
		[Export ("setUserInfo::")]
		JitsiMeetConferenceOptionsBuilderProxy SetUserInfo (string displayName, string email);

		// -(JitsiMeetConferenceOptionsBuilderProxy * _Nonnull)setFeatureFlag:(NSString * _Nonnull)flag :(BOOL)value __attribute__((warn_unused_result("")));
		[Export ("setFeatureFlag::")]
		JitsiMeetConferenceOptionsBuilderProxy SetFeatureFlag (string flag, bool value);
	}

	// @interface JitsiMeetViewDelegateImpl : NSObject <JitsiMeetViewDelegate>
	[BaseType (typeof(NSObject), Name = "_TtC17JitsiMeetSdkProxy25JitsiMeetViewDelegateImpl")]
	[DisableDefaultCtor]
	interface JitsiMeetViewDelegateImpl
	{
		// -(void)conferenceJoined:(NSDictionary * _Null_unspecified)data;
		[Export ("conferenceJoined:")]
		void ConferenceJoined (NSDictionary data);

		// -(void)conferenceTerminated:(NSDictionary * _Null_unspecified)data;
		[Export ("conferenceTerminated:")]
		void ConferenceTerminated (NSDictionary data);

		// -(void)conferenceWillJoin:(NSDictionary * _Null_unspecified)data;
		[Export ("conferenceWillJoin:")]
		void ConferenceWillJoin (NSDictionary data);

		// -(void)enterPictureInPicture:(NSDictionary * _Null_unspecified)data;
		[Export ("enterPictureInPicture:")]
		void EnterPictureInPicture (NSDictionary data);

		// -(void)participantJoined:(NSDictionary * _Null_unspecified)data;
		[Export ("participantJoined:")]
		void ParticipantJoined (NSDictionary data);

		// -(void)participantLeft:(NSDictionary * _Null_unspecified)data;
		[Export ("participantLeft:")]
		void ParticipantLeft (NSDictionary data);

		// -(void)audioMutedChanged:(NSDictionary * _Null_unspecified)data;
		[Export ("audioMutedChanged:")]
		void AudioMutedChanged (NSDictionary data);

		// -(void)videoMutedChanged:(NSDictionary * _Null_unspecified)data;
		[Export ("videoMutedChanged:")]
		void VideoMutedChanged (NSDictionary data);

		// -(void)endpointTextMessageReceived:(NSDictionary * _Null_unspecified)data;
		[Export ("endpointTextMessageReceived:")]
		void EndpointTextMessageReceived (NSDictionary data);

		// -(void)screenShareToggled:(NSDictionary * _Null_unspecified)data;
		[Export ("screenShareToggled:")]
		void ScreenShareToggled (NSDictionary data);

		// -(void)chatMessageReceived:(NSDictionary * _Null_unspecified)data;
		[Export ("chatMessageReceived:")]
		void ChatMessageReceived (NSDictionary data);

		// -(void)chatToggled:(NSDictionary * _Null_unspecified)data;
		[Export ("chatToggled:")]
		void ChatToggled (NSDictionary data);

		// -(void)readyToClose:(NSDictionary * _Null_unspecified)data;
		[Export ("readyToClose:")]
		void ReadyToClose (NSDictionary data);
	}

	// @protocol JitsiMeetViewDelegateProxy
	/*
  Check whether adding [Model] to this declaration is appropriate.
  [Model] is used to generate a C# class that implements this protocol,
  and might be useful for protocols that consumers are supposed to implement,
  since consumers can subclass the generated class instead of implementing
  the generated interface. If consumers are not supposed to implement this
  protocol, then [Model] is redundant and will generate code that will never
  be used.
*/[Protocol]
	interface JitsiMeetViewDelegateProxy
	{
		// @required -(void)conferenceJoined:(NSString * _Nonnull)url;
		[Abstract]
		[Export ("conferenceJoined:")]
		void ConferenceJoined (string url);

		// @required -(void)conferenceTerminated:(NSString * _Nonnull)url :(NSString * _Nullable)error;
		[Abstract]
		[Export ("conferenceTerminated::")]
		void ConferenceTerminated (string url, [NullAllowed] string error);

		// @required -(void)conferenceWillJoin:(NSString * _Nonnull)url;
		[Abstract]
		[Export ("conferenceWillJoin:")]
		void ConferenceWillJoin (string url);

		// @required -(void)enterPictureInPicture;
		[Abstract]
		[Export ("enterPictureInPicture")]
		void EnterPictureInPicture ();

		// @required -(void)participantJoined:(NSString * _Nullable)email :(NSString * _Nonnull)name :(NSString * _Nonnull)rol :(NSString * _Nonnull)participantId;
		[Abstract]
		[Export ("participantJoined::::")]
		void ParticipantJoined ([NullAllowed] string email, string name, string rol, string participantId);

		// @required -(void)participantLeft:(NSString * _Nonnull)participantId;
		[Abstract]
		[Export ("participantLeft:")]
		void ParticipantLeft (string participantId);

		// @required -(void)audioMutedChanged:(BOOL)muted;
		[Abstract]
		[Export ("audioMutedChanged:")]
		void AudioMutedChanged (bool muted);

		// @required -(void)videoMutedChanged:(BOOL)muted;
		[Abstract]
		[Export ("videoMutedChanged:")]
		void VideoMutedChanged (bool muted);

		// @required -(void)endpointTextMessageReceived:(NSString * _Nonnull)senderId :(NSString * _Nonnull)message;
		[Abstract]
		[Export ("endpointTextMessageReceived::")]
		void EndpointTextMessageReceived (string senderId, string message);

		// @required -(void)screenShareToggled:(NSString * _Nonnull)participantId :(BOOL)isSharing;
		[Abstract]
		[Export ("screenShareToggled::")]
		void ScreenShareToggled (string participantId, bool isSharing);

		// @required -(void)chatMessageReceived:(NSString * _Nonnull)senderId :(NSString * _Nonnull)message :(BOOL)isPrivate;
		[Abstract]
		[Export ("chatMessageReceived:::")]
		void ChatMessageReceived (string senderId, string message, bool isPrivate);

		// @required -(void)chatToggled:(BOOL)isOpen;
		[Abstract]
		[Export ("chatToggled:")]
		void ChatToggled (bool isOpen);

		// @required -(void)readyToClose;
		[Abstract]
		[Export ("readyToClose")]
		void ReadyToClose ();
	}

	// @interface JitsiMeetViewProxy : NSObject
	[BaseType (typeof(NSObject))]
	interface JitsiMeetViewProxy
	{
		// -(UIView * _Nonnull)createJitsiMeetView:(id<JitsiMeetViewDelegateProxy> _Nonnull)delegate __attribute__((warn_unused_result("")));
		[Export ("createJitsiMeetView:")]
		UIView CreateJitsiMeetView (JitsiMeetViewDelegateProxy @delegate);

		// -(void)joinConference:(JitsiMeetConferenceOptionsBuilderProxy * _Nonnull)options;
		[Export ("joinConference:")]
		void JoinConference (JitsiMeetConferenceOptionsBuilderProxy options);

		// -(void)leaveConference;
		[Export ("leaveConference")]
		void LeaveConference ();

		// -(void)hangUp;
		[Export ("hangUp")]
		void HangUp ();

		// -(void)setVideoMuted:(BOOL)muted;
		[Export ("setVideoMuted:")]
		void SetVideoMuted (bool muted);

		// -(void)setAudioMuted:(BOOL)muted;
		[Export ("setAudioMuted:")]
		void SetAudioMuted (bool muted);

		// -(void)sendChatMessage:(NSString * _Nonnull)message :(NSString * _Nullable)to;
		[Export ("sendChatMessage::")]
		void SendChatMessage (string message, [NullAllowed] string to);

		// -(void)retrieveParticipantInfoWithCompletionHandler:(void (^ _Nonnull)(NSArray * _Nullable))completionHandler;
		[Export ("retrieveParticipantInfoWithCompletionHandler:")]
		void RetrieveParticipantInfoWithCompletionHandler (Action<NSArray> completionHandler);
	}
}

@dotnet-policy-service dotnet-policy-service bot added need-attention An issue requires our attention/response and removed need-info Waiting for more information before the bug can be investigated labels Feb 26, 2025
@rolfbjarne
Copy link
Member

It looks like the native frameworks weren't bundled into the rebuilt NuGet for some reason.

For the previous version (10.3.0.2), the native frameworks were in a zip file here:

/Users/runner/.nuget/packages/org.jitsi.meet.sdk.ios/10.3.0.2/lib/net8.0-ios18.0/Org.Jitsi.Meet.Sdk.iOS.resources.zip

but it doesn't look like the corresponding file exists for the new version (10.3.0.4):

/Users/runner/.nuget/packages/org.jitsi.meet.sdk.ios/10.3.0.4/lib/net8.0-ios18.0/Org.Jitsi.Meet.Sdk.iOS.resources.zip

Do you have a binlog of when the NuGet was built?

@rolfbjarne rolfbjarne added need-info Waiting for more information before the bug can be investigated no-auto-reply For internal use and removed need-attention An issue requires our attention/response labels Feb 26, 2025
@dotnet-policy-service dotnet-policy-service bot removed the no-auto-reply For internal use label Feb 26, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
need-info Waiting for more information before the bug can be investigated
Projects
None yet
Development

No branches or pull requests

2 participants