从项目中删除CocoaPods的正确方法是什么?我想移除整个CocoaPod。由于客户的限制,我不能使用它。我只需要一个xcodeproj,而不是一个xcworkspace。
当前回答
要从项目中完全删除pod,你需要先安装两件事…这些是以下(假设你已经在你的系统中安装了可可荚)…
Cocoapods-Deintegrate插件 Cocoapods-Clean插件
安装
Cocoapods-Deintegrate插件 在您的终端上使用以下命令来安装它。 Sudo gem安装cocoapods-deintegrate Cocoapods-Clean插件 在您的终端上使用以下命令来安装它。 须藤宝石安装椰荚干净
使用
首先进入你的项目文件夹,使用as usual命令,如..
cd (path of the project) //Remove the braces after cd
现在使用这两个插件完全删除它如下..
Cocoapods-Deintegrate插件 在您的终端上使用以下命令首先从项目中分解pod。 豆荚去积分
Cocoapods-Clean插件 从项目中分解pod后,在终端上使用以下命令彻底清理它。 舱清洁 在完成上述任务后,您的项目目录中应该还保留着Podfile .只需手动删除它或在终端上使用以下命令。 rm Podfile
这是……现在你有你的项目从豆荚自由…清洁。
将Cocoapods从系统中移除。
以任何方式尝试在您的终端上使用以下命令从您的系统中卸载/删除可口可乐。
sudo gem uninstall cocoapods
它会自动去除可乐皮。
谢谢。 希望这对你有所帮助。
其他回答
所提供的答案均正确有效。但是,当您运行pod安装和修改任何包含cocoapods配置的字段时,clean和deintegration将停止正常工作。
在我的情况下,我有,除其他FRAMEWORK_SEARCH_PATHS覆盖在构建设置和它变得乏味时,处理40个目标…
下面的ruby文件打算运行cocoapods命令来“完全”清理项目,并执行一些额外的清理,例如Build设置,并从项目中删除“Pod”文件夹。脚本还可能包含“clean”或“deintegrate”执行的操作。
require 'xcodeproj'
### HELPERS ###
# Array extension for non-Ruby rail
class Array
# Wraps and object into an array
#
# @param object [Any] The object to be wrapped
# @return [Any] The array with the value wrapped. If the object is nil, then returns empty array
def self.wrap(object)
if object.nil?
[]
elsif object.respond_to?(:to_ary)
object.to_ary || [object]
else
[object]
end
end
end
# Performs the cocoapods clean up actions. It will install the dependencies needed.
def cocoapod_clean_actions
## DEINTEGRATE
puts "** Installing Cocoapods 'DEINTEGRATE' **"
system("sudo gem install cocoapods-deintegrate")
puts "** Performing Cocoapods 'DEINTEGRATE' **"
system("pod deintegrate")
## CLEAN
puts "** Installing Cocoapods 'CLEAN' **"
system("sudo gem install cocoapods-deintegrate")
puts "** Performing Cocoapods 'CLEAN' **"
system("pod clean")
end
# Performs a clean up on the build settings removing all the identified pods leftovers
#
# @param project [Xcodeproj] Xcode project where to permorm the actions
def clean_build_settings(project)
puts "** Removing Cocoapods references from 'BUILD SETTING' **"
podsOcurrence = "PODS"
project.targets.each { |target|
target.build_configurations.each { |build_configuration|
puts "Inspecting BUILD_SETTINGS for TARGET => #{target.name} & CONFIGURATION => #{build_configuration.name}"
build_settings = build_configuration.build_settings
build_settings.each { |key, value|
if key.include?(podsOcurrence)
build_settings.delete(key)
else
clean(build_settings, key, podsOcurrence)
end
}
}
}
project.save()
end
# Performs a clean-up on a specific key of the build settings by removing the occurrences given. It also cleans the value if empty.
#
# @param build_settings [Hash] Build Settings for a specific target and configuration
# @param flag [String] Key to find in the build_settings
# @param occurence [String] The occurence to be removed from the value of build settings key
def clean(build_settings, flag, occurence)
puts "CLEAN => flag = #{flag}, ocurrence = #{occurence}"
indexes = Array.new()
build_settings_flag = Array.wrap(build_settings[flag])
build_settings_flag.each_with_index { |value, index|
if value.include?(occurence)
previous_index = index - 1
if previous_index >= 0 && build_settings_flag[previous_index].to_s&.start_with?("-")
indexes.append(previous_index)
end
indexes.append(index)
end
}
if indexes.count > 0
build_settings_flag.delete_if.with_index { |_, index|
indexes.include? index
}
# Replace the value for the build setting
if build_settings_flag.empty?
puts "Removing empty array #{flag}"
build_settings.delete(flag)
else
puts "Reassining array #{flag}"
build_settings[flag] = build_settings_flag
end
end
end
# Performs a clean up on the build settings removing all the identified pods leftovers
#
# @param project [Xcodeproj] Xcode project where to permorm the actions
def clean_build_phases(project)
puts "** Removing Cocoapods references from 'BUILD_PHASES' **"
project.targets.each { |target|
#if target.name == "WhiteLabel" #TESTING
puts "Inspecting BUILD_PHASES for TARGET => #{target.name}"
target.shell_script_build_phases.each { |shell_script|
if shell_script.name.include?("[CP]")
puts "Removing '#{shell_script.name}' shell script"
shell_script.remove_from_project()
elsif shell_script.name == "Crashlytics Run Script"
puts "Deleting '#{shell_script.name}'"
# Add extra build phases such as the Crashlytics
#shell_script.remove_from_project()
end
}
#break #TESTING
#end #TESTING
}
project.save()
end
# Removes all the unwanted cocoapods files and folders from the project
#
# @param project [Xcodeproj] Xcode project where to permorm the actions
def remove_files_and_folders(project)
puts "** Removing Cocoapods files and folders from project **"
## Project
# BE CAREFUL WITH GROUP(LINK) NAME AND GROUP PATH(FOLDER)
project.groups.find{ |group| group.path == "Pods" }&.remove_from_project()
project.save()
# File system
system('rm -rf Pods')
#system('rm Podfile')
end
### MAIN ###
puts "********** Cocoapods CLEAN UP **********"
cocoapod_clean_actions()
puts "********** Cocoapods EXTRA CLEAN UP **********"
project = Xcodeproj::Project.open "./WhiteLabel.xcodeproj"
clean_build_settings(project)
clean_build_phases(project)
remove_files_and_folders(project)
project.save()
它可以被称为
ruby PodExtraClean.rb
我要写什么iv做的很简单(删除任何CocoaPods从我的项目)..
删除任何已添加的文件夹(框架,Pods,…) 删除任何添加的文件(PROJECT.)xcworkspace PodFile PodFile锁,pod - project .debug.xcconfig, pod - project .release.xcconfig… 只需保留您原来的(PROJECT, PROJECT_Tests, PROJECT.xcodeproj) 从xcode的项目中删除框架引用
从xcode中删除框架引用:
使用项目导航器 选择项目 选择目标项目 从顶部选项中选择Build Phases 保留默认组(目标依赖项、编译源、带有库的链接二进制文件、复制Bundle资源)并删除其他组
从项目中删除CocoaPods是可能的,但目前还没有被CLI自动化。首先,如果你唯一的问题是不能使用xcworkspace,你可以使用CocoaPods和xcodeprojects,使用——no-integrate标志,它会生成Pods。Xcodeproj,而不是工作空间。然后可以将这个xcodeproj作为子项目添加到主xcodeproj中。
如果你真的想移除所有CocoaPods集成,你需要做几件事:
注意:如果不正确地编辑这些内容,可能会破坏你的主项目。我强烈建议您将项目纳入源代码控制,以防万一。此外,这些指令适用于CocoaPods 0.39.0版本,它们可能会随着新版本而改变。
删除独立文件(Podfile Podfile。锁和你的Pods目录) 删除生成的xcworkspace 打开xcodeproj文件,删除对Pods的引用。xcconfig和libPods。a(在框架组中) 在构建阶段下,删除“复制Pods资源”、“嵌入Pods框架”和“检查Pods清单”。锁阶段。 这似乎是显而易见的,但您需要以其他方式集成第三方库,或者从代码中删除对它们的引用。
在这些步骤之后,您应该使用集成CocoaPods之前存在的单个xcodeproj进行设置。如果我遗漏了什么,请告诉我,我会编辑这个。
此外,我们一直在寻找如何改进CocoaPods的建议,所以如果你有一个问题,请提交到我们的问题跟踪器,这样我们就可以想出一个方法来解决它们!
EDIT
正如Jack Wu在评论中所示,有一个第三方CocoaPods插件可以为你自动化这些步骤。可以在这里找到。注意,它是第三方插件,可能并不总是在CocoaPods更新时更新。还要注意,它是由CocoaPods核心团队成员制作的,所以这个问题不会成为问题。
我尝试了所有这些答案,但它仍然不会建立,最终我尝试了:
pod deintegrate
pod install
这真的有效!
就好像它需要从构建阶段删除所有的pod脚本,然后重新添加它们才能工作,至少在我的情况下是这样。
详细的图形表示
推荐文章
- iOS如何设置应用程序图标和启动图像
- 模拟器慢动作动画现在打开了吗?
- Swift to Objective-C头未在Xcode 6中创建
- iOS应用程序“应用程序无法验证”只在一台设备上
- 是否可以在Xcode 5上安装iOS 6 SDK ?
- 编译警告:对于架构i386,没有处理文件的规则
- MobileDevice。pkg不受信任,OS X更新后无法打开Xcode
- 目标……重写“Pods/Pods.xcconfig”中定义的“OTHER_LDFLAGS”构建设置
- 解释iOS7中automyadjustsscrollviewinsets, extendedlayoutinclesopaquebars, edgesForExtendedLayout之间的区别
- 按下UINavigationController后栏按钮时执行动作
- 架构arm64未定义的符号
- 在Xcode 6的Storyboard中什么是“限制到边缘”
- Pod安装保持在“设置CocoaPods主repo”状态
- 如何清空缓存和清洁所有目标Xcode 4及以后
- 如何在不接触其他依赖项的情况下更新单个pod