- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
情况
我刚刚迁移到最新的 XCode12.4,因此我已将所有依赖项预编译为 xcframeworks
.现在我正在使用 xcconfig
链接到其中一些框架。
我有一个应用程序,它使用了几个预编译的 xcframeworks
.
这是一个共享文件Dependencies/Frameworks.xcconfig
它提供了对所有依赖项的轻松访问,并且与预编译的依赖项位于同一存储库中。
/// Path into xcode specific builds
FRAMEWORKS_PATH_12_4 = Frameworks/XCode12.4
FRAMEWORKS_PATH_11_5 = Frameworks/XCode11.5 // old path, obsolete
FRAMEWORKS_PATH_10_3 = Frameworks/XCode10.3 // old path, obsolete
/// All firebase related frameworks
FIREBASE_FRAMEMWORKS = -framework FirebaseAnalytics -framework FirebaseCore -framework FirebaseCoreDiagnostics -framework FirebaseCrashlytics -framework FirebaseInstallations -framework GoogleAppMeasurement -framework GoogleDataTransport -framework GoogleUtilities -framework PromisesObjC -framework nanopb
/// Summary of all Frameworks provided by this repo
ALL_FRAMEWORKS = -framework ZipArchive -framework Alamofire -framework RxSwift -framework RxCocoa -framework RxRelay -framework Snapkit -framework SVGKit -framework Lottie -framework AudioKit -framework NSLoggerSwift $(FIREBASE_FRAMEMWORKS)
现在我的应用程序中的框架链接到 2 个框架,它看起来像这样
/// Include the dependency repo definitions
#include "../Dependencies/Frameworks.xcconfig"
/// Define this for the carthage build step
DEPENDENCIES_PATH[config=RC] = $(SRCROOT)/../Dependencies/$(FRAMEWORKS_PATH_12_4)
DEPENDENCIES_PATH[config=Release] = $(SRCROOT)/../Dependencies/$(FRAMEWORKS_PATH_12_4)
DEPENDENCIES_PATH[config=T1] = $(SRCROOT)/../Dependencies/$(FRAMEWORKS_PATH_12_4)
DEPENDENCIES_PATH[config=Debug] = $(SRCROOT)/../Dependencies/$(FRAMEWORKS_PATH_12_4)
/// Setup search paths
FRAMEWORK_SEARCH_PATHS = $(inherited) $(DEPENDENCIES_PATH)/**
/// Include required frameworks
OTHER_LDFLAGS = $(inherited) -framework Alamofire -framework ZipArchive
问题
Could not find module 'Alamofire' for target 'x86_64-apple-ios-simulator'; found: arm64, armv7-apple-ios, arm64-apple-ios, arm, armv7
我认为这是由于这里的递归搜索路径
/// Setup search paths
FRAMEWORK_SEARCH_PATHS = $(inherited) $(DEPENDENCIES_PATH)/**
当我删除递归搜索路径时,出现此错误
No such module 'Alamofire'
解决方法
xcframework
内部。像这样
/// Setup search paths
FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*] = $(inherited) $(DEPENDENCIES_PATH)/Alamofire.xcframework/ios-arm64_armv7 $(inherited) $(DEPENDENCIES_PATH)/ZipArchive.xcframework/ios-arm64_armv7
FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*] = $(inherited) $(DEPENDENCIES_PATH)/Alamofire.xcframework/ios-arm64_i386_x86_64-simulator $(DEPENDENCIES_PATH)/ZipArchive.xcframework/ios-arm64_i386_x86_64-simulator
但老实说,我在项目中有几十个依赖项,维护它非常乏味。
xcconfig
它应该看起来的文件里面 xcframework
中的正确架构文件夹找到实际的framework
?
最佳答案
在 Xcode 中,将 Run Script 预构建操作添加到您的方案中。
将此脚本放入 Run Script 预构建操作中:
OLD_DIR="${PWD}"
rm -rf "${CONFIGURATION_TEMP_DIR}/XCFrameworkSlices"
mkdir -p "${CONFIGURATION_TEMP_DIR}/XCFrameworkSlices"
cd "${CONFIGURATION_TEMP_DIR}/XCFrameworkSlices"
SUFFIX="arm[v6][74]"
if [[ ! -z "$LLVM_TARGET_TRIPLE_SUFFIX" ]]; then
SUFFIX=$LLVM_TARGET_TRIPLE_SUFFIX
fi
find $DEPENDENCIES_PATH/*.xcframework/$SWIFT_PLATFORM_TARGET_PREFIX-*$SUFFIX -type d -depth 0 -print0 | xargs -0 -I {} sh -c 'ln -s "$1" "./$(basename $(dirname \"$1\"))"' - {}
cd "${OLD_DIR}"
在 xcconfig 中:
DEPENDENCIES_PATH_RC = $(SRCROOT)/../Dependencies/$(FRAMEWORKS_PATH_12_4)
DEPENDENCIES_PATH_Release = $(SRCROOT)/../Dependencies/$(FRAMEWORKS_PATH_12_4)
DEPENDENCIES_PATH_T1 = $(SRCROOT)/../Dependencies/$(FRAMEWORKS_PATH_12_4)
DEPENDENCIES_PATH_Debug = $(SRCROOT)/../Dependencies/$(FRAMEWORKS_PATH_12_4)
DEPENDENCIES_PATH = $(DEPENDENCIES_PATH_$(CONFIGURATION))
FRAMEWORK_SEARCH_PATHS = $(inherited) $CONFIGURATION_TEMP_DIR/XCFrameworkSlices/**
关于ios - 如何使用 xcconfig 文件在不同平台的 XCFramework 中链接正确的框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66281886/
有没有办法检查您的 xcode 项目是否正在使用您提供的 .xcconfig 配置文件? 我的意思是,是否有某种方式“打印”语句,例如调试,如#warning、#error、printf 等...?
我使用 6 个自定义 xcconfig 设置我的项目,如显示的图像: My project xcconfig setting 在每个自定义 xcconfig 文件中,我都包含了相应的 pods-gen
如果我有一个 Adhoc.xcconfig 我在其中定义了一个变量: PREPROCESSOR_DEFINITIONS = IS_ADHOC=1 CRASHLYTICS=1 在运行脚本中,有一个检查,
我将 firebase 添加到我的 pod 中,在 FirebaseCore.xcconfig 中有 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOA
是否可以在配置文件中使用宏?我想实现这样的目标: if iPad set variable to 1 else set variable to 0 这可能吗?我宁愿不为此使用脚本。 最佳答案 您通常应
使用 Xcode 8,在 macOS Sierra 上运行,我试图在 xcconfig 文件中声明一个条件变量。 我的项目正在使用 fastlane match ,所以我主要想使用 fastlane
我是 Xcode 新手。 在过去的两天里,我一直在研究如何在访问网络服务的 iPhone 上测试我的应用程序。在模拟器上,我可以使用硬编码的“localhost”变量,但我不想硬编码所有配置设置。 我
我创建并应用了一个简单的 .xcconfig 文件,其中包含 GCC_PREPROCESSOR_DEFINITIONS[config=Debug] = FOODEBUG GCC_PREPROCESSO
我正在使用 Xcode 3.2 和 xcconfig文件。文件按目标组织。例如,我有一个 debug.xcconfig文件和 release.xcconfig一。两者都使用通用设置,所以我添加了 sh
我正在使用 Xcode 和 .xcconfig 文件。我试图在预处理器定义中附加一些值,但我根本无法使其工作。 我尝试了以下方法(以及它的许多变体),但到目前为止没有运气: GCC_PREPROCES
我遇到了其他线程,但无法找到针对我的情况的解决方案。 我有三个配置文件(DEV、QA、Prod) 在每个 xcconfig 文件中,我覆盖了 $(product_name) 例如:PRODUCT_NA
我想使用 .xcconfig 文件为我的项目加载一些预定义的设置,主要是我要链接的库、附加链接器路径和 header 搜索路径。我正在寻找一种解决方案,我可以在其中使用 xcconfig 文件的路径并
我正在 build 一个图书馆。我希望它编译并包含另一个(即 googleConversion),但我需要使用 xcconfig 文件来完成(因为对于某些构建,我不想包含库) 以下:Link bina
有没有办法在代码中获取正在使用的 .xcconfig 文件的名称? 如下图所示,我希望能够找出配置是“Lab2” 最佳答案 这是一种阅读方式... 编辑您的 Lab2.xcconfig 文件并添加此内
我已经开始使用 xcconfig 文件进行特定于环境的build设置,我注意到字符串引号是按字面解释的。 例如 APP_BUNDLE_DISPLAYNAME_SUFFIX = "DEBUG" 将显示
我在一个由多个开发人员组成的团队中开发 iOS 应用程序。我们都有属于同一个开发配置文件的开发人员证书。当我构建我们正在开发的应用程序以便在设备上对其进行测试时,我需要明确指定要使用的代码签名身份。否
我有一个 Xcode 项目,它本质上是一个内置到几个几乎相同的目标中的应用程序。我已经将几乎所有构建配置设置移到中心位置,但我无法弄清楚如何将静态库 (libMantle.a) 的链接移动到 xcco
我正在尝试在 iOS 项目中使用 Cocoapods 和一些自定义配置。 我有 3 个(Dev、Stage、Prod),每个都有一些自定义 GCC_PREPROCESSOR_DEFINITIONS .
我创建了示例项目来演示问题 https://github.com/pikciu/XCodeWorksapce/tree/noPods 无效的框架路径 框架构建的配置与主项目不同。 有 4 种构建配置和
有没有办法在 Podfile 中指定那个 xcconfig文件应该是 #include d 在 Cocoapods 生成的那个? 是否有公开的方法/变量用于附加此 #include还是我需要阅读生成的
我是一名优秀的程序员,十分优秀!