Mir*_*ich 8 iphone linker dependencies static
(可能以下问题不是iPhone特有的,除了我们可能会使用框架或动态库的事实.)
我正在为客户构建一个专有的iPhone SDK,以便与他们的网络后端集成.由于我们不希望将源代码分发给客户,因此我们需要将SDK作为静态库进行分发.这一切都运行正常,我已经验证我可以将新iPhone应用程序链接到库并将其安装在设备上.
我担心的是SDK所依赖的第三方库.例如,我们目前正在使用HTTPRiot和Three20(确切的库可能会改变,但这不是重点).我担心如果客户也在他们的应用程序中使用任何这些库(甚至可能是不同的版本),这可能会导致冲突.
这有什么最好的做法?有没有办法从我们自己的静态库中排除依赖库的符号(在这种情况下,客户必须手动链接到我们的SDK以及HTTPRiot和Three20)?还是有其他一些既定的机制?
我试图在易用性和灵活性/兼容性之间取得平衡.理想情况下,客户只需将自己的SDK放入他们的项目并进行最少数量的构建设置更改,但如果它使事情更加健壮,那么让客户单独链接多个库可能更有意义.或者我想我们可以分发多个版本的SDK,包括和不包含第三方依赖,以涵盖这两种情况.
我希望我的问题有意义......主要来自Ruby和Java背景,我不需要长时间处理编译库(传统意义上的)......;)
如果是我,我会准确指定我的库与哪些第三方库进行互操作。然后我会对它们进行测试,记录它们,并可能与发行版中包含的那些特定版本一起交付。
我会担心两件事:
- 当我的客户安装它时,我想确保它“正常工作”。
-我不想保证对这些第三方库的任意未来版本的支持。
为客户提供一个迁移到较新版本的流程是很好的,但如果有任何问题不起作用,那么我希望客户为该开发工作作为增强功能付费,而不是免费修复错误(除非您将其包含在原始许可/支持安排中)。
到那时,问题就变成了确保您的特定版本的第 3 方库可以与客户需要的任何其他内容(在您的情况下是 Web 后端)一起愉快地工作。根据我的经验,这通常是库的一个功能,例如,有些库的设计不是为了让多个版本可以并行运行。