使用xctool 打包 , 到 越狱机 免除codesign ,到年末寄语

本文介绍如何利用Facebook的开源工具xctool来简化iOS应用的打包过程,特别是针对越狱设备的免签名打包方法,并提供了一种快速生成渠道包的方法。

最近一段时间 ,做sdk 开发,针对的是越狱渠道,导致打包特别多,就一直想找到简单的 打包方式。。 在网上找了下资料,选了facebook 开源项目 xctool ,来试水。  

感谢 https://github.com/facebook/xctool    http://www.cnblogs.com/yesun/archive/2013/08/16/3261839.html   等 开源code 以及大量具有分享精神 dev;



操作系统  10.9.5 


一。 安装xctool

A: 首先下载 homebrew,我简单理解为是一个 管理工具, 从这里 来下载 xctool, 这也是xctool 的 推荐安装方式

1. 点击链接   http://brew.sh/  , 选择安装方式


   如果失败, 请 打开链接 : https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/Installation.md#installation  .. 选择 如下安装方式:




本人就是选择了 第二种安装方式 , 安装完成之后,其目录结构如下;就是~ 目录之下,因为是在 ~目录 下,执行的 mkdir 安装指令,,(上述安装指令,可以通过复制,粘贴在 terminal 上 来执行)




2. 安装完成  homebrew 之后, 打开链接 https://github.com/facebook/xctool ,来安装 xctool  ;; 进入到 homebrew/bin/ 目录下。 执行 



安装完成之后,就会在bin/ 目录下 生成xctool 的 索引,其真实在 Cellar/ 目录下...  所以就在 bin/ 目录下,来执行 xctool 指令。。否则,在其他路径下执行xctool 指令 ,是无效的



二 ..  使用 xctool 打包


1. 输入help 指令,查看 帮助,里面有 build,clean 等常用命令,当然也有我们需要的archive 指令; 




其中用到的base options ,如果是工作区 就使用 -workspace , 若果事project 就是用 -project  , 那么很明显,我们要的archive 指令格式就是  ./xctool  -project  our_project_file_path   -scheme  schemName   archive  -archivePath  coustom_archivePath , 其中 -archivePath  coustom_archivePath 可以省略,默认使用我们 在xcode 中archive 默认配置  ,, xctool 是依据scheme 来执行,而不是 target.. 所以 -scheme  参数 是必须的  , 这一点 在 xctool 的github 上也能够看到。。。


2.。  输入   ./xctool  -project /Users/admins/Desktop/demo/demo/demo.xcodeproj  -scheme demo archive -archivePath ~/Desktop/DemoTestArchive.xcarchive   


3.  最后 ,在 桌面上, 有了这个 archive包




总结: 

我们可以看到 ,其实 xctool 就是从xcode 中读取配置 来build 和 archive, 个人认为,xctool 就是 xcodebulid 和 xcrun 和 二次封装。。 在速度上, 小项目 比如这个demo ,就几M,  几乎感觉不到 差异, 使用xcode 直接打包 和 xctool ,没有拿秒表计算。。  在大项目上,有个 700多M 的项目,,里面大多是 资源。。   使用xcode 得5分钟左右,xctool 也只节省了 几十秒左右的时间 ,没有拿表秒计算,只是这样的感觉... 




三 . 针对越狱机器 免除codesign


1 . 好了,我们打了一个 archive包,双击它打开, 到了我们熟悉的 打包界面 ,一气呵成,导出ipa ,赶紧安装下.




oh,myGod, 一如既往的有 



作为越狱机,怎么能让用户 这样呢,,要是用户不了解这个机制,直接将我们程序给删除了,那不就 啪啪啪了!



2.   ok, 下面我们破除这个门槛   :


a 首先,我们在桌面新建 文件夹 Payload ,

b 右键 我们刚才 在桌面生成 archive 包, 选择 show package contents  -> 选择 Products -> 选择 Applications

c 右键 applications 下的 demo.app 文件 ,选择 show package contents  得到里面 一堆内容, 删除掉 _CodeSignature 文件夹



d. ok ,再将 这个删除过文件夹的 demo.app 移动到 a步骤中生成的 Payload 文件夹中



e.  最后一步,在终端移动到 桌面目录 ,  压缩这个 Payload 文件夹:    zip  -qr   ./CaoLiuZuiAi.ipa    Payload/



这样我们在 桌面上,生成了 我们的 渠道包 ipa 格式,现在这个包,使用苹果安装助手工具等,会发现:  没有越狱的机器 是装不上的。 只有越狱机器能装,最关键的是 ,第一次打开没有弹窗啦。。


也显而易见,,ipa 就是一个 压缩包而已..


四。。补充一点

