热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ios证书自动导入,修改

2019独角兽企业重金招聘Python工程师标准命令行导入mobileprovision描述文件在mac中,描述文件存放的位置在~LibraryMobileDe

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

命令行导入mobileprovision描述文件

        在mac中,描述文件存放的位置在~/Library/MobileDevice/Provisioning\ Profiles/。开发ios时,双击mobileprovision文件可以导入。过程其实很简单,先将mobileprovision文件重命名,在将重命名后的文件其复制~/Library/MobileDevice/Provisioning\ Profiles/目录下。要用命令实现这个过程的话,难点在于,这个重命名的名字,这个名字可以在mobileprovision文件中找到,用vim或emacs打开,找到UUID,其对应的value就是重命名需要的名字。

读取mobileprovision文件

        为了从mobileprovision文件读取我们想要的信息,需要先对其进行处理,这里是将其转换成plist文件,在用/usr/libexec/PlistBuddy读取,当然,直接用文本读取,也是可以的。

      将mobileprovision文件中不是乱码的部分提取出来,保存为plist文件,用命令security可以实现:

security cms -D -i provisionfile > plistfile

        再用PlistBuddy可以读取UUID,也就是导入描述文件需要的文件名,以及修改pbxproj文件时需要的,包括debug_uuid和release_uuid

/usr/libexec/PlistBuddy -c 'Print UUID'

        还可以从mobileprovision文件读取CODE_SIGN_IDENTITY的值,替换证书的时候需要。需要处理DeveloperCertificates对应的一大段字符串。

 identity_str=`/usr/libexec/PlistBuddy -c 'Print DeveloperCertificates:0' plistfile | openssl x509 -subject -inform der | head -n 1`

            证书字符串值可以用一下命令拿到

`echo "${identity_str}" | cut -d "/" -f3 | cut -d "=" -f2`


 修改pbxproj文件

        修改描述文件,需要在pbxproj文件中用上面得到的UUID替换PROVISIONING_PROFILE和"PROVISIONING_PROFILE[sdk=iphoneos*]"对应的值 ;修改证书需要用上面得到的证书字符串替换CODE_SIGN_IDENTITY和 "CODE_SIGN_IDENTITY[sdk=iphoneos*]" 对应的值。这里由于要区分Debug和Release,全局替换可能会出问题。我的做法是这样的:

        先搜索出"/* Debug */ = {"和"/* Release */ = {",将其对应的UUID(前面数字字符串组成的字符串),存放在array_uuid_values,其对应的行号存放在array_uuid_lines中,array_uuid_lines是排好顺序了的。(这里用shell处理字符串的时候,可能遇到以下字符转义的问题,我是先将这些特殊的字符去掉了,再处理的):

test=`echo "${uuid_dr_str//[\*, ,\n,\/,=]}"`

        array_uuid_values是为了判断其对应的是Debug还是Release.遍历array_uuid_values,取当前的uuid,并用PlistBuddy取出其对应的name值(Debug或者Release):

        这里为了方便读取,先用plutil命令将pbxproj转成plist文件

plutil -convert xml1 ${PATH_PBXPROJ} -o ${PROJECT_PLIST}

            再用PlistBudy读取:

`/usr/libexec/PlistBuddy -c "Print objects:${uuid_value}:name" ${PROJECT_PLIST}`

        根据取出的name值可以选择要替换的值是debug_uuid或release_uuid,然后从array_uuid_lines取出对应的line值,接着是替换,替换规则是这样的从line行开始给替换,这样做是为了保证只被有效替换一次,

    替换证书如下:

sed -i "" -E "${array_uuid_lines[$[tag_index]]},\$s/CODE_SIGN_IDENTITY = \"[^\"]*\"/CODE_SIGN_IDENTITY = \"${IDENTITY_DEBUG}\"/g" ${PATH_PBXPROJ}

