- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
关闭。这个问题需要更多focused .它目前不接受答案。
想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .
3年前关闭。
Improve this question
如果有人问过并回答过这个问题,我深表歉意 - 重定向到回答这个问题的规范资源会很棒。
我最近收到一个请求,要求提供我为 iOS 维护的项目的构建版本,这不是我非常熟悉的平台。特别是,我不是应用程序开发人员,从未向 App Store 等提交应用程序。该项目提供了标准的 C++11 SDK:一些头文件和一些库,安装为 autoconf 样式 $PREFIX/include
和 $PREFIX/lib
目录。满足请求需要提供针对 iOS 的预构建二进制文件和 header 。假设出于本文的目的,我可以限制为较新的 iOS,例如 iOS 10.2+。
对于非 IOS 开发人员,此 SDK 的典型交付模式传统上是作为 header 和一组动态链接库。该项目是围绕动态链接设计的,并且对许多用户来说效果很好。
然而,我的搜索导致了关于是否有可能在 iOS 上以这种方式使用动态库的信息,以及如果是这样,在打算交付针对 iOS 的 SDK 时正确的交付机制/格式是什么。
我有几个问题:
第一个问题:是否有可能提供一个包含动态库 (dylibs) 的 SDK,以便应用程序开发人员可以针对 SDK 构建他们的应用程序并将 dylibs 与他们的应用程序一起打包,从而产生一些可行的内容以包含在应用程序中店铺。
第二个问题:如果上述问题的答案是"is",是否有具体限制?我已经看到一些信息表明,当且仅当动态库形成一个框架(框架包?)时才有可能。有没有人知道以这种方式发布的任何开源 SDK 可以用作模型?
第三个问题:如果我要发布静态 SDK,我相信代码签名对我作为 SDK 开发人员来说不是问题,因为应用程序开发人员使用他们自己的 key 对最终生成的工件进行签名,这有效,因为他们也在签名他们从静态库中获取的任何位。在我看来,如果有可能提供一个动态 SDK,那么协同设计工件的负担就会转移到我身上。我说的对吗?是否可以提供不同部分具有不同签名 key 的应用程序,就像我签署了 SDK dylib 并且应用程序开发人员签署了他们的应用程序位的情况一样?
第四个问题:将 SDK 作为 dylib 提供是否会对希望针对它构建应用程序的人的可用性产生不利影响?如果是这样,如何?
请注意,我并没有明确询问是否可以使用 dlopen
库,或下载动态代码并使用它等。我的理解是这是禁止的,原因很明显。此处的用例旨在开发的应用程序具有引用 SDK dylib 的显式加载命令。同样,我也不想绕过 Apple 的任何限制:我只是想要一个答案,让我知道尝试将此 SDK 作为一组 dylib 交付是否有意义,或者我是否应该重定向我的生成静态版本的 SDK。
最佳答案
您可以使用
codesign -s <Identity> libyourlib.dylib
dlopen
加载它.这至少应该在技术上起作用。我不确定,但我认为 Apple 可能不会让您的应用通过 App Store。如果这对你来说是最简单的方法,你应该试试这个。注意:Apple 不禁止使用
dlopen
在 iOS 中,他们
even recommend它用于弱链接。
-all_load
将其链接到您的静态库。 .这至少为您提供了一个共享框架。
关于c++ - iOS SDK 是否可以与动态库一起交付,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49889539/
http://www.vex.net/~trebla/haskell/so.xhtml描述如何编译共享库。 关于编译命令: ghc -O2 -dynamic -shared -fPIC -o libE
我想从Rust调用一个C++动态库(* .so),但是我不想从Rust构建它。像这样, cc::Build::new() .file("src/foo.cc") .shared_fla
我想问一下,打包在ear中的war是否可以使用war文件中没有打包的库。我想在文件系统上拥有包含库的目录,部署的 war 文件将从该目录加载库。我还没有找到如何执行此操作的示例。所以我想问一下部署的w
我正在制作一个 C++ 库。在库中,我正在使用另一个静态库中的一些函数(例如 ref.a)。 我想生成一个库文件,mylib.a 或 mylib.so,这样使用我的库的任何程序都不需要链接到静态库 (
我正在尝试在 linux 中为一个使用 opencv 和 tesseract 以及动态链接的程序创建一个共享库 我关注了link我的代码如下 g++ -c Serial_Key.cpp -fPIC -
[编辑:简而言之,问题是:当我链接到一个链接到另一个动态库的动态库时,我是否也必须显式链接到那个?] 我在一个软件中看到了类似的东西。它不起作用,现在我想知道它是否应该起作用。我可以将库“bar”动态
我的项目中有一堆 Dll,使用 VStudio 9.0 编译器,预编译头文件用于我所有的 Dll。 dll 的加载过程由隐式调用程序完成(必须提供.dll、.lib 和 header )。 我通常为每
在我开始开发更多的 c++ 项目之前,我想建立一个良好的多平台环境并使用一些基本形式的修订 (rsync)。为此,我学习了如何构建 makefile(使用 uname 变量)并且还开始在 Window
我测试试,导出dll成功了,但是调用exe编译失败。 后来把声明代码改为了dllexport,调用exe编译成功了,调用也成功。 #pragma once #ifdef YOLOFACE_DLL_AP
我的问题很简单。有什么方法可以反编译、逆向工程 DYLIB 文件(MAC 的动态库,如 Windows DLL)。? 推荐什么程序这样做? 我正在寻找类似 Olly 或 IDA 之类的程序,但适用于
我已将我的应用提交到App Store,但遭到拒绝。我收到一封电子邮件,说: 无效的捆绑包-dylib搜索路径中不存在您的应用程序引用的一个或多个动态库。 我没有使用CocoaPods,所以所有外部框
我在 CPython 中使用 pythonnet,并且我成功安装了它 import clr clr.AddReference('Assembly') 确实有效。 在我的 C# 代码中,如果是成员 pu
GCC 简介有一个例子: $ gcc -Wall -L. main.c -lhello -o hello The option ‘-L.’ is needed to add the current d
我知道当您使用 dlopen() 加载动态 C++ 库时,您可以获得指向该库内函数的指针,但是有没有一种方法可以有效地(性能很重要)另一个怎么办? 我知道我可以在库中调用一个函数(在初始化库时),将一
给程序和库添加版本号和库,有利于维护和升级。 当然你可以在文件名上体现,比如有个程序叫 yun,文件名写为 yun_1.0.2,但这个需要每次手动维护,而且不能100%确保当前程序就是那个版本。所
我正在尝试将我的 C 程序链接到静态库和动态库以查看差异。我怎么做?我制作了自己的 Makefile: # ------ executable rule ----------- app : app.
假设我想创建一个动态库 dynamic.so,但我的代码引用了某个其他静态库 static.a 中存在的函数。自然地,如果我使用 g++ 和 -shared 选项进行编译和链接,dynamic.so
我想使用 alarm函数有一个中断来安排对 fcntl + F_SETLKW 的阻塞调用超时(用于锁定文件获取)。但是,我的代码位于共享库/dylib(主机应用程序的插件)中,alarm 的文档指出这
【目录】 第一个动态库文件 应用程序 第二个动态库文件 错误做法:直接给它改名 正解:patchelf 工具 One More Thing
什么是模块化编程 模块化编程就是我们一个复杂的项目分成很多模块,比如一个单片机项目,就可能分为:主函数模块,液晶显示和数码管显示模块,时间延时模块,温度传感器模块等。而一个程序工程包含多个源文件(.c
我是一名优秀的程序员,十分优秀!