Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

cocoapods-jxedt

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cocoapods-jxedt

  • 0.0.21
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

cocoapods-jxedt

cocoapods-jxedt提供组件二进制链接的功能,你不需要更改podspec源文件,只需要在Podfile文件中配置好use_binary的标识,执行pod install的时候就会帮你完成二进制链接的工作。 使用cocoapods-jxedt理论上来说可以使你的pods工程编译时间减少到秒级,取决于你怎样配置二进制文件。

Installation

使用已发布的插件

$ gem install cocoapods-jxedt

本地编译插件安装

$ rake build

$ sudo rake install

Usage

打开Podfile文件,在合适的位置添加

plugin 'cocoapods-jxedt'
all_binary!
binary_dir('../_Prebuild')

plugin 'cocoapods-jxedt'
options = {
    'all_binary': true, # 全部开启bianry,默认false
    'binary_dir': '../_Prebuild', # binary编译的最终路径,默认为'../_Prebuild'
    'binary_switch': true, # 二进制开关,设置为关则不hook pre_install过程,默认开
    'prebuild_job': true, #开启预编译任务,默认开启
    'excluded_pods': ['WIMPhotoBrowser', 'JXFavoriteLib'], # 排除binary的组件
    'framework_header_search_enabled': true, # 是否开启binary的header search path功能,默认不开启
    'configurations': ['Release', 'Debug'], # 支持的configurations,默认只编译Release
    'xcframework': false, # 编译结果是否为xcframework,默认false
    'dev_pods_enabled': false, # 开发中的pod是否支持binary,默认false
    'simulator_build_enabled': false, # 是否编译模拟器,默认不支持
    'clean_build': false, # build的时候是否clean,默认不clean
    'build_args': { # 编译的配置
        'default':["ONLY_ACTIVE_ARCH=NO", "BUILD_LIBRARY_FOR_DISTRIBUTION=YES"],
        'device':["ARCHS='arm64'"], # "ARCHS='arm64 armv7 armv7s'"
        'simulator':["ARCHS='x86_64'"] # "ARCHS='arm64 x86_64 i386'
    }
}
cocoapods_jxedt_config(options)

如果只需要某个组件实现二进制的链接,你可以

pod 'PodA', :binary => true # 明确的指定某个pod组件支持binary

pod 'PodB', :framework_header_search => false # 明确指出某个pod不支持配置framework的`HEADER_SEARCH_PATH`

原理

... 待完善

TODO

  • 支持从已有framework文件完成源码和二进制切换

  • 解决依赖的组件被打成framework,头文件依赖的问题

  • 解决源码和二进制切换的问题,现有binary插件均不支持

  • 支持不同环境(Debug、Release)编译时链接不同环境的framework

  • 记录组件的hash(git提交)值,用户校验二进制的源码组件的版本。这个值在podfile.lock文件中

  • 两次install去校验checksum值,确保源码和二进制是对应版本,checksum值校验通过才支持binary

  • 添加是否从header_search_path中查找framework的header(为了兼容"" <> 这种方式引用头文件的问题)

  • 插件支持编译为framework

  • prebuild流程添加到pod的install流程中,形成闭环,使用二进制的时候,发现没有对应的二进制文件,那么可以预编译

  • 添加pod jxedt options命令,输出配置文件详细介绍

  • 添加pod jxedt binary命令,支持命令行打包framework

  • 支持配置git地址做编译结果缓存

  • 支持缓存的fetch和push

  • 支持多线程下载

已知问题

  1. 不支持framework中有xib文件,如果pod仓库中有xib文件且不在bundle中,需要设置:binary=>false
  2. 不支持多个target依赖同一个pod时,target的platform版本不一致的情况
  3. 不支持同一个pod,多个target且使用了不同的subspec
  4. framework_header_search_enabled不支持使用#if __has_include(<FrameworkA/Header.h>)方式设置的组件,如果有会出现重复定义的错误。如YYImage、YYWebImage等

感谢

感谢cocoapods-binarycocoapods-binary-cache的作者,因为看了他们的源码之后受到了启发。

FAQs

Package last updated on 21 Sep 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc