我正在尝试在 Mac 终端上project.pbxproj
使用sed
shell 命令修改Xcode 项目的文件以替换字符串。我想替换该字段 -
PRODUCT_BUNDLE_IDENTIFIER = com.example.71b9b4f2
到
PRODUCT_BUNDLE_IDENTIFIER = com.example.14a32d1e
使用的命令 -
sed -i 's/com.example.71b94f2/com.example.14a32d1e/g' project.pbxproj
产生以下输出错误 -
sed: 1: "project.pbxproj": p 命令末尾的额外字符
我之前使用Plistbuddy
shell 命令修改字段CFBUNDLEIDENTIFIER
,info.plist
但$(PRODUCT_BUNDLE_IDENTIFIER)
在 Xcode 7 构建设置中不再更改。
我的主要目的是使用命令行或任何脚本修改 Xcode 中 BUILD SETTINGS 的 PRODUCT_BUNDLE_IDENTIFIER 字段。
背景:
我遇到了这个疯狂的问题,我的通用链接不仅没有打开应用程序的开发版本,而且还启动了生产版本,尽管生产版本没有适当的权利。
我的apple-app-site-association
文件已使用https://branch.io/resources/universal-links/和https://search.developer.apple.com/appsearch-validation-tool/进行了验证,如下所示:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "DY74R9XXXX.com.myapp.consumer.debug",
"paths": [ "/profiles/*", "/messages/*"]
},
{
"appID": "DY74R9XXXX.com.myapp.consumer",
"paths": [ "/profiles/*", "/messages/*"]
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
根据https://developer.apple.com/library/ios/documentation/General/Conceptual/AppSearch/UniversalLinks.htmldetails
,应该按顺序评估数组,并在找到匹配项后停止。
数组中字典的顺序决定了系统在查找匹配项时遵循的顺序,因此您可以指定一个应用程序来处理网站的特定部分。
.debug
其目的是,相同的通用链接将加载到我团队中的任何人的开发版本中,以及手机上没有该软件包的最终用户的生产版本中。
这不仅不起作用,而且如上所述,通用链接始终加载生产版本,即使生产版本缺乏applinks:dev.myserver.com
指向我的apple-app-site-association
文件的权利。这看起来很疯狂,但这意味着我可以启动我未发布的任意软件包,并且不会强制执行权利文件。
此外,如果我从数组中删除第二个条目details
,只保留调试版本的字典,则通用链接将无法工作,而是打开 Safari。切换数组的顺序也没有效果。我在 iPhone 6s 9.3 和 9.3.1 上都遇到过这种情况。非常感谢有关这两个问题的任何建议(启动错误的包,以及当调试包是唯一条目时不启动调试包)!