Coder Social home page Coder Social logo

leavez / cocoapods-binary Goto Github PK

View Code? Open in Web Editor NEW
1.3K 18.0 207.0 266 KB

integrate pods in form of prebuilt frameworks conveniently, reducing compile time

License: MIT License

Ruby 87.97% Swift 4.09% Python 7.08% Shell 0.86%
cocoapods-plugin compile-time cocoapods

cocoapods-binary's People

Contributors

dev4dev avatar hardworker avatar leavez avatar thecoordinator avatar x140yu avatar xspyhack avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cocoapods-binary's Issues

Typo in logo

Cocoapods -> CocoaPods

If just make the p capital, 3 capital letters break some visual balance and rhythm. I think the logo should be redesigned.

Cannot detect changes for generated frameworks when `Pod` is excluded from git

if Pod folder is excluded from git, there's no grantee the prebuilt frameworks have the same version with the ones specified in podfile.

For example, there's a pod A of 0.1 version in podfile. After pod install, we have prebuilt framework "A.framework" in pod folder. Then I pull the change from remote repo. Pod A is upgraded to 0.2. When build the project, it stops because the lock file doesn't match. Then I do a pod install, the checking in prebuild process cannot tell the version of "A.framework" in the pod file. It doesn't update the framework because there's already a framework.

Unclear documentation on dSYM issue

It would be great if the following:

dSYM files is missing for dynamic frameworks using this plugin. Walkaround: Don't use this plugin for a release build. Add a if condition with ENV around plugin 'cocoapods-binary'

would have a real receipt in terms of Podfile. Still can't figure it out, sorry...

Your Podfile requires that the plugin `cocoapods-binary` be installed

If I run it by the book on my macbook pro, with Ruby 2.3.0 installed, I get[!] Your Podfile requires that the plugin `cocoapods-binary` be installed. Please install it and try installation again.

Is there something undocumented that the average user should be privy to, in order to get this going?

Keep Pod's source code

Thanks for this awesome plugin!

I would like to

  • use binary pods in order to reduce my project's compile times and
  • keep the original pod sources and check them in git so that I always have the source code, even if I actually use the prebuilt frameworks in my build.

Is this possible? I tried using the keep_source_code_for_prebuilt_frameworks! flag but the source files are being deleted.

Launch crash for unavailable iOS framework dependencies

I recently tried to use cocoapods-binary on the Auth0 pod. This caused the following launch crash for me on iOS 11 and earlier:

dyld: Library not loaded: /System/Library/Frameworks/AuthenticationServices.framework/AuthenticationServices
  Referenced from: /Users/username/Library/Developer/CoreSimulator/Devices/312557D4-8701-48F5-85CB-B1A0E4359B15/data/Containers/Bundle/Application/6E9A7D9E-A337-42F2-B0ED-1B2CDFB8DA58/AppName.app/AppName
  Reason: image not found

It seems this is because the iOS framework AuthenticationServices, which is available only on iOS12, is an optional dependency of Auth0. Looking at the Auth0 source, they use the following piece of code:

#if canImport(AuthenticationServices)
import AuthenticationServices
#endif

Looking at the project, it seems that -framework AuthenticationServices is added to the OTHER_LDFLAGS. When I removed this, it worked, but that's of course just a workaround, since it will be readded on every pod install.

CocoaPods 1.6.0 or above are not supported for resource-containing static frameworks

I got an error when running with CocoaPods 1.7.0.beta.2:

TypeError - no implicit conversion of Array into String
/usr/local/lib/ruby/gems/2.6.0/gems/cocoapods-binary-0.4.2/lib/cocoapods-binary/Prebuild.rb:131:in `basename'
/usr/local/lib/ruby/gems/2.6.0/gems/cocoapods-binary-0.4.2/lib/cocoapods-binary/Prebuild.rb:131:in `block (2 levels) in prebuild_frameworks!'
/usr/local/lib/ruby/gems/2.6.0/gems/cocoapods-binary-0.4.2/lib/cocoapods-binary/Prebuild.rb:129:in `each'
/usr/local/lib/ruby/gems/2.6.0/gems/cocoapods-binary-0.4.2/lib/cocoapods-binary/Prebuild.rb:129:in `map'
/usr/local/lib/ruby/gems/2.6.0/gems/cocoapods-binary-0.4.2/lib/cocoapods-binary/Prebuild.rb:129:in `block in prebuild_frameworks!'
/usr/local/lib/ruby/gems/2.6.0/gems/cocoapods-binary-0.4.2/lib/cocoapods-binary/Prebuild.rb:118:in `each'
/usr/local/lib/ruby/gems/2.6.0/gems/cocoapods-binary-0.4.2/lib/cocoapods-binary/Prebuild.rb:118:in `prebuild_frameworks!'
/usr/local/lib/ruby/gems/2.6.0/gems/cocoapods-binary-0.4.2/lib/cocoapods-binary/Prebuild.rb:206:in `block in <class:Installer>'

