在我的iOS项目的Podfile中,我有类似以下内容:
pod 'Material', '~> 2.16'
但是现在,我仅使用TextField组件。
有没有一种仅安装其所有功能的方法?
答案 0 :(得分:0)
根据Material.podspec,只有一个大吊舱,没有子规格。
您可以创建自己的迭代。
使用创建MaterialTextField.podspec
文件(它是Material.podspec
的内容,并进行小修改并带有***注释)。您可以摆脱子规格,而只使用一个“规格”,因为没有其他子规格,但是我不想太多更改文件。
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
的依赖关系。
您可能还希望删除字体/ xcassets。
然后,您可以
$> 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中导入是“隐式”的要容易。
此外,您可能会继续使用该版本,并可能在下一次更新他们的pod时再次重做所有操作。
最后,如果您有了耐心和奇迹,便可以使用以下方法将其添加到podfile中:
pod 'MaterialTextField', :podspec => 'Relative/Path/To/MaterialTextField.podspec'
我不确定那一个(还是:path
而不是:podspec
),但是如果我没记错的话,应该这样做。
请注意,您可能会中断许可证的使用。
您还可能要求作者(打开票证)将他们的豆荚分成多个MaterialComponents.podspec这样的豆荚(我刚刚在几分钟前看到回答另一个问题)。
编辑:
另一种方法是避免过多pod spec lint
来克隆存储库,创建项目,添加TextField.swift
,检查其是否编译,添加丢失的文件,检查其是否编译等。这可能很多更快。