#!/bin/bash source /opt/ndk/env/ndk_env.sh # 定义颜色 RED="\033[0;31m" GREEN="\033[0;32m" YELLOW="\033[1;33m" BLUE="\033[0;34m" RESET="\033[0m" # 路径 NDK_PROJECT_PATH=$(pwd) APP_MK="./Ndk_Application.mk" ANDROID_MK="./Ndk_Android.mk" FIRMWARE_PATH="obj/local/armeabi-v7a/myapp" DEVICE_DATA="/data/" DEVICE_IP="" clean() { echo -e "${YELLOW}Cleaning up...${RESET}" ndk-build NDK_PROJECT_PATH=. NDK_APPLICATION_MK=$APP_MK APP_BUILD_SCRIPT=$ANDROID_MK clean echo -e "${YELLOW}Removing obj/ and libs/ directories...${RESET}" rm -rf obj/ libs/ sync echo -e "${GREEN}Cleaned up.${RESET}" } build_only() { echo -e "${BLUE}Building myapp...${RESET}" ndk-build NDK_PROJECT_PATH=. NDK_APPLICATION_MK=$APP_MK APP_BUILD_SCRIPT=$ANDROID_MK echo -e "${GREEN}Only build completed successfully.${RESET}" } push_only() { if [ -z "$DEVICE_IP" ]; then echo -e "${RED}Error: No device IP provided. Use -p ${RESET}" exit 1 fi echo -e "${BLUE}Connecting to device $DEVICE_IP...${RESET}" adb connect $DEVICE_IP if [ $? -ne 0 ]; then echo -e "${RED}Failed to connect to device $DEVICE_IP${RESET}" exit 1 fi echo -e "${BLUE}Pushing myapp to $DEVICE_DATA...${RESET}" adb -s $DEVICE_IP push $FIRMWARE_PATH $DEVICE_DATA if [ $? -ne 0 ]; then echo -e "${RED}Failed to push myapp to $DEVICE_DATA${RESET}" exit 1 fi echo -e "${GREEN}Push completed successfully.${RESET}" } build_and_push() { build_only push_only } show_help() { echo -e "${YELLOW}Usage: $0 [options]${RESET}" echo echo "Options:" echo -e " ${BLUE}-c${RESET} Clean project (remove obj/ and libs/)" echo -e " ${BLUE}-p ${RESET} Push myapp to device with given IP" echo -e " ${BLUE}-bp ${RESET} Build and push to device with given IP" echo -e " ${BLUE}-h${RESET} Show this help message" echo echo -e "${YELLOW}Default:${RESET} If no options are given, only build the project." } # 参数解析 if [ $# -eq 0 ]; then build_only exit 0 fi case "$1" in -c) clean ;; -p) DEVICE_IP="$2" push_only ;; -bp) DEVICE_IP="$2" build_and_push ;; -h) show_help ;; *) show_help exit 1 ;; esac