androidプロジェクト構成マクロを単一の独立したxmlファイルにエクスポートするためのshellスクリプト
4325 ワード
androidプロジェクト構成マクロを単一の独立したxmlファイルにエクスポートするためのshellスクリプト
最近、androidプロジェクトのプロジェクトプロファイルのマクロファイルを作業でエクスポートする必要があるため、プロジェクトプロファイルの内容は以下の通りです.
これらのマクロを大文字から小文字に変更する必要があります.xmlファイルのフォーマットに似ています.
プロジェクトプロファイルにはマクロが多く、手作業が面倒で、拡張性が悪いため、shellスクリプトを使用して操作を自動化する必要があります.作成したスクリプトファイルは以下の通りです.
上記のスクリプトの中で最も重要なのはこの文で、sedの使い方を参考にしてこのブログを参考にすることができます.http://blog.csdn.net/tcpipstack/article/details/8125819:
使用方法は、端末に次のように入力します.
最近、androidプロジェクトのプロジェクトプロファイルのマクロファイルを作業でエクスポートする必要があるため、プロジェクトプロファイルの内容は以下の通りです.
GEMINI=yes
GOOGLE_RELEASE_RIL=no
HAVE_AACENCODE_FEATURE=yes
HAVE_AEE_FEATURE=yes
HAVE_APPC_FEATURE=no
HAVE_AWBENCODE_FEATURE=yes
HAVE_CMMB_FEATURE=no
HAVE_GROUP_SCHEDULING=no
これらのマクロを大文字から小文字に変更する必要があります.xmlファイルのフォーマットに似ています.
<?xml version="1.0" encoding="utf-8"?>
<permissions>
<feature name="mtk_fm_recording_support" />
</permissions>
プロジェクトプロファイルにはマクロが多く、手作業が面倒で、拡張性が悪いため、shellスクリプトを使用して操作を自動化する必要があります.作成したスクリプトファイルは以下の通りです.
#!/bin/bash
#
# Description:
# Used to export the ProjectConfig.mk items to different xml files.
#
# History:
# tcpipstack, Oct.,29th, 2012, created it.
# tcpipstack, Oct.,30th, 2012, modified for add the read LINE and process it.
#
#--------------------------------------------------------------------------------------------
DATE=`date +%F-%H`
#
FN_EXEC_RESULT=0
FN_EXEC_RESULT_SUCCESS=0
FN_EXEC_RESULT_ERR=1
# orginal project config file
SRC_PRJ_CFG_FILE=/work/code/linux/shell/PrjCfgExportXml/ProjectConfig.mk
# destination project config file.
DST_PRJ_CFG_FILE=/work/code/linux/shell/PrjCfgExportXml/Dst_PrjCfg.mk
#
SRC_FILE_NAME=${SRC_PRJ_CFG_FILE}
DST_FILE_NAME=${DST_PRJ_CFG_FILE}
#--------------------------------------------------------------------------------------------
# if unexpect event happens, it will process here.
function fn_check_error()
{
echo " fn_check_error..."
exit=$?
echo "exit = ${exit}"
if [ ${exit} != 0 ] ; then
echo " Error code ${exit}"
fn_exit ${exit};
fi
}
# sub function exit with error code.
function fn_exit()
{
local fn_exit_code=${1}
exit ${fn_exit_code}
}
# print the global parameters
function fn_print_global_params()
{
echo -e "
fn_print_global_params..."
echo "--------YES_OR_NO : ${YES_OR_NO}"
}
# filter LINEs include the string of yes or no.
function fn_filter_special_LINE()
{
echo -e "
fn_filter_special_LINE..."
if [[ "${YES_OR_NO}" == "yes" ]]; then
echo "${YES_OR_NO} == yes"
sed -n '/yes\|YES/s/\([^=]\+\).*/\L\1/p' ${SRC_FILE_NAME} > ${DST_FILE_NAME}
elif [[ "${YES_OR_NO}" == "no" ]]; then
echo "${YES_OR_NO} == no"
sed -n '/no\|NO/s/\([^=]\+\).*/\L\1/p' ${SRC_FILE_NAME} > ${DST_FILE_NAME}
else
fn_exit ${FN_EXEC_RESULT_ERR}
fi
fn_check_error
}
# read every LINE and process
function fn_while_read_LINE()
{
echo -e "
fn_while_read_LINE..."
cat ${DST_FILE_NAME} | while read LINE
do
echo "$LINE"
fn_process_LINE_items $LINE
:
done
}
# process every LINE
function fn_process_LINE_items()
{
echo " fn_process_LINE_items: ${1}"
local CFG_ITEM=${1}
fn_write_cfg_2_xml ${CFG_ITEM}
}
# write the project config information to xml file
function fn_write_cfg_2_xml()
{
echo " fn_write_cfg_2_xml: ${1}"
local XML_FILE_NAME=${1}
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>" > ${XML_FILE_NAME}
echo "<permissions>" >> ${XML_FILE_NAME}
echo " <feature name=\"${1}\" />" >> ${XML_FILE_NAME}
echo "</permissions>" >> ${XML_FILE_NAME}
mv ${XML_FILE_NAME} ${XML_FILE_NAME}.xml
}
#--------------------------------------------------------------------------------------------
echo -e "
========================Start...========================
"
date
if [ $# != 1 ];then
echo "ERR: U must input one parameter: yes or no. Exit!"
fn_exit ${FN_EXEC_RESULT_ERR}
else
YES_OR_NO=${1}
fi
fn_print_global_params
fn_filter_special_LINE
fn_while_read_LINE
echo -e "
========================End! ========================
"
上記のスクリプトの中で最も重要なのはこの文で、sedの使い方を参考にしてこのブログを参考にすることができます.http://blog.csdn.net/tcpipstack/article/details/8125819:
sed -n '/yes\|YES/s/\([^=]\+\).*/\L\1/p' ${SRC_FILE_NAME} > ${DST_FILE_NAME}
使用方法は、端末に次のように入力します.
bash prj_cfg_export_xml.sh yes/no