如何通过xcodebuild(XCode 9)打开Keychain Sharing和Push Notifications?有没有变种?
答案 0 :(得分:1)
答案 1 :(得分:0)
通过xcodebuild
直接进行操作实际上有点棘手。 EASIEST 要做的事情正是Claudio所说的:直接更改目标的功能部分中的设置。 +1给他!默认情况下,您对所有版本中的功能所做的更改将获取,除非您使用下面的方法在构建时明确更改它们。
如果您只想通过xcodebuild
执行此操作(无需打开Xcode),请继续阅读:
如果我们谈论的是Build Settings(即编译时选项),那么更改设置可能就像以下一样简单:
xcodebuild -workspace DmitryWorkspace.xcworkspace -scheme "YourAppName" -showBuildSettings
但是,因为您实际上正在尝试修改权利并且&功能(应用程序是否具有执行某些功能的能力),您真正需要做的是使用不同的.entitlements
文件来切换这些选项。 .entitlement
文件基本上只是plist
文件的另一个名称,它通常看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>aps-environment</key>
<string>development</string>
<key>keychain-access-groups</key>
<array>
<string>$(AppIdentifierPrefix)com.myke.TestingSomething</string>
</array>
</dict>
</plist>
这两个键用于推送通知和钥匙串共享。
要通过xcodebuild
获取权利文件,您可以执行以下操作:
xcodebuild -exportArchive -exportOptionsPlist projectName.entitlements -archivePath test.xcarchive -exportPath .
我自己还没有尝试过最后一部分(我宁愿为我自己的项目做Claudio的解决方案),但我通过这个related blog posting阅读了这个解决方案。祝你好运!
答案 2 :(得分:0)
通过将权利文件“push.entitlements”放在根目录并在xcodebuild archive命令中添加CODE_SIGN_ENTITLEMENTS =“push.entitlements”,它对我有用。
xcodebuild archive -project yourproject -scheme yourscheme -configuration Release -sdk iphoneos -archivePath \“yourpath”CODE_SIGN_IDENTITY = \“{$ code_sign_identity} \”PROVISIONING_PROFILE_SPECIFIER = \“{$ provisioning_profile} \”CODE_SIGN_STYLE = \“Manual \” CODE_SIGN_ENTITLEMENTS = \ “push.entitlements \”
我从这篇文章中得到了这个想法:Post iOS10 / Xcode 8.0 "Missing Push Notification Entitlement" error after build for iTunes Store