cover image
Nitish Kumar Singh
Nitish Kumar Singh
Clock Image 14 minutes
Posted on
June 29, 2020

grpc iOS stuck


I always used to though I’ll never face problems in integrating Google’s Library or dependencies. But I was wrong and its software problem can happen with Google’s software too.

Problem #

I cam to this problem when I was added Firestore to the Flutter application and you might came to the same problem while doing some other thing. Some other things means something which requires grpc.

Our Case might be different but the solution is same for both of us because we both somewhere doing pod install and that is installing grpc under the hood.

My Case #

After adding firestore (Firebase) to the flutter application it gets stuck when running on an iOS device.

Before adding Firestore to the project I was already using Firebase Auth to that project. It means there isn’t any problem with the integration. So, I thought of Googling and went to Google and found some solutions.

No solution was correct and to the point and that’s why I am explaining it in detail. Even on the GitHub issue it wasn’t mentioned correct or any path to solve the solution.

Solution #

Solution: Wait for the some time and sometime can’t be defined here. It totally depends on your machine and Internet Speed.

When running on iOS it gets stuck for a long time and the time is indefinite. For some people, it took 1 hour and for some people for 2 hours. If you wait for a long time then definitely it will get completed today or tomorrow.

It will get completed today or tomorrow!

In my case, it took around 40 minutes and I waited for that time with patience. I am not that much patient guy but the day before yesterday I have already wasted more than an hour. So, I was patient today and thought I’ll come to some conclusion.

Solution is only one thing which is waiting for few minutes or few hours.

Looking for Freelancer

Hire Now

Solution in Details #

You must see the detailed solution because I know you don’t want always to get stuck in a problem. The detailed solution will tell you how I able to know the exact reason why it get stuck.

It downloads more than 1 GB of data when you Firebase(Firestore) to the Flutter Project. This is the reason why it took so long to finish.

verbose flag is used to show extra details. If you use this flag with pod then it will show you what exactly it is doing.

I went to ios directory and run the command pod install --verbose. The verbose flag is used to show additional details, this flag helped me in knowing what exactly is going on. Because of this, I flag I was able to figure out all the things.

What it downloads?

cocopod get stuck at all first two downloads

  • gRPC-C++: It will also takes a good time and I not sure about its size because I downloaded it yesterday.
  • gRPC-Core: Installing this will take maximum time among all.
  • leveldb-library: Installing this was done quickly
  • nanopb: Installing this was done quickly

Installing gRPC-Core

It clones this repo https://github.com/grpc/grpc.git. This repo size is around 270MB

Why 1 GB of download when gRPC-Core is 270MB?

This is because of it’s sub-module. I have linked it you can see that and I got this information from the verbose.

List of sub-module

  • third_party/zlib
  • third_party/protobuf
  • third_party/gflags
  • third_party/googletest
  • third_party/benchmark
  • third_party/boringssl-with-bazel
  • third_party/cares/cares
  • third_party/bloaty
  • third_party/abseil-cpp
  • third_party/envoy-api
  • third_party/googleapis
  • third_party/protoc-gen-validate
  • third_party/udpa
  • third_party/libuv

Where did I search for the solution? #

I searched for the solution at several places but could not be able to find it.

There were some solutions at Stack Overflow also but didn’t work for me.

Verbose of pod install #

Terminal
nitishk72@nStack-in flutter_app % cd ios
nitishk72@nStack-in ios $ pod install --verbose
  Preparing

Analyzing dependencies

Inspecting targets to integrate
  Using `ARCHS` setting to build architectures of target `Pods-Runner`: (``)

Fetching external sources
-> Fetching podspec for `Flutter` from `Flutter`
-> Fetching podspec for `cloud_firestore` from `.symlinks/plugins/cloud_firestore/ios`
-> Fetching podspec for `cloud_firestore_web` from `.symlinks/plugins/cloud_firestore_web/ios`
-> Fetching podspec for `firebase_core` from `.symlinks/plugins/firebase_core/ios`
-> Fetching podspec for `firebase_core_web` from `.symlinks/plugins/firebase_core_web/ios`

Resolving dependencies of `Podfile`
  CDN: trunk Relative path: CocoaPods-version.yml exists! Returning local because checking is only perfomed in repo update
  ..
  .
  400 similar line were here
  .
  ..
  CDN: trunk Relative path: Specs/0/8/4/GoogleUtilities/6.6.0/GoogleUtilities.podspec.json exists! Returning local because checking is only perfomed in repo update

