签名相关的命令:
•$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或者赞。