적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

초보 iOS 개발자의 일상/이슈모음집

CryptoSwift Build Errors in Xcode 12.5 'exported: true' has no effect in '_specialize' attribute

hongssup_ 2021. 7. 2. 11:41
반응형

Xcode 12.5로 업데이트 하고 빌드를 하니 잘 돌아가던 앱이 에러가 아주 예쁘게 났다. 이번엔 예뻐서 바줄게 ^_^ 

ERROR : 'exported: true' has no effect in '_specialize' attribute

CryptoSwift 라이브러리의 Generics.swift 내에서 발생한 에러로, 옛날 버전을 1.4.0으로 새로 업데이트 해주면 된다고 한다. 

 

구글링 해보면 Xcode 12.4로 downgrading 해라, Swift Package로 수동으로 추가해줘라 등 여러가지 해결방법들이 있지만 이제는 그럴 필요가 없다. 

 

해결방법 : 

1. 터미널 열고 pod deintegrate

2. pod file 들어가서 pod 'CryptoSwift', '~> 1.4.0' 로 버전 설정을 해주고

3. pod install 해주면 끝! (M1: arch -x86_64 pod install)

참고 : https://github.com/krzyzanowskim/CryptoSwift/issues/864

 

근데 그래서 이게 뭐하는건데?

CryptoSwift

: Crypto related functions helpers for Swift implemented in Swift. 

Swift용 암호화 관련 기능을 도와주는 모듈이라고 한다. 

암호화(encrypt)와 복호화(decrypt)를 편리하게 구현할 수 있도록 도와준다. 

 

간단한 사용법을 살펴보자면 다음과 같이 암호화/복호화를 구현할 수 있다. 

import Foundation
import CryptoSwift

public class UtilsCrypto {
    internal static func setEncriptWithAES(message: String) -> String? {	//message: 암호화할 문자열
        do {
            let aes = try AES(key: DEFINE_KEY, iv: DEFINE_IV)
            let ciphertext = try aes.encrypt(message.bytes).toBase64()
            return Data(ciphertext).base64EncodedString()
        } catch {
            print(error)
            return nil
        }
    }

    internal static func setDecryptWithAES(message: String) -> String? {	//message : 복호화할 문자열
        guard let data = Data(base64Encoded: message) else { return nil }
        do {
            let aes = try AES(key: DEFINE_KEY, iv: DEFINE_IV)
            let ciphertext = try aes.decrypt(data.bytes)
            return String(bytes: ciphertext, encoding: .utf8)            
        } catch {
            print(error)
            return nil
        }
    }
}

 

 

참고 : https://cocoapods.org/pods/CryptoSwift

 

728x90
반응형