iOS开发知识体系之《脚本自动化打包--xcodebuild》

iOS开发知识体系之《脚本自动化打包--xcodebuild》,第1张

iOS脚本自动化打包方案--xcodebuild

本文主要xcodebuild脚本自动化打包并上传到蒲公英或者AppStore,废话不多说,直接上干货!

先了解一下xcodebuild打包需要的一些指令

-workspace XXXxcworkspace

XXXxcworkspace需要编译工程的工作空间名称,如果工程不是xcworkspace的,可以不需要-workspace XXXxcworkspace这段话

-scheme XXX

XXX是工程名称,-scheme XXX是指定构建工程的名称

-configuration Release

填入打包的方式是Debug或Release,就跟在Xcode中编译前需要在Edit scheme的Build configuration中选择打出来的包是Debug还是Release包一样,-configuration就是配置编译的Build configuration

-archivePath /myArchivePath

配置生成xcarchive的路径, /表示生成在当前目录下,myArchivePath是生成的Archive文件名称

ODE_SIGN_IDENTITY=证书

配置打包的指定证书,如果该工程的Xcode已经配置好了证书,那么不加入这段话也可以,打包出来的证书就是Xcode中配置好的。

PROVISIONING_PROFILE=描述文件UUID

配置打包的描述文件,同上,Xcode已经配置好了就不用在填入这段话了

CONFIGURATION_BUILD_DIR

配置编译文件的输出路径,如果需要用到xcarchive文件内部的dSYM等文件,可以使用改字段指定输出路径。

如果工程是勾选了Automatically manage signing,那么就不用在配置ODE_SIGN_IDENTITY和PROVISIONING_PROFILE,今天这里讲到的Automatically manage signing自动配置证书,手动配置的就不多说了,有兴趣的话可以自己研究。

xcode工程配置自动获取证书,如下图:

打包所需要文件

配置打包的ExportOptionsplist文件,可以在任意一个Xcode工程中新建一个ExportOptionsplist文件。dev和adHoc和AppStore的配置文件内容不一样,可以先手动打包后看下plist文件的样式,这里提供一个样例:

这里method对应的value为打包对应的环境,有development、ad-hoc、app-store、enterprise根据打包环境来配置不同的值

编译脚本命令

xcodebuild archive -workspace XXXxcworkspace -scheme XXX -configuration Release -archivePath /myArchivePath CONFIGURATION_BUILD_DIR /dir ODE_SIGN_IDENTITY=证书 PROVISIONING_PROFILE=描述文件UUID

导出ipa包命令

xcodebuild -exportArchive -archivePath /myArchivePathxcarchive -exportOptionsPlist /ExportOptionsplist -exportPath /out

-archivePath /myArchivePathxcarchive指定需要打包的xcarchive路径,/myArchivePathxcarchive表示在当前终端路径下的myArchivePathxcarchive文件

-exportOptionsPlist /ExportOptionsplist指定打包需要的ExportOptionsplist配置文件路径

-exportPath /out指定打包输出的路径, /out表示打包结果输出在终端的当前路径下的out文件家中。如果没有out文件夹会自动创建一个

脚本 *** 作

首先:cd到需要自动打包的工程下

然后:在终端中输入touch xcodebuildsh创建xcodebuildsh脚本文件

然后:双击打开脚本写入下面 脚本内容(请确保所有版本的plist配置文件都写好了)

最后:在终端中输入/xcodebuildsh运行脚本,按照步骤完成打包选择(如果运行的时候出现Permission denied,请先在终端中执行chmod a+x 文件的后缀名后,在运行,相当于提高脚本文件的权限)

脚本内容

此脚本包含了自动上传蒲公英的选择 *** 作,根据输入指令来执行具体 *** 作

脚本实现

具体详细脚本见GitHub地址: >

UDID的全称是Unique

Device

Identifier,顾名思义,它就是苹果IOS设备的唯一识别码,它由40个字符的字母和数字组成。在很多需要限制一台设备一个账号的应用中经常会用到。在iOS5中可以获取到设备的UDID,后来被苹果禁止了。

IDFA(identifierForIdentifier)

广告标示符,适用于对外:例如广告推广,换量等跨应用的用户追踪等。

是iOS

