iOS 包签名及重签名

Python08

iOS 包签名及重签名,第1张

签名相关的命令:

•$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同级)。

!]( https://upload-images.jianshu.io/upload_images/1502585-e1694c8e1e77a197.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240 )

修改xx.app包里面的info.plist中的bundleId为上面项目的bundleId

对xx.app开始签名

使用的命令: zip –ry 输出文件 输入文件 命令。也可以手动压缩。

将上述操作 通过shell命令 写个脚本文件。然后一键操作。

shell脚本语言命令

地址: https://github.com/InjoyDeng/ResignTool

蒲公英平台重签名

本文章主要介绍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使用

签名成功的应用就可以顺利在我们的设备中安装了并使用了,用这个方法可以进行非越狱平台安装在正版基础移植的越狱应用。

工具: https://github.com/InjoyDeng/ResignTool

借鉴: https://www.jianshu.com/p/d68924e1af25

https://www.jianshu.com/p/d68924e1af25

https://www.cnblogs.com/guohai-stronger/p/11781249.html

iOS APP签名机制详解

系统升级:

Mac os:12.1

xcode:13.2.1

配置升级:

Homebrew 3.3.12

node: v16.13.2

yarn 1.22.17

react-native-cli

前面我也是根据 react-native 官网 步骤来,一直到  sudo gem install cocoapods 都可以成功安装; (新手: 记得换源http://gems.ruby-china.com ,你有翻 · 墙就忽略吧。)

初始化 react - native 项目

进入AwesomeProject > ios 目录下

Could not find proper version of cocoapods(1.11.2) in any of the sources

这个问题是由于我安装了 rvm  ,然后 又通过 rvm 安装了 ruby-2.7.4. 这个就导致。在再安装 cocoapods 的时候。pod 指向的位置全是 rvm 目录下的 ;【注意:如果你也安装了 rvm 】

删除 cocoapods 安装地址

注意:请多次执行查看pod ,如果存在就卸载;保证 pod 找不到为止。

卸载相关的 cocoapods 内容

卸载  全局 ruby

移除 rvm 已经删除 bash_profile 里关于 rvm 内容

彻底移除 bash_file 中的 rvm

这个时候你的内容 环境就恢复如初了

重新安装 pod 且指定目录中

重新安装 react-native

执行 pod 

期间报错

Error installing glog

Error installing libevent  【这错我是多次执行 pod install,网路问题 】

PhaseScriptExecution [CP-User]\ Generate\ Specs

library not found for -lCocoaAsyncSocket 错误的修复 ;删除 项目>ios >Pods 文件和 podfile.lock 文件;重新在 ios 目录执行 pod install 或者 pod update;然后重新运行项目, 【注意:File>WorkSpace settting >Build System >New Build System(Defalut) 因为Legacy Build System  可能 打不开 ‘CocoaAsyncSocket’】 .

启动项目

解决问题不易,如果有帮到你,扣个1或者赞。