MeetYouDevs / cocoapods-imy-bin

1.05k stars 245 forks source link

三方SDK需要二进制化,只能跟demo一样在私有podspec作为依赖? #115

Closed y2kbug closed 3 years ago

y2kbug commented 3 years ago

目前需要将第三方pod作为组件二进制,官方demo给的以私有pod依赖的形式。是否直接作为pod方式二进制组件化,将第三方源码跟podspec文件下载制作二进制组件?

dabing1022 commented 3 years ago

是的,如果要给A打二进制,那么A需要在podspec指明dependency,并且在podfile中配置好依赖方式,但不能是本地路径(path的方式)

y2kbug commented 3 years ago

比如所说的Cocoapods官方仓库配置第三方的库比如masonry之类,需要将masonry打成二进制的话,我可以理解为你说的这个A是自己构建Pod库A中依赖方式引入Masonry,才能将masonry打成二进制?直接在podfile_local添加配置 masonry对 编译二进制是无效的,podfile_local只是引用?

dabing1022 commented 3 years ago

要打的目标二进制库,使用本地路径目前是无效的。

但如果要打的二进制库是 AAA,AAA依赖了B、C、D三个库,B、C、D这三个库可以在podfile_local中使用本地路径来依赖,帮助打AAA库,而不一定B、C、D一定要使用发布好的某个版本、某个tag等。

y2kbug commented 3 years ago

我在官方的demo下修改podfile_local文件

plugin 'cocoapods-imy-bin'
use_binaries!

#需要替换Podfile里面的组件才写到这里
target 'Demo' do

pod 'test', :podspec => '/Users/xiong/Downloads/cocoapods-imy-bin-demo-master/Demo/bin_test.podspec'
pod 'SDWebImage', '5.10.3'

end

podspec文件如下

# MARK: converted automatically by spec.py. @hgy

Pod::Spec.new do |s|
    s.name = 'test'
    s.version = '1'
    s.description = '我只是一个测试的,主要是想要 s.dependency'
    s.license = 'MIT'
    s.summary = 'Seeyou'
    s.homepage = 'https://github.com/meiyoudev/IMYPublic'
    s.authors = { 'suliangjin' => 'suliangjin@xiaoyouzi.com' }
    s.source  = { :git => "http://repo.we.com/ios/tbtrepo.git", :tag => "0.1.114" }
        s.requires_arc = true
        s.ios.deployment_target = '9.0'
        s.source_files = 'Source/**/*.{h,m,c}'
        s.public_header_files = 'Source/**/*.h'

        s.dependency 'YYModel'
        s.dependency 'YYCache'
        s.dependency 'FMDB'
        s.dependency 'LKDBHelper'
end

如果想将SDWebImage也打成二进制,只能是将SDWebImage添加到podspec引用下一种方式吗,这样的结果就需要将个人工程podfile 的第三方全部封装成私有库,这样就不符合Cocoapods-imy-bin文档中提到项目接入无侵入。

y2kbug commented 3 years ago

@su350380433 有个疑问第三方库都需要以依赖方式封装到私有库,这样就不符合Cocoapods-imy-bin中提到项目接入无侵入

dabing1022 commented 3 years ago

有个疑问第三方库都需要以依赖方式封装到

没有说第三方库必须是私有库吧

y2kbug commented 3 years ago

由于demo工程的demo组件没有实际的源文件制作二进制文件失败,添加源文件后制作成功,导致理解错误认为pod只有依赖才能制作二进制组件,已解决。