从一个应用程序扩展
问题描述:
- 一个应用目标项目链接到嵌入式框架:
MyApp
- 一个嵌入式框架目标:
MyKit.framework
- 一个应用程序扩展目标:
MyExtension
我想使用的MyKit
共享代码的MyExtension
但是当我联系,我得到警告
ld: warning: linking against a dylib which is not safe for use in application extensions: /Users/me/Library/Developer/Xcode/DerivedData/MyApp-dnztzmxjghjlsteetlokzhjtjqkm/Build/Products/Debug-iphonesimulator/MyKit.framework/MyKit
要配置一个应用程序扩展目标使用嵌入式框架,设置目标的“仅需要应用程序扩展安全API”构建设置为是。如果你不这样做,Xcode会提醒你这样做,通过显示警告“链接到dylib不安全以用于应用程序扩展”。
默认情况下设置正确。我通过将“仅需要应用程序扩展安全API”设置为NO,可以通过摆脱警告,但这可能会导致一些应用程序拒绝。
该框架在应用程序扩展中不使用任何API not allowed。事实上,在示例项目中,您会看到MyKit.framework
只会将消息记录到控制台。
从应用程序扩展中链接到嵌入式框架以避免这种情况的正确方法是什么?
Ahh我必须在框架*中设置“仅需要应用程序扩展安全API”*而不是在扩展中!顺便说一句,我不得不使用其他应用程序之间实际共享的框架。我上面的场景只是为了简化问题 – Jan
是的。该错误告诉您,您正在使用可能使用不受支持的API调用的框架。如果您尝试在您的框架中使用不受支持的API(例如'UIApplication'),编译器会给您一个错误,从而向客户端保证它是保存到的,所以使用''只需要App-扩展 - 安全API'= YES'在扩展中使用框架。 – shallowThought
好吧。谢谢! – Jan