iOS arm64架构下Reachability符号未定义链接错误求助
解决Reachability框架未找到及多模块依赖导出问题
报错信息
warning: Could not find or use auto-linked framework 'Reachability': framework 'Reachability' not found Undefined symbols for architecture arm64: "_OBJC_CLASS_$_Reachability", referenced from
项目结构
appModule appFeatures api apiImpl -> 已添加Reachability pod sharedFlavour common prod -> 依赖common,导出依赖、api项目 qa -> 依赖common,导出依赖、api项目
解决步骤
1. 修正apiImpl模块的CocoaPods配置
在apiImpl模块的构建脚本(build.gradle.kts或build.gradle)中,确保Reachability依赖可传递到上层模块:
plugins { id("kotlin-multiplatform") id("cocoapods") } cocoapods { pod("Reachability") { version = "~> 3.2" // 替换为你使用的版本 } transitive = true // 开启依赖传递 } kotlin { ios { binaries { framework { baseName = "apiImpl" export(pod("Reachability")) // 将框架导出给上层依赖 } } } }
2. 配置prod/qa模块传递apiImpl依赖
在prod和qa模块的构建脚本中,确保导出apiImpl的依赖,让app模块能获取到Reachability:
kotlin { ios { binaries { framework { baseName = "prod" // qa模块替换为"qa" export(project(":appModule:appFeatures:apiImpl")) } } } } dependencies { implementation(project(":appModule:appFeatures:apiImpl")) }
3. 确保app模块的CocoaPods配置正确
app模块无需重复声明Reachability,通过依赖传递获取即可:
plugins { id("com.android.application") id("kotlin-android") id("cocoapods") } cocoapods { ios.deploymentTarget = "14.0" // 匹配项目的iOS最低版本 } dependencies { // 根据环境选择prod或qa依赖 implementation(project(":appModule:sharedFlavour:prod")) // 或 implementation(project(":appModule:sharedFlavour:qa")) }
4. 清理缓存并重新构建
- 执行命令清理Gradle缓存:
./gradlew clean - 进入iOS项目目录,执行
pod install重新安装依赖 - 重新构建项目验证问题是否解决
内容的提问来源于stack exchange,提问作者Reprator
相关产品推荐
相关产品推荐

