iOS 获取Assets.xcassets中APPIcon中的图片
//在Image Xcassets中appicon的名字已改成AppIcon~x~.png
NSDictionary *infoPlist = [[NSBundle mainBundle] infoDictionary];
NSString *icon = [[infoPlist valueForKeyPath:@"CFBundleIcons.CFBundlePrimaryIcon.CFBundleIconFiles"] lastObject];
UIImage *shareImage= [UIImage imageNamed:icon];
iOS打包静态库,以及静态库包含图片时怎么打包
Xcode 8.3.1
闲话少说直接上图:

1.创建静态库 : 新建一个工程, 此时选择Cooca Touch Static Library
创建Library
2. 我随意将工程命名为 Library, 创建好后应该是这样的

工程里自动生成一对 .h 和.m的文件, 此时 libLibrary.a 显示的是红色
3.实现相关代码, 我只是实现了一个打印 log 的方法, 并暴露给外界调用


4. 一般静态库用于发布, 所以要编辑一下 Scheme, 修改为Release 状态

5.暴露.h 文件

选择 New Headers Phase 之后会出现 :

展开 Headers --> 点击左下角的 ➕号 出现:

选择要暴露的.h文件, 即Library.h, 点击 Add
6.最后一步,打包, 可以打包 真机和模拟器 静态库, 取决于这个地方你选择的是真机还是模拟器

如果, 你导入了其他第三方, 并且也希望将他们的 .h 文件暴露出来 需要将 .h 文件 从 Project 移到 Public 当中, 下面以 AFN 为例, 如图:

选择好 真机或模拟器后 直接运行:

此时, libLibrary.a 就变成了黑色, 如果没变,也没问题,直接 Show in finder

首先可以看见有两个文件夹 : Release-iphoneos 和 Release-iphonesimulator, 前者是真机下编译的静态包, 后者是模拟器下编译的静态包,注意真机测试不能用模拟器静态包, 反之亦然.
libLibrary.a 就是我们打包好的 静态库, Library.h 就是暴露出来的头文件, 见下图 :

或者: 你运行好以后是这个样子 :

最后, 直接将 libLibrary.a ,Library.h 拖到你所要运用 该静态库的 工程里, 导入Library.h 头文件,调用方法即可
那么, 问题来了, 如果 你既想在真机上运行又想在模拟器上运行, 该怎么办呢??????
没错, 可以合并,
打开终端 ,输入 (注意空格):
lipo -create 真机版本.a静态库路径 模拟器版本.a静态库路径 -output 合并后的.a静态库路径
lipo -create /Users/zhuyongjun/Library/Developer/Xcode/DerivedData/Library-cgfjojtxfkuotsbfqrriwyvyrtgk/Build/Products/Release-iphoneos/libLibrary.a /Users/zhuyongjun/Library/Developer/Xcode/DerivedData/Library-cgfjojtxfkuotsbfqrriwyvyrtgk/Build/Products/Release-iphonesimulator/libLibrary.a -output /Users/zhuyongjun/Library/Developer/Xcode/DerivedData/Library-cgfjojtxfkuotsbfqrriwyvyrtgk/Build/Products/libLibrary.a
合并后如图 :

包含图片的 静态库怎么打包 ?
这是需要用到bundle包了,

首先将要用到 的图片放到文件夹里, 再给文件夹重命名为后缀带 .bundle的名字,前面的名称(这里是resource)随意给,此时会提示如图,点击添加后,会出现一个bundle 包,显示包内容,可以看到拖进去的图片

将bundle包拖进静态库的工程,并在Library.m, 实现如下方法:

之后,运行,找到 .a 文件,步骤与不包含图片的静态库一致
调用该接口,需要将图片的 bundle 包一并添加到工程里,如

小礼物走一走,来简书关注我
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架