[Xcode 15.3] 빌드 에러(Type specifier missing, defaults to 'int'; ISO C99 and later do not support implicit int)
Unity 2021.3.33f1
Xcode 15.3
AppsFlyer v6.13.10
----
[추가] 2024-04-17
AppsFlyer v6.14.0에서 Xcode 15.3 관련 버그가 수정됐다.
v6.14.0으로 버전업 하면 해결.
[AppsFlyer Releases] https://github.com/AppsFlyerSDK/appsflyer-unity-plugin/releases
- Update iOS SDK version - 6.14.0
- iOS Privacy Manifest support, for more information about privacy manifest
- Xcode 15.3 bug fix
----
[빌드 에러 로그]
----
[Error] Type specifier missing, defaults to 'int'; ISO C99 and later do not support implicit int
[Warning] Incompatible pointer to integer conversion passing 'void *' to parameter of type 'int'
----
BOOL __swizzled_didReceiveRemoteNotification(id self, SEL _cmd, UIApplication* application, NSDictionary* userInfo,void (^UIBackgroundFetchResult)(void) ) {
NSLog(@"swizzled didReceiveRemoteNotification");
[[AppsFlyerLib shared] handlePushNotification:userInfo];
if(__original_didReceiveRemoteNotification_Imp){
return ((BOOL(*)(id, SEL, UIApplication*, NSDictionary*, (UIBackgroundFetchResult)))__original_didReceiveRemoteNotification_Imp)(self, _cmd, application, userInfo, nil);
}
return YES;
}
----
[2024-03-13] Xcode 15.3이 나와서 업데이트 하고 iOS 빌드 하니 위와 같은 에러가 난다.
에러 위치는 AppsFlyer 인데..
검색(아래 링크 참조)해보니 Xcode 15.3 업데이트 하고나서 같은 에러를 겪고 있는 것 같다.
AppsFlyer에서 대응해줘야 될 것 같은데, 링크에서 임시방편으로 수정하는 방법을 알려주고 있다.
일단 빌드를 할 수 없으니 Xcode 15.2로 다운그레이드 했다.
[결론]
Xcode 15.3을 쓰려면 두가지 방법중 하나를 고르자.
1. [임시방편] 당장 써야겠다면, 해당 에러 위치를 아래 내용을 참조해서 수정하자.
1.1. AppsFlyer+AppController.m 파일 위치
1.1.1. 수동 설치 했으면 : ..\Assets\AppsFlyer\Plugins\iOS\AppsFlyer+AppController.m
1.1.2. Package로 설치했으면 : /Library/PackageCache/appsflyer-unity-plugin@xxxxxxxxxx/AppsFlyer+AppController.m
1.2. AppsFlyer+AppController.m line:144 위치의 return 하는 소스를 아래와 같이 수정하자.
-> return ((BOOL(*)(id, SEL, UIApplication*, NSDictionary*, int(UIBackgroundFetchResult)))__original_didReceiveRemoteNotification_Imp)(self, _cmd, application, userInfo, nil);
[참조] https://github.com/AppsFlyerSDK/appsflyer-unity-plugin/issues/263
[추가]
Xcode 15.3부터 C99 이상 강제하는 것 같다.
AppsFlyer 현재 버전이 C89인지.. C99 지원을 안하는 것 같은데..
결국 AppsFlyer가 C99 대응 업데이트를 해줘야 Xcode 15.3에서 정상적으로 빌드가 되지 싶다.
[참조] https://github.com/AppsFlyerSDK/appsflyer-unity-plugin/issues/263