sed -i "" -E "${array_uuid_lines[$[tag_index]]},\$s/\"CODE_SIGN_IDENTITY\[sdk=iphoneos\*\]\" = \"[^\"]*\"/\"CODE_SIGN_IDENTITY\[sdk=iphoneos\*\]\" = \"${IDENTITY_DEBUG}\"/g" ${PATH_PBXPROJ}

        替换的思路:从project.pbxproj中读出/* Debug */ = {,/* Release */ = { 所在行的内容和行号,并对行号排序(需要区分是Debug/Release),并获取对应的UUID,用plutil命令将project.pbxproj转化成plist格式,根据UUID读出对应的CODE_SIGN_IDENTITY值,并在project.pbxproj修改,为了防止每个值只有一次有效的修改,替换的时候每次替换从对应的行号到文本结束。

        代码下载地址:http://download.csdn.net/detail/ttt307307/8877787

        在网上看到有用Ruby和Python写的库,可以编辑pbxproj文件,https://github.com/cocoapods/xcodeproj

        还有xUnique,mergepbx。




转:https://my.oschina.net/u/1051338/blog/475924



推荐阅读
  • SQLmap自动化注入工具命令详解(第28-29天 实战演练)
    SQL注入工具如SQLMap等在网络安全测试中广泛应用。SQLMap是一款开源的自动化SQL注入工具,支持12种不同的数据库,具体支持的数据库类型可在其插件目录中查看。作为当前最强大的注入工具之一,SQLMap在实际应用中具有极高的效率和准确性。 ... [详细]
  • 在Spring Boot项目中,若遇到JSP页面中文显示异常的问题,可以通过配置`application.yml`文件来解决。具体设置如下:在`server.tomcat.uri-encoding`项中指定编码为UTF-8,并确保`spring.http.encoding`也配置为UTF-8,以实现全链路的字符集统一,从而有效避免中文乱码现象。此外,建议检查JSP文件本身的编码格式,确保其与应用配置一致,进一步提升页面显示的稳定性与准确性。 ... [详细]
  • 在 Python 中,使用 `keys()` 方法迭代字典时,需要考虑最佳实践和性能问题。特别是当字典在迭代过程中可能发生变化时,直接使用 `for key in some_dict:` 可能会引发 `RuntimeError`。为了确保代码的健壮性和性能,建议在 Python 3 中使用 `list(some_dict.keys())` 或 `for key in list(some_dict)` 来避免潜在的运行时错误。此外,这种方法还可以提高代码的可读性和维护性。 ... [详细]
  • Spring框架下发送嵌入图片邮件时遇到的技术挑战与解决方案
    在Spring框架中发送嵌入图片的HTML格式邮件时,常遇到技术挑战。一种有效的解决方案是在邮件内容中直接使用``标签来引用图片。此外,还可以通过MimeMessageHelper类的addInline方法将图片作为内联资源添加到邮件中,确保图片能够正确显示。这种方法不仅提高了邮件的可读性,还增强了用户体验。 ... [详细]
  • 在财务分析与金融数据处理中,利用Python的强大库如NumPy和SciPy可以高效地计算各种财务指标。例如,通过调用这些库中的函数,可以轻松计算货币的时间价值,包括终值(FV)等关键指标。此外,这些库还提供了丰富的统计和数学工具,有助于进行更深入的数据分析和模型构建。 ... [详细]
  • 本文详细解析了如何利用Appium与Python在真实设备上执行测试示例的方法。首先,需要开启手机的USB调试功能;其次,通过数据线将手机连接至计算机并授权USB调试权限。最后,在命令行工具中验证设备连接状态,确保一切准备就绪,以便顺利进行测试。 ... [详细]
  • python发送邮件(带附件)、发送给多人、抄送给多人的示例#!usrbinenvpython #-*-encoding:utf-8-*-imports ... [详细]
  • 探讨.NET技术与Silverlight中控件拖放及复制功能的实现方法
    Silverlight拖动复制控件,就是将控件从一个容器中向另一个容器中拖动时,不是移动控件而把该控件到另一个容器中。这种情形在程序中经常遇到ÿ ... [详细]
  • 吴裕雄数据挖掘实战案例(13):GBDT模型的深入应用与解析
    #导入第三方包importpandasaspdimportmatplotlib.pyplotasplt#读入数据defaultpd.read_excel(r&# ... [详细]
  • Python彻底搞懂中文乱码问题
    本文转自:https:blog.csdn.netjoyfixingarticledetails79971667感谢作者!前言曾几何时Python中文乱码的问题困扰了我很多很多年,每 ... [详细]
  • linux jq命令 汉字乱码,jQuery中Ajax的Post提交中文乱码的解决方案
    引言:在jQuery的AjaxPOST请求中,进行请求,其中的中文在后台,显示为乱码,该如何解决呢࿱ ... [详细]
  • 最近业务中需要用Python写一些脚本。尽管脚本的交互只是命令行+日志输出,但是为了让界面友好些,我还是决定用中文输出日志信息。 很快,我就遇到了异常:UnicodeEncodeE ... [详细]
  • Java 9 中 SafeVarargs 注释的使用与示例解析 ... [详细]
  • JVM参数设置与命令行工具详解
    JVM参数配置与命令行工具的深入解析旨在优化系统性能,通过合理设置JVM参数,确保在高吞吐量的前提下,有效减少垃圾回收(GC)的频率,进而降低系统停顿时间,提升服务的稳定性和响应速度。此外,本文还将详细介绍常用的JVM命令行工具,帮助开发者更好地监控和调优JVM运行状态。 ... [详细]
  • HTTP协议作为互联网通信的基础,其重要性不言而喻。相比JDK自带的URLConnection,HttpClient不仅提升了易用性和灵活性,还在性能、稳定性和安全性方面进行了显著优化。本文将深入解析HttpClient的使用方法与技巧,帮助开发者更好地掌握这一强大的工具。 ... [详细]
author-avatar
依love依CENE_790
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有