【问题标题】:How can I create static library and can add just .a file on any project in ios如何创建静态库并且可以在 ios 的任何项目上仅添加 .a 文件
【发布时间】:2013-07-09 11:42:19
【问题描述】:

如何创建静态库,并且可以在 ios 中的任何项目上仅添加 .a 文件。

我试过这样做,但做不到。

提前致谢

【问题讨论】:

标签: ios xcode ios4 static-libraries objective-c++


【解决方案1】:

如果你想创建静态库,请参考链接http://jaym2503.blogspot.in/2013/01/how-to-make-universal-static-library.html

第 1 步:创建一个新项目,将其命名为“Logger”

第 2 步:创建类

您可以创建任意数量的类,在我们的教程中,我们将创建一个名为“Logger”的类。 所以,现在我们的资源中应该有两个文件。 1.记录器.h 2. 记录器.m

第 3 步:将一些有用的代码放入类中

第 4 步:创建新目标

从文件菜单创建新目标。

新目标 选择 Cocoa Touch 静态库

第 5 步:将文件添加到编译资源

选择静态库的“Logger”目标 转到构建阶段 在 Complied Sources 部分,添加所有 .m 和 .mm 文件。 在 Copy Files 部分,添加所有 .h 文件和资源文件。

构建阶段

第 6 步:使用静态库目标编译项目

为 iOS 设备编译项目 为模拟器编译项目 您可以在 build 文件夹中找到两个不同的 .a 文件。

查找 .a 文件

第 7 步:使静态库通用

您现在可以找到两个不同的库,一个用于模拟器,一个用于 iOS 设备。

创建一个新文件夹并将其命名为 LoggerMerge。 将Debug-iphoneos文件夹的libLogger.a文件复制到“LoggerMerge”,重命名为libLogger_device.a 将Debug-iphonesimulator文件夹的libLogger.a文件复制到“LoggerMerge”重命名为libLogger_simulator.a 使用终端打开 LoggerMerge 文件夹 在命令下方开火 lipo -create "libLogger_simulator.a" "libLogger_device.a" -output "libLogger.a"

现在,您可以在 LoggerMerge 文件夹中找到 libLogger.a,这是通用静态库文件。 现在,您只需要一件事就是标题,请参见上面的屏幕截图,在两个构建文件夹中都有一个名为 include 的文件夹。只需从该文件夹中复制头文件即可。

第 8 步:测试静态库

创建新项目,将其命名为 TestLogger 导入libLogger.a和头文件 将头文件“Logger.h”导入任何你想使用的地方 现在,使用这个 Logger 类作为默认做法。 在我们的例子中,[Logger log:@"Test String"]; 在模拟器和设备中运行项目 而已!!你有自己的静态库!!

【讨论】:

  • 我无法打开您发送的链接。
  • 我找不到 .a 文件。它应该在哪里。编译后,products文件夹下的库还是红色的,为什么?
  • 呼,没什么卡哈尔。只需连接设备,它就会改变。
  • 我的设备已经连接。但它仍然具有相同的红色
【解决方案2】:

第 1 步:启动一个新的静态库项目

打开 XCode 并开始一个新项目。在iOS下,选择Library,“Cocoa Touch Static Library”说它为“staticlibrary”。这将为我们创建一个不错的新项目,该项目构建一个.a 文件。

第 2 步:编写静态库代码 首先我们需要添加一些文件。将一个新的 NSObject 子类添加到您的项目中,并将其命名为 StaticClass。然后在这些文件中编写一些有用的代码。

第 3 步: 构建和分发您的库 一旦你对你的库感到满意,只需在 XCode 中构建它。显然,不要构建和运行,因为你无法运行它(同样,除非你有一个测试套件)。现在,查看 XCode 中的 Products 组,您应该会看到一个名为 lib(libraryName).a 的文件。在我们的例子中,它是libstaticlibrary.a

右键单击该文件并选择“Reveal In Finder”。将此文件拖到您创建的新文件夹中,您将在其中捆绑所有库文件。现在,对所有 .h 文件执行相同操作。在我们的例子中,只需将StaticClass.h 复制到这个新目录中。您的目录结构现在应该如下所示:

FolderName
|- libstaticlibrary.a
|-  StaticClass.h

现在您可以压缩此文件夹并以数百万美元的价格卖给潜在的 iOS 开发者!

第 4 步: 在新项目中链接您的库 因此,现在您已经构建了闪亮的新静态库,是时候在另一个应用程序中对其进行测试了。

创建一个新的基于视图的项目(或其他无关紧要的项目)。将其命名为测试。

现在,只需将此文件夹拖到项目中,XCode 就会自动设置所有链接。当提示复制时,我通常会说是,但您可以根据您打算如何使用库来做任何您想做的事情。如果您有多个项目共享一个库,有时仅链接而不是复制会更有益。它确保他们都使用最新的版本。

您现在应该会在新项目中看到 .a 文件以及头文件。

第 5 步:使用静态库代码

现在所有的链接都设置好了,您只需像使用任何其他类一样使用您的库。

进一步说明 http://www.raywenderlich.com/41377/creating-a-static-library-in-ios-tutorial希望本教程对你有所帮助。

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
  • 欢迎来到 Stack Overflow!始终欢迎提供潜在解决方案的链接,但请add context around the link,以便您的其他用户知道它是什么以及为什么会出现。始终引用重要链接中最相关的部分,以防目标站点无法访问或永久离线。考虑到仅仅是指向外部站点的链接Why and how are some answers deleted? 的一个可能原因。
  • 非常感谢您帮助我,因为我是堆栈溢出的新手,我不知道陷阱我已根据您的要求更新了我的答案
  • @yashwanth777 很高兴帮助新用户浏览网站。并感谢您为这个答案做出贡献。请查看help center,它包含许多有见地的部分,可帮助您充分利用 Stack Overflow。祝你好运!
【解决方案3】:

Objective-C 消费者 -> Objective-C 静态库

Xcode 版本 10.2.1

创建 Objective-C 静态库

关注Create Objective-C static library版块

Objective-C 消费者与 Objective-C 静态库

关注Swift consumer with Objective-C static library版块

将模块导入Objective-C客户端代码[module_name]

@import module_name;

//or umbrella or public header
#import <module_name/module_name.h>

[More examples]

【讨论】:

    猜你喜欢
    • 2023-03-21
    • 2012-09-01
    • 1970-01-01
    • 2012-01-29
    • 2023-04-08
    • 2017-12-08
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    相关资源
    最近更新 更多