ipa下载(ipa下载到手机怎样安装)

(点击上方公众号,可快速关注)

来源:伯乐在线专栏作者 – 一缕殇流化隐半边冰霜

链接:http://ios.jobbole.com/88135/

前言

刚刚接触iOS的时候,我就一直很好奇,模拟器上面能不能直接安装app呢?如果可以,我们就直接在模拟器上面聊QQ和微信了。直到昨天和朋友们聊到了这个话题,没有想到还真的可以给模拟器“安装”app!

一.应用场景

先来谈谈是什么情况下,会有在模拟器上安装app的需求。

在一个大公司里,对源码的管理有严格的制度,非开发人员是没有权限接触到源码的。对苹果的开发证书管理也非常严格,甚至连开发人员也没有发布证书,证书只在持续集成环境或者Appstore产线里面,或者只在最后打包上架的人手上。

那么现在就有这样的需求,开发人员搭建好UI以后,要把开发完成的Alapha版给到UI设计师那边去评审,看看是否完全达到要求,达不到要求就需要打回来重做。

一般做法就是直接拿手机去安装一遍了。直接真机看效果。不过要是设计师和开发不在同一个地方的公司,一个在北京一个在上海,这种就没法安装了。源码又无法导出给设计师,让他运行一下Xcode跑一下模拟器。打release的ipa通过扫码安装,如果公司大了,UDID全部都用完了,也没法安装。这个时候就比较麻烦了。(一般也没人遇到这么蛋疼的事情吧)

那么现在就有给模拟器安装app的需求了,那开发人员如何能把开发版的app给打包出来给其他模拟器安装呢?

二.解决办法

解决思路,想要别人的模拟器运行起我们开发的app,最简单的办法就是把我们DerivedData的数据直接拷贝到别人模拟器上面,就可以了。当然还要考虑到设计师也许并不会一些命令行命令,我们的操作越傻瓜越好。

1.拷贝本地的DerivedData里面的debug包

Mac的拷贝命令有cp和ditto,建议用ditto进行拷贝工作。

Usage: ditto[]src[…src]dst

are any of:

-hprint full usage

-vprintaline of status foreachsource copied

-Vprintaline of status forevery file copied

-Xdonotdescend into directories withadifferent device ID

-ccreate an archive at dst(by defaultCPIO format)

-xsrc(s)are archives

-zgzip compress CPIO archive

-jbzip2 compress CPIO archive

-karchives are PKZip

–keepParent parentdirectory name src isembedded indst_archive

–arch archVal fat files will be thinned toarchVal

multiple-arch options can be specified

archVal should be one of”ppc”,”i386″,etc

–bom bomFile only objects present inbomFile are copied

–norsrc don’t preserve resource data

–noextattr don’tpreserve extended attributes

–noqtn don’t preserve quarantine information

–noacl don’tpreserve ACLs

–sequesterRsrc copy resources via polite directory(PKZip only)

–nocache don’t use filesystem cache for reads/writes

–hfsCompression compress files at destination if appropriate

–nopreserveHFSCompression don’tpreserve HFS+ compression when copying files

–zlibCompressionLevel num usecompression level’num’when creatingaPKZip archive

–password request password forreading from encrypted PKZip archive

Ditto比cp命令更好的地方在于:

它在复制过程中不仅能保留源文件或者文件夹的属性与权限,还能保留源文件的资源分支结构和文件夹的源结构。

此命令能确保文件或者文件夹被如实复制。

如果目标文件或者文件夹不存在,ditto将直接复制过去或创建新的文件和文件夹,相反,对于已经存在的文件,命令将与目标文件(夹)合并。

ditto还能提供完整符号链接。

那么我们就拷贝出本地的debug包

ditto-ck–sequesterRsrc–keepParent`ls-1-d-t~/Library/Developer/Xcode/DerivedData/*/Build/Products/*-iphonesimulator/*.app| head-n1`/Users/YDZ/Desktop/app.zip

有几点需要说明的:

上面命令最后一个路径(/Users/YDZ/Desktop/app.zip),这个是自定义的,我这里举的例子是直接放在桌面。除了这里改一下路径,前面的都不需要改,包括 * 也都不用改。

再来说一下命令里面的 * 的问题。当我们打开自己本地的~/Library/Developer/Xcode/DerivedData/ ,这个路径下,会发现里面装的都是在我们本地模拟器上运行过的app程序。前面是app的Bundle Identifier,横线后面是一堆字符串。上面的ditto里面带 * 的那个路径是为了动态匹配一个地址的,* 在这里也是一个通配符。后面的head说明了匹配的规则。head其实是找出最近一次我们运行模拟器的app的路径。