Looks like this is due to the change for Pod::PodTarget#resource_paths

  • doc: https://www.rubydoc.info/gems/cocoapods/Pod%2FPodTarget:resource_paths
  • A PR which introduced the change: CocoaPods/CocoaPods#7820
    • The method now returns [Hash{String=>Array<String>}] over [Array<String>]
    • Included since 1.6.0.beta.1.
  • Affected code:
    # save the resource paths for later installing
    if target.static_framework? and !target.resource_paths.empty?
    framework_path = output_path + target.framework_name
    standard_sandbox_path = sandbox.standard_sanbox_path
    path_objects = target.resource_paths.map do |path|
    object = Prebuild::Passer::ResourcePath.new
    object.real_file_path = framework_path + File.basename(path)
    object.target_file_path = path.gsub('${PODS_ROOT}', standard_sandbox_path.to_s) if path.start_with? '${PODS_ROOT}'
    object.target_file_path = path.gsub("${PODS_CONFIGURATION_BUILD_DIR}", standard_sandbox_path.to_s) if path.start_with? "${PODS_CONFIGURATION_BUILD_DIR}"
    object
    end

Could you take a look? Thanks in advance!

Store frameworks in a shared cache

We build a lot of apps with shared dependencies and could greatly benefit from this project iff it would use a shared cache for storing and retrieving the compiled frameworks. I imagine it to be in a folder like ~/.cocoapods/prebuilt. The cache structure would involve subdirectories for xcode version, platform, spec version/hash to make sure you're getting the right binary.

Is this a use case that would fit with this project? If so, I'd be happy to see if I can start a PR for it.

Drop support for cocoapods 1.5

Cocoapods 1.6 have a lot change in source code compared to v1.5. Maintaining support for multiple versions is expensive. And v1.6 have better performance.

Firebase pod won't work

Hi,

I've worked on this for a while having all sorts of errors, finally isolated the issue and found out that I can't make this work for the Firebase pod.

Compile speed degradation for Obj-C sources

I'm not sure that it's not something like a local problem in our project, but I do see clear compiler speed degradation when compiling Obj-C sources in our client app. It's matter of 1.2x like illustrated below. As result, the (clean build) speed gain we achieve with cocoapods-binary in our project is pretty miserable (359s vs 379s), compared to simply caching the content of built products folder for Pods, without using cocoapods-binary (243s vs 379s) (the latter approach has its own problems with versioning and dev pods, so I still consider using cocoapods-binary for speeding up the builds).

Below is the illustration of the compile speed difference for a single .m file. It's pretty much reproducible:

$ time for i in $(seq 1 3); do /tmp/compile-non-binary.log; done

real	0m3.927s
user	0m1.812s
sys	0m1.621s

$ time for i in $(seq 1 3); do /tmp/compile-binary.log; done

real	0m5.098s
user	0m2.235s
sys	0m1.805s

I tried to compare the compiler invocations (those .log files might be executed as they are) for both cases above and so far the only thing that I see is difference in the search paths and "-ivfsoverlay" option used in case of compiling of "cocoapods-binary enabled" configuration. Removing that option doesn't affect the result/improves the times in case of that particular file (making it probably x1.05-1.1 worse), but still...

Attaching the compiler invocations - probably somebody have a hint.

compile-binary.log
compile-non-binary.log

Also, attaching screenshots illustrating the differences between (clean builds for) "cocoapods-non-binary" (worst), cocoapods-binary (slightly better) and build with pre-cached build pod products (best in terms of build times) for our project.

screen shot 2019-02-24 at 09 32 50

screen shot 2019-02-24 at 08 25 23

screen shot 2019-02-25 at 13 09 26

