У меня есть простой файл Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
$(shell ($(LOCAL_PATH)/echo_test.sh))
LOCAL_MODULE := libecho_test
LOCAL_MODULE_TAGS := optional
include $(BUILD_SHARED_LIBRARY)
Интересно, что он вызывает bash-скрипт echo_test.sh. В случае когда содержимое скрипта составляет
#!/bin/bash
echo 'echo is working' >&2
или
#!/bin/bash
echo 'echo is working' >/dev/null
все в порядке.
Когда сценарий bash имеет значение
, все идет не так, как надо
#!/bin/bash
echo 'echo is working'
или
#!/bin/bash
echo 'echo is working' >&1
Тогда возвращаемая ошибка
Android.mk:4: *** missing separator. Stop.
Это происходит как с Android NDK 7, так и при включении этого модуля во время сборки Android Ice Cream Sandwich 4.0.3.
Я действительно не могу понять, как обстоят дела со стандартным выводом и системой сборки Android. У кого-нибудь есть объяснение?