Comparing resolved specification to the sandbox manifest
  A BoringSSL-GRPC
  A Firebase
  A FirebaseAnalytics
  A FirebaseAuthInterop
  A FirebaseCore
  A FirebaseCoreDiagnostics
  A FirebaseCoreDiagnosticsInterop
  A FirebaseFirestore
  A FirebaseInstallations
  A Flutter
  A GoogleAppMeasurement
  A GoogleDataTransport
  A GoogleDataTransportCCTSupport
  A GoogleUtilities
  A PromisesObjC
  A abseil
  A cloud_firestore
  A cloud_firestore_web
  A firebase_core
  A firebase_core_web
  A gRPC-C++
  A gRPC-Core
  A leveldb-library
  A nanopb

Downloading dependencies

-> Installing BoringSSL-GRPC (0.0.7)
  > Copying BoringSSL-GRPC from `/Users/nitishk72/Library/Caches/CocoaPods/Pods/Release/BoringSSL-GRPC/0.0.7-8edf6` to `Pods/BoringSSL-GRPC`

-> Installing Firebase (6.24.0)
  > Copying Firebase from `/Users/nitishk72/Library/Caches/CocoaPods/Pods/Release/Firebase/6.24.0-b28e5` to `Pods/Firebase`

-> Installing FirebaseAnalytics (6.5.0)
  > Copying FirebaseAnalytics from `/Users/nitishk72/Library/Caches/CocoaPods/Pods/Release/FirebaseAnalytics/6.5.0-7386f` to `Pods/FirebaseAnalytics`

-> Installing FirebaseAuthInterop (1.1.0)
  > Copying FirebaseAuthInterop from `/Users/nitishk72/Library/Caches/CocoaPods/Pods/Release/FirebaseAuthInterop/1.1.0-a0f37` to `Pods/FirebaseAuthInterop`

-> Installing FirebaseCore (6.7.0)
  > Copying FirebaseCore from `/Users/nitishk72/Library/Caches/CocoaPods/Pods/Release/FirebaseCore/6.7.0-e6104` to `Pods/FirebaseCore`

-> Installing FirebaseCoreDiagnostics (1.4.0)
  > Copying FirebaseCoreDiagnostics from `/Users/nitishk72/Library/Caches/CocoaPods/Pods/Release/FirebaseCoreDiagnostics/1.4.0-4505e` to
  `Pods/FirebaseCoreDiagnostics`

-> Installing FirebaseCoreDiagnosticsInterop (1.2.0)
  > Copying FirebaseCoreDiagnosticsInterop from `/Users/nitishk72/Library/Caches/CocoaPods/Pods/Release/FirebaseCoreDiagnosticsInterop/1.2.0-296e2` to
  `Pods/FirebaseCoreDiagnosticsInterop`

-> Installing FirebaseFirestore (1.13.0)
  > Copying FirebaseFirestore from `/Users/nitishk72/Library/Caches/CocoaPods/Pods/Release/FirebaseFirestore/1.13.0-35f8f` to `Pods/FirebaseFirestore`

-> Installing FirebaseInstallations (1.3.0)
  > Copying FirebaseInstallations from `/Users/nitishk72/Library/Caches/CocoaPods/Pods/Release/FirebaseInstallations/1.3.0-6f5f6` to `Pods/FirebaseInstallations`

-> Installing Flutter (1.0.0)

-> Installing GoogleAppMeasurement (6.5.0)
  > Copying GoogleAppMeasurement from `/Users/nitishk72/Library/Caches/CocoaPods/Pods/Release/GoogleAppMeasurement/6.5.0-4c644` to `Pods/GoogleAppMeasurement`

-> Installing GoogleDataTransport (6.2.1)
  > Copying GoogleDataTransport from `/Users/nitishk72/Library/Caches/CocoaPods/Pods/Release/GoogleDataTransport/6.2.1-9a8a1` to `Pods/GoogleDataTransport`

-> Installing GoogleDataTransportCCTSupport (3.2.0)
  > Copying GoogleDataTransportCCTSupport from `/Users/nitishk72/Library/Caches/CocoaPods/Pods/Release/GoogleDataTransportCCTSupport/3.2.0-489c1` to
  `Pods/GoogleDataTransportCCTSupport`

