0

我正在使用 Unity 2019.3.2f1,在将 UnityAds 更新到 3.4.4 后,出现了一些错误。

duplicate symbol '_NetworkChange' in:

/Users/Desktop/UnityAdsTest/ios/Libraries/libiPhone-lib.a(SSRVConnectivityMonitor.o)
/Users/Desktop/UnityAdsTest/ios/Frameworks/Plugins/iOS/UnityAds.framework/UnityAds(UnityAds)

duplicate symbol '_kChinaIsoAlpha2Code' in:

/Users/Desktop/UnityAdsTest/ios/Libraries/libiPhone-lib.a(SSRVSdkProperties.o)
/Users/Desktop/UnityAdsTest/ios/Frameworks/Plugins/iOS/UnityAds.framework/UnityAds(UnityAds)

duplicate symbol '_kChinaIsoAlpha3Code' in:

/Users/Desktop/UnityAdsTest/ios/Libraries/libiPhone-lib.a(SSRVSdkProperties.o)
/Users/Desktop/UnityAdsTest/ios/Frameworks/Plugins/iOS/UnityAds.framework/UnityAds(UnityAds)

ld: 3 duplicate symbols for architecture arm64

我已经尝试创建新项目,问题仍然存在。重复方法:

  1. 创建新的 Unity 项目。
  2. 从 Package Manager 导入 UnityAds,版本更新到 3.4.4
  3. 构建 iOS 项目。
  4. 在 XCode 中运行。

我没有启用 UnityAds 服务器,并且 XCode 中只有一个 UnityAds.framework 文件。看起来有些内容被打包到了 libiPhone-lib.a 中。

有没有人遇到过同样的问题?

4

1 回答 1

0

我通过从 UnityAds.framework 中删除这 3 个符号解决了这个问题:

首先,将以下 3 行写入“sym_need_remove.txt”

 _NetworkChange
 _kChinaIsoAlpha2Code
 _kChinaIsoAlpha3Code

然后,提取 lib 并删除这 3 个符号

cd UnityAds.framework
lipo UnityAds -thin arm64 -output UnityAds-64.a
strip -u -S -R sym_need_remove.txt UnityAds-64.a

如果需要同时支持armv7和arm64,还需要:

lipo UnityAds -thin armv7 -output UnityAds-v7.a
strip -u -S -R sym_need_remove.txt UnityAds-v7.a
lipo -create UnityAds-64.a UnityAds-v7.a -output UnityAdsStrip.a

最后,将 UnityAds-64.a 或 UnityAdsStrip.a 替换回 UnityAds.framework/UnityAds

它会工作。

我希望这能有所帮助~

于 2020-04-27T09:56:59.687 回答