在遇到此行为时,我尝试参数化我的应用程序构建脚本: 该应用程序已经构建(使用'cordova build ios --release')并且可用。
致电时:
$ xcrun ... -sign "iPhone Developer: XXX" -embed ...
一切都很顺利。到现在为止还挺好 :)
现在我想在调用中使用变量,如:
$ identity="iPhone Developer: XXX"
$ xcrun ... -sign $identity -embed ...
我稍后将$ identity参数传递给我的构建脚本
按照上面的逻辑执行'xcrun ...'会导致'codesign'命令仅将“iPhone”作为参数并失败(当然:)
因此,我试图掩盖$ identity最接近成功的要求是使用
$ xcrun ... -sign \""$identity"\" -embed ...
导致xcrun的“代码签名”调用
$ xcrun ... -sign \""$identity"\" -embed ...
[...]
/usr/bin/codesign ... --sign "iPhone Developer: XXX" ...
Program /usr/bin/codesign returned 1 : ["iPhone Developer: XXX": no identity found
]
有趣的是,直接从shell(/ bin / bash)执行命令可以正常工作!!?
我也试过定义已经有双引号的$ identity但是在没有引用的情况下会遇到初始行为。到目前为止,使用单引号的各种组合并没有帮助。
任何想法为什么xcrun错了? ......或者,如何以不同的方式做到这一点? 喜欢说:目标是有一个参数化的构建脚本
--------系统参数--------- $ uname -a Darwin allianz 13.0.0 Darwin Kernel Version 13.0.0:Thu Sep 19 22:22:27 PDT 2013; root:xnu-2422.1.72~6 / RELEASE_X86_64 x86_64
$ xcrun -version xcrun 22版。
答案 0 :(得分:2)
好的,这种奇怪似乎是因为我组装了命令行,如
xcrun -sdk iphoneos PackageAppliction $package -o $ipafile -sign \"$identity
\" -embed $profile
首先将部件(option1 $ variable1 option2 $ variable2 ...等)组装成一个字符串,如
assembledstring="-sdk iphoneos PackageAppliction $package -o $ipafile -sign \"$identity
\" -embed $profile"
然后才做
sh -c "xcrun $assemledstring"
对问题进行排序。