-> Installing GoogleUtilities (6.6.0)
  > Copying GoogleUtilities from `/Users/nitishk72/Library/Caches/CocoaPods/Pods/Release/GoogleUtilities/6.6.0-39530` to `Pods/GoogleUtilities`

-> Installing PromisesObjC (1.2.9)
  > Copying PromisesObjC from `/Users/nitishk72/Library/Caches/CocoaPods/Pods/Release/PromisesObjC/1.2.9-b48e0` to `Pods/PromisesObjC`

-> Installing abseil (0.20200225.0)
  > Copying abseil from `/Users/nitishk72/Library/Caches/CocoaPods/Pods/Release/abseil/0.20200225.0-6c8eb` to `Pods/abseil`

-> Installing cloud_firestore (0.0.1)

-> Installing cloud_firestore_web (0.1.0)

-> Installing firebase_core (0.0.1)

-> Installing firebase_core_web (0.1.0)

-> Installing gRPC-C++ (1.28.2)
  > Copying gRPC-C++ from `/Users/nitishk72/Library/Caches/CocoaPods/Pods/Release/gRPC-C++/1.28.2-13d8c` to `Pods/gRPC-C++`

-> Installing gRPC-Core (1.28.2)
 > Git download
 > Git download
     $ /usr/bin/git clone https://github.com/grpc/grpc.git /var/folders/xv/4qmdn8q564l_8w91smcrnxjw0000gn/T/d20200629-3091-1diqthr --template= --single-branch
     --depth 1 --branch v1.28.2
     Cloning into '/var/folders/xv/4qmdn8q564l_8w91smcrnxjw0000gn/T/d20200629-3091-1diqthr'...
     Note: switching to 'e122aae3cecae0e6be11b62fbe81eda55e662a02'.

     You are in 'detached HEAD' state. You can look around, make experimental
     changes and commit them, and you can discard any commits you make in this
     state without impacting any branches by switching back to a branch.

     If you want to create a new branch to retain commits you create, you may
     do so (now or later) by using -c with the switch command. Example:

       git switch -c <new-branch-name>

     Or undo this operation with:

       git switch -

     Turn off this advice by setting config variable advice.detachedHead to false

     Updating files: 100% (8203/8203), done.
     $ /usr/bin/git -C /var/folders/xv/4qmdn8q564l_8w91smcrnxjw0000gn/T/d20200629-3091-1diqthr submodule update --init --recursive
     Submodule 'third_party/abseil-cpp' (https://github.com/abseil/abseil-cpp.git) registered for path 'third_party/abseil-cpp'
     Submodule 'third_party/benchmark' (https://github.com/google/benchmark) registered for path 'third_party/benchmark'
     Submodule 'third_party/bloaty' (https://github.com/google/bloaty.git) registered for path 'third_party/bloaty'
     Submodule 'third_party/boringssl-with-bazel' (https://github.com/google/boringssl.git) registered for path 'third_party/boringssl-with-bazel'
     Submodule 'third_party/cares/cares' (https://github.com/c-ares/c-ares.git) registered for path 'third_party/cares/cares'
     Submodule 'third_party/envoy-api' (https://github.com/envoyproxy/data-plane-api.git) registered for path 'third_party/envoy-api'
     Submodule 'third_party/gflags' (https://github.com/gflags/gflags.git) registered for path 'third_party/gflags'
     Submodule 'third_party/googleapis' (https://github.com/googleapis/googleapis.git) registered for path 'third_party/googleapis'
     Submodule 'third_party/googletest' (https://github.com/google/googletest.git) registered for path 'third_party/googletest'
     Submodule 'third_party/libuv' (https://github.com/libuv/libuv.git) registered for path 'third_party/libuv'
     Submodule 'third_party/protobuf' (https://github.com/google/protobuf.git) registered for path 'third_party/protobuf'
     Submodule 'third_party/protoc-gen-validate' (https://github.com/envoyproxy/protoc-gen-validate.git) registered for path 'third_party/protoc-gen-validate'
     Submodule 'third_party/udpa' (https://github.com/cncf/udpa.git) registered for path 'third_party/udpa'
     Submodule 'third_party/zlib' (https://github.com/madler/zlib) registered for path 'third_party/zlib'
     Cloning into '/private/var/folders/xv/4qmdn8q564l_8w91smcrnxjw0000gn/T/d20200629-3091-1diqthr/third_party/abseil-cpp'...
     Cloning into '/private/var/folders/xv/4qmdn8q564l_8w91smcrnxjw0000gn/T/d20200629-3091-1diqthr/third_party/benchmark'...
     Cloning into '/private/var/folders/xv/4qmdn8q564l_8w91smcrnxjw0000gn/T/d20200629-3091-1diqthr/third_party/bloaty'...
     Cloning into '/private/var/folders/xv/4qmdn8q564l_8w91smcrnxjw0000gn/T/d20200629-3091-1diqthr/third_party/boringssl-with-bazel'...
     Cloning into '/private/var/folders/xv/4qmdn8q564l_8w91smcrnxjw0000gn/T/d20200629-3091-1diqthr/third_party/cares/cares'...
     Cloning into '/private/var/folders/xv/4qmdn8q564l_8w91smcrnxjw0000gn/T/d20200629-3091-1diqthr/third_party/envoy-api'...
     Cloning into '/private/var/folders/xv/4qmdn8q564l_8w91smcrnxjw0000gn/T/d20200629-3091-1diqthr/third_party/gflags'...
     Cloning into '/private/var/folders/xv/4qmdn8q564l_8w91smcrnxjw0000gn/T/d20200629-3091-1diqthr/third_party/googleapis'...
     Cloning into '/private/var/folders/xv/4qmdn8q564l_8w91smcrnxjw0000gn/T/d20200629-3091-1diqthr/third_party/googletest'...
     Cloning into '/private/var/folders/xv/4qmdn8q564l_8w91smcrnxjw0000gn/T/d20200629-3091-1diqthr/third_party/libuv'...
     Cloning into '/private/var/folders/xv/4qmdn8q564l_8w91smcrnxjw0000gn/T/d20200629-3091-1diqthr/third_party/protobuf'...
     Cloning into '/private/var/folders/xv/4qmdn8q564l_8w91smcrnxjw0000gn/T/d20200629-3091-1diqthr/third_party/protoc-gen-validate'...
     Cloning into '/private/var/folders/xv/4qmdn8q564l_8w91smcrnxjw0000gn/T/d20200629-3091-1diqthr/third_party/udpa'...
     Cloning into '/private/var/folders/xv/4qmdn8q564l_8w91smcrnxjw0000gn/T/d20200629-3091-1diqthr/third_party/zlib'...
     Submodule path 'third_party/abseil-cpp': checked out 'b832dce8489ef7b6231384909fd9b68d5a5ff2b7'
     Submodule path 'third_party/benchmark': checked out '090faecb454fbd6e6e17a75ef8146acb037118d4'
     Submodule path 'third_party/bloaty': checked out '73594cde8c9a52a102c4341c244c833aa61b9c06'
     Submodule 'third_party/googletest' (https://github.com/google/googletest.git) registered for path 'third_party/bloaty/third_party/googletest'
     Submodule 'third_party/libFuzzer' (https://chromium.googlesource.com/chromium/llvm-project/llvm/lib/Fuzzer) registered for path 'third_party/bloaty/third_party/libFuzzer'
     Submodule 'third_party/re2' (https://github.com/google/re2) registered for path 'third_party/bloaty/third_party/re2'
     Cloning into '/private/var/folders/xv/4qmdn8q564l_8w91smcrnxjw0000gn/T/d20200629-3091-1diqthr/third_party/bloaty/third_party/googletest'...
     Cloning into '/private/var/folders/xv/4qmdn8q564l_8w91smcrnxjw0000gn/T/d20200629-3091-1diqthr/third_party/bloaty/third_party/libFuzzer'...
     Cloning into '/private/var/folders/xv/4qmdn8q564l_8w91smcrnxjw0000gn/T/d20200629-3091-1diqthr/third_party/bloaty/third_party/re2'...
     Submodule path 'third_party/bloaty/third_party/googletest': checked out 'a2b8a8e07628e5fd60644b6dd99c1b5e7d7f1f47'
     Submodule path 'third_party/bloaty/third_party/libFuzzer': checked out '1b543d6e5073b56be214394890c9193979a3d7e1'
     Submodule path 'third_party/bloaty/third_party/re2': checked out 'c964d9b07816f9b52ca692e23b8b3dba33beec54'
     Submodule path 'third_party/boringssl-with-bazel': checked out '1c2769383f027befac5b75b6cedd25daf3bf4dcf'
     Submodule path 'third_party/cares/cares': checked out 'e982924acee7f7313b4baa4ee5ec000c5e373c30'
     Submodule path 'third_party/envoy-api': checked out '0487bbb43c3e8b54c7332f74ba7344d8265774f7'
     Submodule path 'third_party/gflags': checked out '28f50e0fed19872e0fd50dd23ce2ee8cd759338e'
     Submodule 'doc' (https://github.com/gflags/gflags.git) registered for path 'third_party/gflags/doc'
     Cloning into '/private/var/folders/xv/4qmdn8q564l_8w91smcrnxjw0000gn/T/d20200629-3091-1diqthr/third_party/gflags/doc'...
     Submodule path 'third_party/gflags/doc': checked out '8411df715cf522606e3b1aca386ddfc0b63d34b4'
     Submodule path 'third_party/googleapis': checked out '80ed4d0bbf65d57cc267dfc63bd2584557f11f9b'
     Submodule path 'third_party/googletest': checked out 'c9ccac7cb7345901884aabf5d1a786cfa6e2f397'
     Submodule path 'third_party/libuv': checked out '15ae750151ac9341e5945eb38f8982d59fb99201'
     Submodule path 'third_party/protobuf': checked out 'fe1790ca0df67173702f70d5646b82f48f412b99'
     Submodule 'third_party/benchmark' (https://github.com/google/benchmark.git) registered for path 'third_party/protobuf/third_party/benchmark'
     Submodule 'third_party/googletest' (https://github.com/google/googletest.git) registered for path 'third_party/protobuf/third_party/googletest'
     Cloning into '/private/var/folders/xv/4qmdn8q564l_8w91smcrnxjw0000gn/T/d20200629-3091-1diqthr/third_party/protobuf/third_party/benchmark'...
     Cloning into '/private/var/folders/xv/4qmdn8q564l_8w91smcrnxjw0000gn/T/d20200629-3091-1diqthr/third_party/protobuf/third_party/googletest'...
     Submodule path 'third_party/protobuf/third_party/benchmark': checked out '5b7683f49e1e9223cf9927b24f6fd3d6bd82e3f8'
     Submodule path 'third_party/protobuf/third_party/googletest': checked out '5ec7f0c4a113e2f18ac2c6cc7df51ad6afc24081'
     Submodule path 'third_party/protoc-gen-validate': checked out 'c0a080f4bea50bc087cdd8551143ee538cf3459e'
     Submodule path 'third_party/udpa': checked out 'db4b343e48c1264bb4d9ff491b059300701dc7c7'
     Submodule path 'third_party/zlib': checked out 'cacf7f1d4e3d44d871b605da3b647f07d718623f'
 > Running prepare command
   $ /bin/bash -c  set -e sed -E -i '' 's;#include <openssl/(.*)>;#if COCOAPODS==1\   #include <openssl_grpc/\1>\ #else\   #include <openssl/\1>\ #endif;g' $(find
   src/core -type f \( -path '*.h' -or -path '*.cc' \) -print | xargs grep -H -c '#include <openssl_grpc/' | grep 0$ | cut -d':' -f1)     find src/core/
   third_party/upb/ -type f \( -name '*.h' -or -name '*.c' -or -name '*.cc' \) -print0 | xargs -0 -L1 sed -E -i'.grpc_back' 's;#include "upb/(.*)";#if COCOAPODS==1\
   #include  "third_party/upb/upb/\1"\ #else\   #include  "upb/\1"\ #endif;g'     find src/core/ third_party/upb/ -type f -name '*.grpc_back' -print0 | xargs -0 rm
   find src/core/ src/cpp/ -type f \( -name '*.h' -or -name '*.c' -or -name '*.cc' \) -print0 | xargs -0 -L1 sed -E -i'.grpc_back' 's;#include "(.*).upb.h";#if
   COCOAPODS==1\   #include  "src/core/ext/upb-generated/\1.upb.h"\ #else\   #include  "\1.upb.h"\ #endif;g'     find src/core/ src/cpp/ -type f -name '*.grpc_back'
   -print0 | xargs -0 rm
  > Copying gRPC-Core from `/Users/nitishk72/Library/Caches/CocoaPods/Pods/Release/gRPC-Core/1.28.2-4afa1` to `Pods/gRPC-Core`

-> Installing leveldb-library (1.22)
 > Git download
 > Git download
     $ /usr/bin/git clone https://github.com/google/leveldb.git /var/folders/xv/4qmdn8q564l_8w91smcrnxjw0000gn/T/d20200629-3091-vlwzbk --template= --single-branch
     --depth 1 --branch 1.22
     Cloning into '/var/folders/xv/4qmdn8q564l_8w91smcrnxjw0000gn/T/d20200629-3091-vlwzbk'...
     Note: switching to '78b39d68c15ba020c0d60a3906fb66dbf1697595'.

     You are in 'detached HEAD' state. You can look around, make experimental
     changes and commit them, and you can discard any commits you make in this
     state without impacting any branches by switching back to a branch.

     If you want to create a new branch to retain commits you create, you may
     do so (now or later) by using -c with the switch command. Example:

       git switch -c <new-branch-name>

     Or undo this operation with:

       git switch -

     Turn off this advice by setting config variable advice.detachedHead to false

  > Copying leveldb-library from `/Users/nitishk72/Library/Caches/CocoaPods/Pods/Release/leveldb-library/1.22-55d93` to `Pods/leveldb-library`

-> Installing nanopb (1.30905.0)
 > Git download
 > Git download
     $ /usr/bin/git clone https://github.com/nanopb/nanopb.git /var/folders/xv/4qmdn8q564l_8w91smcrnxjw0000gn/T/d20200629-3091-1llel2j --template= --single-branch
     --depth 1 --branch 0.3.9.5
     Cloning into '/var/folders/xv/4qmdn8q564l_8w91smcrnxjw0000gn/T/d20200629-3091-1llel2j'...
     Note: switching to 'accfbbbd6840dd796efe835a0bf4f89a0835c238'.

     You are in 'detached HEAD' state. You can look around, make experimental
     changes and commit them, and you can discard any commits you make in this
     state without impacting any branches by switching back to a branch.

     If you want to create a new branch to retain commits you create, you may
     do so (now or later) by using -c with the switch command. Example:

       git switch -c <new-branch-name>

     Or undo this operation with:

       git switch -

     Turn off this advice by setting config variable advice.detachedHead to false

  > Copying nanopb from `/Users/nitishk72/Library/Caches/CocoaPods/Pods/Release/nanopb/1.30905.0-c43f4` to `Pods/nanopb`
  - Running pre install hooks

Generating Pods project
  - Creating Pods project
  - Installing files into Pods project
    - Adding source files
    - Adding frameworks
    - Adding libraries
    - Adding resources
    - Adding development pod helper files
    - Linking headers
  - Installing Pod Targets
    - Installing target `BoringSSL-GRPC` iOS 8.0
      - Copying module map file to `Pods/Target Support Files/BoringSSL-GRPC/BoringSSL-GRPC.modulemap`
      - Generating Info.plist file at `Pods/Target Support Files/BoringSSL-GRPC/BoringSSL-GRPC-Info.plist`
      - Generating dummy source at `Pods/Target Support Files/BoringSSL-GRPC/BoringSSL-GRPC-dummy.m`
    - Installing target `Firebase` iOS 8.0
    - Installing target `FirebaseAnalytics` iOS 8.0
    - Installing target `FirebaseAuthInterop` iOS 8.0
    - Installing target `FirebaseCore` iOS 8.0
      - Generating module map file at `Pods/Target Support Files/FirebaseCore/FirebaseCore.modulemap`
      - Generating umbrella header at `Pods/Target Support Files/FirebaseCore/FirebaseCore-umbrella.h`
      - Generating Info.plist file at `Pods/Target Support Files/FirebaseCore/FirebaseCore-Info.plist`
      - Generating dummy source at `Pods/Target Support Files/FirebaseCore/FirebaseCore-dummy.m`
    - Installing target `FirebaseCoreDiagnostics` iOS 8.0
      - Generating module map file at `Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics.modulemap`
      - Generating umbrella header at `Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics-umbrella.h`
      - Generating Info.plist file at `Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics-Info.plist`
      - Generating dummy source at `Pods/Target Support Files/FirebaseCoreDiagnostics/FirebaseCoreDiagnostics-dummy.m`
    - Installing target `FirebaseCoreDiagnosticsInterop` iOS 8.0
    - Installing target `FirebaseFirestore` iOS 8.0
      - Generating module map file at `Pods/Target Support Files/FirebaseFirestore/FirebaseFirestore.modulemap`
      - Generating umbrella header at `Pods/Target Support Files/FirebaseFirestore/FirebaseFirestore-umbrella.h`
      - Generating Info.plist file at `Pods/Target Support Files/FirebaseFirestore/FirebaseFirestore-Info.plist`
      - Generating dummy source at `Pods/Target Support Files/FirebaseFirestore/FirebaseFirestore-dummy.m`
    - Installing target `FirebaseInstallations` iOS 8.0
      - Generating module map file at `Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations.modulemap`
      - Generating umbrella header at `Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations-umbrella.h`
      - Generating Info.plist file at `Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations-Info.plist`
      - Generating dummy source at `Pods/Target Support Files/FirebaseInstallations/FirebaseInstallations-dummy.m`
    - Installing target `Flutter` iOS 8.0
    - Installing target `GoogleAppMeasurement` iOS 8.0
    - Installing target `GoogleDataTransport` iOS 8.0
      - Generating module map file at `Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport.modulemap`
      - Generating umbrella header at `Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport-umbrella.h`
      - Generating Info.plist file at `Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport-Info.plist`
      - Generating dummy source at `Pods/Target Support Files/GoogleDataTransport/GoogleDataTransport-dummy.m`
    - Installing target `GoogleDataTransportCCTSupport` iOS 8.0
      - Generating module map file at `Pods/Target Support Files/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport.modulemap`
      - Generating umbrella header at `Pods/Target Support Files/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport-umbrella.h`
      - Generating Info.plist file at `Pods/Target Support Files/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport-Info.plist`
      - Generating dummy source at `Pods/Target Support Files/GoogleDataTransportCCTSupport/GoogleDataTransportCCTSupport-dummy.m`
    - Installing target `GoogleUtilities` iOS 8.0
      - Generating module map file at `Pods/Target Support Files/GoogleUtilities/GoogleUtilities.modulemap`
      - Generating umbrella header at `Pods/Target Support Files/GoogleUtilities/GoogleUtilities-umbrella.h`
      - Generating Info.plist file at `Pods/Target Support Files/GoogleUtilities/GoogleUtilities-Info.plist`
      - Generating dummy source at `Pods/Target Support Files/GoogleUtilities/GoogleUtilities-dummy.m`
    - Installing target `PromisesObjC` iOS 8.0
      - Generating module map file at `Pods/Target Support Files/PromisesObjC/PromisesObjC.modulemap`
      - Generating umbrella header at `Pods/Target Support Files/PromisesObjC/PromisesObjC-umbrella.h`
      - Generating Info.plist file at `Pods/Target Support Files/PromisesObjC/PromisesObjC-Info.plist`
      - Generating dummy source at `Pods/Target Support Files/PromisesObjC/PromisesObjC-dummy.m`
    - Installing target `abseil` iOS 8.0
      - Generating module map file at `Pods/Target Support Files/abseil/abseil.modulemap`
      - Generating umbrella header at `Pods/Target Support Files/abseil/abseil-umbrella.h`
      - Generating Info.plist file at `Pods/Target Support Files/abseil/abseil-Info.plist`
      - Generating dummy source at `Pods/Target Support Files/abseil/abseil-dummy.m`
    - Installing target `cloud_firestore` iOS 8.0
      - Generating module map file at `Pods/Target Support Files/cloud_firestore/cloud_firestore.modulemap`
      - Generating umbrella header at `Pods/Target Support Files/cloud_firestore/cloud_firestore-umbrella.h`
      - Generating Info.plist file at `Pods/Target Support Files/cloud_firestore/cloud_firestore-Info.plist`
      - Generating dummy source at `Pods/Target Support Files/cloud_firestore/cloud_firestore-dummy.m`
    - Installing target `cloud_firestore_web` iOS 8.0
    - Installing target `firebase_core` iOS 8.0
      - Generating module map file at `Pods/Target Support Files/firebase_core/firebase_core.modulemap`
      - Generating umbrella header at `Pods/Target Support Files/firebase_core/firebase_core-umbrella.h`
      - Generating Info.plist file at `Pods/Target Support Files/firebase_core/firebase_core-Info.plist`
      - Generating dummy source at `Pods/Target Support Files/firebase_core/firebase_core-dummy.m`
    - Installing target `firebase_core_web` iOS 8.0
    - Installing target `gRPC-C++` iOS 8.0
      - Generating Info.plist file at `Pods/Target Support Files/gRPC-C++/ResourceBundle-gRPCCertificates-Cpp-gRPC-C++-Info.plist`
      - Generating module map file at `Pods/Target Support Files/gRPC-C++/gRPC-C++.modulemap`
      - Generating umbrella header at `Pods/Target Support Files/gRPC-C++/gRPC-C++-umbrella.h`
      - Generating Info.plist file at `Pods/Target Support Files/gRPC-C++/gRPC-C++-Info.plist`
      - Generating dummy source at `Pods/Target Support Files/gRPC-C++/gRPC-C++-dummy.m`
    - Installing target `gRPC-Core` iOS 8.0
      - Copying module map file to `Pods/Target Support Files/gRPC-Core/gRPC-Core.modulemap`
      - Generating Info.plist file at `Pods/Target Support Files/gRPC-Core/gRPC-Core-Info.plist`
      - Generating dummy source at `Pods/Target Support Files/gRPC-Core/gRPC-Core-dummy.m`
    - Installing target `leveldb-library` iOS 8.0
      - Generating module map file at `Pods/Target Support Files/leveldb-library/leveldb-library.modulemap`
      - Generating umbrella header at `Pods/Target Support Files/leveldb-library/leveldb-library-umbrella.h`
      - Generating Info.plist file at `Pods/Target Support Files/leveldb-library/leveldb-library-Info.plist`
      - Generating dummy source at `Pods/Target Support Files/leveldb-library/leveldb-library-dummy.m`
    - Installing target `nanopb` iOS 8.0
      - Generating module map file at `Pods/Target Support Files/nanopb/nanopb.modulemap`
      - Generating umbrella header at `Pods/Target Support Files/nanopb/nanopb-umbrella.h`
      - Generating Info.plist file at `Pods/Target Support Files/nanopb/nanopb-Info.plist`
      - Generating dummy source at `Pods/Target Support Files/nanopb/nanopb-dummy.m`
  - Installing Aggregate Targets
    - Installing target `Pods-Runner` iOS 8.0
      - Generating Info.plist file at `Pods/Target Support Files/Pods-Runner/Pods-Runner-Info.plist`
      - Generating module map file at `Pods/Target Support Files/Pods-Runner/Pods-Runner.modulemap`
      - Generating umbrella header at `Pods/Target Support Files/Pods-Runner/Pods-Runner-umbrella.h`
      - Generating dummy source at `Pods/Target Support Files/Pods-Runner/Pods-Runner-dummy.m`
  - Generating deterministic UUIDs
  - Stabilizing target UUIDs
  - Running post install hooks
    - Podfile
  - Writing Xcode project file to `Pods/Pods.xcodeproj`
  Cleaning up sandbox directory

Integrating client project

Integrating target `Pods-Runner` (`Runner.xcodeproj` project)
  Adding Build Phase '[CP] Embed Pods Frameworks' to project.
  Adding Build Phase '[CP] Check Pods Manifest.lock' to project.
  - Writing Lockfile in `Podfile.lock`
  - Writing Manifest in `Pods/Manifest.lock`
  - Running post install hooks
    - cocoapods-stats from `/Library/Ruby/Gems/2.6.0/gems/cocoapods-stats-1.1.0/lib/cocoapods_plugin.rb`

-> Pod installation complete! There are 5 dependencies from the Podfile and 24 total pods installed.

[!] Automatically assigning platform `iOS` with version `8.0` on target `Runner` because no platform was specified. Please specify a platform for this target in your Podfile. See `https://guides.cocoapods.org/syntax/podfile.html#platform`.

[!] CocoaPods did not set the base configuration of your project because your project already has a custom config set. In order for CocoaPods integration to work at all, please either set the base configurations of the target `Runner` to `Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig` or include the `Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig` in your build configuration (`Flutter/Release.xcconfig`).
nitishk72@nStack-in ios $

Why android don’t take so long? #

The Cloud Firestore SDK in Firebase uses grpc as part of its transport protocol. If you’re not using Cloud Firestore then the grpc library will not be included as far as I know. Source

From this: I think we can say that android already has grpc installed that’s why we don’t take a very long time. I mean when we install android SDK at that time grpc gets installed and we are unaware of that.

If Android also doesn’t come with grpc inbuild in SDK then we would have taken the same long for Android too.

Conclusion #

All the things which I said are based on my experience and some of the facts which I kept in front of you.

If you find it useful then let me know by tweeting about this. If this doesn’t help you then you can comment down or ask on twitter too.

Share this article

Comment Box

Subscribe to our Newsletter


Tweet this article