xcode 9 xcode在钥匙串共享和推送通知上建立开关
xcode 9 xcodebuild switch on keychain sharing and push notifications
如何通过 xcodebuild (XCode 9) 打开钥匙串共享和推送通知?有任何变体吗?
在 xcode 上,点击您的项目,然后点击功能,最后打开钥匙串共享和推送通知
您所要求的实际上直接通过 xcodebuild
完成有些棘手。 EASIEST 要做的事情正是 Claudio 在上面所说的:直接更改目标的 Capabilities 部分中的设置。 +1给他!默认情况下,您对目标 中的功能所做的更改 会在您的所有构建中得到应用,除非您使用我下面的方法在构建期间显式更改它们。
如果您只想通过 xcodebuild
执行此操作(不打开 Xcode),请进一步阅读:
如果我们谈论的是构建设置(即编译时选项),那么更改设置就像这样简单:
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 阅读了这个解决方案。祝你好运!
通过将授权文件 "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得到了灵感:
如何通过 xcodebuild (XCode 9) 打开钥匙串共享和推送通知?有任何变体吗?
在 xcode 上,点击您的项目,然后点击功能,最后打开钥匙串共享和推送通知
您所要求的实际上直接通过 xcodebuild
完成有些棘手。 EASIEST 要做的事情正是 Claudio 在上面所说的:直接更改目标的 Capabilities 部分中的设置。 +1给他!默认情况下,您对目标 中的功能所做的更改 会在您的所有构建中得到应用,除非您使用我下面的方法在构建期间显式更改它们。
如果您只想通过 xcodebuild
执行此操作(不打开 Xcode),请进一步阅读:
如果我们谈论的是构建设置(即编译时选项),那么更改设置就像这样简单:
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 阅读了这个解决方案。祝你好运!
通过将授权文件 "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得到了灵感: