【问题标题】:Objective-C/iOS - Is it possible to compile a private framework into another private framework?Objective-C/iOS - 是否可以将私有框架编译成另一个私有框架?
【发布时间】:2017-08-08 05:40:02
【问题描述】:

几个朋友在 Objective-c 中创建了一些私有框架,我想创建自己的私有框架,使用他们发送给我的私有框架作为他们的封装。这可能吗?我想将我的框架提供给其他人,他们不知道他们正在使用其他框架,因为我的框架利用了不同框架之间的所有共性,以便更容易执行某些操作。

Framework A
   action 1 
   action 2

Framework B 
   action 1 
   action 2

 My framework 
   action 1 chooses to use action 1 from either 
   framework provided by the data passed into the method
   action 2 chooses to use action 2 from either 
   framework provided by the data passed into the method

【问题讨论】:

  • 是的。到目前为止,您尝试了什么?您在哪里遇到了问题?
  • @AminNegm-Awad 我试图在不暴露标题的情况下仅包含它,但是当我编译时,我收到有关文件丢失的错误。
  • 您必须导出标题。
  • 那么,有没有办法隐藏标题?如果没有,他们会知道它正在使用几个不同的其他框架吗?还是他们只是知道他们在使用我的?
  • 只要你想让用户有机会使用框架中的某些东西,你就必须在标题中显示声明。但是,为什么要隐藏它们?

标签: ios objective-c frameworks


【解决方案1】:

所以,我发现这是一个代码签名问题。使用 MyFramework 的应用程序会引发错误,因为它没有对嵌套框架进行签名。为此,您必须通过运行 shell 脚本告诉使用 MyFramework 的应用程序在构建阶段对嵌套框架进行代码签名:

pushd ${TARGET_BUILD_DIR}/${PRODUCT_NAME}.app/Frameworks/MyFramework.framework/Frameworks
for EACH in *.framework; do
   echo "-- signing ${EACH}"
   /usr/bin/codesign --force --deep --sign 
"${EXPANDED_CODE_SIGN_IDENTITY}" --entitlements 
"${TARGET_TEMP_DIR}/${PRODUCT_NAME}.app.xcent" --timestamp=none $EACH
done
popd

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-06
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 2015-05-19
    • 2019-11-14
    相关资源
    最近更新 更多