Attaching the .diff for compiler invocations. Note "vfsoverlay" in the cocoapods-binary enabled case.

compiler-invocation-differences.diff.txt

Specify binary for test_spec dependencies

Hi,

Description

I have a pod (it's currently included as a local development pod) that has a test_spec that includes dependencies (Quick in this case). I'm including the pod along with its tests using pod 'pod-name', testspecs: ["Tests"]. I would like to be able to specify that the dependencies of the test_spec should be compiled as binary. However, since the test target is generated automatically, I don't see a clear way of doing this. If possible, I want to avoid creating a dummy target or adding these test_spec dependencies to an unrelated target. I also don't want to enable all_binary!.

Is there a way to specify that these test_spec dependency pods should be built as binary?

Sample code

My use case is essentially this:

# MyPod.podspec

Pod::Spec.new do |s|
  s.name = "MyPod"
  s.test_spec 'Tests' do |test_spec|
    test_spec.dependency 'Quick'
  end
end
# Podfile

plugin 'cocoapods-binary'
use_frameworks!

target 'ProjectTarget' do
  pod 'MyPod', path: '.', testspecs: ["Tests"]
  ## How do I declare Quick to be built as a binary?
  # pod 'Quick', binary: true
end

Discussion

Since specifying the binary flag seems to be an all or nothing thing for any particular pod, would it make sense to add a way to specify that a pod should be built as binary without using a parameter on the pod directive? I'm imagining something like the following:

# Podfile

plugin 'cocoapods-binary'
use_frameworks!

binary 'PodA'

target 'TargetA' do
  pod 'PodA'
end

target 'TargetB' do
  pod 'PodA', '~> 2.1.0'
end

Prebuilt framework not generated for local Pods.

First of all, this is awesome! Thanks for this plugin!

In the project I'm testing this plugin I've got some Local Pods that, for some reason don't get prebuilt.
What I'm seeing is that Pods like "Alamofire" get built and are in the "_Prebuild" folder but the others are not.

platform :ios, '11.0'
source 'https://github.com/CocoaPods/Specs'

target 'TestProject' do
  use_frameworks!
  all_binary!
  pod 'LocalPod', path: './LocalPod'
  pod 'Alamofire'
end

Am I doing something wrong or local pods are handled differently?

Swift header file not created correctly when building with Xcode 10.2

Swift 5 seems to have changed the format of the generated Swift header file by adding the following conditionals dependent on the architecture:

#if 0
#elif defined(__arm64__) && __arm64__
...
#elif defined(__ARM_ARCH_7A__) && __ARM_ARCH_7A__
...

When building the iOS platform with cocoapods-binary the generated Swift header file only has __arm64__ and __ARM_ARCH_7A__ but does not have any conditionals for the simulator architectures and therefore the Swift parts of the framework can't be used by Objective C code in the app.

Similar issue in Carthage - Carthage/Carthage#2718

Support for git LFS

Grate plugin for cocoapods!

But one thing I think is a bit bothersome is that when I use git LFS I need to add all files to the git LFS manually each time I add a dependency.

Would be nice if the plugin could automatically add the .framework and the .dSYM files to .gitattributes file.

Im horrible in ruby so I'm not sure I'm up for the challenge to make a PR for it.

issues when updating version

When I update a version of a binary pod a lot of times the actual reference by cocoa pods doesn't update and we still use the old version for some reason.

cocoapods-binary doesn't work for me

Here is the logs.

$ pod install
๐Ÿš€ Prebuild frameworks
Analyzing dependencies
Downloading dependencies
Using Realm (3.14.1)
Using RealmSwift (3.14.1)
Using SnapKit (4.0.1)
Generating Pods project
Sending stats

โ€•โ€•โ€• MARKDOWN TEMPLATE โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•

Command

/usr/local/bin/pod install

Report

  • What did you do?

  • What did you expect to happen?

  • What happened instead?

Stack

   CocoaPods : 1.6.1
        Ruby : ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin18]
    RubyGems : 3.0.3
        Host : Mac OS X 10.14.4 (18E226)
       Xcode : 10.2.1 (10E1001)
         Git : git version 2.20.1 (Apple Git-117)
Ruby lib dir : /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib
Repositories : edu-git-cocoapods-specs - https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git @ 0ea7e62cafe6cebaca5212f428be41d32e4e0ab7
               master - https://github.com/CocoaPods/Specs.git @ 93a87776d510603f6f99f54be6f180f579b75c82

