dji*_*i33 19 xcode objective-c target ios ios8
在我的Xcode项目中,我有4种不同的方案(prod,dev,staging,staging2),它们会更改安装到手机的应用程序的软件包标识符.这样我可以并排安装所有4个版本,类似于这种技术.
现在我正在为iOS 8构建Today Extension.这是一个需要自己的bundle标识符的新Target.
Extension的Bundle Identifier必须以Parent App的Bundle Identifier为前缀,否则会抛出警告:
error: Embedded binary's bundle identifier is not prefixed with the parent app's bundle identifier.
    Embedded Binary Bundle Identifier:  com.company.app.TodayExtension
    Parent App Bundle Identifier:       com.company.app.staging
在这种情况下,嵌入式二进制包标识符必须是com.company.app.staging.TodayExtension.
有没有办法我可以通过首先查看父目标的包标识符来配置我的今日扩展目标来设置其包标识符?也许通过自定义的运行脚本构建阶段?
Ale*_*xis 24
目标的构建设置不适用于其他目标.但是,可以使用PROJECT的构建设置.
因此,您可以在项目中添加用户定义的构建设置,并将其命名为PARENT_APP_BUNDLE_IDENTIFIER,并为所有方案设置正确的包ID.
然后在应用扩展目标的信息选项卡中将捆绑ID设置为
$(PARENT_APP_BUNDLE_IDENTIFIER).$(PRODUCT_NAME:rfc1034identifier)
它对我来说非常好.
小智 6
我有 Siri 扩展和多个目标,因此为了避免为每个目标重复扩展,我向每个方案添加了预操作,以在构建之前更改扩展 plist 的 BundleId:
/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier 
YourDesiredBundleId" "$PROJECT_DIR/YourExtensionFolder/Info.plist"
它就像一个魅力!您需要为每个方案配置它。
| 归档时间: | 
 | 
| 查看次数: | 8232 次 | 
| 最近记录: |