iOS中如何打包一个.dylib静态库以及设置静态库通用

iOS(越狱) 应用脱壳反编译hook教程 (系统ios11.3.1) 为什么会有这边博文? 因为公司原因,领导又让我捡起荒废了一年多的ios,了解对ios应用脱壳以及反编译hook相关知识.相比于安卓的hook来说(想了解安卓hook的可以参考我的另外一篇文章),ios的hook要麻烦的多,前人栽树后人乘凉,希望我的这边文章能给大家对ios的hook有个清晰的认识和思路. 一. 项目需求 本文以很久以前上架的一个练手app为例(app有点烂,将就一下吧,点击传送门)... 阅读详情

静态库有两种形态

  • .dylib
  • .framework

.dylib的展示形式是一个 xxxxx.a,.a是一个纯二进制文件,.framework中除了有二进制文件之外还有资源文件xxxxx.bundle。

.a文件不能直接使用,需要搭配.h文件一起使用,而framework文件可以直接引用

静态库的作用是为了不暴露出比较重要的代码模块

建立项目

先创建一个项目,选择 Framework&Library->Cocoa Touch Static Library,然后Next,如图:
创建项目

然后来到项目中,文件的大致结构如下图:

项目结构

设置内容

其中libstatucLibrary.a就是我们要打包出来的静态库文件,在.h写一个函数方法,在.m里面实现方法:

/**
    在.h文件中暴露出来需要用到的方法
 */
+ (void)statucLibrary;

/**
    在.m文件中实现
 */
+ (void)statucLibrary{

    NSLog(@"打包一个测试静态库");
}
设置适配

此时libstatucLibrary.a文件还是红色的,因为我们还没有编译它,但是在编译之前需要做一个适配,就是适配各个手机版本,入项目中找到buildSeting -> Build Active Architecture Only 设为NO

如果我们设置为YES,即为只编译当前architecture版本,这样编译的速度比较快速,但是抛弃了别的architecture版本,而设置为NO的时候,会默认编译所有版本
如果不配置会报错 “Undefined symbols for architecture i386”

如图:

适配CPU

设置头文件.h

我们光导出了xxxxx.a文件还不够,因为使用.a文件需要搭配.h文件作为连接文件,所以我们需要配置一下.h文件,来targets->Build Phases->Copy Files,设置自己的头文件,将需要暴露出来的.h文件对应的Code Sign On Copy下的选择框勾选上,如果找不到自己的头文件,可以点击+号来找到,如图
设置暴露出来的.h文件

运行项目,生成.a文件

选择一个模拟器,然后Run一下就可以看到libstatucLibrary.a变成了黑色的,我们只需要Show in Finder就可以看到文件所在,如图:
模拟器导出静态库路径


打包一个真机静态库

这个是模拟器倒出来的静态库,在真机运行的时候是会报错Signing for "LibraryTest" requires a development team. Select a development team in the project editor.,是因为导出来的静态库是模拟器的,我们还需要导出一个真机的静态库,然后将两个静态库合并,再此之前,我们需要再打包一个真机的静态库,真机打包静态库在配置的地方和模拟器的没有区别,但是在生成的时候不要选择模拟器,选择Generic Device,然后运行项目,导出来的.a文件就是真机的文件

合并静态库

* 我们不可能在项目中导入两个静态库或者在不同情况下替换不同静态库,所以需要合并两个静态库,我们先生成模拟器静态库和真机静态库,将xxxxx.a文件都导出来,放到两个不同的文件夹中,然后创建一个空的文件夹用来存放合并之后的xxxxx.a文件 *

打开终端,

输入
lipo -create -output /Users/luweikeji/Desktop/通用/TestLibrary.a /Users/luweikeji/Desktop/模拟器/libstatucLibrary.a /Users/luweikeji/Desktop/真机/libstatucLibrary.a

  1. lipo -create -output是合并命令
  2. /Users/luweikeji/Desktop/通用/TestLibrary.a是我要存放的文件夹路径,其中TestLibrary.a是自己给合并之后的静态库取得名字
  3. /Users/luweikeji/Desktop/模拟器/libstatucLibrary.a这个是模拟器打包出来的静态库
  4. /Users/luweikeji/Desktop/真机/libstatucLibrary.a这个是真机打包出来的静态库

导出来之后的,我们再任意模拟器或者真机的.h文件拖入一个测试项目中,然后试用一下,如图:
测试成功

至此,一个简单的静态库打包成功!

ios 自动代码注入dylib脚本并重新打包ipa 自动注入dylib 阅读详情

