使用xcrun打包时的奇怪(使用变量时,codesign失败)

时间:2013-11-29 11:03:08

标签: ios xcode bash cordova build

在遇到此行为时,我尝试参数化我的应用程序构建脚本: 该应用程序已经构建(使用'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版。

1 个答案:

答案 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"

对问题进行排序。