Hi, anyone with good understanding of the ios side...
# multiplatform
j
Hi, anyone with good understanding of the ios side build pipeline ? I've had a KMP library depending on ios google maps included in the KMP app. Now when I removed that, I can't build the project anymore, ios fails to build on missing google maps symbols... I've tried obvious gradlew clean, xcode clean etc, but there has to be some cached value or something what still brings the references back... Any idea where to look or what to delete ?
t
Am I understanding correctly that you've removed any usages of Google maps, but build fails due to not able to find related to this dependency symbols? Could you share a stacktrace?
j
1sec
always fails with
Copy code
Could not find or use auto-linked framework 'GoogleMaps': framework 'GoogleMaps' not found
Build appIos_2025-08-07T14-16-26.txt
I’ve tried to do all possible project cleans, build deletion etc, whatever chat gpt recommends or found on web… it always fails at the end of missing GoogleMaps and I can’t figure out where (if anywhere) it’s leaking into the final project
t
Check this
j
I’ve seen this doc… adding the dependency into the project is fine… but there might be some difference if the cocoapod comes transitively as a KMP library dependency
even if I check my
shared/build/cocoapods/synthetic/ios/Podfile
it looks like this currently
Copy code
source '<https://cdn.cocoapods.org>'
target 'ios' do
	use_frameworks!
	platform :ios, '18.0'
	pod 'CocoaAsyncSocket', '7.6.5'
	pod 'FirebaseAnalytics'
	pod 'FirebaseCore', '10.22.0'
	pod 'FirebaseInstallations'
	pod 'GoogleAppMeasurement'
	pod 'GoogleUtilities'
	pod 'nanopb'
end

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      
      # Disable signing for all synthetic pods KT-54314
      config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = ""
      config.build_settings['CODE_SIGNING_REQUIRED'] = "NO"
      config.build_settings['CODE_SIGNING_ALLOWED'] = "NO"
      
      deployment_target_split = config.build_settings['IPHONEOS_DEPLOYMENT_TARGET']&.split('.')
      deployment_target_major = deployment_target_split&.first&.to_i
      deployment_target_minor = deployment_target_split&.second&.to_i

      if deployment_target_major && deployment_target_minor then
        if deployment_target_major < 11 || (deployment_target_major == 11 && deployment_target_minor < 0) then
            version = "#{11}.#{0}"
            puts "Deployment target for #{target} #{config} has been raised to #{version}. See KT-57741 for more details"
            config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = version
        end
      end 
    end
  end
end
t
@Andrey Yastrebov could you help here?
j
nothing in the iosApp podFile
but still somehow GoogleMaps leaks into the final step of linker… isn’t there some
gradlew shared:dependencies
for cocoapods to see where does it come from ?
a
@Jiri Bruchanov can you share a reproducer project? Also check our sample, it also hase google maps integration https://github.com/Kotlin/kmp-with-cocoapods-compose-sample
j
@Andrey Yastrebov I’ll try to create for exactly this one... there is one related ticket I’ve made recently https://youtrack.jetbrains.com/issue/CMP-8707/allTests-fails-libswiftCore.dylib-doesnt-exist might be same issue, but based on this I’ve decided to remove the gmaps for now
I’ve seen the KMP maps example, and having this setup works for me fine… my working setup is basically this LibsProject • maps • … AppProject • references libs project stuff simply via gradle dependencies and this extra “lib/step” seems to be causing troubles… CMP-8707 or KT-66075 or now this when for some reason it’s somewhere stucked in caches
Hey guys, just to let u know, I wasn't successful in creating simple reproducer, the problem might be something more complex in the main project setup... I gave up after few hours trying to reproduce it, I've decided to move the CI to my main dev mac mini (ARM) which doesn't have the problem...