相关疑难解决方法(0)

修改Xcode的project.pbxproj中的PRODUCT_BUNDLE_IDENTIFIER

我正在尝试在 Mac 终端上project.pbxproj使用sedshell 命令修改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 命令末尾的额外字符

我之前使用Plistbuddyshell 命令修改字段CFBUNDLEIDENTIFIERinfo.plist$(PRODUCT_BUNDLE_IDENTIFIER)在 Xcode 7 构建设置中不再更改。

我的主要目的是使用命令行或任何脚本修改 Xcode 中 BUILD SETTINGS 的 PRODUCT_BUNDLE_IDENTIFIER 字段。

unix bash sed plist xcode7

7
推荐指数
1
解决办法
4709
查看次数

通用链接打开错误的捆绑 ID

背景:

  • 我们的应用程序使用不同的包 ID 进行开发构建、测试构建和生产(App Store)构建
  • 我目前正在我们的开发版本中实施通用链接
  • 我们当前在 App Store 中的生产版本不支持通用链接

我遇到了这个疯狂的问题,我的通用链接不仅没有打开应用程序的开发版本,而且还启动了生产版本,尽管生产版本没有适当的权利

我的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 上都遇到过这种情况。非常感谢有关这两个问题的任何建议(启动错误的包,以及当调试包是唯一条目时不启动调试包)!

deep-linking ios ios9 ios-universal-links

6
推荐指数
1
解决办法
2833
查看次数

标签 统计

bash ×1

deep-linking ×1

ios ×1

ios-universal-links ×1

ios9 ×1

plist ×1

sed ×1

unix ×1

xcode7 ×1