若果装有 多个 xcode版本,,比如楼主 有 xcode5 和 6 两个版本,,有一些工程 必须使用特定 版本,怎么来切换呢?

xctool 默认使用xcode最新版本, 你可以使用一下指令 更改默认的版本 , swith 后面跟上 你制定版本xcode 的路径

sudo xcode-select -swith /Applications/Xcode.app/




写在结尾 :


热爱生活,是生活 让我们 精彩,感谢路上的人,使他们不让我们孤单。。 可是现实很冷,我也不知道该怎么办。。。  如果这个世界,像程序一样 可控 可预测 , 希望一些梦想,能在新的一年里实现 


 2015-01-30  周五 晚上7:00


        




内容概要:本文档围绕“并_离网风光互补制氢合成氨【复现】并_离网风光互补制氢合成氨系统容量-调度优化分析【Cplex求解】(Matlab代码实现)系统容量-调度优化分析”的Matlab代码实现展开,重点介绍基于Cplex求解器对该系统进行容量配置与调度优化的技术路径。该研究融合风能、太阳能等可再生能源,通过电解水制氢并进一步合成氨,构建绿色能源转化链条,并分别针对并网与离网两种运行模式开展优化建模。文档提供了完整的Matlab代码实现方案,涵盖目标函数设定、约束条件构建、变量定义及Cplex调用流程,旨在实现系统经济性、稳定性和可持续性的综合最优。同时,文中提及多个相关研究方向,如虚拟电厂多时间尺度调度、储能优化、风光预测误差处理等,展示了该领域广泛的科研应用场景和技术延展性。; 适合人群:具备一定电力系统、优化理论和Matlab编程基础的研究生、科研人员及工程技术人员,尤其适合从事新能源系统规划、综合能源系统优化、氢能利用等相关领域的研究人员。; 使用场景及目标:①掌握风光互补制氢合成氨系统的建模方法与优化思路;②学习如何使用Matlab结合YALMIP工具箱调用Cplex求解器解决混合整数线性规划问题;③应用于科研项目复现、论文写作支撑或实际工程项目前期仿真分析;④拓展至虚拟电厂、微网调度、碳交易制下的能源系统优化等关联领域研究。; 阅读建议:建议读者结合文档中提供的网盘资源下载完整代码与案例数据,按照目录顺序逐步学习,重点关注模型构建逻辑与代码实现细节之间的对应关系。在复现过程中应深入理解约束条件的物理意义,并尝试调整参数或扩展模型结构以增强实战能力。同时,可将本案例作为模板迁移至其他能源系统优化问题中,提升科研效率与创新能力。
越狱设备上避免被应用程序检测到,通常涉及到对越狱环境的隐藏和修改。以下是几种常见的方法和技术: ### 修改文件系统路径 某些应用程序通过检查特定文件或路径是否存在来判断设备是否越狱。例如,检查`/Applications/Cydia.app`、`/Library/MobileSubstrate/MobileSubstrate.dylib`、`/bin/bash`、`/usr/sbin/sshd`、`/etc/apt`等路径[^3]。为了绕过这些检测,可以使用工具来隐藏这些文件或路径,使得应用程序无法检测到它们的存在。 ### 使用越狱插件 越狱社区提供了多种插件来帮助用户绕过越狱检测。例如,**Liberty**是一款流行的Cydia插件,它可以帮助许多应用程序绕过越狱检测,从而允许用户正常使用应用内的所有功能,包括那些通常在越狱设备上被禁用的功能,如微信、支付宝的指纹支付等[^1]。 ### 修改应用检测代码 对于开发者或高级用户来说,可以通过逆向工程的方式,找到并修改应用程序中的越狱检测代码。例如,可以使用LLDB等调试工具对应用程序进行脱壳,然后修改检测逻辑,使其在越狱设备上返回非越狱状态[^2]。 ### 使用沙盒逃逸技术 一些高级的绕过技术涉及利用沙盒逃逸漏洞,使应用程序能够在越狱环境中运行而不被检测到。这类技术通常较为复杂,需要深入理解iOS的安全制和漏洞利用。 ### 示例代码 以下是一个简单的示例,展示如何在代码中检查越狱环境,并尝试绕过检测: ```objective-c - (BOOL)isJailbroken { // 检查是否存在越狱特征文件 if ([[NSFileManager defaultManager] fileExistsAtPath:@"/Applications/Cydia.app"]) { return YES; } if ([[NSFileManager defaultManager] fileExistsAtPath:@"/Library/MobileSubstrate/MobileSubstrate.dylib"]) { return YES; } // 更多检查... return NO; } ``` 要绕过这种检测,可以在越狱设备上使用工具隐藏这些文件或路径,或者修改应用程序的检测逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值