그냥 평범하게 셋팅되어있다면 아주 간단한 작업이었지만, 구형 맥북(몬테레이)을 사용하고 있었기때문에 어려움을 가졌었다. 우선 기본적으로 나는 아이폰 15pro를 사용하기 때문에 구동하기 위해선 최신버전의 엑스코드가 필요했다.
그러나 몬테레이에서는 엑스코드 13.0 버전이상을 업데이트가 불가능했다.
유튜브를 보며 벤츄라로 업그레이드를 할 수 있었다. 굉장히 오랜 시간을 걸렸다.
업그레이드한 후, 소스트리를 통해 깃허브에 있는 코드를 클론했다.
이그노어에 pod관련 파일(podfile 제외)은 모두 커밋을 차단해놓았기 때문에 cocoapod으로 podfile을 통해 pod install을 해야한다.
설치를 완료 한 후,
빌드과정에서 오류가 발생했는데
FirebaseFirestore/Firestore/Source/API/FIRFirestoreSettings.mm에서
ABSL_CONST_INIT extern "C" const int64_t kFIRFirestoreCacheSizeUnlimited =
Settings::CacheSizeUnlimited;
이런 오류가 발생했다.
스택오버플로우를 찾아보니 FireBase버전의 문제였다. 엑스코드를 업그레이드 하며 구버전의 FireBase sdk는 더이상 호환되지 않았다.
그래서 최신 버전으로 업데이트를 하려니 또 오류가 발생했다. FireBase, GTMSessionFetcher, GoogleSignIn 간에 종속성 문제였다.
GoogleSignIn 버전을 최신버전을 사용하지 않고 스택오버플로우에 정보가 많은 4.0 버전의 하위 버전을 사용하고 있었다. 6.0 버전 은 사용자에게 정보사용에 대해서 한번에 요청하지 않고 여러번에 나눠서 요청을하는 불편함을 가지고 있다고 했다.
여기서 문제는 GoogleSignIn 하위버전에 맞는 코드로 작성하였기 때문에 최신 버전으로 업그레이드 할 경우 오류가 발생해서 구글 로그인 함수를 다시 작성해야했다..
//구글로그인 기능
@IBAction func GoogleBtnAction(sender: Any) {
GIDSignIn.sharedInstance.signIn(withPresenting: self) { signInResult, error in
guard error == nil else { return }
guard let signInResult = signInResult else { return }
let user = signInResult.user
let emailAddress = user.profile?.email
Auth.auth().signIn(withEmail: emailAddress ?? "", password: "randompassword") { (authResult, error) in
if let error = error {
print("Error creating user: \(error.localizedDescription)")
return
}
if let user = authResult?.user {
print("User created with email: \(emailAddress ?? "")")
}
}
//로그인 성공후 구현부
UserDefaults.standard.set("Google", forKey: "SocialLogin")
UserDefaults.standard.set(emailAddress, forKey: "UserEmailKey")
let storyboard = UIStoryboard(name: "TabBar", bundle: nil)
guard let TabBarControllerVC = storyboard.instantiateViewController(withIdentifier: "TabBarController") as? TabBarController else { return }
(UIApplication.shared.connectedScenes.first?.delegate as? SceneDelegate)?.changeRootViewController(TabBarControllerVC, animated: false)
}
}
GoogleSignIn 7.0.0으로 업그레이드 후 최신 코드로 변경하였다.
이렇게 백업 및 업그레이드를 하면서 소스트리를 통해 깃허브 소스 코드 불러오는 방법, 구형 맥북 버전 업그레이드 방법, pod 파일들의 종속성 문제 해결방법 등 여러가지 오류들을 마주하며 해결방법에 대해서 알게 되었다.