当前位置: 首页 > 面试题库 >

使用催化剂移植到Mac时排除Pod

金秦斩
2023-03-14
问题内容

由于 Catalyst ,最终可以将应用程序移植到 macOS了 ,问题是,许多Pod不支持AppKit。最常见的是Crashlytics
/ Firebase。

In [...]/Pods/Crashlytics/iOS/Crashlytics.framework/Crashlytics(CLSInternalReport.o), building for Mac Catalyst, but linking in object file built for iOS Simulator, file '[...]/Pods/Crashlytics/iOS/Crashlytics.framework/Crashlytics' for architecture x86_64

由于这是一个新话题,我 找不到有关如何从macOS的构建中删除pod的文档,但如何在iOS和iPadO S上 保留它

可以在代码中使用:

#if !targetEnvironment(macCatalyst) 
// Code to exclude for your macOS app
#endif

但是问题的一部分,另一部分是仅针对iOS链接容器…

如果该库对于macOS而言不是至关重要的,但在iOS上仍然需要,那么最简单/最佳的做法是什么?


问题答案:

在@ajgryc回答之后,我能够做出一个光滑的解决方案:

在您的podfile中添加

post_install do |installer|
    installer.pods_project.targets.each do |target|
        if target.name == "Pods-[Name of Project]"
            puts "Updating #{target.name} OTHER_LDFLAGS to OTHER_LDFLAGS[sdk=iphone*]"
            target.build_configurations.each do |config|
                xcconfig_path = config.base_configuration_reference.real_path
                xcconfig = File.read(xcconfig_path)
                new_xcconfig = xcconfig.sub('OTHER_LDFLAGS =', 'OTHER_LDFLAGS[sdk=iphone*] =')
                File.open(xcconfig_path, "w") { |file| file << new_xcconfig }
            end
        end
    end
end

自可可足1.8.4

post_install do |installer|
  installer.pods_project.targets.each do |target|
    if target.name == "Pods-[Name of Project]"
      puts "Updating #{target.name} to exclude Crashlytics/Fabric"
      target.build_configurations.each do |config|
        xcconfig_path = config.base_configuration_reference.real_path
        xcconfig = File.read(xcconfig_path)
        xcconfig.sub!('-framework "Crashlytics"', '')
        xcconfig.sub!('-framework "Fabric"', '')
        new_xcconfig = xcconfig + 'OTHER_LDFLAGS[sdk=iphone*] = -framework "Crashlytics" -framework "Fabric"'
        File.open(xcconfig_path, "w") { |file| file << new_xcconfig }
      end
    end
  end
end

然后在Fabric的运行脚本构建阶段:

if [[$ARCHS != "x86_64"]]; then
  "${PODS_ROOT}/Fabric/run" [your usual key]
fi


 类似资料:
  • 本文介绍了如何基于 CubeMX 移植 RT-Thread Nano,并说明生成代码工程的步骤。 RT-Thread Nano 已集成在 CubeMX 中,可以直接在 IDE 中进行下载添加。本文档介绍了如何使用 CubeMX 移植 RT-Thread Nano,并以一个 stm32f103 的基础工程作为示例进行讲解。 移植 Nano 的主要步骤: 准备一个 CubeMX 基础工程,并获取 RT

  • 本文介绍了如何基于 IAR 移植 RT-Thread Nano,并以一个 stm32f103 的基础工程作为示例进行讲解。 移植 Nano 的主要步骤: 准备一个基础的 IAR 工程,并获取 RT-Thread Nano 压缩包源码。 在基础工程中添加 RT-Thread Nano 源码,添加相应头文件路径。 适配 Nano,主要从 中断、时钟、内存、应用 这几个方面进行适配,实现移植。 最后可对

  • 本文介绍如何基于 Keil MDK 移植 RT-Thread Nano ,并以一个 stm32f103 的基础工程作为示例进行讲解。 RT-Thread Nano 已集成在 Keil MDK 中,可以直接在 IDE 中进行下载添加。本文档介绍了如何使用 MDK 移植 RT-Thread Nano,并以一个 stm32f103 的基础工程作为示例进行讲解。 移植 Nano 的主要步骤: 准备一个基础

  • 问题内容: 我正在尝试将代码从使用Java 计时器移植到使用Scheduledexecutorservice 我有以下用例 我应该用ScheduledExecutorService替换A类和B类中的Timer实例,并使ATimerTask和BTimerTask类成为Runnable类,例如 这样对吗。 编辑:移植的主要动机之一是因为在TimerTask中引发的运行时异常会杀死一个线程,因此无法对其

  • 问题内容: 我的服务文件(C:\ WINDOWS \ system32 \ drivers \ etc \ services)具有一堆端口到服务的映射: 我正在尝试找到一种方法,通过Java API(而不是解析)或第三方库以编程方式将端口从端口转换为服务名称? 伪代码: 有什么好的方法可以做到这一点吗? 问题答案: 您正在寻找的是Linux 系统调用的Java实现。看看http://github.

  • 本文介绍了如何在 RT-Thread Studio 上使用 RT-Thread Nano,并以创建 stm32f103RB 的 Nano 工程为例。 准备工作 安装 RT-Thread Studio。 新建 Nano 工程 打开 IDE,点击【文件】-【新建】-【RT-Thread 项目】: 进入新建工程的配置向导: 注:可以通过修改 board.c 的 SystemClock_Config()