升级到Xcode8.3之后 PackageApplication的问题

最近一直在用cocos的命令行打IOS的安装包。然后前几天手贱升级了Xcode到Xcode8.3
http://stackoverflow.com/questions/43068608/xcrun-error-unable-to-find-utility-packageapplication-not-a-developer-tool
这个是StackOverflow上的解释,
我想问一下引擎组什么时候修复一下这个问题

@padad
求大神给个修改脚本怎么修改的方法。谢谢

恩,比较简单粗暴的方法是Xcode-Preference-Location-Command Line Tools换成Xcode8.2的版本(保证你的电脑里有一个8.2版本的Xcode)

1赞

你使用的是什么命令?

cocos compile -p ios

这是Xcode8.2.1打包出现的warning,估计8.3直接就删除了吧!

warning: PackageApplication is deprecated, use `xcodebuild -exportArchive` instead.

@minggo 可以看下是不是这个命令已经删除了~

8.3PackageApplication命令已删,可以从老版本里面复制一个过来,百度一下就能找到相关文章

cocos console 什么时候兼容xcode8.3呢?

可以自己改的吧?

不好意思,在忙3.15发布和creator for c++的事情。能否帮忙再github的issue system建个issue,在下个版本解决。

github上有对应的issue。找到了一个方法可以通过先生成.xcarchive,然后再生成.ipa,但是生成.xcarchive的命令每次都会重新编译工程,很麻烦。

在Xcode8.3.2下即使先生成.xcarchive再导出.ipa 的命令行与8.2的也不一样,需要根据版本号区分兼容的。

旧版本的大约在
Xcode8.2.xx

xcodebuild -exportArchive -exportFormat ipa -archivePath /a.xcarchive -exportPath /a.ipa -exportProvisioningProfile "iPhone Developer"

而在Xcode8.3.2
xcodebuild 去掉了-exportProvisioningProfile参数,且-exportPath指定的是路径而不是文件名

这个链接讲的一样,使用的是-exportOptionsPlist而不需要-exportProvisioningProfile。我这边测试了,不需要传入provision profile的路径的,xcodebuild会自动找到匹配的文件。

问题是-exportOptionsPlist需要传入对应的plist文件的路径。里面涉及到各种配置,那么就需要在模板里提供这么一个文件。我打算把这个文件放到APP_ROOT/proj.ios_mac/ios下,cocos命令默认从该路径读取,然后cocos命令再增加一个参数用于修改该plist文件的路径。

当然了,cocos命令需要区分xcode版本,只在8.3+使用新的方法。

哦,这个方法有个问题,那就是对于老版本的项目会出问题,因为没有对应的plist文件,所以这个配置文件需要由cocos命令动态生成,开发者可以修改生成的plist文件。

已经解决了这个问题:https://github.com/cocos2d/cocos2d-console/pull/421。
大家可以试一下。