To install or update CocoaPods see this guide.
- Added a condition to avoid compiling xcassets when WRAPPER_EXTENSION is undefined, as it would be in the case of static libraries. This prevents trying to copy the compiled files to a directory that does not exist. Noah McCann #1521
CocoaPods • cocoapods-core • Xcodeproj
-
The xcodeproj gem now comes bundled with prebuilt binaries for the Ruby versions that come with OS X 10.8 and 10.9. Users now no longer need to install the Xcode Command Line Tools or deal with the Ruby C header location.
Eloy Durán Xcodeproj#88 -
Targets passed to the
link_with
method of the Podfile DSL no longer need to be explicitly passed as an array.link_with ['target1', 'target2']
can now be written aslink_with 'target1', 'target2'
.
Adam Sharp Core#30 -
The copy resources script now compiles xcassets resources.
Ulrik Damm #1427 -
pod repo
now support aremove ['repo_name']
command.
Joshua Kalpin #1493 #1484
-
The architecture is now set in the build settings of the user build configurations.
Fabio Pelosin #1450 #1462 -
Fixed a crash related to CocoaPods being unable to resolve an unique build setting of an user target with custom build configurations.
Fabio Pelosin #1462 #1463 #1457 -
Fixed a defect which prevented subspecs from being dependant on a pod with a name closely matching the name of one of the subspec's parents.
Noah McCann #29 -
The developer dir relative to the SDK is not added anymore if testing frameworks are detected in OS X targets, as it doesn't exists, avoiding the presentation of the relative warning in Xcode.
Fabio Pelosin
CocoaPods • cocoapods-core • Xcodeproj
-
Fixed a crash which was causing a failure in
pod lib create
if the name of the Pod included spaces. As spaces are not supported now this is gracefully handled with an informative message.
Kyle Fuller #1456 -
If an user target doesn't specify an architecture the value specified for the project is used in CocoaPods targets.
Fabio Pelosin #1450 -
The Pods project now properly configures ARC on all build configurations.
Fabio Pelosin #1454
CocoaPods • cocoapods-core • Xcodeproj
-
CocoaPods now creates and hides the schemes of its targets after every installation. The schemes are not shared because the flag which keeps track whether they should be visible is a user only flag. The schemes are still present and to debug a single Pod it is possible to make its scheme visible in the Schemes manager of Xcode. This is rarely needed though because the user targets trigger the compilation of the Pod targets.
Fabio Pelosin #1185 -
Installations which don't integrate a user target (lint subcommands and
--no-integrate
option) now set the architecture of OS X Pod targets to$(ARCHS_STANDARD_64_BIT)
(Xcode 4 default value for new targets). This fixes lint issues with Xcode 4.
Fabio Pelosin #1185 -
Further improvements to the organization of the Pods project
- The project is now is sorted by name with groups at the bottom.
- Source files are now stored in the root group of the spec, subspecs are not
stored in a
Subspec
group anymore and the products of the Pods all are stored in the products group of the project. - The frameworks are referenced relative to the Developer directory and namespaced per platform.
-
Added the
documentation_url
DSL attribute to the specifications.
Fabio Pelosin #1273
-
The search paths of vendored frameworks and libraries now are always specified relatively.
Fabio Pelosin #1405 -
Fix an issue where CocoaPods would fail to work when used with an older version of the Active Support gem. This fix raises the dependency version to the earliest compatible version of Active Support.
Kyle Fuller #1407 -
CocoaPods will not attempt to load anymore all the version of a specification preventing crashes if those are incompatible.
Fabio Pelosin #1272
CocoaPods • cocoapods-core • Xcodeproj
-
Added support for Xcode 5.
The generated Pods Xcode project is now compatible with
arm64
projects and is updated to use Xcode 5’s default settings removing all warnings.NOTE to users migrating projects from Xcode 4, or are still using Xcode 4:
- The Pods Xcode project now sets the
ONLY_ACTIVE_ARCH
build setting toYES
in theDebug
configuration. You will have to set the same on your project/target, otherwise the build will fail. - Ensure your project/target has an
ARCHS
value set, otherwise the build will fail. - When building a iOS project from the command-line, with the
xcodebuild
tool that comes with Xcode 4, you’ll need to completely disable this setting by appending to your build command:ONLY_ACTIVE_ARCH=NO
.
- The Pods Xcode project now sets the
-
Speed up project generation in
pod install
andpod update
. -
The pre and post install hooks that have been deprecated now include the name and version of the spec that’s using them.
-
Only create a single resource bundle for all targets. Prior to this change a resource bundle included into multiple targets within the project would create duplicately named targets in the Pods Xcode project, causing duplicately named Schemes to be created on each invocation of
pod install
. All targets that reference a given resource bundle now have dependencies on a single common target. -
Solved outstanding issues with CocoaPods resource bundles and Archive builds:
- The rsync task copies symlinks into the App Bundle, producing an invalid
app. This change add
--copy-links
to the rsync invocation to ensure the target files are copied rather than the symlink. - The Copy Resources script uses
TARGET_BUILD_DIR
which points to the App Archiving folder during an Archive action. Switching toBUILT_PRODUCTS_DIR
instead ensures that the path is correct for all actions and configurations.
- The rsync task copies symlinks into the App Bundle, producing an invalid
app. This change add
-
Ensure resource bundles are copied to installation location on install actions Chris Gummer #1364
-
Various bugfixes in Xcodeproj, refer to its CHANGELOG for details.
CocoaPods • cocoapods-core • Xcodeproj • cocoapods-downloader
-
Added
pod init
command which generates a Podfile according to the targets of the project stored in the working directory and to the templates stored in the~/.cocoapods/templates
folder. Two templates are supported:- the
Podfile.default
template for regular targets. - and the
Podfile.test
template for test targets. Ian Ynda-Hummel #1106 #1045
- the
-
CocoaPods will now leverage the xcproj command line tool if available in the path of the user to touch saved projects. This will result in projects being serialized in the exact format used by Xcode eliminating merge conflicts and other related issues. To learn more about how to install xcproj see its readme. Cédric Luthi #1275
-
Rationalized and cleaned up Pods project group structure and path specification.
-
Create all necessary build configurations for Pods.xcodeproj at the project level. If the user’s project has more than just Debug and Release build configurations, they may be explicitly specified in the Podfile:
xcodeproj 'MyApp', 'App Store' => :release, 'Debug' => :debug, 'Release' => :release
If build configurations aren’t specified in the Podfile then they will be automatically picked from the user’s project in Release mode.
These changes will ensure that thelibPods.a
static library is not stripped for all configurations, as explained in #1217.
Cédric Luthi
#1294 -
Added basic support for Bazaar repositories.
Fred McCann
cocoapods-downloader#4
-
Fixed crash in
pod spec cat
. -
Use the
TARGET_BUILD_DIR
environment variable for installing resource bundles.
Cédric Luthi
#1268 -
CoreData versioned models are now properly handled respecting the contents of the
.xccurrentversion
file.
Ashton-W
#1288, Xcodeproj#83 -
OS X frameworks are now copied to the Resources folder using rsync to properly overwrite existing files.
Nikolaj Schumacher
#1063 -
User defined build configurations are now added to the resource bundle targets.
#1309
CocoaPods • cocoapods-core • Xcodeproj • cocoapods-downloader
-
Added
prepare_command
attribute to Specification DSL. The prepare command will replace thepre_install
hook. Thepost_install
hook has also been deprecated. #1247The reason we provided Ruby hooks at first, was because we wanted to offer the option to make any required configuration possible. By now, however, we have a pretty good idea of the use-cases and are therefore locking down the freedom that was once available. In turn, we’re adding attributes that can replace the most common use-cases. (See the enhancements directly following this entry for more info).
The second reason we need to lock this down is because this is the last remaining obstacle to fully serialize specifications, which we need in order to move to a ‘spec push’ web-service in the future.
-
Added
resource_bundles
attribute to the Specification DSL.
#743 #1186 -
Added
vendored_frameworks
attribute to the Specification DSL.
#809 #1075 -
Added
vendored_libraries
attribute to the Specification DSL.
#809 #1075 -
Restructured
.cocoapods
folder to contain repos in a subdirectory.
Ian Ynda-Hummel #1150 -
Improved
pod spec create
template.
#1223 -
Added copy&paste-friendly dependency to
pod search
.
#1073 -
Improved performance of the installation of Pods with git sources which specify a tag.
#1077 -
Core Data
xcdatamodeld
files are now properly referenced from the Pods project.
#1155 -
Removed punctuation check from the specification validations.
#1242 -
Deprecated the
documentation
attribute of the Specification DSL.
Core#20
- Fix copy resource script issue related to filenames with spaces.
Denis Hennessy #1231
- Add support for .xcdatamodel resource files (in addition to .xcdatamodeld). #1201
-
Always exlude
USE_HEADERMAP
from the user’s project. #1216 -
Use correct template repo when using the
pod lib create
command. #1214 -
Fixed issue with
pod push
failing when the podspec is unchanged. It will now report[No change] ExamplePod (0.1.0)
and continue to push other podspecs if they exist. #1199 -
Set STRIP_INSTALLED_PRODUCT = NO in the generated Pods project. This allows Xcode to include symbols from CocoaPods in dSYMs during Archive builds. #1217
-
Ensure the resource script doesn’t fail due to the resources list file not existing when trying to delete it. #1198
-
Fix handling of spaces in paths when compiling xcdatamodel(d) files. #1201
CocoaPods • cocoapods-core • Xcodeproj
- The build settings of the Pods project and of its target have been updated to be in line with the new defaults of the future versions of Xcode.
-
Specifications defining build setting with the
[*]
syntax are now properly handled. #1171 -
The name of the files references are now properly set fixing a minor regression introduced by CocoaPods 0.22.1 and matching more closely Xcode behaviour.
-
The validator now builds the Pods target instead of the first target actually performing the validation.
-
Build settings defined through the
xcconfig
attribute of apodspec
are now stripped of duplicate values when merged in an aggregate target. #1189
- Fixed a crash related to target dependencies and subspecs. #1168
CocoaPods • cocoapods-core • Xcodeproj
-
Added the
pod lib create
subcommand which allows to create a new Pod adhering to the best practices. The template is still a bit primitive and we encourage users to provide feedback by submitting patches and issues to https://github.com/CocoaPods/CocoaPods. #850 -
Added the
pod lib lint
subcommand which allows to lint the Pod stored in the working directory (a pod spec in the root is needed). This subcommand is equivalent to the deprecatedpod spec lint --local
. #850 -
The dependencies of the targets of the Pods project are now made explicit. #1165
-
The size of the cache used for the git repos is now configurable. For more details see https://github.com/CocoaPods/CocoaPods/blob/master/lib/cocoapods/config.rb#L7-L25 #1159
-
The copy resources shell script now aborts if any error occurs. #1098
-
The output of shell script build phases no longer includes environment variables to reduce noise. #1122
-
CocoaPods no longer sets the deprecated
ALWAYS_SEARCH_USER_PATHS
build setting.
-
Pods whose head state changes now are correctly detected and reinstalled. #1160
-
Fixed the library reppresentation of the hooks which caused issues with the
#copy_resources_script_path
method. #1157 -
Frameworks symlinks are not properly preserved by the copy resources script. Thanks to Thomas Dohmke (ashtom) for the fix. #1063
CocoaPods • cocoapods-core • Xcodeproj
-
Fixed a linter issue related to the dedicated targets change. #1130
-
Fixed xcconfig issues related to Pods including a dot in the name. #1152
CocoaPods • cocoapods-core • Xcodeproj
-
Pods are now built in dedicated targets. This enhancement isolates the build environment of each Pod from other ones eliminating pollution issues. It also introduces an important architectural improvement which lays the foundation for the upcoming CocoaPods features. Stay tuned! This feature has been implemented by Jeremy Slater. #1011 #983 #841
-
Reduced external dependencies and deprecation of Rake::FileList. #1080
-
Fixed crash due to Podfile.lock containing multiple version requirements for a Pod. #1076
-
Fixed a build error due to the copy resources script using the same temporary file for multiple targets. #1099
- Ensure that, in a sandbox-pod env, RubyGems loads the CocoaPods gem on system Ruby (1.8.7). #939
- Allow sandbox-pod to execute any tool inside the Xcode.app bundle.
- Allow sandbox-pod to execute any tool inside a rbenv prefix.
- Made sandbox-pod executable visible as it wasn't correctly configured in the gemspec.
- Made sandbox-pod executable actually work when installed as a gem. (In which case every executable is wrapped in a wrapper bin script and the DATA constant can no longer be used.)
- Required CLAide 0.3.2 as 0.3.0 didn't include all the files in the gemspec and 0.3.1 was not correctly processed by RubyGems.
CocoaPods • cocoapods-core • cocoapods-downloader • Xcodeproj • CLAide
-
Introduces an experimental sandbox feature. #939
Let’s face it, even though we have a great community that spends an amazing amount of time on curating the specifications, the internet can be a hostile place and the community is growing too large to take a naive approach any longer.
As such, we have started leveraging OS X’s sandbox facilities to disallow unsanctioned operations. This is still very experimental and therefore has to be used explicitely, for now, but that does not mean we don’t want you to start using it and report issues.
To use the sandbox, simply use the
sandbox-pod
command instead. E.g.:$ sandbox-pod install
In case of issues, be sure to check
/var/log/system.log
for ‘deny’ messages. For instance, here’s an example where the sandbox denies read access to/
:May 16 00:23:35 Khaos kernel[0]: Sandbox: ruby(98430) deny file-read-data /
NOTE: The above example is actually one that we know of. We’re not sure yet which process causes this, but there shouldn’t be a need for any process to read data from the root path anyways.
NOTE 2: At the moment the sandbox is not compatible with the
:path
option when referencing Pods that are not stored within the directory of the Podfile. -
The naked
pod
command now defaults topod install
. #958 -
CocoaPods will look for the Podfile in the ancestors paths if one is not available in the working directory. #940
-
Documentation generation has been removed from CocoaPods as it graduated to CocoaDocs. This decision was taken because CocoaDocs is a much better solution which doesn't clutter Xcode's docsets while still allowing access to the docsets with Xcode and with Dash. Removing this feature keeps the installer leaner and easier to develop and paves the way for the upcoming sandbox. Private pods can use pre install hook to generate the documentation. If there will be enough demand this feature might be reintegrated as plugin (see #1037).
-
Improved performance of the copy resources script and thus build time of the integrated targets. Contribution by @onato #1050.
-
The changelog for the current version is printed after CocoaPods is installed/updated. #853.
- Inheriting
inhibit_warnings
per pod is now working #1032 - Fix copy resources script for iOS < 6 and OS X < 10.8 by removing the
--reference-external-strings-file
flag. #1030 - Fixed issues with the
:head
option of the Podfile. #1046 #1039
- Project-level preprocessor macros are not overwritten anymore. #903
- A Unique hash instances for the build settings of the Pods target is now created resolving interferences in the hooks. #1014
- Compile time introspection. Macro definitions which allow to inspect the installed Pods and their version have been introduced in the build environment of the Pod libraries (example).
- CocoaPods now defines the
COCOAPODS=1
macro in the Pod and the Client targets. This is useful for libraries which conditionally expose interfaces. #903 - Added support for the
private_header_files
attribute of the Specification DSL. #998 - CocoaPods now defines the deployment target of the Pods project computed as the minimum deployment target of the Pods libraries. #556
- Added
pod podfile-info
command. Shows list of used Pods and their info in a project or supplied Podfile. Options:--all
- with dependencies.--md
- in Markdown. #855 - Added
pod help
command. You can still use the old format with --help flag. #957 - Restored support for Podfiles named
CocoaPods.podfile
. Moreover, the experimental YAML format of the Podfile now is associated with files namedCocoaPods.podfile.yaml
. #1004
- The
:local
flag in Podfile has been renamed to:path
and the old syntax has been deprecated. #971
- Fixed issue related to
pod outdated
and external sources. #954 - Fixed issue with .svn folders in copy resources script. #972
- Fixed a bug introduced in 0.18 which cause compilation issue due to the quoting of the inherited value in the xcconfigs. #956
- Robustness against user targets including build files with missing file references. #938
- Partially fixed slow performance from the command line #919
CocoaPods • cocoapods-core • Xcodeproj
- Added the ability to inhibit warnings per pod.
Just pass
:inhibit_warnings => true
inline. This feature has been implemented by Marin Usalj (@mneorr). #10 #934 - Inhibiting warnings will also suppress the warnings of the static analyzer.
- A new build phase has been added to check that your
installation is in sync with the
Podfile.lock
and fail the build otherwise. The new build phase will not be added automatically to targets already integrated with CocoaPods, for integrating targets manually see this comment. This feature has been implemented by Ullrich Schäfer (@stigi). #946 - The
pod search
commands now accepts the--ios
and the--osx
arguments to filter the results by platform. #625 - The developer frameworks are automatically added if
SenTestingKit
is detected. There is no need to specify them in specifications anymore. #771 - The
--no-update
argument of theinstall
,update
,outdated
subcommands has been renamed to--no-repo-update
. #913
- Improved handling for Xcode projects containing non ASCII characters. Special thanks to Cédric Luthi (@0xced), Vincent Isambart (@vincentisambart), and Manfred Stienstra (@Manfred) for helping to develop the workaround. #926
- Corrected improper configuration of the PODS_ROOT xcconfig variable in non-integrating installations. #918
- Improved support for pre-release versions using dashes. #935
- Documentation sets are now namespaced by pod solving improper attribution. #659
- Fix crash related to the specification of the workspace as a relative path. #920
- Fix an issue related to the
podspec
dsl directive of the Podfile for specifications with internal dependencies. #928 - Fix crash related to search from the command line. #929
- Enabled the FileList deprecation warning in the Linter.
- CocoaPods will raise if versions requirements are specified for dependencies with external sources.
- The exclude patterns now handle folders automatically.
- Always create the CACHE_ROOT directory when performing a search. #917
- Don’t break when specifying doc options, but not appledoc ones. #906
- Sort resolved specifications. #907
- Subspecs do not need to include HEAD information. #905
- Allow the analyzer to do its work without updating sources. motion-cocoapods#50
- Fixed an issue which lead to the missing declaration of the plural directives of the Specification DSL. #816
- The resolver now respects the order of specification of the target definitions.
- Restore usage of cache file to store a cache for expensive stats.
- Moved declaration of
Pod::FileList
to CocoaPods-core.
- Fine tuned the Specification linter and the health reporter of repositories.
- Search results are sorted.
- CocoaPods updates the repositories by default. #872
- Fixed a crash which was present when the Podfile specifies a workspace. #871
- Fix for a bug which lead to a broken installation in paths containing brackets and other glob metacharacters. #862
- Fix for a bug related to the case of the paths which lead to clean all files in the directories of the Pods.
- CocoaPods now maintains a search index which is updated incrementally instead
of analyzing all the specs every time. The search index can be updated
manually with the
pod ipc update-search-index
command. - Enhancements to the
pod repo lint
command. - CocoaPods will not create anymore the pre commit hook in the master repo
during setup. If already created it is possible remove it deleting the
~/.cocoapods/master/.git/hooks/pre-commit
path. - Improved support for linting and validating specs repo.
- The
--no-clean
argument is not ignored anymore by the installer. - Proper handling of file patterns ending with a slash.
- More user errors are raised as an informative.
- Restored compatibility with
Podfile::TargetDefinition#copy_resources_script_name
in the Podfile hooks. - Updated copy resources script so that it will use base internationalization #846
- Robustness against an empty configuration file.
- Fixed a crash with
pod push
#848 - Fixed an issue which lead to the creation of a Pods project which would crash Xcode. #854
- Fixed a crash related to a
PBXVariantGroup
present in the frameworks build phase of client targets. #859
- The
podspec
option of thepod
directive of the Podfile DSL now accepts folders.
[CocoaPods](https://github.com/CocoaPods/CocoaPods/compare/0.17.0.rc2...0.17.0.rc3 • Xcodeproj)
- CocoaPods will not crash anymore if the license file indicated on the spec doesn't exits.
- Pre install hooks are called before the Pods are cleaned.
- Fixed and issue which prevent the inclusion of OTHER_CFLAGS and OTHER_CPLUSPLUSFLAGS in the release builds of the Pods project.
- Fixed
pod lint --local
- Fixed the
--allow-warnings
ofpod push
#835 - Added
copy_resources_script_name
to the library representation used in the hooks. #837
- General improvements to
pod ipc
. - Added
pod ipc repl
subcommand.
- Restored output coloring.
- Fixed a crash related to subspecs #819
- Git repos were not cached for dependencies with external sources. #820
- Restored support for directories for the preserve_patterns specification attribute. #823
CocoaPods • Xcodeproj • cocoapods-core • cocoapods-downloader
At some point in future the master repo will be switched to the YAML format of specifications. This means that specifications with hooks (or any other kind of dynamic logic) will not be accepted. Please let us know if there is need for other DSL attributes or any other kind of support.
Currently the following specifications fail to load as they depended on the CocoaPods internals and need to be updated:
- LibComponentLogging-pods/0.0.1/LibComponentLogging-pods.podspec
- RestKit/0.9.3/RestKit.podspec
- Three20/1.0.11/Three20.podspec
- ARAnalytics/1.1/ARAnalytics.podspec
Other specifications, might present compatibility issues for the reasons presented below.
- Subspecs do not inherit the files patterns from the parent spec anymore. This feature made the implementation more complicated and was not easy to explain to podspecs maintainers. Compatibility can be easily fixed by adding a 'Core' subspec.
- Support for inline podspecs has been removed.
- The support for Rake::FileList is being deprecated, in favor of a more consistent DSL. Rake::FileList also presented issues because it would access the file system as soon as it was converted to an array.
- The hooks architecture has been re-factored and might present incompatibilities (please open an issue if appropriate).
- The
requires_arc
attribute default value is transitioning fromfalse
totrue
. In the meanwhile a value is needed to pass the lint. - Deprecated
copy_header_mapping
hook. - Deprecated
exclude_header_search_paths
attribute. - External sources are not supported in the dependencies of specifications anymore. Actually they never have been supported, they just happened to work.
- Podfile:
- It is not needed to specify the platform anymore (unless not integrating) as CocoaPods now can infer the platform from the integrated targets.
- Specification:
preferred_dependency
has been renamed todefault_subspec
.- Added
exclude_files
attribute. - Added
screenshots
attribute. - Added default values for attributes like
source_files
.
- Released preview documentation.
- CocoaPods now has support for working in teams and not committing the Pods folder, as it will keep track of the status of the Pods folder. #552
- Simplified installation: no specific version of ruby gems is required anymore.
- The workspace is written only if needed greatly reducing the occasions in which Xcode asks to revert.
- The Lockfile is sorted reducing the SCM noise. #591
- Added Podfile, Frameworks, and Resources to the Pods project. #647 #588
- Adds new subcommand
pod spec cat NAME
to print a spec file to standard output. - Specification hooks are only called when the specification is installed.
- The
--no-clean
option of thepod spec lint
command now displays the Pods project for inspection. - It is now possible to specify default values for the configuration in
~/.cocoapods/config.yaml
(default values). - CocoaPods now checks the checksums of the installed specifications and reinstalls them if needed.
- Support for YAML formats of the Podfile and the Specification.
- Added new command
pod ipc
to provide support for inter process communication through YAML formats. - CocoaPods now detects if the folder of a Pod is empty and reinstalls it. #534
- Install hooks and the
prefix_header_contents
attribute are supported in subspecs. #617 - Dashes are now supported in the versions of the Pods. #293
- CocoaPods is not confused anymore by target definitions with different activated subspec. #535
- CocoaPods is not confused anymore by to dependencies from external sources. #548
- The git cache will always update against the remote if a tag is requested, resolving issues where library maintainers where updating the tag after a lint and would be confused by CocoaPods using the cached commit for the tag. #407 #596
- Major clean up and refactor of the whole code base.
- Extracted the core classes into cocoapods-core gem.
- Extracted downloader into cocoapods-downloader.
- Extracted command-line command & option handling into CLAide.
- Explicitely require
date
in the gemspec for Ruby 2.0.0. 34da3f7
- Only flatten tarballs, not zipballs, from HTTP sources. A zipball can contain single directories in the root that should be preserved, for instance a framework bundle. This reverts part of the change in 0.16.1. NOTE This will break some podspecs that were changed after 0.16.1. #783 #727
- Never consider aggregate targets in the user’s project for integration. #729 #784
- Support comments on all build phases, groups and targets in Xcode projects. #51
- Ensure default Xcode project values are copied before being used. b43087c
- Block assertions in Release builds. #53 #803 #802
- Compile Core Data model files. #795
- Add
Xcodeproj::Differ
, which shows differences between Xcode projects. 308941e
- Quote storyboard and xib paths in ‘copy resource’ script. #740
- Fix use of
podspec
directive in Podfile with no options specified. #768 - Generate Mac OS X Pods target with the specified deployment target. #757
- Disable libSystem objects for ARC libs that target older platforms. This applies when the deployment target is set to < iOS 6.0 or OS X 10.8, or not specified at all. #352 #1161
- Mark header source files as ‘Project’ not ‘Public’. #747
- Add
PBXGroup
as acceptablePBXFileReference
value. #49 - Make
xcodeproj show
without further arguments actually work. #45
- Added support for pre-download over Mercurial. #750
- After unpacking source from a HTTP location, move the source into the parent dir if the archive contained only one child. This is done to make it consistent with how source from other types of locations are described in a podspec. NOTE This might break some podspecs that assumed the incorrect layout. #727 #728
- Remove duplicate option in
pod update
command. #725 - Memory fixes in Xcodeproj. #43
- Sort contents of xcconfig files by setting name. #591
- Add helpers to get platform name, deployment target, and frameworks build phases
- Take SDKROOT into account when adding frameworks.
- Use Rake 0.9.4 #657
- The usage of specifications defined in a Podfile is deprecated. Use the
:podspec
option with a file path instead. Complete removal will most probably happen in 0.17.0. #549 #616 #525
- Always consider inline podspecs as needing installation.
- Fix detection when the lib has already been integrated with the user’s target. #643 #614 #613
- Fix for Rake 0.9.3 #657
- Added support for copying frameworks to the app bundle. #597
- Ignore PBXReferenceProxy while integrating into user project. #626
- Added support for PBXAggregateTarget and PBXLegacyTarget. #615
- Added support for PBXReferenceProxy. #612
- Fix for uninitialized constant Xcodeproj::Constants error.
- Xcodeproj partial rewrite.
#565
#561
- Performance improvements in the
Generating support files
phase. - Better support for editing existing projects and sorting groups.
- Performance improvements in the
- Added support for
.hh
headers. #576
- Restored support for running CocoaPods without a terminal. #575 #577
- The git cache now always uses a barebones repo preventing a number of related issues. #581 #569
- Improved fix for the issue that lead to empty directories for Pods. #572 #602
- Xcodeproj robustness against invalid values, such as malformed UTF8. #592
- Show error if syntax error in Podfile or Podfile.lock.
- Fixed an issue that lead to empty directories for Pods. #519 #568
- Fixed a crash related to the RubyGems version informative. #570
- Fixed a crash for
pod outdated
. #567 - Fixed an issue that lead to excessively slow sets computation.
- Pod
install
will update the specs repo only if needed. #533 - CocoaPods now searches for the highest version of a Pod on all the repos. #85
- Added a pre install hook to the Podfile and to root specifications. #486
- Support for
header_mappings_dir
attribute in subspecs. - Added support for linting a Podspec using the files from its folder
pod spec lint --local
- Refactored UI.
- Added support for Podfiles named
CocoaPods.podfile
which allows to associate an editor application in Mac OS X. #528 - Added config option to disable the new version available message. #448
- Added support for extracting
.tar.bz2
files #522 - Improved feedback for errors of repo subcommands. #505
- Subspecs namespacing has been restored. #541
- Improvements to the git cache that should be more robust.
#517
- In certain conditions pod setup would execute twice.
- The git cache now is updated if a branch is not found #514
- Forcing UTF-8 encoding on licenses generation in Ruby 1.9. #530
- Added support for
.hpp
headers. #244
- In certain conditions the spec of an external would have been overridden by the spec in the root of a Pod. #489
- CocoaPods now uses a recent version of Octokit. #490
- Fixed a bug that caused Pods with preferred dependencies to be always installed. Specs#464
- Fixed Xcode 4.4+ artwork warning. Specs#508
- Fix incorrect name for Pods from external sources with preferred subspecs. #485
- Prevent duplication of Pod with a local source and mutliple activated specs. #485
- Fixed the
uninitialized constant Pod::Lockfile::Digest
error. #484
- Improve installation process by preserving the installed versions of Pods
across installations and machines. A Pod is reinstalled if:
- the version required in the Podfile changes and becomes incompatible with the installed one. #191
- the external source changes.
- the head status changes (from disabled to enabled or vice-versa).
- Introduce
pod update
command that installs the dependencies of the Podfile ignoring the lockfilePodfile.lock
. #131 - Introduce
pod outdated
command that shows the pods with known updates. - Add
:local
option for dependencies which will use the source files directly from a local directory. This is usually used for libraries that are being developed in parallel to the end product (application/library). #458, #415, #156. - Folders of Pods which are no longer required are removed during installation. #298
- Add meaningful error messages
- The subversion downloader now does an export instead of a checkout, which makes it play nicer with SCMs that store metadata in each directory. #245
- Now the Podfile is added to the Pods project for convenient editing.
- The git cache now fetches the tags from the remote if it can’t find the reference.
- Xcodeproj now builds on 10.6.8 and Travis CI without symlinking headers.
- Only try to install, add source files to the project, and clean a Pod once. #376
- External Pods might be reinstalled due to the migration to the new
Podfile.lock
. - The SCM reference of head Pods is not preserved across machines.
- Pods whose inline specification changed are not detected as modified. As a
workaround, remove their folder stored in
Pods
. - Pods whose specification changed are not detected as modified. As a
workaround, remove their folder stored in
Pods
.
- Add Podfile
podspec
which allows to use the dependencies of a podspec file. #162 - Check if any of the build settings defined in the xcconfig files is overridden. #92
- The Linter now checks that there are no compiler flags that disable warnings.
- The final project isn’t affected anymore by the
inhibit_all_warnings!
option. - Support for redirects while using podspec from an url. #462
- The documentation is generated using the public headers if they are specified.
- In case of a download failure the installation is aborted and the error message is shown.
- Git submodules are initialized only if requested.
- Don’t impose a certain structure of the user’s project by raising if no ‘Frameworks’ group exists. #431
- Support for GitHub Gists in the linter.
- Allow specifying ARC settings in subspecs.
- Add Podfile
inhibit_all_warnings!
which will inhibit all warnings from the Pods library. #209 - Make the Pods Xcode project prettier by namespacing subspecs in nested groups. #466
- Fixed a crash related to subspecs without header files. [#449]
- Git submodules are loaded after the appropriate referenced is checked out and will be not loaded anymore in the cache. [#451]
- Fixed SVN support for the head version. [#432]
- Added support for public headers. [#440]
- Added
pod repo lint
. [#423] - Improved support for
:head
option and SVN repositories. - When integrating Pods with a project without "Frameworks" group in root of the project, raise an informative message. #431
- Dropped support for legacy
config.ios?
andconfig.osx?
- Version message now correctly terminates with a 0 exit status.
- Resolved an issue that lead to git error messages in the error report.
- Added a
--local-only
option topod push
so that developers can push locally and test before pushing to a remote. #405 - Added line number information for errors generated in the Podfile. #408
- Pods stored in git repositories now initialize submodules. #406
- Removed note about the post install hook form the linter.
- Improved xcodebuild error detection in the linter.
- Ensure the git cache exists, before updating it, when trying to install the ‘bleeding edge’ of a pod. #426
- Clean downloaded external pods after resolving and activating (sub)specs. #414
- Support
tar.gz
as filename in a HTTP source. #428
- When generating the PodsDummy class, make that class unique to each target. #402
- Raise an informative error message when the platform in the
Podfile
is omitted or incorrect. #403
- CocoaPods 0.9.x needs Xcodeproj 0.3.0.
- Force downloading the ‘bleeding edge’ version of a pod with the
:head
flag. #392 - Support for weak frameworks. #263
- Use double quotes when shelling out. This makes a url like
$HOME/local/lib
work. #396
- Relaxed linter to accepts pod that only specify paths to preserve (like TuneupJS).
- Gender neutralization of podfile documentation. #384
- Exit early when using an old RubyGems version (< 1.4.0). These versions contain subtle bugs related to prerelease version comparisons. Unfortunately, OS X >= 10.7 ships with 1.3.6. #398
Syntax change in Podfile: dependency
has been replaced by pod
.
ruby platform :ios pod 'JSONKit', '~> 1.4' pod 'Reachability', '~> 2.0.4'
- Properly quote all paths given to Git.
- Added support for branches in git repos.
- Added support for linting remote files, i.e.
pod spec lint http://raw/file.podspec
. - Improved
Spec create template
. - The indentation is automatically stripped for podspecs strings.
- The default warnings of Xcode are not overriden anymore.
- Improvements to the detection of the license files.
- Improvements to
pod spec lint
. - CocoaPods is now case insensitive.
- Switched to master branch for specs repo.
- Fixed a crash with
pod spec lint
related topreserve_paths
. - Fixed a bug that caused subspecs to not inherit the compiler flags of the top level specification.
- Fixed a bug that caused duplication of system framworks.
A full list of all the changes since 0.5.1 can be found here.
CocoaPods can now integrate all the targets specified in your Podfile
.
To specify which target, in your Xcode project, a Pods target should be linked
with, use the link_with
method like so:
``ruby platform :ios
workspace 'MyWorkspace'
link_with ['MyAppTarget', 'MyOtherAppTarget'] dependency 'JSONKit'
target :test, :exclusive => true do xcodeproj 'TestProject', 'Test' => :debug link_with 'TestRunnerTarget' dependency 'Kiwi' end ``
NOTE: As you can see it can take either one target name, or an array of names.
-
If no explicit Xcode workspace is specified and only one project exists in the same directory as the Podfile, then the name of that project is used as the workspace’s name.
-
If no explicit Xcode project is specified for a target, it will use the Xcode project of the parent target. If no target specifies an expicit Xcode project and there is only one project in the same directory as the Podfile then that project will be used.
-
If no explicit target is specified, then the Pods target will be linked with the first target in your project. So if you only have one target you do not need to specify the target to link with.
See #76 for more info.
Finally, CocoaPods will add build configurations to the Pods project for all
configurations in the other projects in the workspace. By default the
configurations are based on the Release
configuration, to base them on the
Debug
configuration you will have to explicitely specify them as can be seen
above in the following line:
xcodeproj 'TestProject', 'Test' => :debug
CocoaPods will now generate documentation for every library with the
appledoc
tool and install it into Xcode’s documentation viewer.
You can customize the settings used like so:
s.documentation = { :appledoc => ['--product-name', 'My awesome project!'] }
Alternatively, you can specify a URL where an HTML version of the documentation can be found:
s.documentation = { :html => 'http://example.com/docs/index.html' }
See #149 and #151 for more info.
CocoaPods will now generate two 'Acknowledgements' files for each target specified in your Podfile which contain the License details for each Pod used in that target (assuming details have been specified in the Pod spec).
There is a markdown file, for general consumption, as well as a property list file that can be added to a settings bundle for an iOS application.
You don't need to do anything for this to happen, it should just work.
If you're not happy with the default boilerplate text generated for the title, header
and footnotes in the files, it's possible to customise these by overriding the methods
that generate the text in your Podfile
like this:
class ::Pod::Generator::Acknowledgements
def header_text
"My custom header text"
end
end
You can even go one step further and customise the text on a per target basis by checking against the target name, like this:
class ::Pod::Generator::Acknowledgements
def header_text
if @target_definition.label.end_with?("MyTargetName")
"Custom header text for MyTargetName"
else
"Custom header text for other targets"
end
end
end
Finally, here's a list of the methods that are available to override:
header_title
header_text
footnote_title
footnote_text
The Sandbox represents the entire contents of the POD_ROOT
(normally
SOURCE_ROOT/Pods
). A LocalPod represents a pod that has been installed within
the Sandbox.
These two classes can be used as better homes for various pieces of logic currently spread throughout the installation process and provide a better API for working with the contents of this directory.
All Xcodeproj APIs are now in snake_case
, instead of camelCase
. If you are
manipulating the project from your Podfile's post_install
hook, or from a
podspec, then update these method calls.
-
#188:
list
command now displays the specifications introduced in the master repo if it is given as an option the number of days to take into account. -
#188: Transferred search layout improvements and options to
list
command. -
#166: Added printing of homepage and source to search results.
-
#177: Added
--stat
option to display watchers and forks for pods hosted on GitHub. -
#177: Introduced colors and tuned layout of search.
-
#112: Introduced
--push
option to$ pod setup
. It configures the master spec repository to use the private push URL. The change is preserved in future calls to$ pod setup
. -
#153: It is no longer required to call
$ pod setup
. -
#163: Print a template for a new ticket when an error occurs.
-
Added a new Github-specific downloader that can download repositories as a gzipped tarball.
-
No more global state is kept during resolving of dependencies.
-
Updated Xcodeproj to have a friendlier API.
-
#142: Xcode 4.3.2 no longer supports passing the -fobj-arc flag to the linker and will fail to build. The addition of this flag was a workaround for a compiler bug in previous versions. This flag is no longer included by default - to keep using this flag, you need to add
set_arc_compatibility_flag!
to your Podfile. -
#183: Fix for
.DS_Store
file in~/.cocoapods
prevents$ pod install
from running. -
#134: Match
IPHONEOS_DEPLOYMENT_TARGET
build setting withdeployment_target
option in generated Pods project file. -
#142: Add
-fobjc-arc
toOTHER_LD_FLAGS
if any pods require ARC. -
#148: External encoding set to UTF-8 on Ruby 1.9 to fix crash caused by non-ascii characters in pod description.
-
Ensure all header search paths are quoted in the xcconfig file.
-
Added weak quoting to
ibtool
input paths.
No longer requires MacRuby. Runs on MRI 1.8.7 (OS X system version) and 1.9.3.
A full list of all the changes since 0.3.0 can be found here.
Oops, accidentally skipped this version.
Add support for multiple static library targets in the Pods Xcode project with different sets of depedencies. This means that you can create a separate library which contains all dependencies, including extra ones that you only use in, for instance, a debug or test build. [docs]
# This Podfile will build three static libraries:
# * libPods.a
# * libPods-debug.a
# * libPods-test.a
# This dependency is included in the `default` target, which generates the
# `libPods.a` library, and all non-exclusive targets.
dependency 'SSCatalog'
target :debug do
# This dependency is only included in the `debug` target, which generates
# the `libPods-debug.a` library.
dependency 'CocoaLumberjack'
end
target :test, :exclusive => true do
# This dependency is *only* included in the `test` target, which generates
# the `libPods-test.a` library.
dependency 'Kiwi'
end
A dependency can take a git url if the repo contains a podspec file in its root, or a podspec can be loaded from a file or HTTP location. If no podspec is available, a specification can be defined inline in the Podfile. [docs]
# From a spec repo.
dependency 'SSToolkit'
# Directly from the Pod’s repo (if it contains a podspec).
dependency 'SSToolkit', :git => 'https://github.com/samsoffes/sstoolkit.git'
# Directly from the Pod’s repo (if it contains a podspec) with a specific commit (or tag).
dependency 'SSToolkit', :git => 'https://github.com/samsoffes/sstoolkit.git',
:commit => '2adcd0f81740d6b0cd4589af98790eee3bd1ae7b'
# From a podspec that's outside a spec repo _and_ the library’s repo. This can be a file or http url.
dependency 'SSToolkit', :podspec => 'https://raw.github.com/gist/1353347/ef1800da9c5f5d267a642b8d3950b41174f2a6d7/SSToolkit-0.1.1.podspec'
# If no podspec is available anywhere, you can define one right in your Podfile.
dependency do |s|
s.name = 'SSToolkit'
s.version = '0.1.3'
s.platform = :ios
s.source = { :git => 'https://github.com/samsoffes/sstoolkit.git', :commit => '2adcd0f81740d6b0cd4589af98790eee3bd1ae7b' }
s.resources = 'Resources'
s.source_files = 'SSToolkit/**/*.{h,m}'
s.frameworks = 'QuartzCore', 'CoreGraphics'
def s.post_install(target)
prefix_header = config.project_pods_root + target.prefix_header_filename
prefix_header.open('a') do |file|
file.puts(%{#ifdef __OBJC__\n#import "SSToolkitDefines.h"\n#endif})
end
end
end
This allows the user to customize, for instance, the generated Xcode project before it’s written to disk. [docs]
# Enable garbage collection support for MacRuby applications.
post_install do |installer|
installer.project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['GCC_ENABLE_OBJC_GC'] = 'supported'
end
end
end
Generate a Podfile.lock file next to the Podfile, which contains a manifest of your application’s dependencies and their dependencies.
PODS:
- JSONKit (1.4)
- LibComponentLogging-Core (1.1.4)
- LibComponentLogging-NSLog (1.0.2):
- LibComponentLogging-Core (>= 1.1.4)
- RestKit-JSON-JSONKit (0.9.3):
- JSONKit
- RestKit (= 0.9.3)
- RestKit-Network (0.9.3):
- LibComponentLogging-NSLog
- RestKit (= 0.9.3)
- RestKit-ObjectMapping (0.9.3):
- RestKit (= 0.9.3)
- RestKit-Network (= 0.9.3)
DOWNLOAD_ONLY:
- RestKit (0.9.3)
DEPENDENCIES:
- RestKit-JSON-JSONKit
- RestKit-ObjectMapping
We no longer ship template projects with the gem, but instead generate them programmatically. This code has moved out into its own Xcodeproj gem, allowing you to automate Xcode related tasks.