一、iOS 包签名及重签名
签名相关的命令:
•$security find-identity-v-p codesigning--列出钥匙串里可签名的证书
•$security cms-D-i embedded.mobileprovision--查看描述文件
•$codesign–fs“证书串”文件名--强制替换签名
重签步骤:
1.删除插件和带有插件的.app包(比如Watch)
2.对Frameworks里面的库进行重签名
3.给可执行文件+x(可执行)权限
4.替换描述文件
5.替换BundleID
6.通过授权文件(Entilements)重签.app包
实际操作:
获取破壳的ipa包
获取第三方ipa包
查看ipa包是否已经破壳》非上架的都没加壳,无需关注
解压ipa包,进入playload文件夹,找到MachO文件
在终端使用命令otool-l DingTalk| grep crypt,0是已脱壳,大于0是未脱壳(一
般为1)
终端查看本地有效证书
$security find-identity-v-p codesigning
删除无法签名的插件文件
删除Plugins文件夹和Watch文件夹
对.app文件夹内的Frameworks文件夹中的每一个framework强制重签名
命令:$ codesign-fs"iPhone Developer: xxx" xxx.framework
找到framework文件夹下所有.framework,分别使用上面的命令对其签名。
建议通过脚本命令执行:
将要签名的描述文件该成 embedded.mobileprovision替换来的 embedded.mobileprovision
创建entitlements.plist文件
查看描述文件内容,使用命令security cms-D-I embedded.mobileprovision,找到Entitlements节点,接着创建entitlements.plist文件,内容拷贝过去,最后把entitlements.plist文件拷贝到playload文件夹内(与xx.app同级)。
!]( )
修改xx.app包里面的info.plist中的bundleId为上面项目的bundleId
对xx.app开始签名
使用的命令: zip–ry输出文件输入文件命令。也可以手动压缩。
将上述操作通过shell命令写个脚本文件。然后一键操作。
shell脚本语言命令
地址:
蒲公英平台重签名
本文章主要介绍iOS版本发布的两个相关功能。
一: iOS开发出的版本发布安装用两种方式:
软件环境
Mac: v10.12.6(16G29)
ruby: v2.3.4
rvm: v1.29.3
sigh: v2.71.1
Xcode: v9.2
使用sigh脚本
使用之前先安装一下脚本环境
应用场景:
主要解决因重复打包导致测试同学回归测试的包和上传App Store的包不一致的问题。以及合作方之间证书不一致,需要重新签名问题。
App开发测试流程
对回归测试通过的ipa包进行重新签名,然后上传 App Store
输入的 Signing Identity如果和.mobileprovision文件不一致,那么终端上仍会提示resign成功,但是,安装时会报错!
codesign-vv-d xxx.app
本文主要讲述sigh命令的安装和使用。
首先确保你安装了Xcode的命令行工具。
然后通过gem安装sigh,gem的安装请自行谷歌。
在终端执行
依次执行下列步骤:
关于更多sigh用法请访问 sigh使用
签名成功的应用就可以顺利在我们的设备中安装了并使用了,用这个方法可以进行非越狱平台安装在正版基础移植的越狱应用。
工具:
借鉴:
iOS APP签名机制详解
二、怎么修改app应用签名
安卓是个开放平台,许多源代码都是开放的,这也注定了这个系统必定是会千姿百态的,对于喜欢个性化系统的童鞋来说,修改完后的apk文件(除系统apk外)一般都是要重新签名才能正常安装使用的,电脑端的就不说了,这里讲下手机端的签名方法,快捷方便,不用装java和配置环境变量哈。
工具/原料
ZipSigner手机签名工具(搜一下这个名字就能找到apk软件);
安卓手机;
方法/步骤1
大家都知道,其实安卓apk实际上是一个zip压缩包,所以首先我们要对apk文件进行改名与后缀,将其连同后缀一起改掉,如1.zip:
请点击输入图片描述
请点击输入图片描述
请点击输入图片描述
请点击输入图片描述
这时文件就变成一个zip压缩包了,我们可以提取解压这个压缩包,打开这个解压的文件,你就会看到里面构成程序文件的很多东西,然后你根据网上教程对程序进行简要修改(当然如果要反编译的话就不是这样子了,不过直接解压也是可以修改很多东西的),这里修改操作建议在电脑端完成比较方便,修改后重新将这些文件压缩成zip格式:
请点击输入图片描述
请点击输入图片描述
请点击输入图片描述
请点击输入图片描述
下载安装ZipSigner手机签名工具,并打开:
请点击输入图片描述
请点击输入图片描述
请点击输入图片描述
请点击输入图片描述
点击输入,浏览文件目录找到你刚修改好并重新压缩的zip文件,在输出选项可以修改其名称,然后点击签名,模式为auto-testkey就可以了,等一会就签名未完成了:
请点击输入图片描述
请点击输入图片描述
请点击输入图片描述
然后在输出目录中找到你签名并输出的文件,这时为signed.zip,再将其后缀改成.apk,就可以显示出程序图标了,然后安装上去就行,这里要注意,如果已经安装的文件不是你自己签名,而是官方的,会提示签名不一样无法安装,所以你要删除原来的程序才能安装上你自己修改的程序哦。
请点击输入图片描述
请点击输入图片描述
请点击输入图片描述
请点击输入图片描述
三、如何对iOS应用进行修改并重新签名
1.预先准备在你开始将程序提交到App Store之前,你需要有一个App ID,一个有效的发布证书,以及一个有效的Provisioning profile。下面来看看它们各自的作用。 Step 1: App ID(应用ID) App ID是识别不同应用程序的唯一标示符。每个app都需要一个App ID或者app标识。目前有两种类型的App标识:一个是精确的App ID( explicit App ID),一个是通配符App ID( wildcard App ID)。使用通配符的App ID可以用来构建和安装多个程序。尽管通配符App ID非常方便,但是一个精确的App ID也是需要的,尤其是当App使用iCloud或者使用其他iOS功能的时候,比如Game Center、Push Notifications或者IAP。如果你不确定什么样的App ID适合你的项目,我推荐你读下苹果关于这一主题的文档: Technical Note QA1713。 Step 2: Distribution Certificate(发布证书) iOS应用都有一个安全证书用于验证开发者身份和签名。为了可以向App Store提交app,你需要创建一个iOS provisioning profile。首先需要创建一个distribution certificate(发布证书),过程类似于创建一个development certificate(开发证书)。如果你已经在实体设备上测试你的App,那么你对创建development certificate就已经很熟悉了。如果对此不熟悉,我建议你读下苹果关于signing certificates和provisioning profiles的详细指导。 Step 3: Provisioning Profile(配置文件)一旦你创建了App ID和distribution certificate,你可以创建一个iOS provisioning profile以方便在App Store中销售你的App。不过,你不能使用和ad hoc distribution相同的provisioning profile。你需要为App Store分销创建一个单独的provisioning profile,如果你使用通配符App ID,那么你的多个app就可以使用相同的provisioning profile。 Step 4: Build Settings(生成设置)配置App ID、distribution certificate和provisioning profile已经完成,是时候配置Xcode中target的build settings了。在Xcode Project Navigator的targets列表中选择一个target,打开顶部的 Build Settings选项,然后更新一下 Code Signing来跟之前创建的distribution provisioning profile相匹配。最近添加的provisioning profiles有时候不会立马就在build settings的 Code Signing中看到,重启一下Xcode就可以解决这个问题。配置Target的Build Settings Step 5: Deployment Target(部署目标)非常有必要说下deployment target,Xcode中每个target都有一个deployment target,它可以指出app可以运行的最小版本。不过,一旦应用在App Store中生效,再去修改deployment target,你要考虑到一定后果。如果你在更新app的时候提高了deployment target,但是已经购买应用的用户并没有遇到新的deployment target,那么应用就不能在用户的移动设备上运行。如果用户通过iTunes(不是设备)下载了一个更新过的app,然后替代了设备上原先的版本,最后却发现新版本不能在设备上运行,这确实是个问题。(1)当你决定提高现有app的deployment target时,要在新版本的版本注释中进行说明。如果你提前告知用户,那么至少有一点,你已经尽力阻止问题的发生了。(2)对于一款新app,我经常会把deployment target设置为最近发布的系统版本。因为新iOS版本发布后,渗透率的增长速度是令人难以置信的。很多人认为提高deployment target会失去大部分市场,这个说法并不准确,比如iOS 6, iOS 6发布后一个月,超过60%的设备已经进行了更新。但对Android而言,就是另外一回事了, Android用户并不会像iOS用户那样热衷于更新操作系统版本。【以上简而言之,最好从项目设计时,就决定是否考虑兼容低版本用户,支持的话,写代码时使用ios新特性时最好做一下判断,if是老版本if是新版本】在最新的WWDC2014上,公布的数字显示,iOS7的市场占有率已经为87% 2. Assets(资源包) Step 1: Icons(图标) Icon是App中不可分割的一部分,你要确保icon尺寸不会出现差错。 iTunes Artwork: 1024px x 1024px(required) iPad/iPad Mini: 72px x 72px and 114px x 114px(required) iPhone/iPod Touch: 57px x 57px and 114px x 114px(required) 120px x 120px(required) for iPhone5/iPhone5c/iPhone5s Search Icon: 29px x 29px and 58px x 58px(optional) Settings Application: 50px x 50px and 100px x 100px(optional) Step 2:屏幕截图屏幕截图的作用不言而喻,你可以为每个app上传5张截图,虽然至少需要上传一张,可能很少有人会只上传一张图片。另外,你还需要分别为iPhone/iPod Touch和iPad/iPad Mini准备不同的屏幕截图。这也是不小的工作量,但却能展示应用的另一面。Shiny Development开发的一款售价6.99美元的Mac软件 Status Magic可以为你节省不少时间。Status Magic可以帮你把状态栏放在截图的正确位置。屏幕截图和icon是应用给用户的第一感觉,直接关系到用户会不会购买。不过,你所上传的屏幕截图也不一定非得是实际的截图,看看 Where’s My Water?截图可以通过使用此策略,更具吸引力和说服力。当我们连上调试机以后。可以利用Xcode中Organizer中的New Screenshot轻松的截出标准大小的图片。 Step 3:元数据在提交应用之前,要管理好app的元数据,包括1应用名称、2版本号、3主要类别,4简洁的描述,5关键词,6.支持URL。如果你需要更新应用,你还要提供新增加的版本内容。如果你的应用需要注册【打开APP需要登录,比如飞信】,你还得向苹果提供一个测试账户或者demo账户,这样审核人员就能很快进入app,而不用再注册账号。 3.提交准备 Xcode 4以后,开发者提交应用的过程就简单多了,可以直接使用Xcode进行提交。首先在 iTunes Connect中创建app,访问iTunes Connect,使用你的iOS开发者账号登陆,点击右边的“Manage Your Apps”,点击左上角的“Add New App”,选择“iOS App”,然后完成表格。