123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- plugin_name=$1
- TARGET_DIR=$2/${plugin_name}
- PLUGIN_ROOT=$3
- ANDROID_PROJ_DIR=${PLUGIN_ROOT}/${plugin_name}/proj.android
- echo target dir is ${TARGET_DIR}
- echo android project dir is ${ANDROID_PROJ_DIR}
- #create directory for plugin
- mkdir -p ${TARGET_DIR}
- ###############################
- # functions used
- ###############################
- getLibraryFileName()
- {
- #get the library file name created by ndk build
- #fine line with LOCAL_MODULE_FILENAME
- DEFINED_FILENAME_LINE=`cat ./jni/Android.mk | grep LOCAL_MODULE_FILENAME`
-
- if [ -n "${DEFINED_FILENAME_LINE}" ]; then
- LIB_FILENAME=${DEFINED_FILENAME_LINE#*\=}
- else
- DEFINED_MODULE_LINE=`cat ./jni/Android.mk | grep LOCAL_MODULE `
- LIB_FILENAME=${DEFINED_MODULE_LINE#*\=}
- LIB_FILENAME=lib${LIB_FILENAME}
- fi
-
- LIB_FILENAME=`echo ${LIB_FILENAME} | sed 's/ //g'`
- LIB_FILENAME=${LIB_FILENAME}.a
- echo ${LIB_FILENAME}
- }
- getPathForAnt()
- {
- START_WITH_CYGWIN=`echo $1 | grep '^/cygdrive/'`
- if [ -z "${START_WITH_CYGWIN}" ]; then
- echo "$1"
- else
- RET=${START_WITH_CYGWIN#/cygdrive/}
- RET=${RET/\//:/}
- echo "${RET}"
- fi
- }
- echo
- echo "Publish plugin for android"
- pushd ${ANDROID_PROJ_DIR}
- #check local.properties file
- LOACL_FILE_NAME=local.properties
- if [ -f ${LOACL_FILE_NAME} ]; then
- DEFINED_SDK_DIR=`grep sdk.dir= ./${LOACL_FILE_NAME}`
- if [ -z "${DEFINED_SDK_DIR}" ]; then
- ANT_SDK_DIR="$(getPathForAnt ${INPUT_SDK_PATH})"
- echo "sdk.dir=${ANT_SDK_DIR}" >> ${LOACL_FILE_NAME}
- fi
-
- DEFINED_PLUGIN_DIR=`grep plugin.dir= ./${LOACL_FILE_NAME}`
- if [ -z "${DEFINED_PLUGIN_DIR}" ]; then
- ANT_PLUGIN_ROOT_DIR="$(getPathForAnt ${PLUGIN_ROOT})"
- echo "plugin.dir=${ANT_PLUGIN_ROOT_DIR}" >> ${LOACL_FILE_NAME}
- fi
- else
- ANT_SDK_DIR="$(getPathForAnt ${INPUT_SDK_PATH})"
- echo "sdk.dir=${ANT_SDK_DIR}" > ${LOACL_FILE_NAME}
- ANT_PLUGIN_ROOT_DIR="$(getPathForAnt ${PLUGIN_ROOT})"
- echo "plugin.dir=${ANT_PLUGIN_ROOT_DIR}" >> ${LOACL_FILE_NAME}
- fi
- #invoke ant build of plugin
- ${ANT_PATH}/ant -q clean
- ${ANT_PATH}/ant -q plugin-publish
- #copy .jar files to target directory
- mkdir -p ${TARGET_DIR}/android
- cp -rf ${ANDROID_PROJ_DIR}/bin/*.jar ${TARGET_DIR}/android
- if [ -d ${ANDROID_PROJ_DIR}/sdk ]; then
- cp -rf ${ANDROID_PROJ_DIR}/sdk/*.jar ${TARGET_DIR}/android
- fi
- #copy android depend on project to publish directory
- if [ -d "${ANDROID_PROJ_DIR}/DependProject" ]; then
- cp -rf "${ANDROID_PROJ_DIR}/DependProject" "${TARGET_DIR}/android"
- fi
- #copy ForManifest.xml file to publish directory
- if [ -f "${ANDROID_PROJ_DIR}/ForManifest.xml" ]; then
- cp -rf "${ANDROID_PROJ_DIR}/ForManifest.xml" "${TARGET_DIR}/android"
- fi
- #copy ForRes directory to publish directory
- if [ -d "${ANDROID_PROJ_DIR}/ForRes" ]; then
- cp -rf "${ANDROID_PROJ_DIR}/ForRes" "${TARGET_DIR}/android"
- fi
- #copy ForAssets directory to publish directory
- if [ -d "${ANDROID_PROJ_DIR}/ForAssets" ]; then
- cp -rf "${ANDROID_PROJ_DIR}/ForAssets" "${TARGET_DIR}/android"
- fi
- #copy CLibs directory to publish directory
- if [ -d "${ANDROID_PROJ_DIR}/CLibs" ]; then
- cp -rf "${ANDROID_PROJ_DIR}/CLibs" "${TARGET_DIR}/android"
- fi
- #Build C++ code
- BUILD_NATIVE_SCRIPT=${ANDROID_PROJ_DIR}/build_native.sh
- if [ -f $BUILD_NATIVE_SCRIPT ]; then
- echo "Build C++ code"
- #create include directory
- mkdir -p ${TARGET_DIR}/include
- cp -rf ${PLUGIN_ROOT}/${plugin_name}/include/* ${TARGET_DIR}/include
- #copy android include files
- ADNROID_SOURCE_DIR=${PLUGIN_ROOT}/${plugin_name}/platform/android
- if [ -d ${ADNROID_SOURCE_DIR} ]; then
- HAVE_HEADER_FILE=`find ${ADNROID_SOURCE_DIR} -name "*.h"`
- if [ -n "${HAVE_HEADER_FILE}" ]; then
- cp -rf ${ADNROID_SOURCE_DIR}/*.h "${TARGET_DIR}/android"
- fi
- fi
- #invoke ndk build for plugin project
- ./build_native.sh
- LIB_FILE="$(getLibraryFileName)"
- for File in ${ANDROID_PROJ_DIR}/obj/local/*
- do
- if [ -d $File ]; then
- if [ -f "${File}"/${LIB_FILE} ]; then
- ABI_NAME=`basename "${File}"`
- mkdir -p "${TARGET_DIR}/android/lib/${ABI_NAME}"
- cp -rf "${File}/${LIB_FILE}" "${TARGET_DIR}/android/lib/${ABI_NAME}"
- fi
- fi
- done
- #generate mk file for prebuild
- ${PLUGIN_ROOT}/tools/toolsForPublish/genPrebuildMK.sh ${ANDROID_PROJ_DIR}/jni/Android.mk ${TARGET_DIR}/android/Android.mk
- fi
- popd
|