egi*_*ray 23 iphone bash shell adhoc plist
我正在建立一个php/bash/mysql系统,用于自动化iPhone应用程序的adhoc发布.但我想读取项目的mobileprovision文件中的application-identifier键,并根据它更改info.plist文件.
我目前可以从php构建ipa文件,如果cfbundleidentifer密钥与其配置文件相同.
我找到了这样的代码https://gist.github.com/711794但是我想要bash脚本将它集成到我的系统中.
谢谢
小智 49
如果您在具有mac os x的计算机上运行它,则可以使用以下命令:
/usr/libexec/PlistBuddy -c 'Print :Entitlements:application-identifier' /dev/stdin <<< $(security cms -D -i path_to_mobileprovision)
Run Code Online (Sandbox Code Playgroud)
小智 26
如果你想以适当的方式从mobileprovision中提取plist而不依赖grepping/sedding/etc.,你可以使用OpenSSL如下:
openssl smime -inform der -verify -noverify -in file.mobileprovision
Run Code Online (Sandbox Code Playgroud)
您的案例中的完整示例可能是:
openssl smime -inform der -verify -noverify -in file.mobileprovision > tmp.plist
/usr/libexec/PlistBuddy -c 'Print :Entitlements:application-identifier' tmp.plist
Run Code Online (Sandbox Code Playgroud)
OpenSSL部分应该可以在任何平台上运行,尽管到目前为止我只在Mac上完成了.PlistBuddy仅在Mac上,但可以找到其他实用程序来读/写属性列表文件.
小智 6
许多解决方案之一...
将egrep与-a选项一起使用,该选项处理文本文件和"-A 2"之类的二进制文件,它将显示要匹配的字符串后面的两行:ApplicationIdentifierPrefix.
之后,使用sed修剪括号和空格行.
使用一系列管道:
egrep -a -A 2 ApplicationIdentifierPrefix file.mobileprovision | grep string | sed -e 's/<string>//' -e 's/<\/string>//' -e 's/ //'
Run Code Online (Sandbox Code Playgroud)
我根据jlawrie的答案创建了一个bash函数,列出了该~/Library/MobileDevice/Provisioning Profiles文件夹中所有.mobileprovision的包ID .
将其保存到您的.bash_profile电话中,然后list_xcode_provisioning_profiles从终端拨打电话.
list_xcode_provisioning_profiles() {
while IFS= read -rd '' f; do
2> /dev/null /usr/libexec/PlistBuddy -c 'Print :Entitlements:application-identifier' /dev/stdin \
<<< $(security cms -D -i "$f")
done < <(find "$HOME/Library/MobileDevice/Provisioning Profiles" -name '*.mobileprovision' -print0)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11895 次 |
| 最近记录: |