我有一个现有的iOS应用程序,并希望添加一大块代码,我一直在开发另一个项目,以方便测试.新的块基本上处理将图像保存到各种共享服务等.因为共享代码需要大量的测试和未来的更新,我想知道将代码块合并到我现有的应用程序中的最佳方法是什么.
我不知道它应该是静态库,动态库还是框架,老实说,我不确定区别是什么,或者我应该如何去做它并在Xcode中设置它.
我所知道的是,我需要/想要为共享代码保留单独的测试和更新应用程序,并让主应用程序使用它.
如果你还不能说,我不是一个git wiz.我只是一个简单的单人开发人员.
任何帮助或方向将不胜感激.谢谢!
我们有一个框架或库的想法,对任何iOS开发人员都非常有帮助.因此,我们正在认真考虑从应用程序开发切换到框架/库开发.
但是当我们想要为库/框架收费时,我们必须以某种方式保护代码.我们如何以这样的方式构建框架,使我们框架的用户看不到源代码,类似于我们如何看不到Apples框架的源代码?我猜他们只用汇编的框架发送头文件和一些奇怪的Unix exe文件.
或者如果不可能使其他iOS开发人员可以使用的编译框架/库而无法复制和粘贴我们的源代码,那么有没有办法混淆Objective-c代码?
我有一个项目(AQGridView)编译成一个静态库,但我似乎无法将其添加到我的项目中.
在项目中拖动到我的项目创建一个工作区,如果我尝试libAQGridView.a从DerivedData目录链接文件,它不会将其识别为库.我不确定我做错了什么.
这是AQGridView项目.有没有人具体知道如何在XCode 4项目中使用它?
我想使用函数'dlopen()'在iOS平台上调用动态库,是函数'dlopen()'私有API?
我对iOS上的框架感到困惑.我认为它们基本上是一个包含动态库,标题和资源的目录.
但是在我的设备中,System/Library/Frameworks中的框架目录不包含动态库.这怎么可能?当需要它的应用程序启动时,是否应该将其加载到内存中?
我阅读了很多关于动态库使用的文章,包括这个页面" 你能构建动态库...... ".
正如Apple文档所述," Frameworks for iOS.iOS开发人员现在可以创建动态框架.框架是一组代码和资源,用于封装在多个项目中有价值的功能.框架与扩展完美配合,共享可由两者使用的逻辑主要应用程序和捆绑扩展. ",请参阅此处的完整页面.
考虑到安全问题,我在iOS8之前得到了动态库的拒绝原因,详见" DarkDust的答案 ".但是,它如何在iOS8中"正常工作"?@appstore_reviewers?
无论如何,目前我正在编写一个示例演示应用程序并尝试将其上传到Appstore进行审核,主要功能是从Internet下载框架到客户端并将其下载.希望真正"正常"!
此外,部署目标是iOS7.0,不确定它是否可以正常运行.我对"动态库"和"框架"之间的差异没有那么清楚的理解,我认为它们是相同的,在这个线程中我的意思是"可可触摸框架"可以在Xcode 6中创建.
一些背景:我正在尝试构建一个不包含扩展功能的iOS应用程序,我的可可触摸框架可以轻松扩展而无需上传新版本,因为它来自互联网....
更新 我在这里发布了一个演示项目 GMDemo,将尝试上传到Appstore.
UPDATE2 在iOS设备中多次尝试后,我无法使用无效代码签名错误来动态我的动态框架.对不起,这里没有好消息.(差点忘了更新这个问题,对不起!BTW)
通过Qt 5.1中Android/iOS支持的技术预览,是否有关于部署到Apple应用程序商店的新闻?由于Qt的非商业版本是LGPL许可的,并且应用程序商店规则通常不允许使用dylib,因此Digia或Apple方面都不会例外,但许可谈话不提供任何更多 -关于此事的最新信息.
那么,有没有人试图将动态链接的Qt应用程序推送到商店,或者有任何一方的官方声明?
众所周知,静态库可以在Iphone应用程序中很好地工作,并且您的应用程序可以很容易地被IOS App Store批准
不幸的是,我现在使用的两个静态库有一些C函数和变量.
所以我将它们编译成*.dylib(动态库),并将它们复制到XCode中的"Bundle Resources".
dylib_handle = dlopen(dylib_path_in_resource_bundle, RTLD_LAZY);
func = dlsym(dylib_handle, "func");
// invoke func();
Run Code Online (Sandbox Code Playgroud)
这在模拟器和Ipad(当然,不同的动态库)中运行良好.
我注意到有人说Iphone应用程序不支持任何第三方动态库,我的应用程序将被拒绝.(看这里)
但我仔细阅读了"App Store评论指南",我发现没有任何项目符合我的问题.
我现在很困惑!
iphone应用程序是否支持动态库?IOS AppStore是否允许这样做?
谁能给我官方回复.
正如标题所说......我对dlopen(). 我知道应用商店不允许这样做,但我对 iOS 上的这个感到好奇。
我的问题是我可以创建一个 .dylib 文件,我可以在运行时使用以下代码加载这个文件
char *dylibPath = "/Applications/myapp.app/mydylib2.dylib";
void *libHandle = dlopen(dylibPath, RTLD_NOW);
if (libHandle != NULL) {
NSString * (*someMethod)() = dlsym(libHandle, "someMethod");
if (someMethod != NULL) {
NSLog(someMethod());
}
dlclose(libHandle);
}
Run Code Online (Sandbox Code Playgroud)
这是取自这里。
我遇到的问题是,如果我更改 mydylib2.dylib,dlopen则不会加载重新编译的 .dylib 文件。相反,它解析旧版本的函数someMethod。
例如,如果someMethod第一次返回@"Hello"并且我将其更改为@"Hello World"并重新编译,则上面的代码将始终返回,@"Hello"直到我在模拟器中重新启动应用程序。
有谁知道为什么会这样?并建议一个解决方法,以便可以在运行时重新加载这个 .dylib?
我读过很多关于静态/动态库/框架的文章。所以我的理解是(如果不准确请告诉我):
Framework = Library + Bundle
Static = Linking at build time
Dynamic = Linking at run time
Run Code Online (Sandbox Code Playgroud)
在Xcode中,我们有“静态库”和“框架”。这提出了一些令人困惑的点:
ios ×10
iphone ×4
dylib ×3
xcode ×3
dlopen ×2
frameworks ×2
objective-c ×2
cocoa-touch ×1
ipad ×1
jailbreak ×1
lgpl ×1
licensing ×1
qt5 ×1
xcode4 ×1