相关疑难解决方法(0)

图书馆?静态的?动态?还是框架?项目在另一个项目内

我有一个现有的iOS应用程序,并希望添加一大块代码,我一直在开发另一个项目,以方便测试.新的块基本上处理将图像保存到各种共享服务等.因为共享代码需要大量的测试和未来的更新,我想知道将代码块合并到我现有的应用程序中的最佳方法是什么.

我不知道它应该是静态库,动态库还是框架,老实说,我不确定区别是什么,或者我应该如何去做它并在Xcode中设置它.

我所知道的是,我需要/想要为共享代码保留单独的测试和更新应用程序,并让主应用程序使用它.

如果你还不能说,我不是一个git wiz.我只是一个简单的单人开发人员.

任何帮助或方向将不胜感激.谢谢!

xcode frameworks static-libraries ios

132
推荐指数
2
解决办法
5万
查看次数

如何以安全的方式为其他开发人员构建框架或库?

我们有一个框架或库的想法,对任何iOS开发人员都非常有帮助.因此,我们正在认真考虑从应用程序开发切换到框架/库开发.

但是当我们想要为库/框架收费时,我们必须以某种方式保护代码.我们如何以这样的方式构建框架,使我们框架的用户看不到源代码,类似于我们如何看不到Apples框架的源代码?我猜他们只用汇编的框架发送头文件和一些奇怪的Unix exe文件.

或者如果不可能使其他iOS开发人员可以使用的编译框架/库而无法复制和粘贴我们的源代码,那么有没有办法混淆Objective-c代码?

iphone frameworks ipad ios

106
推荐指数
3
解决办法
7万
查看次数

将静态库链接到XCode 4中的iOS项目

我有一个项目(AQGridView)编译成一个静态库,但我似乎无法将其添加到我的项目中.

在项目中拖动到我的项目创建一个工作区,如果我尝试libAQGridView.aDerivedData目录链接文件,它不会将其识别为库.我不确定我做错了什么.

这是AQGridView项目.有没有人具体知道如何在XCode 4项目中使用它?

iphone objective-c ios xcode4

74
推荐指数
4
解决办法
8万
查看次数

函数'dlopen()'是私有API吗?

我想使用函数'dlopen()'在iOS平台上调用动态库,是函数'dlopen()'私有API?

dynamic-linking dlopen dynamic-library ios

21
推荐指数
1
解决办法
1万
查看次数

位于文件系统中的iOS框架二进制文件在哪里?

我对iOS上的框架感到困惑.我认为它们基本上是一个包含动态库,标题和资源的目录.

但是在我的设备中,System/Library/Frameworks中的框架目录不包含动态库.这怎么可能?当需要它的应用程序启动时,是否应该将其加载到内存中?

iphone jailbreak ios

12
推荐指数
1
解决办法
3772
查看次数

Appstore评论员是否允许我们在iOS8中使用动态库?

我阅读了很多关于动态库使用的文章,包括这个页面" 你能构建动态库...... ".

正如Apple文档所述," Frameworks for iOS.iOS开发人员现在可以创建动态框架.框架是一组代码和资源,用于封装在多个项目中有价值的功能.框架与扩展完美配合,共享可由两者使用的逻辑主要应用程序和捆绑扩展. ",请参阅此处的完整页面.

考虑到安全问题,我在iOS8之前得到了动态库的拒绝原因,详见" DarkDust的答案 ".但是,它如何在iOS8中"正常工作"?@appstore_reviewers?

无论如何,目前我正在编写一个示例演示应用程序并尝试将其上传到Appstore进行审核,主要功能是从Internet下载框架到客户端并将其下载.希望真正"正常"!

此外,部署目标是iOS7.0,不确定它是否可以正常运行.我对"动态库"和"框架"之间的差异没有那么清楚的理解,我认为它们是相同的,在这个线程中我的意思是"可可触摸框架"可以在Xcode 6中创建.

一些背景:我正在尝试构建一个不包含扩展功能的iOS应用程序,我的可可触摸框架可以轻松扩展而无需上传新版本,因为它来自互联网....

更新在这里发布了一个演示项目 GMDemo,将尝试上传到Appstore.

UPDATE2 在iOS设备中多次尝试后,我无法使用无效代码签名错误来动态我的动态框架.对不起,这里没有好消息.(差点忘了更新这个问题,对不起!BTW)

xcode cocoa-touch objective-c dylib ios

12
推荐指数
1
解决办法
5500
查看次数

Apple是否允许iOS上的Qt作为动态库?

通过Qt 5.1中Android/iOS支持的技术预览,是否有关于部署到Apple应用程序商店的新闻?由于Qt的非商业版本是LGPL许可的,并且应用程序商店规则通常不允许使用dylib,因此Digia或Apple方面都不会例外,但许可谈话不提供任何更多 -关于此事的最新信息.

那么,有没有人试图将动态链接的Qt应用程序推送到商店,或者有任何一方的官方声明?

licensing lgpl dylib ios qt5

10
推荐指数
1
解决办法
5464
查看次数

我可以在我的iPhone应用程序中使用动态库(共享对象)吗?

众所周知,静态库可以在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是否允许这样做?

谁能给我官方回复.

iphone ios

6
推荐指数
1
解决办法
5913
查看次数

dlopen 有没有办法在 iOS 上重新加载 dylib 文件?

正如标题所说......我对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?

dylib dlopen ios

6
推荐指数
1
解决办法
2877
查看次数

为什么我们对 Xcode 中的静态库和框架有这种令人困惑的设置

我读过很多关于静态/动态库/框架的文章。所以我的理解是(如果不准确请告诉我):

Framework = Library + Bundle
Static = Linking at build time
Dynamic = Linking at run time
Run Code Online (Sandbox Code Playgroud)

在Xcode中,我们有“静态库”和“框架”。这提出了一些令人困惑的点:

  • 为什么没有“动态库”选项?
  • 既然我们已经可以静态链接框架,为什么我们还需要“静态库”?(StaticFramework不是=StaticLibrary+Bundle吗?)

xcode ios

5
推荐指数
1
解决办法
990
查看次数