相关推荐

傻白入门芯片设计,芯片键合(Die Bonding)(四)

傻白入门芯片设计,芯片键合(Die Bonding)(四) 引线键合、倒装芯片键合、管脚贴合技术

qq_46675545的博客 3万+

macOS软件安全分析实战

本课程展示了基于macOS平台的软件分析的原理、步骤以及详细过程。从macOS系统的目录结构的介绍开始,再到具体应用软件结构的介绍,直到简单软件代码的编写,向学员展示了macOS平台软件的基础知识,逻辑和概念,为学员进一步掌握基于苹果平台软件开发和软件安全分析奠定良好的基础。

【ZZULIOJ】郑州轻工业大学oj题解整合

写在前面 关于ZZULIOJ题解 学习编程,想要巩固无非就是刷题或者做项目,然后因为我大一开始是刷郑轻的题目,就想着自己整合一下自己写的题目。既是复习也是笔记吧。 题解(内有题目描述) 1000 整数a+b 1001 植树问题 1002 简单多项式求值 1003 两个整数的四则运算 1004 三位数的数位分离 1005 整数幂 1006 求等差数列的和 1007 鸡兔同笼 1008 美元和人民币 1009 求平均分 1010 求圆的周长和面积 1011 圆柱体表面积 1012 求绝对值 1013 求两点间

蒟蒻乱写的博客 29万+

iOS逆向——砸壳与反编译

近来对iOS逆向十分感兴趣,就在业余时间里自己在上网找了各种资料学习,发现许多资料对于一些细节描述的不够详细,所以也踩了很多坑,我也将自己踩的一些坑总结出来,希望对大家有所帮助。 注:逆向是为了学术\学习的目的而去探索,不为了非法盈利或其他不正当行为而进行的。本文如有侵犯隐私或其他请联系我,我将在第一时间整改或删除。 一、前期准备 1、Mac Book Pro(笔者做iOS开发,暂时没有研究Win...

wqc0721的博客 1万+

【原创】SAP/Oracle 集团企业海外全球化实施注意事项: 一带一路本地化 (持续更新)...

ABC集团SAP的系统平台已经扩展到全球一百来个国家和地区,SAP系统平台的全球实施项目中, 当时是需要支持当地的业务和法律法规的合规要求。   当时客户也是缺乏当地的资源以及对当地法律法规和业务实践的了解,需要团队提供了全球化的支持,通过我们全球产品技术专家充分传递了各区域的本地化支持和实践 而且近年来我们发现一些国家和政府,陆续都在推出一些新的税改和合规的要求,接下来基于这些要求,我们全球...

weixin_34024034的博客 1143

AI 代码生成工具的质量评估体系

基础需求层包括响应速度(Response Time)和界面友好性(UI Friendliness),期望需求层涵盖智能提示(Smart Suggestions)和个性化配置(Personalization),兴奋需求层则涉及多模态交互(Multimodal Interaction)和代码进化(Code Evolution)。在金融领域,代码审计合规性(Compliance Audit)权重应提升至40%,而在Web开发中,API兼容性(API Compatibility)的权重需达到35%。

2503_92418637的博客 3372

ios封装dylib并调用

打开项目文件夹,显示包内容搜索将mainGroup的值再复制一遍给productRefGroup,之后保存文件可以看到xcode显示出Products5. 找到dylib的文件地址,之后使用。

qq_44974089的博客 2625

[AHK]获取通达信软件上的股票代码

PC上的股票交易软件的自动止损、自动下单等功能比较弱,不如期货交易软件。 自力更生,程序员都是自己打造工具。 根据IPO模型(Input 输入,Process处理,Output输出),为了方便自动化首先要获取当前交易软件上浏览的股票代码。 截图再OCR显然太麻烦,通过Winspy工具查看下交易软件自带功能的消息号(33780),大家记住这个号码! 下面在用AutoHotkey作为变成语...

liuyukuan的专栏 1万+

xcode 制作和使用IOS静态库.a文件 +制作dylib

.a静态编译库 编译库的分类 静态库: .a 文件:纯二进制文件,需要配合 .h 文件一起使用,通过 .h 文件引用库里面的内容 .framework 文件:包含二进制文件 链接时,静态库会被完整地复制到可执行文件中,例如iOS程序打包的时候会包含所有引用的静态库 动态库: .dylib文件: 和静态库一样也是纯二进制文件 .framework 文件:和静态库的 framework 一样,只是...

Tesi1a的充电桩 5047

基于大模型最大化电力交易收益(策略与代码实践)

新一代电力交易系统正借助大型语言模型(LLM)实现智能化转型。面对可再生能源占比提升带来的市场波动性加剧,传统交易策略已难以应对。LLM通过多模态能力,能够实时处理海量异构数据,包括政策公告、设备检修信息、天气报告等非结构化数据,构建更精准的电力市场预测模型。智能交易系统主要包含三大核心模块:市场情报感知与理解器、融合LLM的短期电价预测模型和自适应交易策略生成器。这些模块协同工作,可在几分钟内完成事件分析、价格预测和策略生成,显著提升交易效率。系统还能实现跨市场套利和动态风险管理,但需注意数据质量、模型验

专注AI大模型,软件混淆,授权 1254

基于simulink的BMS系统中电池单体故障隔离与恢复建模

本文介绍了使用Simulink构建BMS电池单体故障诊断与容错控制模型的方法。主要内容包括:1)搭建12串锂电池组模型;2)实现单体故障注入(过压、断线等);3)设计故障诊断与隔离模块(采用Stateflow状态机);4)开发恢复判断逻辑(需满足电压、温度等条件);5)系统监控与仿真设置。文章还提供了工程实践建议,如防环流设计、通信冗余等,并指出进阶方向(多故障处理、AI预警等)。该模型适用于新能源汽车、储能系统的BMS设计,可提高系统可靠性和安全性。

