The Swift Package Index logo.Swift Package Index

Build Information

Failed to build KeyVine, reference 1.0.2 (db84dd), with Swift 6.3 for Android on 13 Apr 2026 19:21:22 UTC.

Build Command

bash -c docker run --pull=always --rm -v "checkouts-4606859-1":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/swiftpackageindex/spi-images:android-6.3-latest swift build --swift-sdk aarch64-unknown-linux-android28 2>&1

Build Log

========================================
RunAll
========================================
Builder version: 4.70.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/ptsochantaris/key-vine.git
Reference: 1.0.2
Initialized empty Git repository in /host/spi-builder-workspace/.git/
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: 	git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: 	git branch -m <name>
From https://github.com/ptsochantaris/key-vine
 * tag               1.0.2      -> FETCH_HEAD
HEAD is now at db84dd1 Typo
Cloned https://github.com/ptsochantaris/key-vine.git
Revision (git rev-parse @):
db84dd107baf7c10f1a04adfc852f249a78ace51
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/ptsochantaris/key-vine.git at 1.0.2
========================================
Build
========================================
Selected platform:         android
Swift version:             6.3
Building package at path:  $PWD
https://github.com/ptsochantaris/key-vine.git
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4606859-1":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/swiftpackageindex/spi-images:android-6.3-latest swift build --swift-sdk aarch64-unknown-linux-android28 2>&1
android-6.3-latest: Pulling from swiftpackageindex/spi-images
Digest: sha256:9008270ea37a55e78725e6225015adb5eff8582da520c5232bf0499f32c36dc4
Status: Image is up to date for registry.gitlab.com/swiftpackageindex/spi-images:android-6.3-latest
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version--4F562202D5529B1.txt
error: emit-module command failed with exit code 1 (use -v to see invocation)
[3/6] Compiling KeyVine KeyVineStringConvertible.swift
[4/6] Compiling KeyVine KeyVineDataConvertible.swift
[5/6] Emitting module KeyVine
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:112:33: error: cannot find type 'CFString' in scope
110 |     }
111 |
112 |     private let templateQuery: [CFString: Any]
    |                                 `- error: cannot find type 'CFString' in scope
113 |
114 |     /// Initialise a key vine using a pair of identifiers. They can in theory be anything, but for sandboxed and app store apps,
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:62:26: error: cannot find type 'OSStatus' in scope
 60 |     /// the property and subscript syntax cannot throw errors.
 61 |     public enum KeyVineError: LocalizedError {
 62 |         case readFailure(OSStatus)
    |                          `- error: cannot find type 'OSStatus' in scope
 63 |         case writeFailure(OSStatus)
 64 |
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:63:27: error: cannot find type 'OSStatus' in scope
 61 |     public enum KeyVineError: LocalizedError {
 62 |         case readFailure(OSStatus)
 63 |         case writeFailure(OSStatus)
    |                           `- error: cannot find type 'OSStatus' in scope
 64 |
 65 |         public var errorDescription: String? {
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:96:22: error: cannot find type 'CFString' in scope
 94 |         case afterFirstUnlock
 95 |
 96 |         var cfValue: CFString {
    |                      `- error: cannot find type 'CFString' in scope
 97 |             switch self {
 98 |             case .afterFirstUnlock:
[6/6] Compiling KeyVine KeyVine.swift
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:112:33: error: cannot find type 'CFString' in scope
110 |     }
111 |
112 |     private let templateQuery: [CFString: Any]
    |                                 `- error: cannot find type 'CFString' in scope
113 |
114 |     /// Initialise a key vine using a pair of identifiers. They can in theory be anything, but for sandboxed and app store apps,
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:62:26: error: cannot find type 'OSStatus' in scope
 60 |     /// the property and subscript syntax cannot throw errors.
 61 |     public enum KeyVineError: LocalizedError {
 62 |         case readFailure(OSStatus)
    |                          `- error: cannot find type 'OSStatus' in scope
 63 |         case writeFailure(OSStatus)
 64 |
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:63:27: error: cannot find type 'OSStatus' in scope
 61 |     public enum KeyVineError: LocalizedError {
 62 |         case readFailure(OSStatus)
 63 |         case writeFailure(OSStatus)
    |                           `- error: cannot find type 'OSStatus' in scope
 64 |
 65 |         public var errorDescription: String? {
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:96:22: error: cannot find type 'CFString' in scope
 94 |         case afterFirstUnlock
 95 |
 96 |         var cfValue: CFString {
    |                      `- error: cannot find type 'CFString' in scope
 97 |             switch self {
 98 |             case .afterFirstUnlock:
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:68:39: error: cannot find 'SecCopyErrorMessageString' in scope
 66 |             switch self {
 67 |             case let .readFailure(status):
 68 |                 if let errorMessage = SecCopyErrorMessageString(status, nil) {
    |                                       `- error: cannot find 'SecCopyErrorMessageString' in scope
 69 |                     return "Keychain read failed with error \(status): \(errorMessage)"
 70 |                 } else {
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:68:73: error: 'nil' requires a contextual type
 66 |             switch self {
 67 |             case let .readFailure(status):
 68 |                 if let errorMessage = SecCopyErrorMessageString(status, nil) {
    |                                                                         `- error: 'nil' requires a contextual type
 69 |                     return "Keychain read failed with error \(status): \(errorMessage)"
 70 |                 } else {
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:74:39: error: cannot find 'SecCopyErrorMessageString' in scope
 72 |                 }
 73 |             case let .writeFailure(status):
 74 |                 if let errorMessage = SecCopyErrorMessageString(status, nil) {
    |                                       `- error: cannot find 'SecCopyErrorMessageString' in scope
 75 |                     return "Keychain write failed with error \(status): \(errorMessage)"
 76 |                 } else {
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:74:73: error: 'nil' requires a contextual type
 72 |                 }
 73 |             case let .writeFailure(status):
 74 |                 if let errorMessage = SecCopyErrorMessageString(status, nil) {
    |                                                                         `- error: 'nil' requires a contextual type
 75 |                     return "Keychain write failed with error \(status): \(errorMessage)"
 76 |                 } else {
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:99:24: error: cannot find 'kSecAttrAccessibleAfterFirstUnlock' in scope
 97 |             switch self {
 98 |             case .afterFirstUnlock:
 99 |                 return kSecAttrAccessibleAfterFirstUnlock
    |                        `- error: cannot find 'kSecAttrAccessibleAfterFirstUnlock' in scope
100 |             case .afterFirstUnlockThisDeviceOnly:
101 |                 return kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:101:24: error: cannot find 'kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly' in scope
 99 |                 return kSecAttrAccessibleAfterFirstUnlock
100 |             case .afterFirstUnlockThisDeviceOnly:
101 |                 return kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
    |                        `- error: cannot find 'kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly' in scope
102 |             case .whenPasscodeSetThisDeviceOnly:
103 |                 return kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:103:24: error: cannot find 'kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly' in scope
101 |                 return kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
102 |             case .whenPasscodeSetThisDeviceOnly:
103 |                 return kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
    |                        `- error: cannot find 'kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly' in scope
104 |             case .whenUnlocked:
105 |                 return kSecAttrAccessibleWhenUnlocked
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:105:24: error: cannot find 'kSecAttrAccessibleWhenUnlocked' in scope
103 |                 return kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly
104 |             case .whenUnlocked:
105 |                 return kSecAttrAccessibleWhenUnlocked
    |                        `- error: cannot find 'kSecAttrAccessibleWhenUnlocked' in scope
106 |             case .whenUnlockedThisDeviceOnly:
107 |                 return kSecAttrAccessibleWhenUnlockedThisDeviceOnly
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:107:24: error: cannot find 'kSecAttrAccessibleWhenUnlockedThisDeviceOnly' in scope
105 |                 return kSecAttrAccessibleWhenUnlocked
106 |             case .whenUnlockedThisDeviceOnly:
107 |                 return kSecAttrAccessibleWhenUnlockedThisDeviceOnly
    |                        `- error: cannot find 'kSecAttrAccessibleWhenUnlockedThisDeviceOnly' in scope
108 |             }
109 |         }
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:122:26: error: cannot find 'kSecClass' in scope
120 |     /// ```
121 |     public init(appIdentifier: String, teamId: String, accessibility: Accessibility = .afterFirstUnlock) {
122 |         templateQuery = [kSecClass: kSecClassGenericPassword,
    |                          `- error: cannot find 'kSecClass' in scope
123 |                    kSecAttrService: appIdentifier,
124 |      kSecUseDataProtectionKeychain: kCFBooleanTrue!,
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:122:37: error: cannot find 'kSecClassGenericPassword' in scope
120 |     /// ```
121 |     public init(appIdentifier: String, teamId: String, accessibility: Accessibility = .afterFirstUnlock) {
122 |         templateQuery = [kSecClass: kSecClassGenericPassword,
    |                                     `- error: cannot find 'kSecClassGenericPassword' in scope
123 |                    kSecAttrService: appIdentifier,
124 |      kSecUseDataProtectionKeychain: kCFBooleanTrue!,
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:123:20: error: cannot find 'kSecAttrService' in scope
121 |     public init(appIdentifier: String, teamId: String, accessibility: Accessibility = .afterFirstUnlock) {
122 |         templateQuery = [kSecClass: kSecClassGenericPassword,
123 |                    kSecAttrService: appIdentifier,
    |                    `- error: cannot find 'kSecAttrService' in scope
124 |      kSecUseDataProtectionKeychain: kCFBooleanTrue!,
125 |                 kSecAttrAccessible: accessibility.cfValue,
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:124:6: error: cannot find 'kSecUseDataProtectionKeychain' in scope
122 |         templateQuery = [kSecClass: kSecClassGenericPassword,
123 |                    kSecAttrService: appIdentifier,
124 |      kSecUseDataProtectionKeychain: kCFBooleanTrue!,
    |      `- error: cannot find 'kSecUseDataProtectionKeychain' in scope
125 |                 kSecAttrAccessible: accessibility.cfValue,
126 |                kSecAttrAccessGroup: "\(teamId).\(appIdentifier)"]
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:124:37: error: cannot find 'kCFBooleanTrue' in scope
122 |         templateQuery = [kSecClass: kSecClassGenericPassword,
123 |                    kSecAttrService: appIdentifier,
124 |      kSecUseDataProtectionKeychain: kCFBooleanTrue!,
    |                                     `- error: cannot find 'kCFBooleanTrue' in scope
125 |                 kSecAttrAccessible: accessibility.cfValue,
126 |                kSecAttrAccessGroup: "\(teamId).\(appIdentifier)"]
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:125:17: error: cannot find 'kSecAttrAccessible' in scope
123 |                    kSecAttrService: appIdentifier,
124 |      kSecUseDataProtectionKeychain: kCFBooleanTrue!,
125 |                 kSecAttrAccessible: accessibility.cfValue,
    |                 `- error: cannot find 'kSecAttrAccessible' in scope
126 |                kSecAttrAccessGroup: "\(teamId).\(appIdentifier)"]
127 |     }
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:126:16: error: cannot find 'kSecAttrAccessGroup' in scope
124 |      kSecUseDataProtectionKeychain: kCFBooleanTrue!,
125 |                 kSecAttrAccessible: accessibility.cfValue,
126 |                kSecAttrAccessGroup: "\(teamId).\(appIdentifier)"]
    |                `- error: cannot find 'kSecAttrAccessGroup' in scope
127 |     }
128 |
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:140:15: error: cannot find 'kSecAttrAccount' in scope
138 |     public func read(from key: String) throws -> Data? {
139 |         var query = templateQuery
140 |         query[kSecAttrAccount] = key
    |               `- error: cannot find 'kSecAttrAccount' in scope
141 |         query[kSecMatchLimit] = kSecMatchLimitOne
142 |         query[kSecReturnData] = kCFBooleanTrue
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:141:15: error: cannot find 'kSecMatchLimit' in scope
139 |         var query = templateQuery
140 |         query[kSecAttrAccount] = key
141 |         query[kSecMatchLimit] = kSecMatchLimitOne
    |               `- error: cannot find 'kSecMatchLimit' in scope
142 |         query[kSecReturnData] = kCFBooleanTrue
143 |
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:141:33: error: cannot find 'kSecMatchLimitOne' in scope
139 |         var query = templateQuery
140 |         query[kSecAttrAccount] = key
141 |         query[kSecMatchLimit] = kSecMatchLimitOne
    |                                 `- error: cannot find 'kSecMatchLimitOne' in scope
142 |         query[kSecReturnData] = kCFBooleanTrue
143 |
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:142:15: error: cannot find 'kSecReturnData' in scope
140 |         query[kSecAttrAccount] = key
141 |         query[kSecMatchLimit] = kSecMatchLimitOne
142 |         query[kSecReturnData] = kCFBooleanTrue
    |               `- error: cannot find 'kSecReturnData' in scope
143 |
144 |         var itemCopy: AnyObject?
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:142:33: error: cannot find 'kCFBooleanTrue' in scope
140 |         query[kSecAttrAccount] = key
141 |         query[kSecMatchLimit] = kSecMatchLimitOne
142 |         query[kSecReturnData] = kCFBooleanTrue
    |                                 `- error: cannot find 'kCFBooleanTrue' in scope
143 |
144 |         var itemCopy: AnyObject?
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:145:22: error: cannot find 'SecItemCopyMatching' in scope
143 |
144 |         var itemCopy: AnyObject?
145 |         let status = SecItemCopyMatching(query as CFDictionary, &itemCopy)
    |                      `- error: cannot find 'SecItemCopyMatching' in scope
146 |         switch status {
147 |         case errSecSuccess:
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:145:51: error: cannot find type 'CFDictionary' in scope
143 |
144 |         var itemCopy: AnyObject?
145 |         let status = SecItemCopyMatching(query as CFDictionary, &itemCopy)
    |                                                   `- error: cannot find type 'CFDictionary' in scope
146 |         switch status {
147 |         case errSecSuccess:
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:147:14: error: cannot find 'errSecSuccess' in scope
145 |         let status = SecItemCopyMatching(query as CFDictionary, &itemCopy)
146 |         switch status {
147 |         case errSecSuccess:
    |              `- error: cannot find 'errSecSuccess' in scope
148 |             return itemCopy as? Data
149 |         case errSecItemNotFound:
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:149:14: error: cannot find 'errSecItemNotFound' in scope
147 |         case errSecSuccess:
148 |             return itemCopy as? Data
149 |         case errSecItemNotFound:
    |              `- error: cannot find 'errSecItemNotFound' in scope
150 |             return nil
151 |         default:
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:167:21: error: cannot find type 'OSStatus' in scope
165 |     public func write(data: Data?, to key: String) throws {
166 |         var query = templateQuery
167 |         var status: OSStatus
    |                     `- error: cannot find type 'OSStatus' in scope
168 |
169 |         query[kSecAttrAccount] = key
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:169:15: error: cannot find 'kSecAttrAccount' in scope
167 |         var status: OSStatus
168 |
169 |         query[kSecAttrAccount] = key
    |               `- error: cannot find 'kSecAttrAccount' in scope
170 |
171 |         if let data {
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:172:19: error: cannot find 'kSecValueData' in scope
170 |
171 |         if let data {
172 |             query[kSecValueData] = data
    |                   `- error: cannot find 'kSecValueData' in scope
173 |             status = SecItemAdd(query as CFDictionary, nil)
174 |
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:173:22: error: cannot find 'SecItemAdd' in scope
171 |         if let data {
172 |             query[kSecValueData] = data
173 |             status = SecItemAdd(query as CFDictionary, nil)
    |                      `- error: cannot find 'SecItemAdd' in scope
174 |
175 |             switch status {
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:173:42: error: cannot find type 'CFDictionary' in scope
171 |         if let data {
172 |             query[kSecValueData] = data
173 |             status = SecItemAdd(query as CFDictionary, nil)
    |                                          `- error: cannot find type 'CFDictionary' in scope
174 |
175 |             switch status {
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:173:56: error: 'nil' requires a contextual type
171 |         if let data {
172 |             query[kSecValueData] = data
173 |             status = SecItemAdd(query as CFDictionary, nil)
    |                                                        `- error: 'nil' requires a contextual type
174 |
175 |             switch status {
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:176:18: error: cannot find 'errSecDuplicateItem' in scope
174 |
175 |             switch status {
176 |             case errSecDuplicateItem:
    |                  `- error: cannot find 'errSecDuplicateItem' in scope
177 |                 query[kSecValueData] = nil
178 |                 status = SecItemUpdate(query as CFDictionary, [kSecValueData: data] as CFDictionary)
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:177:23: error: cannot find 'kSecValueData' in scope
175 |             switch status {
176 |             case errSecDuplicateItem:
177 |                 query[kSecValueData] = nil
    |                       `- error: cannot find 'kSecValueData' in scope
178 |                 status = SecItemUpdate(query as CFDictionary, [kSecValueData: data] as CFDictionary)
179 |
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:178:26: error: cannot find 'SecItemUpdate' in scope
176 |             case errSecDuplicateItem:
177 |                 query[kSecValueData] = nil
178 |                 status = SecItemUpdate(query as CFDictionary, [kSecValueData: data] as CFDictionary)
    |                          `- error: cannot find 'SecItemUpdate' in scope
179 |
180 |             default:
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:178:64: error: cannot find 'kSecValueData' in scope
176 |             case errSecDuplicateItem:
177 |                 query[kSecValueData] = nil
178 |                 status = SecItemUpdate(query as CFDictionary, [kSecValueData: data] as CFDictionary)
    |                                                                `- error: cannot find 'kSecValueData' in scope
179 |
180 |             default:
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:178:49: error: cannot find type 'CFDictionary' in scope
176 |             case errSecDuplicateItem:
177 |                 query[kSecValueData] = nil
178 |                 status = SecItemUpdate(query as CFDictionary, [kSecValueData: data] as CFDictionary)
    |                                                 `- error: cannot find type 'CFDictionary' in scope
179 |
180 |             default:
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:178:88: error: cannot find type 'CFDictionary' in scope
176 |             case errSecDuplicateItem:
177 |                 query[kSecValueData] = nil
178 |                 status = SecItemUpdate(query as CFDictionary, [kSecValueData: data] as CFDictionary)
    |                                                                                        `- error: cannot find type 'CFDictionary' in scope
179 |
180 |             default:
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:185:22: error: cannot find 'SecItemDelete' in scope
183 |
184 |         } else {
185 |             status = SecItemDelete(query as CFDictionary)
    |                      `- error: cannot find 'SecItemDelete' in scope
186 |             switch status {
187 |             case errSecItemNotFound, errSecSuccess:
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:185:45: error: cannot find type 'CFDictionary' in scope
183 |
184 |         } else {
185 |             status = SecItemDelete(query as CFDictionary)
    |                                             `- error: cannot find type 'CFDictionary' in scope
186 |             switch status {
187 |             case errSecItemNotFound, errSecSuccess:
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:187:18: error: cannot find 'errSecItemNotFound' in scope
185 |             status = SecItemDelete(query as CFDictionary)
186 |             switch status {
187 |             case errSecItemNotFound, errSecSuccess:
    |                  `- error: cannot find 'errSecItemNotFound' in scope
188 |                 return
189 |             default:
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:187:38: error: cannot find 'errSecSuccess' in scope
185 |             status = SecItemDelete(query as CFDictionary)
186 |             switch status {
187 |             case errSecItemNotFound, errSecSuccess:
    |                                      `- error: cannot find 'errSecSuccess' in scope
188 |                 return
189 |             default:
/host/spi-builder-workspace/Sources/KeyVine/KeyVine.swift:194:22: error: cannot find 'errSecSuccess' in scope
192 |         }
193 |
194 |         if status != errSecSuccess {
    |                      `- error: cannot find 'errSecSuccess' in scope
195 |             throw KeyVineError.writeFailure(status)
196 |         }
BUILD FAILURE 6.3 android