Plugins

cocoapods-binary      : 0.4.3
cocoapods-deintegrate : 1.0.2
cocoapods-plugins     : 1.0.0
cocoapods-search      : 1.0.0
cocoapods-stats       : 1.0.0
cocoapods-trunk       : 1.3.1
cocoapods-try         : 1.1.0

Podfile

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git'
plugin 'cocoapods-binary'

target 'iOS Post 2' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  platform :ios, '11.0'
  use_frameworks!

  # Pods for iOS Post 2
  pod 'RealmSwift', :binary => true
  pod 'SnapKit', '~> 4.0.0', :binary => true

end

target 'iOS Poster 2' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  platform :ios, '11.0'
  use_frameworks!

  # Pods for iOS Poster 2
  pod 'RealmSwift', :binary => true
  pod 'SnapKit', '~> 4.0.0', :binary => true

end

# target 'iOS SharingAPI' do
#   # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
#   use_frameworks!
#
#   # Pods for iOS SharingAPI
#
# end

target 'Post 2' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  platform :osx, '10.13'
  use_frameworks!

  # Pods for Post 2
  pod 'RealmSwift', :binary => true

end

target 'Poster 2' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  platform :osx, '10.13'
  use_frameworks!

  # Pods for Poster 2
  pod 'RealmSwift', :binary => true

end

# target 'SharingAPI' do
#   # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
#   use_frameworks!
#
#   # Pods for SharingAPI
#
# end
#
target 'Today Post 2' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  platform :osx, '10.13'
  use_frameworks!

  # Pods for Today Post 2
  pod 'RealmSwift', :binary => true

end
#
# target 'Watch Poster 2' do
#   # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
#   use_frameworks!
#
#   # Pods for Watch Poster 2
#
# end
#
target 'Watch Poster 2 Extension' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  platform :watchos, '4.0'
  use_frameworks!

  # Pods for Watch Poster 2 Extension
  pod 'RealmSwift'

end
#
# target 'watchos SharingAPI' do
#   # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
#   use_frameworks!
#
#   # Pods for watchos SharingAPI
#
# end

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['WATCHOS_DEPLOYMENT_TARGET'] = '3.0'
        end
    end
end

Error

NoMethodError - undefined method `recursive_dependent_targets' for nil:NilClass
/Library/Ruby/Gems/2.3.0/gems/cocoapods-binary-0.4.3/lib/cocoapods-binary/Prebuild.rb:105:in `block in prebuild_frameworks!'
/Library/Ruby/Gems/2.3.0/gems/cocoapods-binary-0.4.3/lib/cocoapods-binary/Prebuild.rb:105:in `map'
/Library/Ruby/Gems/2.3.0/gems/cocoapods-binary-0.4.3/lib/cocoapods-binary/Prebuild.rb:105:in `prebuild_frameworks!'
/Library/Ruby/Gems/2.3.0/gems/cocoapods-binary-0.4.3/lib/cocoapods-binary/Prebuild.rb:219:in `block in <class:Installer>'
/Library/Ruby/Gems/2.3.0/gems/cocoapods-1.6.1/lib/cocoapods/installer.rb:476:in `perform_post_install_actions'
/Library/Ruby/Gems/2.3.0/gems/cocoapods-1.6.1/lib/cocoapods/installer.rb:145:in `install!'
/Library/Ruby/Gems/2.3.0/gems/cocoapods-binary-0.4.3/lib/cocoapods-binary/Main.rb:103:in `block in <top (required)>'
/Library/Ruby/Gems/2.3.0/gems/cocoapods-1.6.1/lib/cocoapods/hooks_manager.rb:124:in `block (3 levels) in run'
/Library/Ruby/Gems/2.3.0/gems/cocoapods-1.6.1/lib/cocoapods/user_interface.rb:145:in `message'
/Library/Ruby/Gems/2.3.0/gems/cocoapods-1.6.1/lib/cocoapods/hooks_manager.rb:116:in `block (2 levels) in run'
/Library/Ruby/Gems/2.3.0/gems/cocoapods-1.6.1/lib/cocoapods/hooks_manager.rb:115:in `each'
/Library/Ruby/Gems/2.3.0/gems/cocoapods-1.6.1/lib/cocoapods/hooks_manager.rb:115:in `block in run'
/Library/Ruby/Gems/2.3.0/gems/cocoapods-1.6.1/lib/cocoapods/user_interface.rb:145:in `message'
/Library/Ruby/Gems/2.3.0/gems/cocoapods-1.6.1/lib/cocoapods/hooks_manager.rb:114:in `run'
/Library/Ruby/Gems/2.3.0/gems/cocoapods-1.6.1/lib/cocoapods/installer.rb:468:in `run_plugins_pre_install_hooks'
/Library/Ruby/Gems/2.3.0/gems/cocoapods-1.6.1/lib/cocoapods/installer.rb:159:in `block in prepare'
/Library/Ruby/Gems/2.3.0/gems/cocoapods-1.6.1/lib/cocoapods/user_interface.rb:145:in `message'
/Library/Ruby/Gems/2.3.0/gems/cocoapods-1.6.1/lib/cocoapods/installer.rb:155:in `prepare'
/Library/Ruby/Gems/2.3.0/gems/cocoapods-1.6.1/lib/cocoapods/installer.rb:135:in `install!'
/Library/Ruby/Gems/2.3.0/gems/cocoapods-1.6.1/lib/cocoapods/command/install.rb:48:in `run'
/Library/Ruby/Gems/2.3.0/gems/claide-1.0.2/lib/claide/command.rb:334:in `run'
/Library/Ruby/Gems/2.3.0/gems/cocoapods-1.6.1/lib/cocoapods/command.rb:52:in `run'
/Library/Ruby/Gems/2.3.0/gems/cocoapods-1.6.1/bin/pod:55:in `<top (required)>'
/usr/local/bin/pod:23:in `load'
/usr/local/bin/pod:23:in `<main>'

