美文网首页AppCan开发经验分享iOS Developer#iOS#HeminWon
Xcode通过修改project.pbxproj来更改Capab

Xcode通过修改project.pbxproj来更改Capab

作者: 望山观海 | 来源:发表于2017-04-13 20:15 被阅读2382次

遇到的问题

项目中遇到了一个iOS的问题,需要调试。拿到了工程之后,直接打开,开启自动配置证书,随便写了个我调试常用的BundleID,竟然迎来了一个个的红色叹号:

Paste_Image.png
The 'Apple Push Notification' feature is only available to users enrolled in Apple Developer Program. Please visit 
https://developer.apple.com/programs/ to enroll.

Provisioning profile "iOS Team Provisioning Profile: com.wsgh.test2" doesn't support the Push Notifications capability.

Provisioning profile "iOS Team Provisioning Profile: com.wsgh.test2" doesn't include the aps-environment entitlement.

第一个错应该是根本原因。可是为什么呢?

排查和解决

字面意思是,推送功能只对注册开发者开放。仔细一想,这可以理解,因为我用的是我自己的个人开发者Team,穷鬼一个,并没有花99美元。

  • 解决办法:
  1. 切换到企业的开发Team中;

  2. 继续使用自己的Team,但是关闭推送功能;

我比较喜欢用自己的,所以选择方法2。打开Xcode工程的配置界面,切换到Capabilities标签,找到Push。。。What?为啥没有?合着我现在不想用推送都不行了?

可是,作为一个爱折腾的程序狗,我表示不服:配置这个东西一定是有配置文件的,大家开发的时候因为xcode做的比较强大,各种配置都直接点UI了,一般也懒得关注配置文件在哪。

好,思路确定了,找吧。为了图省事,我把工程直接创建了个git仓库,用来比较工程文件的变动。

先切换到公司的Team,点开推送开关配置,然后git commit;

然后关闭推送开关,再看看文件变动。

发现两处不同:

  1. 工程根目录的xcodeproj包中,右键显示包内容,找到了project.pbxproj,其中有个com.apple.push的值,开启推送时是1,关闭变成了0。估计这个是那个开关的配置文件;
Paste_Image.png
  1. Code Signing Entitlements配置的那个entitlements文件中,打开推送开关配置时,会自动生成一个APS Environment键值,这是iOS10推出之后,SDK新要求的一个配置权限的地方,这个键值就是推送的配置,关闭的时候,这个被删掉了。
Paste_Image.png

至此,根据这个修改之后,这个工程就能用了。

延伸

从这个例子中,可以得知,project.pbxproj文件就是存放xcode的工程基本配置的地方,关于本工程的基本配置变更时,都会体现在这里;而iOS新增的权限配置,是在entitlements文件中规定的,而entitlements文件的路径,也是在project.pbxproj文件中指定了(键为:CODE_SIGN_ENTITLEMENTS)。

所以,以此我们可以在某些特殊情况下,直接查看工程文件就可以临时查看和修改工程的配置信息,从而达到装逼的效果,哦不对,是解决一些燃眉之急的效果~

相关文章

网友评论

  • Corbin___:我是这个 : Your development team, "xxx", does not support the Associated Domains, Push Notifications, and In-App Purchase capabilities.
    望山观海:@陈泽槟_Corbin 哦。那只能稍等咯。这种相关资料挺少的,因为一般很少有人去自己修改工程配置文件,太麻烦,费力不讨好。Xcode很方便了。我这个文章仅仅是当时突发奇想,研究了一下而已。
    Corbin___:@望山观海 那把内购和关联域名删了应该就可以啦,自己公司的项目,刚入职的,添加我的账号到证书列表中还在走流程
    望山观海:@陈泽槟_Corbin 哦,那你这就是好几个了,三个权限需要修改,这比较尴尬了~另外两个是内购和关联域名。没试过。你这是搞了个别人的工程吗?实在不行你就只能先切一个公司的正式开发者身份?
  • Corbin___:改了还是不行
    望山观海:确定报错信息跟本文相同吗?相同的话应该就是要按照本文关闭推送功能才可以。
  • d551c712efbe:就喜欢这样爱装逼,哦不,爱专研的作者
    coderxiaoqin:楼主,有方法通过命令行去修改吗

本文标题:Xcode通过修改project.pbxproj来更改Capab

本文链接:https://www.haomeiwen.com/subject/rykiattx.html