试图在 Xcode 12 (beta 5) 中构建一个大型(并在 Xcode 11 上工作!)项目以准备 iOS 14。代码库以前是 Obj-C,但现在包含 Obj-C 和 Swift,并使用了Obj-C 和/或 Swift 也是如此。
我已经使用 Xcode 12 支持(目前是 1.10.0.beta 2)拉取了 Cocoapods 的新测试版。
Pod 安装成功。当我进行构建时,我在 pod 框架上收到以下错误:
为 iOS 模拟器构建,但链接为 iOS 构建的目标文件,用于架构 arm64
当我lipo -info在框架上运行时,它有:armv7s armv7 i386 x86_64 arm64。
以前,该项目的有效架构设置为:armv7、armv7s 和 arm64。
根据 Apple 的文档,在 Xcode 12 中,该设置将消失。Architectures 设置为 $(ARCHS_STANDARD)。我在排除的架构中没有设置任何内容。
任何人都知道这里可能发生什么?我还没有能够用一个更简单的项目来重现这个。
我已更新到 Xcode 12.3 测试版。设备版本是 14.2,但 Xcode 抱怨:
Errors were encountered while preparing your device for development. Please check the Devices and Simulators Window.
Failed to prepare device for development
iPhone 直接连接到 MacBook。我已经尝试了网络上的所有 mumbo jumbo。但没有成功任何想法?
我有一个使用链接和嵌入式自定义框架的应用程序。该应用程序在 Xcode 12.2 之前为 iOS 设备和模拟器正确构建。但是,从 Xcode 12.3 开始,我收到以下错误:
Building for iOS Simulator, but the linked and embedded framework 'My.framework' was built for iOS + iOS Simulator.
该框架是为设备和模拟器构建的(正如错误所说的那样)并使用 合并lipo,因此它应该能够在任何地方运行而不会出现问题。
我在这里错过了什么吗?Xcode 12.3 是否有任何相关更改?
我注意到自从将我的设备更新到 iOS 14 并使用 Xcode 12 以来,我的应用程序的启动时间显着增加(现在需要整整一分钟,而之前需要几秒钟)。我尝试了几个 Xcode 12 beta 并在模拟器中运行了该应用程序而没有问题,但是公开发布似乎带来了这个问题。
我测试了我的几个应用程序,它们都面临这个问题。再次运行应用程序(没有 Xcode)是即时的,即使在重新启动设备之后也是如此。
需要明确的是,我不是在这里谈论构建时间,这是在启动画面出现并且 Xcode 的状态为“在 iPhone 上运行”后应用程序启动所需的时间
有没有其他人遇到过这个问题,或者它可能与我的机器有关吗?
现在,AppDelegate和SceneDelegate从SwiftUI删除,你在哪里我把我以前在代码SceneDelegate和AppDelegate,火力地堡配置为前?
所以我目前在我的代码中有这个代码AppDelegate:
我现在应该把这段代码放在哪里?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
FirebaseConfiguration.shared.setLoggerLevel(.min)
FirebaseApp.configure()
return true
}
Run Code Online (Sandbox Code Playgroud) 我们的应用程序使用 CoreNFC 来扫描 NFC 标签,如果不支持 NFC,您可以使用 QR。这工作得很好,我们能够在模拟器中运行该应用程序以进行 (ui) 测试。
直到 Xcode12 / iOS14 GM 构建。在 iOS13(或更低版本)中,我们在模拟器上运行它不会有任何问题。
但是在 iOS14 模拟器 iPhone11 上运行它的 Xcode12 中,我们会得到以下结果:
dyld: launch, loading dependent libraries
DYLD_SHARED_CACHE_DIR=/Users/xxx/Library/Developer/CoreSimulator/Caches/dyld/19G73/com.apple.CoreSimulator.SimRuntime.iOS-14-0.18A372
DYLD_ROOT_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot
DYLD_LIBRARY_PATH=/Users/xxx/Library/Developer/Xcode/DerivedData/xxx-awnlestrbvesqqbynrhmluzhbcsc/Build/Products/Debug-iphonesimulator:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/system/introspection
DYLD_INSERT_LIBRARIES=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/libBacktraceRecording.dylib:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSi
dyld: Library not loaded: /usr/lib/libnfshared.dylib
Referenced from: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/CoreNFC.framework/CoreNFC
Reason: no suitable image found. Did find:
/usr/lib/libnfshared.dylib: mach-o, but not built for platform iOS-sim
Run Code Online (Sandbox Code Playgroud)
模拟器崩溃对我来说很有意义,因为模拟器无法扫描 NFC 标签,但这就是我所做的:
#if canImport(CoreNFC)周围import CoreNFC …我想知道目前是否有(在询问时,第一个 Xcode 12.0 Beta)使用@StateObject来自初始化程序的参数来初始化 a 的方法。
更具体地说,这段代码可以正常工作:
struct MyView: View {
@StateObject var myObject = MyObject(id: 1)
}
Run Code Online (Sandbox Code Playgroud)
但这不会:
struct MyView: View {
@StateObject var myObject: MyObject
init(id: Int) {
self.myObject = MyObject(id: id)
}
}
Run Code Online (Sandbox Code Playgroud)
从我理解的作用@StateObject是使视图成为对象的所有者。我使用的当前解决方法是传递已经初始化的 MyObject 实例,如下所示:
struct MyView: View {
@ObservedObject var myObject: MyObject
init(myObject: MyObject) {
self.myObject = myObject
}
}
Run Code Online (Sandbox Code Playgroud)
但是现在,据我所知,创建对象的视图拥有它,而这个视图没有。
谢谢。
我在 Xcode 12 上收到此警告:
iOS Simulator 部署目标
IPHONEOS_DEPLOYMENT_TARGET设置为 8.0,但支持的部署目标版本范围为 9.0 到 14.0.99
如何支持这个版本?
我刚刚下载了 Xcode 12 beta 2,现在我在运行我的应用程序时在控制台中收到一堆奇怪的日志(使用 Xcode 11.5 时不会出现这些警告)。
它们看起来像下面这样:
objc[5551]: Class CSAudioFileManager is implemented in both
/Applications/Xcode-beta.app/Contents/Developer/Platforms/
iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/
Contents/Resources/RuntimeRoot/System/Library/
PrivateFrameworks/SpeakerRecognition.framework/SpeakerRecognition (0x1382890e0)
and
/Applications/Xcode-beta.app/Contents/Developer/Platforms/
iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/
Contents/Resources/RuntimeRoot/System/Library/
PrivateFrameworks/CoreSpeech.framework/CoreSpeech (0x13772c7a8).
One of the two will be used. Which one is undefined.
Run Code Online (Sandbox Code Playgroud)
我也为其他一些类(如 ( CSVoiceIdXPCClient, CSNNVADEndpointAnalyzer, CSAudioRecordContext, CSOSTransaction, 等)获取了此类日志。该应用程序使用 CoreData(与 CloudKit 结合使用)、FileManager 和 UserDefaults。如果应用程序使用 Xcode 11.5 运行,则不会显示日志,并且对于大多数类,我很确定它们不会在我的代码中使用(至少我不会故意使用它们)。
请注意,日志仅在使用 iOS 14.0 运行模拟设备时出现。例如,如果您选择 iPhone 11 Pro (13.5),则不会出现日志(仍然使用 Xcode 12)。
那么这个问题是否有解决方案,或者只是当前 Xcode 12 beta 版本的错误,该错误将在进一步的 Xcode 12 beta 版本发布期间被删除?
编辑:
现在objc[5551]...被替换为 …