为了保证我们打包是正确的,建议先运行一下我们要打包的app,一般我们Scheme里面的Run都是debug product(如果这里有更改,那就改成对应debug的Scheme),确保是我们要给设计师审核的app,之后再运行这个ditto命令。

2.把debug包拷贝到另一个模拟器中

我们运行完上面的ditto命令会产生一个zip文件,解压出来,会得到一个app文件,这个就是debug包了。debug包就是我们要给设计师的app包了。

如何能让设计师傻瓜式的安装这个app呢?

这里介绍一个命令行工具,ios-sim命令行工具。

ios-sim 是一个可以在命令控制iOS模拟器的工具。利用这个命令,我们可以启动一个模拟器,安装app,启动app,查询iOS SDK。它可以使我们像自动化测试一样不用打开Xcode。

不过 ios-sim 只支持Xcode 6 以后的版本。

安装ios-sim

$npm install ios-sim-g

说明文档:

Usage: ios-sim[–args…]

Commands:

showsdks List the available iOS SDK versions

showdevicetypes List the available device types

launch Launch the application at the specified path on the iOS Simulator

start Launch iOS Simulator without an app

install Install the application at the specified path on the iOS Simulator without launching the app

Options:

–version Print the version of ios-sim

–help Show thishelp text

–exit Exit after startup

–log The path where log of the app running inthe Simulator will be redirected to

–devicetypeid The id of the device type that should be simulated(Xcode6+).Use’showdevicetypes’tolist devices.

e.g”com.apple.CoreSimulator.SimDeviceType.Resizable-iPhone6, 8.0″

Removed inversion4.x:

–stdout The path where stdout of the simulator will be redirected to(defaults tostdout of ios-sim)

–stderr The path where stderr of the simulator will be redirected to(defaults tostderr of ios-sim)

–sdk The iOS SDK version torun the application on(defaults tothe latest)