โ€•โ€•โ€• TEMPLATE END โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•

[!] Oh no, an error occurred.

Search for existing GitHub issues similar to yours:
https://github.com/CocoaPods/CocoaPods/search?q=undefined+method+%60recursive_dependent_targets%27+for+nil%3ANilClass&type=Issues

If none exists, create a ticket, with the template displayed above, on:
https://github.com/CocoaPods/CocoaPods/issues/new

Be sure to first read the contributing guide for details on how to properly submit a ticket:
https://github.com/CocoaPods/CocoaPods/blob/master/CONTRIBUTING.md

Don't forget to anonymize any private data!

/Library/Ruby/Gems/2.3.0/gems/gh_inspector-1.0.3/lib/gh_inspector/sidekick.rb:91:in block in validate_delegate': #<Pod::UserInterface::InspectorReporter:0x00007fddc109a190> does not handle inspector_successfully_recieved_report (RuntimeError) from /Library/Ruby/Gems/2.3.0/gems/gh_inspector-1.0.3/lib/gh_inspector/sidekick.rb:90:in each'
from /Library/Ruby/Gems/2.3.0/gems/gh_inspector-1.0.3/lib/gh_inspector/sidekick.rb:90:in validate_delegate' from /Library/Ruby/Gems/2.3.0/gems/gh_inspector-1.0.3/lib/gh_inspector/sidekick.rb:20:in search'
from /Library/Ruby/Gems/2.3.0/gems/gh_inspector-1.0.3/lib/gh_inspector/inspector.rb:65:in search_query' from /Library/Ruby/Gems/2.3.0/gems/gh_inspector-1.0.3/lib/gh_inspector/inspector.rb:59:in search_exception'
from /Library/Ruby/Gems/2.3.0/gems/cocoapods-1.6.1/lib/cocoapods/user_interface/error_report.rb:119:in search_for_exceptions' from /Library/Ruby/Gems/2.3.0/gems/cocoapods-1.6.1/lib/cocoapods/command.rb:67:in report_error'
from /Library/Ruby/Gems/2.3.0/gems/claide-1.0.2/lib/claide/command.rb:396:in handle_exception' from /Library/Ruby/Gems/2.3.0/gems/claide-1.0.2/lib/claide/command.rb:337:in rescue in run'
from /Library/Ruby/Gems/2.3.0/gems/claide-1.0.2/lib/claide/command.rb:324:in run' from /Library/Ruby/Gems/2.3.0/gems/cocoapods-1.6.1/lib/cocoapods/command.rb:52:in run'
from /Library/Ruby/Gems/2.3.0/gems/cocoapods-1.6.1/bin/pod:55:in <top (required)>' from /usr/local/bin/pod:23:in load'
from /usr/local/bin/pod:23:in `

'
iMac5K:Poster 2 zhaoxin$ gems
-bash: gems: command not found
iMac5K:Poster 2 zhaoxin$ gem
RubyGems is a sophisticated package manager for Ruby. This is a
basic help message containing pointers to more information.

Usage:
gem -h/--help
gem -v/--version
gem command [arguments...] [options...]

Examples:
gem install rake
gem list --local
gem build package.gemspec
gem help install

Further help:
gem help commands list all 'gem' commands
gem help examples show some examples of usage
gem help gem_dependencies gem dependencies file guide
gem help platforms gem platforms guide
gem help show help on COMMAND
(e.g. 'gem help install')
gem server present a web page at
http://localhost:8808/
with info about installed gems
Further information:
http://guides.rubygems.org

How to handle sub-libraries in a library

When i use cocoapods-binary, i found that some libraries with sub-libraries only generate one main framework after binary.
like this:
image

Does this situation affect the project?

Binary doesn't support pods who integrate in 2 or more platforms simultaneously

CocoaPods : 1.6.1
Xcode : 10.1 (10B61)
cocoapods-binary      : 0.4.3

Podfile:

source 'https://github.com/CocoaPods/Specs.git'

plugin 'cocoapods-binary'
platform :ios, '11.2'
use_frameworks!
inhibit_all_warnings!

target 'AnimalHouse' do
  # RxSwift
  pod 'RxSwift'
  pod 'RxCocoa'
  pod 'RxDataSources'

  # Firebase
  pod 'Firebase/Core', :binary => true
  pod 'Firebase/Firestore', :binary => true
  pod 'Firebase/Auth', :binary => true
  pod 'CodableFirebase'
end

target 'AnimalHouseFirestoreContractTests' do
  pod 'RxSwift'
  pod 'RxCocoa'
  pod 'RxBlocking'

  pod 'Firebase/Core'
  pod 'Firebase/Firestore'
  pod 'CodableFirebase'
end

target 'AnimalHouseHttpContractTests' do
  pod 'RxSwift'
  pod 'RxCocoa'
  
  pod 'RxBlocking'
end

target 'RoadTripTests' do
  pod 'RxSwift'
  pod 'RxCocoa'
  pod 'RxDataSources'
  
  pod 'Firebase/Core'
  pod 'Firebase/Auth'
  
  pod 'RxTest'
  pod 'RxBlocking'
end


target 'AnimalHouseTestsHostApplication' do
end

target 'AnimalHouseFirestoreContractTestsHostApplication' do
end

The following app has two test targets running on separate host apps called AnimalHouseTestsHostApplication and AnimalHouseFirestoreContractTestsHostApplication . I get the following error when running pod install:

[!] Binary doesn't support pods who integrate in 2 or more platforms simultaneously: ["Firebase"]

running `pod install` seems like updates all pods

I that the default behavior?, when I try this plugin, I run bundle exec pod install after setting up my Podfile, then it start "installing" newer versions of the pods, seems like isn't using the Podfile.lock reference?

From the lock file, for example:

- SwiftMessages (6.0.1):

Then when I run bundle exec pod install after setting up my Podfile:

18:26 $ bundle exec pod install
๐Ÿš€  Prebuild frameworks
Analyzing dependencies
Pre-downloading: `DVR` from `https://github.com/nebiros/DVR`
Pre-downloading: `EBCardCollectionViewLayout` from `https://github.com/betzerra/EBCardCollectionViewLayout`
Downloading dependencies
โ€ฆ
Installing SwiftMessages (6.0.2)

