分类 开发 中的文章

CocoaPods 小坑一例

错误信息 [!] The 'Pods-xxx' target has libraries with conflicting names: libflipper-rsocket.a. 背景信息 公司使用的是二进制化后的 pod,podspec 中使用 vendored_libraries 引入了 libFlipper-RSocket.a,然而在 pod install 的时候,出现了如上的错误,搜索一下,别人出现这个问题是两个不同的 pod 引用了相同的 .a 文件。但是我可以肯定我这里是没有这个问题的。 排查 根据报错的信息,找到源码位置:lib/cocoapods/installer/xcode/target_validator.rb,如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 def verify_no_duplicate_framework_and_library_names aggregate_targets.each do |aggregate_target| aggregate_target.user_build_configurations.each_key do |config| pod_targets = aggregate_target.pod_targets_for_build_configuration(config) file_accessors = pod_targets.flat_map(&:file_accessors).select { |fa| fa.spec.library_specification? } frameworks = file_accessors.……

阅读全文

macOS 10.15.1 下编译 VirtualBox 6.1.0

在 AMD CPU 的机器上安装黑苹果之后,能用的虚拟机软件基本只有 VirtualBox 了。虽然能用,但是性能差的让人抠脚。通常来讲,虚拟机软件会优先利用 CPU 的虚拟化特性,比如 Intel 的 VT-X/VT-D 以及 AMD 的 SVM,在硬件虚拟化不可用的时候,会使用纯软件模拟的方式运行 Guest 系统指令。macOS 截止目前,全部运行在 Intel 的 CPU 上,所以其虚拟化框架 Hypervisor.framework,也全部是基于 Intel 的虚拟化指令实现,并没有兼容 AMD,这也是 VMWare 等其他虚拟机软件无法在 AMD CPU 的黑苹果上运行的根本原因。

VirtualBox 看起来没有强依赖 Hypervisor.framework,因此在 AMD CPU 上也可以运行。但是这糟糕的性能让我怀疑它没有使用 SVM 来运行虚拟机,而是纯软件模拟。为了一探究竟,我准备在 macOS 上自行编译 VirtualBox。

……

阅读全文