返回

通过将静态库文件置于静态库外解决 iOS 原生库引入第三方静态依赖的难题

IOS

前言

在 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 从静态库中移到静态库外面,并手动添加依赖。具体步骤如下:

  1. 打开 Xcode 项目,在项目导航器中找到静态库的 .xcodeproj 文件。
  2. .xcodeproj 文件中,找到静态库的 .xcconfig 文件。
  3. .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"
  1. 将这两行代码删除。
  2. .xcodeproj 文件中,找到静态库的 .pbxproj 文件。
  3. .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",
  1. 将这两行代码删除。
  2. .xcodeproj 文件中,找到静态库的 .xcworkspace 文件。
  3. .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",
  1. 将这两行代码删除。
  2. 在项目导航器中,找到静态库的 .framework 文件。
  3. .framework 文件复制到应用程序的 .app 文件夹中。
  4. 在应用程序的 .app 文件夹中,创建一个名为 Frameworks 的文件夹。
  5. .framework 文件移动到 Frameworks 文件夹中。
  6. 在应用程序的 .plist 文件中,找到以下代码:
<key>Frameworks</key>
<array>
  <string>AAASDK.framework</string>
</array>
  1. AAASDK.framework 替换为静态库的 .framework 文件的名称。
  2. 重新构建应用程序。

现在,应用程序应该能够成功构建和运行,而不会出现任何错误。

总结

通过将静态库文件 libAAASDK.a 和 lib.tbd 从静态库中移到静态库外面,并手动添加依赖,我们可以解决 iOS 原生库引入第三方静态依赖时遇到的错误。这种方法简单有效,可以确保应用程序的顺利运行。