Unknown option: --local
pod package --local
允许使用本地代码打包,而无需从发布的版本上下载,这个参数非常适合本地测试开发。如果直接按如下方式安装 cocoapods-packager
,并不会支持 --local
参数:
sudo gem install cocoapods-packager
这是因为 https://github.com/CocoaPods/cocoapods-packager 仓库中最新 1.5.0 Tag 不支持 --local
参数。正确的做法是取 master
最新的代码:
gem install specific_install
gem specific_install https://github.com/CocoaPods/cocoapods-packager
gem install
到底安装到了哪里?
通过 gem
安装的依赖库,可能会被安装到系统中的不同路径,后面会有修改 cocoapods-packager
源码的需求,实际安装路径没找对修改错了源码是不起作用的。可以借助 gem-path
插件 查看 gem 安装库(生效的)的实际位置。
gem install gem-path
gem path cocoapods-packager
The armv7/armv7s architecture is deprecated
从 Xcode 14 开始,已经不再支持 armv7/armv7s 架构了,直接使用 pod package
默认会编译 x86_64、i386、arm64、armv7、armv7s 的包,将报错:
error: The armv7 architecture is deprecated. You should update your ARCHS build setting to remove the armv7 architecture.
error: The armv7s architecture is deprecated. You should update your ARCHS build setting to remove the armv7s architecture.
修复方式:
通过 gem path cocoapods-packager
找到 cocoapods-packager
实际安装位置,修改 lib/cocoapods-packager/builder.rb
:
def ios_architectures
#archs = %w(x86_64 i386 arm64 armv7 armv7s)
archs = %w(x86_64 arm64)
vendored_libraries.each do |library|
archs = `lipo -info #{library}`.split & archs
end
archs
end
如何设置 OTHER_CFLAGS
参数?
cocoapods-packager
并没有暴露设置 xcodebuild 编译参数的设置入口,从 pod package
命令行尝试设置编译参数是无法生效的,相关代码在:
//lib/cocoapods-packager/builder.rb
def ios_build_options
"ARCHS=\'#{ios_architectures.join(' ')}\' OTHER_CFLAGS=\'-fembed-bitcode -Qunused-arguments\'"
end
最佳实践
我已经在 cocoapods-packager
上面踩过不少坑,索性直接 fork 一份 cocoapods-packager 来维护,Github 地址在:cocoapods-packager。相对官方仓库的改动点有:
- 修复了 armv7/armv7s 的问题;
- 增加
--other-c-flags
以支持自定义编译参数,对我个人而言这个参数非常实用。比如开启混淆:
pod package kanchuan.podspec --force --embedded --local --no-mangle --exclude-deps --spec-sources="" --verbose --other-c-flags="-mllvm -enable-allobf"
如果你喜欢这个特性,可以按照以下方式部署:
安装 cocoapods-packager:
sudo gem install cocoapods-packager
查看安装路径:
gem path cocoapods-packager
将从 https://github.com/ckanchuan/cocoapods-packager 下载的文件全部覆盖至安装路径中。
留言板