Establish Objective C end-to-end core test with Cronet
diff --git a/templates/gRPC-Core.podspec.template b/templates/gRPC-Core.podspec.template
index aefe6e9..9eeee22 100644
--- a/templates/gRPC-Core.podspec.template
+++ b/templates/gRPC-Core.podspec.template
@@ -128,6 +128,8 @@
       'ALWAYS_SEARCH_USER_PATHS' => 'NO',
     }
 
+    s.default_subspecs = 'Interface', 'Implementation'
+
     # Like many other C libraries, gRPC-Core has its public headers under `include/<libname>/` and its
     # sources and private headers in other directories outside `include/`. Cocoapods' linter doesn't
     # allow any header to be listed outside the `header_mappings_dir` (even though doing so works in
@@ -154,4 +156,26 @@
 
       ss.private_header_files = ${ruby_multiline_list(grpc_private_headers(libs), 30)}
     end
+
+    s.subspec 'Cronet-Interface' do |ss|
+      ss.header_mappings_dir = 'include/grpc'
+      ss.source_files = 'include/grpc/grpc_cronet.h'
+    end
+
+    s.subspec 'Cronet-Tests' do |ss|
+      ss.header_mappings_dir = '.'
+
+      ss.source_files = 'src/core/ext/transport/cronet/client/secure/cronet_channel_create.c',
+                        'src/core/ext/transport/cronet/transport/cronet_transport.c',
+                        'test/core/end2end/cq_verifier.{c,h}',
+                        'test/core/end2end/end2end_tests.{c,h}',
+                        'test/core/end2end/tests/*.{c,h}',
+                        'test/core/end2end/data/*.{c,h}',
+                        'test/core/util/test_config.{c,h}',
+                        'test/core/util/port.h',
+                        'test/core/util/port_posix.c',
+                        'test/core/util/port_server_client.{c,h}'
+
+      ss.dependency 'CronetFramework'
+    end
   end