-1

这真让我抓狂。经过大量测试,我设法.sh在终端中成功运行了以下文件,并且它按我的预期完美运行。

adt -package -target apk -storetype pkcs12 -keystore $AND_CERT_FILE -storepass $AND_CERT_PASS "$OUTPUT" "$APP_XML" -C bin . -C icons/android . -extdir lib .

echo "DONE";

我想从 PHP 而不是终端运行它,所以我在 PHP 中编写了以下代码来调用该.sh文件,但是尽管 PHP 返回了“DONE”消息,但该命令不起作用。如果我输入错误命令,则不会显示任何错误。这是我用 PHP 写的:

$output = shell_exec("./test.sh");
echo $output;

有没有人有任何想法?

4

1 回答 1

0

您不能将选项与非选项参数混合使用。

正确的格式是:

command [-options ...] [--] [non-option arguments]

任何不以开头的单词-都将结束选项处理,bare --(可选)也将结束。之后的所有参数都不会作为选项处理。

参数"$OUTPUT""$APP_XML" 属于该行的末尾,或者缺少正确的选项前缀adt(我将其留作练习)。

adt -package -target apk -storetype pkcs12 \
    -keystore $AND_CERT_FILE \
    -storepass $AND_CERT_PASS \
    -C bin . \
    -C icons/android . \
    -extdir lib . \
    "$OUTPUT" "$APP_XML"

请注意,我提交了对原始代码的编辑,并在此处分解了行。在编辑之前,我一点头绪都没有。在添加\ newline对时,问题变得很明显。

看看这个adt 打包故障排除博客条目。这似乎证实了我的猜想。博主明确警告最后指定任何文件名。

于 2012-08-05T12:41:04.560 回答