6中另外一个新的方法,提供了一个方法advertisingIdentifier,通过调用该方法会返回一个NSUUID实例,最后可以获得一个UUID,由系统存储着的。不过即使这是由系统存储的,但是有几种情况下,会重新生成广告标示符。如果用户完全重置系统((设置程序

->

通用

->

还原

->

还原位置与隐私)

,这个广告标示符会重新生成。另外如果用户明确的还原广告(设置程序->

通用

->

关于本机

->

广告

->

还原广告标示符)

,那么广告标示符也会重新生成。关于广告标示符的还原,有一点需要注意:如果程序在后台运行,此时用户“还原广告标示符”,然后再回到程序中,此时获取广

告标示符并不会立即获得还原后的标示符。必须要终止程序,然后再重新启动程序,才能获得还原后的广告标示符。

在同一个设备上的所有App都会取到相同的值,是苹果专门给各广告提供商用来追踪用户而设的,用户可以在

设置|隐私|广告追踪

里重置此id的值,或限制此id的使用,故此id有可能会取不到值,但好在Apple默认是允许追踪的,而且一般用户都不知道有这么个设置,所以基本上用来监测推广效果,是戳戳有余了。

注意:由于idfa会出现取不到的情况,故绝不可以作为业务分析的主id,来识别用户。

IDFV(identifierForVendor)

Vindor标示符,适用于对内:例如分析用户在应用内的行为等。

是给Vendor标识用户用的,每个设备在所属同一个Vender的应用里,都有相同的值。其中的Vender是指应用提供商,但准确点说,是通过BundleID的DNS反转的前两部分进行匹配,如果相同就是同一个Vender,例如对于comsomecompanyappone,comsomecompanyapptwo

这两个BundleID来说,就属于同一个Vender,共享同一个idfv的值。和idfa不同的是,idfv的值是一定能取到的,所以非常适合于作为内部用户行为分析的主id,来标识用户,替代OpenUDID。

注意:如果用户将属于此Vender的所有App卸载,则idfv的值会被重置,即再重装此Vender的App,idfv的值和之前不同。

打开苹果Certificates, Identifiers & Profiles页面

>

1获取UUID(这个UUID是动态变化的)

2获取应用广告标识符 advertisingIdentifier

3获取标识符供应商 identifierForVendor

4获取iOS系统信息

5获取应用信息

6获取运营商信息

Demo地址: >

1安装应用到手机A,获取UUID,UUID字符串是:5115e5a0a5464fcca1445fdb73e528b8,同时把UUID保存到钥匙串。

2卸载应用重新安装,获取钥匙串里保存的UUID是否有值。通过测试验证,钥匙串里有对应保存的UUID,并且UUID字符串是:5115e5a0a5464fcca1445fdb73e528b8(同第1步保存的一样)。

3反复卸载、安装进行多次,得到的结果(同第2步一样)。

4恢复出厂设置(跟着提示进行就行,有点繁琐)

41把手机恢复出厂设置(抹掉所有内容和设置),抹掉时不进行备份 *** 作,选择立即抹掉。

42进行重新设置手机,设置手机时有一步骤是选择恢复备份的界面,选择设置新的iPhone。(就是不选择恢复备份的iCloud备份的数据)。

5完成第4步以后,手机恢复正常使用。在进行安装应用到手机A。这时,通过测试验证钥匙串里已经没有了之前保存的UUID。这时是重新获取一个新的UUID进行保存到Keychain(钥匙串),UUID字符串是:e56b79c897c847dc82461bad40937cbd。

6这时把iCloud里的钥匙串打开,进行iCloud数据备份。

7再次进行恢复出厂设置(换个方式进行)

71把手机恢复出厂设置(抹掉所有内容和设置),抹掉时进行备份 *** 作,备份以后进行抹掉。

72进行重新设置手机,设置手机时有一步骤是选择恢复备份的界面,这时选择恢复iCloud备份的数据。

8在次进行安装应用到手机A。这时,通过测试验证,钥匙串里有对应保存的UUID,并且UUID字符串是:e56b79c897c847dc82461bad40937cbd(同第5步保存的一样)。

1打开手机的iCloud云盘进行数据备份

2打开iCloud里的钥匙串选项

3在重新恢复出厂设置的时候(抹掉所有内容和设置),要选择iCloud备份的数据后,在进行抹掉 *** 作。

4在重新设置手机的时候要保证填写iCloud备份是时对应的iCloud账号(第3步的iCloud账号)。

5要选择iCloud备份数据恢复设置。

6不能对手机进行刷机 *** 作。

(通过测试,我个人认为,手机本人刷机后(非一般 *** 作),重新开机,填写iCloud账号同一个的情况下,也可以恢复钥匙串,得到用户应用和设备的唯一性)。

以上就是关于iOS开发知识体系之《脚本自动化打包--xcodebuild》全部的内容,包括:iOS开发知识体系之《脚本自动化打包--xcodebuild》、IOS中的唯一标识符、iOS获取设备唯一标识的各种方法IDFA,IDFV,UDID分别是什么含义等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9816888.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存