–family The device type that should be simulated(defaults to`iphone’)

–retina Startaretina device

–tall Incombination with–retina flag,start the tall version of the retina device(e.g.iPhone5(4-inch))

–64bitIncombination with–retina flag andthe–tall flag,start the64bitversion of the tall retina device(e.g.iPhone5S(4-inch64bit))

Unimplemented inthisversion:

–verbose Set the output level toverbose

ipa下载(ipa下载到手机怎样安装)

–timeout The timeout time towait foraresponse from the Simulator.Defaultvalue: 30seconds

–args All following arguments will be passed on tothe application

–envAplist file containing environment key-value pairs that should be set

–setenv NAME=VALUE Set an environment variable

用法不难

ios-sim launch/Users/YDZ/Desktop/app.app–devicetypeid iPhone-6s

其中,/Users/YDZ/Desktop/app.app这个是设计师收到app之后的路径。–devicetypeid参数后面是给定一个模拟器的版本。

只需要把上面的命令发给设计师,无脑粘贴到命令行,装好app的模拟器就会自动启动,打开app了。

三.额外的尝试

好奇的同学肯定不会满足只给模拟器安装debug包吧,既然可以不用代码就可以给模拟器安装app,那我们能安装release包么?我好奇的尝试了一下。

先从Appstore上面下载最新的微信,把ipa后缀改成zip,解压,把Payload文件夹里面的“WeChat”取出来,然后运行ios-sim命令。

ipa下载(ipa下载到手机怎样安装)

结果微信确实是安装到了模拟器了。不过一点击app,看见了月亮界面就退出了。控制台打印了一堆信息。

此处信息过长,可到原文查看

仔细看了一下log,根本原因还是因为

com.apple.CoreSimulator.SimDevice.D6BD3967-9BC4-4A8D-9AD0-23176B22B12A.launchd_sim[19096](UIKitApplication:com.tencent.xin[0xdf6d][19774]): Program specified by service does notcontain one of the requested architectures:

Unable toget pid for’UIKitApplication:com.tencent.xin[0xdf6d]’: No such process(err3)

因为release包里面architectures打包的时候不包含模拟器的architectures。debug包里面就有。所以release就没法安装到模拟器了。

由于笔者逆向方面的东西没有研究,所以也无法继续下去了。不知道逆向技术能不能把release包破壳之后能不能转成debug包呢?如果能转成debug包,通过ios-sim命令应该也是可以直接安装到模拟器的。

至此,ios-sim给模拟器安装app就尝试到此了。因为只能给模拟器安装debug包,所以在题目上额外给安装加了双引号,并不是所有的app文件都可以安装到模拟器。

请大家多多指教。

专栏作者简介( )

一缕殇流化隐半边冰霜 :已退役ACMer,现役iOS工程师。博观而约取,厚积而薄发。

打赏支持作者写出更多好文章,谢谢!

————-推荐 ————

范品社推出的极客T恤,含程序员、电影、美剧和物理题材,面料舒适、100%纯棉,有黑、白、灰、藏青色,单件 ¥59.9、两件减¥12、四件减¥28、六件减¥42,详见网店商品页介绍。

(上面为部分 T 恤款式)

网店地址:https://fanpinshe.taobao.com

淘口令:复制以下红色内容,然后打开手淘即可购买

范品社,使用¥极客T恤¥抢先预览(长按复制整段文案,打开手机淘宝即可进入活动内容)

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#loooy.com)删除。
(0)
上一篇 2022年9月4日 09:05
下一篇 2022年9月4日 09:08

相关推荐

  • java7下载(java7下载64位)

    1、1打开百度搜索Java7,选择第一项进入下载的页面2在下载界面,首先勾选“Accept License Agreement”3注意点击之后此时上方的文字是会变化的,然后点击wi…

    2022年11月10日
  • 泰拉瑞亚黑曜石药剂要向哪个NPC买?(泰拉瑞亚黑曜石药剂)

    2容颜跋涉者在水中的水箱中,与黑曜石头颅合成黑曜石涉水步行靴,在于熔岩魅力合成容颜跋涉者,可在水和岩浆上走,对岩浆免役7秒3使用黑曜石药剂泰拉瑞亚简介泰拉瑞亚是由ReLogic公司…

    2023年4月17日
  • 小黄片下载

    1、和“下载”功能,小说的资源还挺多的移动硬盘涨价也要买买买忽略掉网盘的共享功能,仅仅从存储的需求出发,那还是拥有一个大。 2、图源送我上青云幻象中存在的性爱不如落地的性福不管是逐…

    2022年12月26日
  • 常燃火种(常燃火种有什么用)

    今天是农历四月二十九,从明天起就进入了农历五月,在我国的传统中,农历五月被称为“毒五月”,为什么这么叫呢?因为古人发现,每到农历五月的时候,生病、出意外、死亡的人数会陡然增加,可谓…

    2022年10月26日
  • 冰封王座地图下载(冰封王座地图下载网站有哪些百度知道)

    如果你想玩《魔兽争霸3》,但却找不到游戏光盘,或者不想每次游戏的时候都用光盘,你可以将光盘内容备份到电脑中,这样就可以随时进行游戏了。你可能用过玩家自己制作的免CD补丁,但是暴雪公…

    2022年10月6日
  • pdf软件下载(pdf软件下载安装)

    PDF文件的阅读需要借助PDF阅读器工具,绿色版PDF阅读器有哪些呢?小编在此免费推荐三款绿色版PDF阅读器,供大家下载。 一、轻快pdf阅读器 点击访问: 轻快PDF阅读器支持W…

    2022年9月9日
  • office2007破解版下载(office2007破解版安装教程)

    链接?pwd=ffh6 提取码ffh6 Office软件与教程资源内包含20132019等安装包,mac版本安装包,wordexcelpowerpointoutlook等安装方法和…

    2022年10月1日
  • 调皮小子(鬼点子和调皮小子)

    还有“调皮小子”鲁肥肥黄豆豆,一个瘦,一个胖,在学校是一对铁杆哥们最后是“男子汉”马加和“男生女相”的李小俊他们在学校里,闹出了一个又一个囧事,可爱极了 “樱桃姐姐”杨红樱的书,贴…

    2022年11月10日
  • 安卓版下载(weverse安卓下载)

    近日,有网友反馈,腾讯QQ影音官方网站显示,该软件的PC、Mac、安卓、iOS版本均已不可下载,为“敬请期待”状态,同时据网友反馈运行QQ影音PC版将出现运行错误,QQ影音Mac商…

    2022年11月4日
  • audition下载(audition下载要钱吗?)

    “Anticloud Rev.3” 软件安装|插件分享|AE模板|视频资源 工具下载 ▼ 软件安装前请确定所需版本进行下载。 ▼ 使用问题请尝试通过搜索?自行解决 。 ▼ 非会员建…

    2022年9月2日