问题标签 [xcode-build-settings]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - React Native ios 应用程序因通用 bu 崩溃
iOS 应用程序是基于在模拟器设备上成功运行或当我使用连接的设备创建构建时构建的。但是,在试飞时因通用构建而崩溃。
这是崩溃报告。
{"app_name":"WashOn","timestamp":"2020-10-05 10:08:48.00 -0700","app_version":"1.2","slice_uuid":"e2d19995-e03c-3d92-823a-0c2eb5276114 ","adam_id":1534014889,"build_version":"4","platform":2,"bundleID":"com.washon.WashOn","share_with_app_devs":0,"is_first_party":0,"bug_type": "109","os_version":"iPhone OS 14.2 (18B5061e)","incident_id":"46F34E11-C6D2-451D-9277-253D6EE02A45","name":"WashOn"} 事件标识符:46F34E11-C6D2-451D- 9277-253D6EE02A45 CrashReporter 密钥:6c04358e480fe00b97cb90f6551da92d35bd586e 硬件型号:iPad11,3 过程:WashOn [329] 路径:/private/var/containers/Bundle/Application/84295AEE-9CD3-4BC6-91CE-7738FB47803B/WashOn.app/WashOn 标识符:com.washon.WashOn 版本:4 (1.2) AppStoreTools:12A7207 代码类型:ARM-64(本机) 角色:前台父进程:launchd [1] 联盟:com.washon.WashOn [468]
日期/时间:2020-10-05 10:08:48.3585 -0700 发布时间:2020-10-05 10:08:28.2235 -0700 操作系统版本:iPhone OS 14.2 (18B5061e) 发布类型:Beta 基带版本:n/a报告版本:104
异常类型:EXC_CRASH (SIGKILL) 异常代码:0x0000000000000000, 0x0000000000000000 异常说明:EXC_CORPSE_NOTIFY 终止原因:命名空间 SPRINGBOARD,代码 0x8badf00d 终止说明:SPRINGBOARD,<RBSTerminateContext| 域:10 代码:0x8BADF00D 解释:场景创建看门狗违规:应用程序<com.washon.WashOn>:329 用尽真实(挂钟)时间允许19.81 秒| ProcessVisibility:前景 | 进程状态:正在运行 | WatchdogEvent: 场景创建 | 看门狗可见性:前景 | WatchdogCPUStatistics: ( | "Elapsed total CPU time (seconds): 47.840 (user 47.840, system 0.000), 40% CPU", | "Elapsed application CPU time (seconds): 0.032, 0% CPU" | ) reportType:CrashLog maxTerminationResistance:交互>由线程触发:0
ios - 如何访问我的应用程序的派生数据文件夹本身?
我正在将我的 iOS 应用程序的 Firebase 依赖项从 CocoaPods 转移到 Swift 包管理器。
Firebase 的 Crashlytics 需要在构建应用程序时执行脚本(使用运行脚本构建阶段)。回到 CocoaPods 时代,我曾经以Google 记录的方式调用脚本:"${PODS_ROOT}/FirebaseCrashlytics/run"
.
在我切换到 SPM 后,Firebase 文件不再存在${PODS_ROOT}
,并且根本没有这样的变量可用。我知道我需要的文件现在位于DerivedData
文件夹中,特别是位于~/Library/Developer/Xcode/DerivedData/MyApp-abcde/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run
. 问题是,该MyApp-abcde
文件夹不容易被引用。
我发现的一篇 Medium 帖子建议使用${BUILD_DIR}
build 变量(关于上面的示例,它会解析为<…>/MyApp-abcde/Build/Products
),并调用该dirname
命令来向上移动目录层次结构。
此 hack 仅适用于运行应用程序。当我试图归档它时,${BUILD_DIR}
解析到另一条路径,即<…>/MyApp-abcde/Build/Intermediates.noindex/ArchiveIntermediates/MyApp/BuildProductsPath
. 我尝试了更多的构建变量,例如${SYMROOT}
, 代替${BUILD_DIR}
,但它们也会根据操作产生不同的路径。
那么,问题来了……</p>
有没有办法使用 Xcode 的构建变量可靠地引用我的应用程序的派生数据文件夹的根(即~/Library/Developer/Xcode/DerivedData/MyApp-abcde
) ?
ios - Xcode 在运行脚本阶段后未添加新生成的 plist
我正在尝试关注这篇文章https://peterfriese.dev/reading-api-keys-from-plist-files/试图添加一个运行脚本,其中 plist 是从目录中存在的示例 plist 生成的. 执行脚本后,它会正确复制示例 plist 中的内容并将新的 plist(Test-Info.plist) 生成到项目的根目录中。
我遇到的问题是,当脚本完成运行时,Xcode 无法找到生成的新 plist。如果我手动将新 plist 拖放到 Xcode 中,它可以工作,但是我正在尝试查看 Xcode 如何在没有手动干预的情况下添加新 plist。
我猜脚本需要修改,所以当生成新的 plist 时,不仅应该将它添加到根目录,还应该将它添加到我不确定的 Copy bundle Resources 阶段。任何帮助,将不胜感激。
react-native-ios - 复制多方案的调试配置在 React 本机 iOS 中不起作用
我已经使用 react native 开发了我的项目,现在我正在尝试为我的 dev、uat 和 prod 环境实现多方案。
对于上述情况,我已经设置了方案并为每个方案复制了发布和调试配置,并指定了不同的包 ID、不同的应用程序名称、用户定义的变量。现在我的情况是,如果我在本地运行该方案(至于运行调试配置已设置),那么我将陷入以下错误:
线程 6:“未处理的 JS 异常:Invariant Violation:TurboModuleRegistry.getEnforcing(...): 'DevSettings' 找不到。验证该名称的模块是否已在 na... 中注册,堆栈:\ngetEnforcing@4725 :28\n@41349:50\nloadModuleImplementation@271:14\n@41308:40\nloadModuleImplementation@271:14\n@35877:18\nloadModuleImplementation@271:14\n@28987:16\nloadModuleImplementation@271:14 \nguardedLoadModule@163:47\n全局代码@326655:4\n"
由于未捕获的异常“RCTFatalException: Unhandled JS Exception: Invariant Violation: TurboModuleRegistry.getEnforcing(...): 'DevSettings' 找不到而终止应用程序。验证此名称的模块是否已在本机二进制文件中注册。',原因:'未处理的 JS 异常:不变违规:TurboModuleRegistry.getEnforcing(...):找不到'DevSettings'。验证该名称的模块是否已在 na...,堆栈中注册:
*** 我附上了我使用发布构建配置(开发)和调试构建配置(开发调试)的开发方案设置的屏幕截图
供参考:
如果我为运行、测试和分析选择发布构建配置并运行该方案,那么它工作正常,但在这种情况下,我不能将调试器用于我的开发目的。
此外,我在使用 CICD 存档或发布存档到 testflight 时没有任何问题,因为我在方案设置下选择了存档和配置文件的发布配置。
请帮帮我,因为这会使开发变得非常困难,因为我无法访问调试器窗口。
期待得到积极的帮助。
谢谢
ios - Xcode / IOS 具有相同代码库/项目的多个应用程序
我正在尝试设置 xcode 以允许我使用相同的代码构建/发布 2 个应用程序,但具有不同的应用程序图标、资产和不同的数据库。
如果我有 2 个应用程序使用相同的代码:
- app 1:水果列表(显示水果列表)
- 应用 2:Veggie 列表(显示 Veggie 列表)
对于这两个应用程序,我将有一个唯一的捆绑 ID(当然)、相同的代码,但不同的图像和数据库。如何将 Xcode 设置为拥有 1 个项目并能够选择我想要构建的应用程序?
我似乎明白我们可以选择使用方案、目标或构建配置,但到目前为止,我发现比其他任何事情都更令人困惑。
欢迎对此提出任何建议/帮助!在这种情况下,拥有多个项目并将更改从一个复制到另一个,这听起来像是一个疯狂的解决方案。
谢谢你。
xcode - xcodebuild clean 删除 BUILD_DIR 中的非目标文件 - Xcode 12.5 中的新功能
我有我们的 Xcode 构建系统设置,将所有构建产品放在一对目录中,一个用于调试配置,另一个用于使用构建设置的发布
BUILD_DIR = /Library/DevWork/BuildProducts
在共享的 .xconfig 文件中指定。
这在 Xcode 12.4 中运行良好,因为该xcodebuild clean
命令将仅删除目标并保持构建产品目录中的所有其他文件完好无损。
Xcode 12.5 的新增功能,xcodebuild clean
删除了构建产品目录的全部内容。有没有办法禁用这种行为?
ios - xcodebuild 因 CodeSigning 错误而失败,但 xcode 应用程序成功
只需将 Xcode 从 11.4 版更新到 12.4 版即可。当我使用 xcode11.4 时,当我调用它时 xcodebuild 成功
xcodebuild clean test -project "~/src/WebDriverAgent/WebDriverAgent.xcodeproj" -scheme WebDriverAgentRunner -destination id=xxxxxxxx CODE_SIGN_IDENTITY="xxxxxxxx" DEVELOPMENT_TEAM=xxxxxx PROVISIONING_PROFILE="xxxxxxxx"
将 Xcode 升级到 12.4 后,此命令失败并出现 codeSigning 错误
测试失败:没有找到匹配“xxxxxxxx”的团队“xxxx”的配置文件:Xcode 找不到任何匹配“xxxx/xxxxxxxx”的配置文件。安装配置文件(通过将其拖放到 Xcode 的停靠项上)或在目标编辑器的 Signing & Capabilities 选项卡中选择不同的配置文件。测试因构建失败而取消。
在 Xcode.app 中选择此证书后,之前的 xcodebuild 命令有效。如果在 Xcode 中更改了选定的证书(此更改证书也有效),命令行失败并出现签名错误。
如何解决这个...
ios - Xcode 构建问题找不到自动链接的框架
我已经为这个问题苦苦挣扎好几天了 :( 在模拟器中构建我的 iOS 应用程序时,它工作正常(调试构建),但是一旦我尝试构建到我的 iPhone 11(v 14.5.1)我构建失败并出现以下错误:
我正在使用 Xcode 12.5。我尝试了各种建议,例如:
- 加上价值
LD_VERIFY_BITCODE
_User-Defined
_Build Settings
NO
Enable Bitcode
在Build Settings
与价值NO
- 删除派生数据
- 卸载和安装 Pod
- 干净的构建
- 确保
Framework Search Paths
看起来正确。我只有$(inherited)
- 更改
$(inherited)
为recursive
- 确保我打开了 .xcworkspace 文件而不是 .xcodeproj
还有其他可能的解决方案吗?
swift - xcodebuild ACTIVE_COMPILATION_CONDITIONS 不会覆盖目标的 ACTIVE_COMPILATION_CONDITIONS
我们正在尝试使用 xcodebuild 来构建我们的框架,而不是使用手动 Xcode IDE 运行按钮。问题是在我们的框架中,我们使用了 ACTIVE_COMPILATION_CONDITIONS,它有几个值。然后使用这些值在运行时检查特定框架是否已集成,例如检查 Sentry:
问题是,对于某些构建,我们需要覆盖我们的项目设置,特别是 ACTIVE_COMPILATION_CONDITIONS。但是,在以下脚本成功执行后,Xcode 仍然没有覆盖我们在项目中定义的 ACTIVE_COMPILATION_CONDITIONS。
剧本:
如您所见,我们定义了 ACTIVE_COMPILATION_CONDITIONS=SENTRY_AVAILABLE,但它不会覆盖目标的 (SDKNR1) 项目设置。假设,SDKNR1 没有任何 ACTIVE_COMPILATION_CONDITIONS。我们预计 xcodebuild 命令将覆盖目标的 ACTIVE_COMPILATION_CONDITIONS并包含 SENTRY_AVAILABLE
欢迎任何想法,或者也许这是不可能的?
xcode - Xcode 如何决定使用哪些预处理器宏和其他构建设置来自动完成?
我的 Xcode 项目有不同的构建配置,它们定义了不同的预处理器宏。自动完成在当前预处理器标志忽略的#ifdef 块中不起作用,因此我想控制 Xcode 用于自动完成的构建配置。Xcode 如何决定?