从项目中删除CocoaPods的正确方法是什么?我想删除整个CocoaPod。由于我的客户施加的一些限制,我无法使用它。我需要只有一个xcodeproj而不是xcworkspace。
答案 0 :(得分:990)
可以从项目中删除CocoaPods,但CLI目前无法自动删除。首先,如果您遇到的唯一问题是无法使用xcworkspace
,则可以使用xcodeproj
标记使用CocoaPods,这将生成Pods.xcodeproj
标记xcodeproj
但不是工作区。然后,您可以将此xcodeproj
作为子项目添加到主0.39.0
。
如果你真的想要删除所有CocoaPods集成,你需要做一些事情:
注意如果操作不正确,可以修改其中一些内容可能会破坏您的主项目。我强烈建议您将项目检查到源代码管理中以防万一。这些说明也适用于CocoaPods版本Podfile
,它们可能会随着新版本而改变。
Podfile.lock
Pods
和xcworkspace
目录)xcodeproj
Pods.xcconfig
文件,删除对libPods.a
和Frameworks
的引用(Build Phases
组)Copy Pods Resources
下删除Embed Pods Frameworks
,Check Pods Manifest.lock
和xcodeproj
阶段。在这些步骤之后,您应该使用在集成CocoaPod之前存在的单个{{1}}进行设置。如果我错过任何事情,请告诉我,我会编辑此内容。
此外,我们一直在寻找有关如何改进CocoaPods的建议,所以如果您遇到问题,请在我们的--no-integrate
中提交,以便我们能够找到解决问题的方法!
修改强>
作为issue tracker由Jack Wu在评论中有一个第三方CocoaPods插件,可以为您自动执行这些步骤。它可以找到shown。请注意,它是第三方插件,可能并不总是在CocoaPods时更新。另请注意,它是由CocoaPods核心团队成员制作的,因此问题不会成为问题。
答案 1 :(得分:306)
pod deintegrate
和pod clean
是从项目/ repo中删除CocoaPod的两个指定命令。
以下是完整的命令集:
$ sudo gem install cocoapods-deintegrate cocoapods-clean
$ pod deintegrate
$ pod clean
$ rm Podfile
pod deintegrate
上的CocoaPod文档:https://guides.cocoapods.org/terminal/commands.html#pod_deintegrate
答案 2 :(得分:50)
要完全从项目中删除pod,您需要先安装两件事......以下是这些(假设您的系统中已安装了可可粉盒。)...
<强>安装强>
Cocoapods-Deintegrate Plugin
在终端上使用以下命令进行安装。
sudo gem install cocoapods-deintegrate
Cocoapods-Clean Plugin
在终端上使用以下命令进行安装。
sudo gem install cocoapods-clean
<强>用法强>
首先,使用常规命令(如..
)转到项目文件夹cd (path of the project) //Remove the braces after cd
现在使用这两个插件将其完全删除,如下所示..
Cocoapods-Deintegrate Plugin
在终端上使用以下命令首先从项目中解体。
pod deintegrate
Cocoapods-Clean Plugin
从项目中解除pod后,请在终端上使用以下命令将其彻底清除。
pod clean
完成上述任务后,应该仍然在项目目录中保留Podfile。只需手动删除或在终端上使用以下命令..
rm Podfile
多数民众赞成......现在你的项目没有豆荚......清理过。
从系统中删除Cocoapods。
任何方式尝试在终端上使用以下命令从系统中卸载/删除可卡包。
sudo gem uninstall cocoapods
它会自动删除可卡包。
感谢。 希望这有帮助。
答案 3 :(得分:48)
我认为有更简单的方法可以做到这一点。
根据接受的答案编辑,现在您可以使用第三方插件cocoapods-deintegrate,因为它是由CocoaPods核心团队成员制作的。
但是,仍然存在一些文件:
Podfile
Podfile.lock
Workspace
您可以手动将其从项目中删除,但还有另一种工具可以帮助您清理它们,感谢cocoapods-clean。
最后,卸载工作仍未完成,cocoapods-clean
不清理Podfile
,只需运行:
rm Podfile
干杯!
在删除之前,您应该确保备份项目!
答案 4 :(得分:42)
pod deintegrate
在此cmd之后,项目中没有留下Cocoapods的痕迹。
但是仍然保留了引用Pods项目的工作区,您需要手动删除3个以下文件:
xx.xcworkspace
Podifle
Podfile.lock
然后您可以再次使用您的项目。
玩得开心!
测试CocoaPod版本= 1.2.0
答案 5 :(得分:18)
我尝试了所有这些答案,但它仍然无法构建,最终我尝试了:
pod deintegrate
pod install
实际上有效!
就像它需要从构建阶段中删除所有pod脚本并重新添加它们才能使它工作,至少在我的情况下。
答案 6 :(得分:12)
Keith的答案很棒 - 我只是想指出,因为Cocoapods 0.36开始支持动态框架,如果你正在使用&#39; use_frameworks!& #39;在你的“Podfile”中#39;你希望删除Cocoapods,你必须这样做:
Build Phases
删除Embed Pods Frameworks
阶段。答案 7 :(得分:7)
开发人员可能面临两个方面。
在第一种情况下,你必须使用&#39; pod deintegrate&#39;并按照上面答案中提到的几个步骤进行操作。
对于第二种情况,如果要卸载安装的任何特定框架,那么在pod文件中提供了非常简单的方法,只需注释要卸载的框架并运行pod install命令。
# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'
target 'ProjectName' do
# Uncomment this line if you're using Swift or would like to use dynamic frameworks
# use_frameworks!
pod 'iCarousel', '~> 1.8'
# pod 'Facebook-iOS-SDK', '~> 4.1'
# pod 'ParseFacebookUtilsV4', '~> 1.11'
# pod 'Parse', '~> 1.14'
end
这里我想卸载facebook和解析框架(使用pod安装),而不是iCarousel,这就是我更新我的pod文件的原因。
现在,如果我运行pod安装,它将保留iCarousel,因为它在我的项目中,并将删除Facebook和解析。
答案 8 :(得分:4)
Podfile
,Podfile.lock
,Pods
文件夹和生成的工作区。.xcodeproj
中,删除对Pods.xcconfig
文件和libPods.a
文件的引用。Pods.framework
。您可能想要做的唯一事情是包括您之前使用的一些库。您可以通过简单地将pods文件夹中的任何文件夹拖放到项目中来实现此目的(我更喜欢将它们放入我的Supporting Files文件夹中)。
它对我有用。
答案 9 :(得分:4)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
答案 10 :(得分:3)
如果不起作用,请尝试
1.清理项目。
2.删除衍生数据。
如果您不知道如何删除派生数据,请转到此处
答案 11 :(得分:2)
从终端 cd 移动到项目文件夹。以下步骤有助于从项目中分离 pod
$ sudo gem install cocoapods-deintegrate cocoapods-clean
$ pod deintegrate
$ pod clean
$ rm Podfile
然后只需打开项目文件并删除 Pod 文件夹,如果它仍然在项目资源管理器中并带有红色。构建项目
答案 12 :(得分:1)
podfile
.plist
名称
答案 13 :(得分:1)
我将写一些非常简单的iv(从我的项目中删除任何CocoaPods)...
从xcode中删除框架引用:
答案 14 :(得分:1)
如果您只想删除一个Pod并保留其他可能已安装的Pod,请在您的应用目录中打开Podfile并删除您要删除的Pod。然后使用终端浏览到您的应用程序目录并输入:
pod update
这将删除您从podfile中删除的pod。您将在终端中看到它已被删除:
Analyzing dependencies
Removing FirebaseUI
Removing UICircularProgressRing
请注意,此方法还将所有更新拉到您的Podfile中的其他Pod。您可能想要也可能不想要。
答案 15 :(得分:0)
使用这些终端的命令(不要忘记在新行的开头使用sudo):
open:YourDir YouName$ sudo gem uninstall cocoapods
Password:?
Remove executables:
pod, sandbox-pod
in addition to the gem? [Yn] Y
Removing pod
Removing sandbox-pod
Successfully uninstalled cocoapods-1.4.0
open:YourDir YourName$ gem list --local | grep cocoapods
cocoapods-core (1.4.0)
cocoapods-deintegrate (1.0.2)
cocoapods-downloader (1.1.3)
cocoapods-plugins (1.0.0)
cocoapods-search (1.0.0)
cocoapods-stats (1.0.0)
cocoapods-trunk (1.3.0)
cocoapods-try (1.1.0)
逐个卸载列表:
open:YourDir YourName$ sudo gem uninstall cocoapods-core
Successfully uninstalled cocoapods-core-1.4.0
open:YourDir YourName$ sudo gem uninstall cocoapods-trunk
Successfully uninstalled cocoapods-trunk-1.3.0
open:YourDir YourName$ sudo gem uninstall cocoapods-try
Successfully uninstalled cocoapods-try-1.1.0
open:YourDir YourName$ gem list --local | grep cocoapods
open:YourDir YourName$ sudo gem uninstall cocoapods-stats
Successfully uninstalled cocoapods-stats-1.0.0
open:YourDir YourName$ sudo gem uninstall cocoapods-search
Successfully uninstalled cocoapods-search-1.0.0
open:YourDir YourName$ sudo gem uninstall cocoapods-downloader
Successfully uninstalled cocoapods-downloader-1.1.3
open:YourDir YourName$ sudo gem uninstall cocoapods-plugins
Successfully uninstalled cocoapods-plugins-1.0.0
open:YourDir YourName$ gem list --local | grep cocoapods
cocoapods-deintegrate (1.0.2)
open:YourDir YourName$ sudo gem uninstall cocoapods-deintegrate
Successfully uninstalled cocoapods-deintegrate-1.0.2
open:YourDir YourName$ sudo gem uninstall cocoapods-stats
Successfully uninstalled cocoapods-stats-1.0.0
open:YourDir YourName$ sudo gem uninstall cocoapods-search
Successfully uninstalled cocoapods-search-1.0.0
open:YourDir YourName$ sudo gem uninstall cocoapods-downloader
Successfully uninstalled cocoapods-downloader-1.1.3
open:YourDir YourName$ sudo gem uninstall cocoapods-plugins
Successfully uninstalled cocoapods-plugins-1.0.0
open:YourDir YourName$ gem list --local | grep cocoapods
cocoapods-deintegrate (1.0.2)
open:YourDir YourName$ sudo gem uninstall cocoapods-deintegrate
Successfully uninstalled cocoapods-deintegrate-1.0.2
答案 16 :(得分:0)
删除所有相关的pod文件。
xx.xcworkspace Podifle Podfile.lock
和“转到目标”->“构建阶段”->在此删除[cp]检查Pod manifests.lock
答案 17 :(得分:0)
我能够使用CocoaPods应用程序(版本1.5.2)删除项目中的广告连播。之后,我只删除了文件夹中的podfile,podfile.lock和xcworkspace文件。
答案 18 :(得分:0)
答案 19 :(得分:0)
提供的所有答案均有效且正确。但是,当您运行 pod install 并修改包含任何 cocoapods 配置的任何字段时,clean 和 deintegrate 将停止按预期工作。
就我而言,我在构建设置上覆盖了其他FRAMEWORK_SEARCH_PATHS,并且在处理 40 个目标时变得乏味......
以下 ruby 文件旨在运行 cocoapods 命令以“完全”清理项目,并执行一些额外的清理工作,例如构建设置并从项目中删除“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
答案 20 :(得分:-7)
如何改进cocoapods:构建一个GUI并忘记这个命令行疯狂。我们不再是1974年了。