Skip to content

基于cocoapods扩展依赖库编译插件,生成预编译静态库,提高编译速度的插件。支持编译使用静态库提高速度,调试直接使用源码,方便调试

License

Notifications You must be signed in to change notification settings

Jacky-LinPeng/cocoapods-xlbuild

Folders and files

NameName
Last commit message
Last commit date

Latest commit

f790667 · Aug 6, 2022

History

9 Commits
Apr 4, 2022
Aug 6, 2022
Apr 4, 2022
Apr 4, 2022
Apr 4, 2022
Aug 6, 2022
Apr 4, 2022
Aug 6, 2022
Apr 4, 2022
May 28, 2022
Aug 6, 2022
Apr 4, 2022

Repository files navigation

cocoapods-xlbuild

利用cocoapods,生成预编译静态库,提高编译速度的插件。支持编译使用静态库提高速度,调试直接使用源码,方便调试

背景

随着项目的不断迭代,项目代码及依赖三方库和内部库越来越多,导致项目编译时间越来越长,浪费大量开发时间。 cocoapods-xlbuild插件将三方库打包为静态库,从而提高项目编译时间

安装插件

$ gem install cocoapods-xlbuild

使用

修改 podfile 文件,加入以下代码

1. 使用静态库编译(推荐):

plugin 'cocoapods-xlbuild'
use_frameworks! :linkage => :static
use_static_binary!

使用动态库编译(动态库会拖累app使用时间,推荐使用静态库):

plugin 'cocoapods-xlbuild'
use_frameworks!
use_dynamic_binary!

2. 如果某个库不想使用预编译加参数 :binary => false

pod 'AFNetworking', :binary => false

注意: 如果对某个库使用 :binary => false 则它的依赖库也不会预编译。 如果只想让当前库不参加预编译,依赖库参加预编译,可以将依赖库写在Podfile文件中 举个🌰: YTKNetwork、AFNetworking 都不参加预编译

pod 'YTKNetwork', :binary => false 

YTKNetwork不参加预编译,AFNetworking参与预编译

pod 'YTKNetwork', :binary => false 
pod 'AFNetworking'

3. 可以设置编译参数,默认不设置 例如:

set_custom_xcodebuild_options_for_prebuilt_frameworks :simulator => "ARCHS=$(ARCHS_STANDARD)"

4. 设置编译完成后移除源码,默认保存

remove_source_code_for_prebuilt_frameworks!

5. 设置Frameworks缓存仓库 install加速 例如:

set_local_frameworks_cache_path     '/Users/xxx/Desktop/CacheFrameworks'

源码调试

不要设置 remove_source_code_for_prebuilt_frameworks! 选项,保留源码 源码将会放入pod工程 SourceCode 文件夹下,可以直接进行源码调试功能

注意

目前是直接将静态库引入至Pods中,注意将Pods添加到gitignore中,否则将会提交至git仓库中

如果工程里面一开始配置的是打包成动态库,后面再改成静态库需要将Pod目录删掉再重新执行pod install,否则就会导致某个pod版本更新了却未重新构建

参考

https://github.com/leavez/cocoapods-binary

https://github.com/pdcodeunder/cocoapods-ppbuild

License

MIT

如果喜欢,给个 星星⭐️ 鼓励一下

About

基于cocoapods扩展依赖库编译插件,生成预编译静态库,提高编译速度的插件。支持编译使用静态库提高速度,调试直接使用源码,方便调试

Resources

License

Stars

Watchers

Forks

Packages

No packages published