返回
通过将静态库文件置于静态库外解决 iOS 原生库引入第三方静态依赖的难题
IOS
2024-01-01 23:44:34
前言
在 iOS 原生库中引入第三方静态依赖是一项常见的任务,但有时可能会遇到一些挑战。例如,当静态库文件 libAAASDK.a 和 lib.tbd 位于静态库中时,应用程序可能会报错。本指南将为您提供一种简单有效的解决方案,以解决此问题,确保您的应用程序能够顺利运行。
问题根源
当静态库文件 libAAASDK.a 和 lib.tbd 位于静态库中时,应用程序可能会遇到以下错误:
ld: library not found for -lAAASDK
ld: library not found for -ltbd
这些错误表明链接器无法找到所需的库文件,导致应用程序无法成功构建。
解决方法
为了解决此问题,我们需要将静态库文件 libAAASDK.a 和 lib.tbd 从静态库中移到静态库外面,并手动添加依赖。具体步骤如下:
- 打开 Xcode 项目,在项目导航器中找到静态库的
.xcodeproj
文件。 - 在
.xcodeproj
文件中,找到静态库的.xcconfig
文件。 - 在
.xcconfig
文件中,找到以下两行代码:
OTHER_LDFLAGS = -L"$(SRCROOT)/Pods/Target Support Files/Pods-AAASDK/AAASDK/Release-iphoneos"
OTHER_LDFLAGS = -L"$(SRCROOT)/Pods/Target Support Files/Pods-AAASDK/AAASDK/Release-iphonesimulator"
- 将这两行代码删除。
- 在
.xcodeproj
文件中,找到静态库的.pbxproj
文件。 - 在
.pbxproj
文件中,找到以下两行代码:
"${SRCROOT}/Pods/Target Support Files/Pods-AAASDK/AAASDK/Release-iphoneos/libAAASDK.a",
"${SRCROOT}/Pods/Target Support Files/Pods-AAASDK/AAASDK/Release-iphonesimulator/libAAASDK.a",
- 将这两行代码删除。
- 在
.xcodeproj
文件中,找到静态库的.xcworkspace
文件。 - 在
.xcworkspace
文件中,找到以下两行代码:
"$(SRCROOT)/Pods/Target Support Files/Pods-AAASDK/AAASDK/Release-iphoneos/libAAASDK.a",
"$(SRCROOT)/Pods/Target Support Files/Pods-AAASDK/AAASDK/Release-iphonesimulator/libAAASDK.a",
- 将这两行代码删除。
- 在项目导航器中,找到静态库的
.framework
文件。 - 将
.framework
文件复制到应用程序的.app
文件夹中。 - 在应用程序的
.app
文件夹中,创建一个名为Frameworks
的文件夹。 - 将
.framework
文件移动到Frameworks
文件夹中。 - 在应用程序的
.plist
文件中,找到以下代码:
<key>Frameworks</key>
<array>
<string>AAASDK.framework</string>
</array>
- 将
AAASDK.framework
替换为静态库的.framework
文件的名称。 - 重新构建应用程序。
现在,应用程序应该能够成功构建和运行,而不会出现任何错误。
总结
通过将静态库文件 libAAASDK.a 和 lib.tbd 从静态库中移到静态库外面,并手动添加依赖,我们可以解决 iOS 原生库引入第三方静态依赖时遇到的错误。这种方法简单有效,可以确保应用程序的顺利运行。