xiaoheshang_123的博客 140

iOS 动态库与静态库的区别(framework,.a,.dylib)

使用静态库的好处1,模块化,分工合作 2,避免少量改动经常导致大量的重复编译连接 3,也可以重用,注意不是共享使用使用动态库的好处1使用动态库,可以将最终可执行文件体积缩小 2使用动态库,多个应用程序共享内存中得同一份库文件,节省资源 3使用动态库,可以不重新编译连接可执行程序的前提下,更新动态库文件达到更新应用程序的目的。 从1可以得出,将整个应用程序分模块,团队合作,进行分工,影响比较

jichw的专栏 8202

不藏了!Wireshark 命令、捕获、过滤器大全分享给你

Wireshark,这款广受欢迎的开源网络协议分析工具,堪称网络管理员、网络安全专家和网络爱好者的“显微镜”!它可以帮助我们捕获网络中的数据包,并提供详细的解码和分析能力。本文将为您全面剖析 Wireshark 的强大功能,从基础到高级,让你快速掌握这个神器!💡Wireshark 是一款功能强大的网络协议分析器,最早由 Gerald Combs 于 1998 年开发,经过多年发展,已成为网络诊断和分析的首选工具。

网络技术联盟站 725

iOS-Xcode制作静态库

1.首先我想要将为Unity写的iOS插件制作成静态库.a文件. 1.1首先建一个项目TestLib,选择Cocoa Touch Static Libra如下: 将里面的.h和.m文件删掉,将我自己写得插件.m/.mm和.h文件拷贝到工程中, 可能出现问题0:不认识UnitySendMessage()方法; 解决:需要声明该方法: extern “C” { void Unit

学贵有恒 1091

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

iOS 中的静态库与动态库

如果你经常困惑 iOS 开发中的静态库和动态库的作用与区别, 那么这篇文章可以为你解惑 himg himg 静态库 (Static Libraries) 静态库简单的理解是多个目标文件 (object file, 以 .o 为后缀) 的打包集合. 静态库的存在形式: Mac/iOS: .a 或封装成 .frameworkLinux: .aWindows: .lib ❝ 查看 object file 格式: objdump -macho -section-headers /bin/ls 优势 提供的是

q752933833的博客 1105

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

iOS开发中的静态库、动态库、framework

日常开发中会用到各种各样的库,系统提供的库,第三方库等。库到底是什么?有哪些类型的库? 库可以理解成一个可执行文件,加上相应的头文件之后,开发者就可以直接使用。项目中,可以将一些变动很小的基础功能进行封装,打包成库,这样一方面可以减少编译时间(因为库是已经编译好的),另一方面,也可以隐藏代码的实现。 iOS开发中,库的类型有三种:静态库、动态库、framework。 静态库 静态库全称...

TuGeLe的博客 1850

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

ios 静态库(.a和.framework) 动态库(.dylib和.framework)

ios 静态库(.a和.framework) 动态库(.dylib和.framework)

6305

iOS动态库和静态库的运用

概念认识 什么是库 库是共享程序代码的方式,库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。在开发过程中,一些核心技术或者常用框架,出于安全性和稳定性的考虑,不想被外界知道,所以会把核心代码打包成库,只暴露出头文件以供使用。 库分为静态库和动态库两种。 静态库:链接时完整地拷贝至可执行文件中,使可执行文件体积变大。如果多个APP都使用了同一个静态库,那么每个APP都会拷贝一份。 动态库:链接时不拷贝至可执行文件中,可执行文件只会存储指向动态库的引用。程序运行时由系统动态加载到内存中,系

Johncahong的博客 5166

iOS中的静态库与动态库,区别、制作和使用

本文转载收集自:iOS_小松哥:https://www.jianshu.com/p/90f5ec723175 如果我们有些功能要给别人用,但是又不想公开代码实现,比如高德地图、第三方登录分享等等,这时候我们就要打包成库了。库分静态库和动态库两种: 静态库:以.a 和 .framework为文件后缀名。 动态库:以.tbd(之前叫.dylib) 和 .framework 为文件后...

weixin_33700350的博客 324

iOS 静态库SDK制作过程嵌套第三方静态库

iOS 静态库SDK制作过程嵌套第三方静态库 公司需要在静态库sdk里面添加微信支付,支付宝支付,做成接口模式,给别人去使用,整个过程中呢各种问题不断,那么下面我挑一些比较突出的问题和大家分享,希望能够帮助到有需要的人,因为自己在研究的过程也是想得到一些帮助,哈哈闲话不多说,让我们直奔主题! 一,相关概念 1.静态库的形式有.a和.framework,类似于支付宝AlipaySDK.

aiwj168的博客 6423

ios framework 查看symbol_iOS 中的静态库与动态库

如果你经常困惑 iOS 开发中的静态库和动态库的作用与区别, 那么这篇文章可以为你解惑静态库 (Static Libraries)静态库简单的理解是多个目标文件 (object file, 以 .o 为后缀) 的打包集合. 静态库的存在形式:Mac/iOS: .a 或封装成 .frameworkLinux: .aWindows: .lib❝查看 object file 格式: objdump -m...

weixin_39785858的博客 1705

iOS 静态库的制作

按照公司的想法 要开发一款SDK,于是就抽空学习一下静态枯的制作过程. 在IOS中有静态库和动态库的区分,下面我们就来详细介绍一下. 一.静态库和动态库的详细介绍. 我们平时的工程中或多或少都要引入第三方的SDK,至少引用过系统的framework。其实这些SDK和Framework都属于库,库又分为静态库和动态库。我们平时导入的第三方SDK有的事Framework,有的是 .a。...

ddiv24492的博客 177

知识积累之:iOS里的动态库和静态库(0)

最近在自己封装openssl库的基础上做开发,但是发现与现有的一些模块依赖的静态库有冲突,最后使用封装动态库(framework)解决了这一问题,现将学到的知识记录下来。 简介: 动态库形式:.dylib和.framework 静态库形式:.a和.framework framework为什么既是静态库又是动态库? 系统的.framework是动态库,我们自己建...

qq_34241037的博客 222

静态库与动态库的区别

静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用。 什么时候我们会用到库呢?一种情况是某些代码需要给别人使用,但是我们不希望别人看到源码,就需要以库的形式进行封装,只暴露出头文件。另外一种情况是,对于某些不会进行大的改动的代码,我们想减少编译的时间,就可以把它打包成库,因为库是已经编译好的二进制了,编译的时候只需要 Link

sheng_bin的博客 2万+

iOS 打包静态库,看这篇就够了

来源:夜_阑珊  链接:http://www.jianshu.com/p/13bf46df9387 一、前言 前段时间看的一本书上说:“隔着一段距离看,很多有趣的知识看起来都很唬人。”比如说这篇我要总结的“静态库知识”,在我初出茅庐的时候着实觉得那些后缀名为“.frameworke”、“.a”、“.dylib”的文件很神秘,很高冷。那时我虽然知

cleven 754

iOS研发之静态库的封装

一、简单介绍 1.什么是库?   库是程序代码的集合,是共享程序代码的一种方式   2.库的分类   根据源代码的公开情况,库可以分为2种类型   (1)开源库     公开源代码,能看到具体实现     比如SDWebImage、AFNetworking     (2)闭源库     不公开源代码,是经过编译后的二进制文件,看不到具体实现     主要分为:静态库、动态库

Paddy的个人博客 515
上一篇: iOS出现(linker command failed with exit code 1)错误总结
下一篇: ios中基于科大讯飞SDK进行人脸装扮
青梅煮码
博客等级 码龄11年 16粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值