All binary pods missing framework

I added cocoapods-binary support for my old projects. After i excute pod install i found that all the framework folders under the library are empty.
I tried to delete the Pods folder in the root directory and re-execute pod install to solve this problem, but I think this problem may be a bug.

[!] Attempt to read non existent folder `/Users/ian/code/tt/ios/Pods/GCDWebServer`.

I'm using

plugin 'cocoapods-binary'
all_binary!
keep_source_code_for_prebuilt_frameworks!

Except for pod 'GCDWebServer', binary: false.

The prebuild step correctly ignores GCDWebServer, however the pod install step fails with:

[!] Attempt to read non existent folder '/Users/ian/code/tt/ios/Pods/GCDWebServer'.

Prior to this error I do see Installing GCDWebServer (3.4.2) from the pod install step though.

Any idea what's causing this?

P.S I'm using binary: false for GCDWebServer since we need to include its header files in a bridging header.

Swift only Cocoapods seem to not be linked correctly. Error 'dyld: Library not loaded' finding the embedded library

Hello.

Thanks for creating the library. I am having issues running the generated Cocoapods project when the pod file contains dependencies which are swift only frameworks.
The error is:

dyld: Library not loaded: @rpath/Swinject.framework/Swinject
  Referenced from: /Users/user/Library/Developer/CoreSimulator/Devices/B8FC3167-D881-41FA-8181-340B7ECE7612/data/Containers/Bundle/Application/9F06E83D-C056-4D74-8BD1-0AC1AB6AA4DD/MyApp.app/MyApp
  Reason: no suitable image found.  Did find:
	/Users/user/Library/Developer/CoreSimulator/Devices/B8FC3167-D881-41FA-8181-340B7ECE7612/data/Containers/Bundle/Application/9F06E83D-C056-4D74-8BD1-0AC1AB6AA4DD/MyApp.app/Frameworks/Swinject.framework/Swinject: mmap() errno=5 at address=0x10E73E000, size=0x00025000 segment=__TEXT in Segment::map() mapping /Users/user/Library/Developer/CoreSimulator/Devices/B8FC3167-D881-41FA-8181-340B7ECE7612/data/Containers/Bundle/Application/9F06E83D-C056-4D74-8BD1-0AC1AB6AA4DD/MyApp.app/Frameworks/Swinject.framework/Swinject
	/Users/user/Library/Developer/CoreSimulator/Devices/B8FC3167-D881-41FA-8181-340B7ECE7612/data/Containers/Bundle/Application/9F06E83D-C056-4D74-8BD1-0AC1AB6AA4DD/MyApp.app/Frameworks/Swinject.framework/Swinject: mmap() errno=5 at address=0x10E7A8000, size=0x00025000 segment=__TEXT in Segment::map() mapping /Users/user/Library/Developer/CoreSimulator/Devices/B8FC3167-D881-41FA-8181-340B7ECE7612/data/Containers/Bundle/Application/9F06E83D-C056-4D74-8BD1-0AC1AB6AA4DD/MyApp.app/Frameworks/Swinject.framework/Swinject
	/Users/user/Library/Developer/CoreSimulator/Devices/B8FC3167-D881-41FA-8181-340B7ECE7612/data/Containers/Bundle/Application/9F06E83D-C056-4D74-8BD1-0AC1AB6AA4DD/MyApp.app/Frameworks/Swinject.framework/Swinject: stat() failed with errno=5
	/Users/user/Library/Developer/CoreSimulator/Devices/B8FC3167-D881-41FA-8181-340B7ECE7612/data/Containers/Bundle/Application/9F06E83D-C056-4D74-8BD1-0AC1AB6AA4DD/MyApp.app/Frameworks/Swinject.framework/Swinject: mmap() errno=5 at address=0x10E812000, size=0x00025000 segment=__TEXT in Segment::map() mapping /Users/user/Library/Developer/CoreSimulator/Devices/B8FC3167-D881-41FA-8181-340B7ECE7612/data/Containers/Bundle/Application/9F06E83D-C056-4D74-8BD1-0AC1AB6AA4DD/MyApp.app/Frameworks/Swinject.framework/Swinject
	/Users/user/Library/Developer/CoreSimulator/Devices/B8FC3167-D881-41FA-8181-340B7ECE7612/data/Containers/Bundle/Application/9F06E83D-C056-4D74-8BD1-0AC1AB6AA4DD/MyApp.app/Frameworks/Swinject.framework/Swinject: stat() failed with errno=5

This happens with Cocoapods:

Other podfile setup is

use_frameworks!
platform :ios, '10.0'
plugin 'cocoapods-binary'
inhibit_all_warnings!
all_binary!

Looks like these all contain Swift only code. Any help appreciated, thanks!

Typo in logo

Cocoapods -> CocoaPods

If just make the p capital, 3 capital letters break some visual balance and rhythm. I think the logo should be redesigned.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.