mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-13 04:09:25 +00:00
Merge pull request #3137 from keymanapp/fix/ios/debug-metadata
fix(ios): Fixes keyboard metadata decoding, tweaks to project files
This commit is contained in:
commit
eb18ae7746
5 changed files with 59 additions and 16 deletions
|
|
@ -1698,6 +1698,8 @@
|
|||
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SKIP_INSTALL = YES;
|
||||
STRIP_INSTALLED_PRODUCT = NO;
|
||||
STRIP_SWIFT_SYMBOLS = NO;
|
||||
SUPPORTS_MACCATALYST = NO;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
|
|
@ -1759,9 +1761,12 @@
|
|||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = F27FCAF6157FD95E00FBBA20 /* Keyman-lib.xcconfig */;
|
||||
buildSettings = {
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
ONLY_ACTIVE_ARCH = NO;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
STRIP_INSTALLED_PRODUCT = NO;
|
||||
STRIP_STYLE = all;
|
||||
STRIP_SWIFT_SYMBOLS = NO;
|
||||
VALID_ARCHS = "arm64 armv7s armv7 x86_64 i386";
|
||||
};
|
||||
name = Debug;
|
||||
|
|
@ -1770,7 +1775,7 @@
|
|||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = F27FCAF6157FD95E00FBBA20 /* Keyman-lib.xcconfig */;
|
||||
buildSettings = {
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
VALID_ARCHS = "arm64 armv7s armv7 x86_64 i386";
|
||||
};
|
||||
|
|
@ -1882,7 +1887,7 @@
|
|||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
KEYMAN_ROOT = "$(SRCROOT)/../../..";
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
|
|
@ -1944,7 +1949,7 @@
|
|||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = F27FCAF6157FD95E00FBBA20 /* Keyman-lib.xcconfig */;
|
||||
buildSettings = {
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
ONLY_ACTIVE_ARCH = NO;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
VALID_ARCHS = "arm64 armv7s armv7 x86_64 i386";
|
||||
|
|
@ -2141,8 +2146,8 @@
|
|||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
KEYMAN_ROOT = "$(SRCROOT)/../../..";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG NO_SENTRY";
|
||||
|
|
@ -2185,8 +2190,8 @@
|
|||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
KEYMAN_ROOT = "$(SRCROOT)/../../..";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
ONLY_ACTIVE_ARCH = NO;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
|
||||
|
|
|
|||
|
|
@ -1203,8 +1203,8 @@
|
|||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
KEYMAN_ROOT = "$(SRCROOT)/../../..";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
OTHER_LDFLAGS = "";
|
||||
SDKROOT = iphoneos;
|
||||
|
|
@ -1255,8 +1255,8 @@
|
|||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
KEYMAN_ROOT = "$(SRCROOT)/../../..";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
ONLY_ACTIVE_ARCH = NO;
|
||||
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
|
||||
OTHER_LDFLAGS = "";
|
||||
|
|
@ -1393,7 +1393,7 @@
|
|||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
KEYMAN_ROOT = "$(SRCROOT)/../../..";
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
OTHER_LDFLAGS = "";
|
||||
|
|
|
|||
|
|
@ -147,8 +147,6 @@
|
|||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
37EA1F20228A183E003E710C /* KeymanEngine.framework in Frameworks */,
|
||||
3729344024613C9900C5428C /* ObjcExceptionBridging.framework in Frameworks */,
|
||||
3729344124613CA700C5428C /* XCGLogger.framework in Frameworks */,
|
||||
CECB62572463E9FA006E47B5 /* DeviceKit.framework in Frameworks */,
|
||||
3729344224613CB600C5428C /* Sentry.framework in Frameworks */,
|
||||
3729344324613CC200C5428C /* Zip.framework in Frameworks */,
|
||||
|
|
@ -568,7 +566,7 @@
|
|||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_BITCODE = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
|
|
@ -591,7 +589,7 @@
|
|||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = "";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.1;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
|
|
@ -647,7 +645,7 @@
|
|||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = "";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.1;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
|
|
@ -664,6 +662,7 @@
|
|||
CODE_SIGN_ENTITLEMENTS = FirstVoices/FirstVoices.entitlements;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
DEVELOPMENT_TEAM = D7TR486TEH;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
|
|
@ -720,6 +719,7 @@
|
|||
CODE_SIGN_ENTITLEMENTS = SWKeyboard/SWKeyboard.entitlements;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
DEVELOPMENT_TEAM = D7TR486TEH;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
|
|
|
|||
|
|
@ -229,7 +229,7 @@ class FVRegionStorage {
|
|||
|
||||
let keyboard: InstallableKeyboard = InstallableKeyboard.init(id: kb.id,
|
||||
name: kb.name,
|
||||
languageID: keyboardInfo.languages[keyboardInfo.languages.startIndex],
|
||||
languageID: keyboardInfo.languages.keys[keyboardInfo.languages.startIndex],
|
||||
languageName: kb.name,
|
||||
version: keyboardInfo.version,
|
||||
isRTL: false,
|
||||
|
|
|
|||
|
|
@ -17,12 +17,50 @@ import Foundation
|
|||
// display and install the keyboard into Keyman Engine. Most of the data
|
||||
// in the files is ignored.
|
||||
//
|
||||
struct KeyboardInfoLanguage: Decodable {
|
||||
let displayName: String
|
||||
let languageName: String
|
||||
let scriptName: String
|
||||
}
|
||||
|
||||
struct KeyboardInfo: Decodable {
|
||||
let id: String
|
||||
let version: String
|
||||
let name: String
|
||||
let languages: [String]
|
||||
let languages: [String:KeyboardInfoLanguage?]
|
||||
|
||||
enum CodingKeys: String, CodingKey {
|
||||
case id
|
||||
case version
|
||||
case name
|
||||
case languages
|
||||
}
|
||||
|
||||
init(from decoder: Decoder) throws {
|
||||
let values = try decoder.container(keyedBy: CodingKeys.self)
|
||||
|
||||
id = try values.decode(String.self, forKey: .id)
|
||||
version = try values.decode(String.self, forKey: .version)
|
||||
name = try values.decode(String.self, forKey: .name)
|
||||
|
||||
do {
|
||||
// Ideal case - the metadata exists, giving us a dictionary of KeyboardInfoLanguage entries.
|
||||
languages = try values.decode([String:KeyboardInfoLanguage].self, forKey: .languages)
|
||||
} catch {
|
||||
// Sometimes the metadata fails to build properly, giving us only an array of language IDs.
|
||||
// If this backup fails, we deserve to crash.
|
||||
let langIdArray = try values.decode([String].self, forKey: .languages)
|
||||
|
||||
var dict: [String:KeyboardInfoLanguage?] = [:]
|
||||
langIdArray.forEach({ id in
|
||||
// Fortunately, the app doesn't actually need to know the metadata; it'll function
|
||||
// fine with a nil entry.
|
||||
// If this changes, we'll just need to be sure to perform guard checks on the optional value.
|
||||
dict.updateValue(nil, forKey: id)
|
||||
})
|
||||
languages = dict
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class KeyboardInfoParser {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue