代码之家  ›  专栏  ›  技术社区  ›  Whirlwind

是否可以只安装我们使用的材料的组件?

  •  0
  • Whirlwind  · 技术社区  · 7 年前

    在我的iOS项目中,在播客文件中,我有如下内容:

    pod 'Material', '~> 2.16'
    

    1 回复  |  直到 6 年前
        1
  •  0
  •   Larme    7 年前

    Material.podspec ,只有一个大豆荚,而不是亚种。

    您可以创建自己的迭代。

    MaterialTextField.podspec 文件(它是 Material.podspec 稍加修改后,用***)注释。你可以去掉子类,只使用一个“spec”,因为没有其他子类,但我不想对文件做太多更改。

    Pod::Spec.new do |s|
        s.name = 'MaterialTextField' ***
        s.version = '2.16.4'
        s.swift_version = '4.0'
        s.license = 'BSD-3-Clause'
        s.summary = 'A UI/UX framework for creating beautiful applications.'
        s.homepage = 'http://cosmicmind.com'
        s.social_media_url = 'https://www.facebook.com/cosmicmindcom'
        s.authors = { 'CosmicMind, Inc.' => 'support@cosmicmind.com' }
        s.source = { :git => 'https://github.com/CosmicMind/Material.git', :tag => s.version }
    
        s.default_subspec = 'Core'
        s.platform = :ios, '8.0'
    
        s.subspec 'Core' do |s|
            s.ios.deployment_target = '8.0'
            s.ios.source_files = 'Sources/**/iOS/TextField.swift' ***
            s.requires_arc = true
            s.resource_bundles = {
                'com.cosmicmind.material.icons' => ['Sources/**/*.xcassets'],
                'com.cosmicmind.material.fonts' => ['Sources/**/*.ttf']
            }
        s.framework = 'UIKit' ***
            # s.dependency 'Motion', '~> 1.4.3' ***
        end
    end
    


    我不确定您是否需要UIKit的s.framework,也不知道您是否可以绕过 Motion

    那么,你可以做什么

    $> pod spec lint --verbose
    

    > ERROR | [MaterialTextField/Core] xcodebuild:  MaterialTextField/Sources/iOS/TextField.swift:295:46: error: use of undeclared type 'IconButton'
    

    这就是问题所在 IconButton 对象,它不知道(取决于它),因此您必须修改podpsec:

    s.ios.source_files = 'Sources/**/iOS/TextField.swift', 'Sources/**/iOS/IconButton.swift'
    

    但它可能还需要其他导入,因此您需要运行大量 pod spec lint 直到最后,等等,并且可能需要修复其他类型的错误。

    你可能最终拥有了整个pod,因为有很多“相互依赖”。

    在Objective-C中,寻找 @class #import "File.h" 可能比Swift更容易,因为Swift的进口是“隐性的”。

    此外,您可能会继续使用该版本,并可能需要在下一次更新他们的pod时重新执行所有操作。

    pod 'MaterialTextField', :podspec => 'Relative/Path/To/MaterialTextField.podspec'
    

    我不确定那件事 :path 而不是 :podspec ),但如果我没记错的话,应该可以。

    小心,你可能会破坏许可证的使用。

    你也可以要求作者(打开一张票?)像这样把他们的豆荚分成多个豆荚 MaterialComponents.podspec (几分钟前我刚刚看到回答另一个问题)。


    要克隆回购协议,请创建一个项目,然后添加 TextField.swift ,检查它是否编译,添加缺少的文件,检查它是否编译,等等。它可能会快得多。