Update version to 1.1.8 and fix version code to 9 in Android build files
This commit is contained in:
479
build-apk.sh
479
build-apk.sh
@@ -3,15 +3,60 @@
|
||||
# 안드로이드 앱 빌드 스크립트 (디버그 및 릴리즈 버전)
|
||||
# 사용법: ./build-apk-for-device.sh
|
||||
|
||||
# 스크립트 시작 시간 기록
|
||||
START_TIME=$(date +%s)
|
||||
|
||||
# 색상 정의
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# 로그 파일 설정
|
||||
LOG_FILE="app_build.log"
|
||||
ERROR_LOG_FILE="app_error.log"
|
||||
|
||||
# 타임아웃 설정 (초 단위)
|
||||
BUILD_TIMEOUT=600 # 10분
|
||||
|
||||
# 오류 처리 함수
|
||||
handle_error() {
|
||||
local exit_code=$1
|
||||
local error_message=$2
|
||||
local command=$3
|
||||
|
||||
echo -e "\n${RED}오류 발생: $error_message${NC}" | tee -a "$ERROR_LOG_FILE"
|
||||
echo -e "${YELLOW}명령어: $command${NC}" | tee -a "$ERROR_LOG_FILE"
|
||||
echo -e "${YELLOW}종료 코드: $exit_code${NC}" | tee -a "$ERROR_LOG_FILE"
|
||||
echo -e "${YELLOW}전체 로그는 $LOG_FILE 파일을 확인하세요.${NC}"
|
||||
|
||||
exit $exit_code
|
||||
}
|
||||
|
||||
# 빌드 시간 계산 함수
|
||||
show_build_time() {
|
||||
local end_time=$(date +%s)
|
||||
local build_time=$((end_time - START_TIME))
|
||||
local minutes=$((build_time / 60))
|
||||
local seconds=$((build_time % 60))
|
||||
|
||||
echo -e "\n${GREEN}빌드 완료 시간: ${minutes}분 ${seconds}초${NC}"
|
||||
}
|
||||
|
||||
# 로그 파일 초기화
|
||||
echo "===== 빌드 시작: $(date) =====" > "$LOG_FILE"
|
||||
echo "===== 오류 로그: $(date) =====" > "$ERROR_LOG_FILE"
|
||||
|
||||
# 프로젝트 디렉토리로 이동
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
# 릴리즈 디렉토리 생성
|
||||
RELEASE_DIR="$(pwd)/release"
|
||||
if [ ! -d "$RELEASE_DIR" ]; then
|
||||
mkdir -p "$RELEASE_DIR"
|
||||
echo -e "${GREEN}릴리즈 디렉토리가 생성되었습니다: $RELEASE_DIR${NC}"
|
||||
fi
|
||||
|
||||
# 빌드 타입 선택 메뉴
|
||||
echo -e "${YELLOW}Zellyy Finance 앱 빌드 스크립트${NC}"
|
||||
echo -e "${YELLOW}=============================${NC}"
|
||||
@@ -43,76 +88,107 @@ case $CHOICE in
|
||||
;;
|
||||
esac
|
||||
|
||||
# 현재 버전 코드 가져오기
|
||||
CURRENT_VERSION_CODE=$(grep -o 'versionCode [0-9]*' android/app/build.gradle | awk '{print $2}')
|
||||
# 버전 코드가 비어있으면 기본값 1로 설정
|
||||
if [ -z "$CURRENT_VERSION_CODE" ]; then
|
||||
CURRENT_VERSION_CODE=1
|
||||
echo -e "${YELLOW}버전 코드가 없어 기본값 1로 설정했습니다.${NC}"
|
||||
fi
|
||||
echo -e "${YELLOW}현재 버전 코드: ${CURRENT_VERSION_CODE}${NC}"
|
||||
# 버전 정보 파일 확인
|
||||
VERSION_PROPS_FILE="version.properties"
|
||||
|
||||
# 현재 버전 이름 가져오기
|
||||
CURRENT_VERSION_NAME=$(grep -o 'versionName "[^"]*"' android/app/build.gradle | sed 's/versionName "//' | sed 's/"//')
|
||||
# 버전 이름이 비어있으면 기본값 1.0.0으로 설정
|
||||
if [ -z "$CURRENT_VERSION_NAME" ]; then
|
||||
CURRENT_VERSION_NAME="1.0.0"
|
||||
echo -e "${YELLOW}버전 이름이 없어 기본값 1.0.0으로 설정했습니다.${NC}"
|
||||
# 버전 정보 파일이 있는지 확인
|
||||
if [ -f "$VERSION_PROPS_FILE" ]; then
|
||||
# 파일에서 버전 정보 로드
|
||||
source "$VERSION_PROPS_FILE"
|
||||
CURRENT_VERSION_CODE=$VERSION_CODE
|
||||
CURRENT_VERSION_NAME=$VERSION_NAME
|
||||
CURRENT_BUILD_NUMBER=$BUILD_NUMBER
|
||||
echo -e "${GREEN}버전 정보 로드 완료: 버전 코드=${BLUE}$CURRENT_VERSION_CODE${GREEN}, 버전 이름=${BLUE}$CURRENT_VERSION_NAME${GREEN}, 빌드 번호=${BLUE}$CURRENT_BUILD_NUMBER${NC}"
|
||||
else
|
||||
# 파일이 없으면 build.gradle에서 버전 정보 가져오기
|
||||
CURRENT_VERSION_CODE=$(grep -o 'versionCode [0-9]*' android/app/build.gradle | sed 's/versionCode //')
|
||||
CURRENT_VERSION_NAME=$(grep -o 'versionName "[^"]*"' android/app/build.gradle | sed 's/versionName "//' | sed 's/"//')
|
||||
|
||||
# 버전 코드가 비어있으면 기본값 1로 설정
|
||||
if [ -z "$CURRENT_VERSION_CODE" ]; then
|
||||
CURRENT_VERSION_CODE=1
|
||||
echo -e "${YELLOW}버전 코드가 없어 기본값 1로 설정했습니다.${NC}"
|
||||
fi
|
||||
|
||||
# 버전 이름이 비어있으면 기본값 1.0.0으로 설정
|
||||
if [ -z "$CURRENT_VERSION_NAME" ]; then
|
||||
CURRENT_VERSION_NAME="1.0.0"
|
||||
echo -e "${YELLOW}버전 이름이 없어 기본값 1.0.0으로 설정했습니다.${NC}"
|
||||
fi
|
||||
|
||||
# 빌드 번호 기본값 설정
|
||||
CURRENT_BUILD_NUMBER=$CURRENT_VERSION_CODE
|
||||
fi
|
||||
echo -e "${YELLOW}현재 버전 이름: ${CURRENT_VERSION_NAME}${NC}"
|
||||
|
||||
echo -e "${YELLOW}현재 버전 코드: ${BLUE}$CURRENT_VERSION_CODE${NC}"
|
||||
echo -e "${YELLOW}현재 버전 이름: ${BLUE}$CURRENT_VERSION_NAME${NC}"
|
||||
echo -e "${YELLOW}현재 빌드 번호: ${BLUE}$CURRENT_BUILD_NUMBER${NC}"
|
||||
|
||||
# 버전 정보 수정 여부 확인
|
||||
echo -e "${YELLOW}버전 정보를 수정하시겠습니까? (y/n)${NC}"
|
||||
read -r MODIFY_VERSION
|
||||
# 기본값 설정
|
||||
NEW_VERSION_CODE=$CURRENT_VERSION_CODE
|
||||
NEW_VERSION_NAME=$CURRENT_VERSION_NAME
|
||||
|
||||
if [[ "$MODIFY_VERSION" == "y" || "$MODIFY_VERSION" == "Y" ]]; then
|
||||
# 버전 코드 입력
|
||||
echo -e "${YELLOW}새 버전 코드를 입력하세요 (현재: ${CURRENT_VERSION_CODE}):${NC}"
|
||||
echo -e "${YELLOW}새 버전 코드를 입력하세요 (현재: ${BLUE}${CURRENT_VERSION_CODE}${YELLOW}, 엔터를 치면 기본값 사용):${NC}"
|
||||
read -r NEW_VERSION_CODE_INPUT
|
||||
if [ -n "$NEW_VERSION_CODE_INPUT" ]; then
|
||||
NEW_VERSION_CODE=$NEW_VERSION_CODE_INPUT
|
||||
else
|
||||
NEW_VERSION_CODE=$CURRENT_VERSION_CODE
|
||||
fi
|
||||
|
||||
# 버전 이름 입력
|
||||
echo -e "${YELLOW}새 버전 이름을 입력하세요 (현재: ${CURRENT_VERSION_NAME}):${NC}"
|
||||
echo -e "${YELLOW}새 버전 이름을 입력하세요 (현재: ${BLUE}${CURRENT_VERSION_NAME}${YELLOW}, 엔터를 치면 기본값 사용):${NC}"
|
||||
read -r NEW_VERSION_NAME_INPUT
|
||||
if [ -n "$NEW_VERSION_NAME_INPUT" ]; then
|
||||
VERSION_NAME=$NEW_VERSION_NAME_INPUT
|
||||
else
|
||||
VERSION_NAME=$CURRENT_VERSION_NAME
|
||||
NEW_VERSION_NAME=$NEW_VERSION_NAME_INPUT
|
||||
fi
|
||||
|
||||
echo -e "${GREEN}버전 정보가 업데이트되었습니다: 버전 코드=${NEW_VERSION_CODE}, 버전 이름=${VERSION_NAME}${NC}"
|
||||
else
|
||||
NEW_VERSION_CODE=$CURRENT_VERSION_CODE
|
||||
VERSION_NAME=$CURRENT_VERSION_NAME
|
||||
echo -e "${GREEN}버전 정보가 업데이트되었습니다: 버전 코드=${BLUE}${NEW_VERSION_CODE}${GREEN}, 버전 이름=${BLUE}${NEW_VERSION_NAME}${NC}"
|
||||
fi
|
||||
|
||||
# 빌드 넘버 자동 설정
|
||||
BUILD_NUMBER=$NEW_VERSION_CODE
|
||||
echo -e "${GREEN}빌드 넘버가 자동으로 ${BUILD_NUMBER}(으)로 설정되었습니다.${NC}"
|
||||
# 빌드 번호 기본값 설정
|
||||
BUILD_NUMBER=$CURRENT_BUILD_NUMBER
|
||||
|
||||
# 빌드 넘버 수정 여부 확인
|
||||
echo -e "${YELLOW}빌드 넘버를 수정하시겠습니까? (y/n)${NC}"
|
||||
# 릴리즈 빌드일 경우 빌드 번호 자동 증가 제안
|
||||
if [[ "$BUILD_TYPE" == "release-aab" || "$BUILD_TYPE" == "release-apk" ]]; then
|
||||
SUGGESTED_BUILD_NUMBER=$((CURRENT_BUILD_NUMBER + 1))
|
||||
echo -e "${YELLOW}릴리즈 빌드에는 빌드 번호 증가가 권장됩니다 (${BLUE}$CURRENT_BUILD_NUMBER${YELLOW} -> ${BLUE}$SUGGESTED_BUILD_NUMBER${YELLOW})${NC}"
|
||||
else
|
||||
SUGGESTED_BUILD_NUMBER=$CURRENT_BUILD_NUMBER
|
||||
fi
|
||||
|
||||
echo -e "${GREEN}현재 빌드 번호: ${BLUE}$CURRENT_BUILD_NUMBER${NC}"
|
||||
|
||||
# 빌드 번호 수정 여부 확인
|
||||
echo -e "${YELLOW}빌드 번호를 수정하시겠습니까? (y/n)${NC}"
|
||||
read -r MODIFY_BUILD
|
||||
if [[ "$MODIFY_BUILD" == "y" || "$MODIFY_BUILD" == "Y" ]]; then
|
||||
echo -e "${YELLOW}새 빌드 넘버를 입력하세요 (현재: ${BUILD_NUMBER}):${NC}"
|
||||
echo -e "${YELLOW}새 빌드 번호를 입력하세요 (추천: ${BLUE}$SUGGESTED_BUILD_NUMBER${YELLOW}, 엔터를 치면 추천값 사용):${NC}"
|
||||
read -r NEW_BUILD_NUMBER
|
||||
if [ -n "$NEW_BUILD_NUMBER" ]; then
|
||||
BUILD_NUMBER=$NEW_BUILD_NUMBER
|
||||
echo -e "${GREEN}빌드 넘버가 ${BUILD_NUMBER}(으)로 설정되었습니다.${NC}"
|
||||
else
|
||||
BUILD_NUMBER=$SUGGESTED_BUILD_NUMBER
|
||||
fi
|
||||
echo -e "${GREEN}빌드 번호가 ${BLUE}$BUILD_NUMBER${GREEN}(으)로 설정되었습니다.${NC}"
|
||||
else
|
||||
BUILD_NUMBER=$SUGGESTED_BUILD_NUMBER
|
||||
echo -e "${GREEN}빌드 번호가 ${BLUE}$BUILD_NUMBER${GREEN}(으)로 자동 설정되었습니다.${NC}"
|
||||
fi
|
||||
|
||||
# 릴리즈 빌드인 경우 버전 코드 증가 여부 확인
|
||||
if [[ "$BUILD_TYPE" == "release-aab" || "$BUILD_TYPE" == "release-apk" ]]; then
|
||||
# 버전 정보를 이미 수정했다면 다시 묻지 않음
|
||||
if [[ "$MODIFY_VERSION" != "y" && "$MODIFY_VERSION" != "Y" ]]; then
|
||||
echo -e "${YELLOW}버전 코드를 증가시키겠습니까? 현재 버전 코드: ${NEW_VERSION_CODE} (y/n)${NC}"
|
||||
SUGGESTED_VERSION_CODE=$((CURRENT_VERSION_CODE + 1))
|
||||
echo -e "${YELLOW}릴리즈 빌드에는 버전 코드 증가가 권장됩니다 (${BLUE}$CURRENT_VERSION_CODE${YELLOW} -> ${BLUE}$SUGGESTED_VERSION_CODE${YELLOW})${NC}"
|
||||
echo -e "${YELLOW}버전 코드를 증가시키겠습니까? (y/n)${NC}"
|
||||
read -r INCREASE_VERSION
|
||||
if [[ "$INCREASE_VERSION" == "y" || "$INCREASE_VERSION" == "Y" ]]; then
|
||||
NEW_VERSION_CODE=$((NEW_VERSION_CODE + 1))
|
||||
NEW_VERSION_CODE=$SUGGESTED_VERSION_CODE
|
||||
echo -e "${GREEN}버전 코드가 ${NEW_VERSION_CODE}(으)로 증가됩니다.${NC}"
|
||||
fi
|
||||
fi
|
||||
@@ -132,24 +208,39 @@ if [[ "$BUILD_TYPE" == "release-aab" || "$BUILD_TYPE" == "release-apk" ]]; then
|
||||
echo -e "${GREEN}서명 설정이 업데이트되었습니다.${NC}"
|
||||
fi
|
||||
|
||||
echo -e "${YELLOW}Zellyy Finance 앱 빌드 시작 (${BUILD_TYPE}, 빌드 넘버: ${BUILD_NUMBER}, 버전 코드: ${NEW_VERSION_CODE}): $(date)${NC}"
|
||||
echo -e "${YELLOW}Zellyy Finance 앱 빌드 시작 (${BUILD_TYPE}, 빌드 번호: ${BUILD_NUMBER}, 버전 코드: ${NEW_VERSION_CODE}, 버전 이름: ${NEW_VERSION_NAME}): $(date)${NC}"
|
||||
|
||||
# 버전 정보를 파일에 저장하는 함수
|
||||
save_version_info() {
|
||||
# version.properties 파일 업데이트 - 루트 디렉토리와 app 디렉토리 모두에 저장
|
||||
echo "buildNumber=$BUILD_NUMBER" > android/version.properties
|
||||
echo "versionCode=$NEW_VERSION_CODE" >> android/version.properties
|
||||
echo "versionName=$VERSION_NAME" >> android/version.properties
|
||||
# 루트 디렉토리에 version.properties 파일 저장
|
||||
cat > "$VERSION_PROPS_FILE" << EOF
|
||||
# Zellyy Finance 앱 버전 정보
|
||||
# 마지막 업데이트: $(date +"%Y-%m-%d %H:%M:%S")
|
||||
VERSION_CODE=$NEW_VERSION_CODE
|
||||
VERSION_NAME=$NEW_VERSION_NAME
|
||||
BUILD_NUMBER=$BUILD_NUMBER
|
||||
EOF
|
||||
|
||||
# android 디렉토리에 version.properties 파일 저장
|
||||
cat > "android/version.properties" << EOF
|
||||
# Zellyy Finance 앱 버전 정보
|
||||
# 마지막 업데이트: $(date +"%Y-%m-%d %H:%M:%S")
|
||||
buildNumber=$BUILD_NUMBER
|
||||
versionCode=$NEW_VERSION_CODE
|
||||
versionName=$NEW_VERSION_NAME
|
||||
EOF
|
||||
|
||||
# app 디렉토리에도 동일한 파일 복사
|
||||
cp android/version.properties android/app/version.properties
|
||||
cp "android/version.properties" "android/app/version.properties"
|
||||
|
||||
# app_version.json 파일 업데이트
|
||||
cat > android/app_version.json << EOF
|
||||
# app_version.json 파일 업데이트 - 사용자 정보와 빌드 정보 포함
|
||||
cat > "android/app_version.json" << EOF
|
||||
{
|
||||
"versionCode": $NEW_VERSION_CODE,
|
||||
"versionName": "$VERSION_NAME",
|
||||
"versionName": "$NEW_VERSION_NAME",
|
||||
"buildNumber": $BUILD_NUMBER,
|
||||
"buildDate": "$(date +"%Y-%m-%d %H:%M:%S")",
|
||||
"buildType": "$BUILD_TYPE",
|
||||
"notes": "사용자가 수정한 버전 정보입니다. 이 파일을 편집하여 앱 버전 정보를 변경할 수 있습니다."
|
||||
}
|
||||
EOF
|
||||
@@ -157,17 +248,59 @@ EOF
|
||||
# AppVersionInfo.tsx 파일의 하드코딩된 버전 정보 업데이트
|
||||
echo -e "${YELLOW}AppVersionInfo.tsx 파일의 버전 정보 업데이트 중...${NC}"
|
||||
|
||||
# 백업 파일 생성
|
||||
cp src/components/AppVersionInfo.tsx src/components/AppVersionInfo.tsx.bak
|
||||
|
||||
# AppVersionInfo.tsx 파일에서 하드코딩된 버전 정보 업데이트
|
||||
sed -i '' "s/versionName: '[^']*'/versionName: '$VERSION_NAME'/" src/components/AppVersionInfo.tsx
|
||||
sed -i '' "/hardcodedVersionInfo/,/}/s/buildNumber: [0-9]*/buildNumber: $BUILD_NUMBER/" src/components/AppVersionInfo.tsx
|
||||
sed -i '' "/hardcodedVersionInfo/,/}/s/versionCode: [0-9]*/versionCode: $NEW_VERSION_CODE/" src/components/AppVersionInfo.tsx
|
||||
|
||||
echo -e "${GREEN}AppVersionInfo.tsx 파일의 버전 정보가 업데이트되었습니다.${NC}"
|
||||
# AppVersionInfo.tsx 파일이 존재하는지 확인
|
||||
APP_VERSION_FILE="src/components/AppVersionInfo.tsx"
|
||||
if [ -f "$APP_VERSION_FILE" ]; then
|
||||
# 백업 파일 생성
|
||||
cp "$APP_VERSION_FILE" "${APP_VERSION_FILE}.bak"
|
||||
|
||||
# AppVersionInfo.tsx 파일에서 하드코딩된 버전 정보 업데이트
|
||||
sed -i '' "s/versionName: '[^']*'/versionName: '$NEW_VERSION_NAME'/" "$APP_VERSION_FILE"
|
||||
sed -i '' "/hardcodedVersionInfo/,/}/s/buildNumber: [0-9]*/buildNumber: $BUILD_NUMBER/" "$APP_VERSION_FILE"
|
||||
sed -i '' "/hardcodedVersionInfo/,/}/s/versionCode: [0-9]*/versionCode: $NEW_VERSION_CODE/" "$APP_VERSION_FILE"
|
||||
|
||||
echo -e "${GREEN}AppVersionInfo.tsx 파일의 버전 정보가 업데이트되었습니다.${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}경고: AppVersionInfo.tsx 파일을 찾을 수 없습니다.${NC}"
|
||||
fi
|
||||
|
||||
echo -e "${GREEN}버전 정보가 모든 파일에 저장되었습니다: 버전 코드=${NEW_VERSION_CODE}, 버전 이름=${VERSION_NAME}, 빌드 넘버=${BUILD_NUMBER}${NC}"
|
||||
# AndroidManifest.xml 파일의 버전 정보 업데이트
|
||||
MANIFEST_FILE="android/app/src/main/AndroidManifest.xml"
|
||||
if [ -f "$MANIFEST_FILE" ]; then
|
||||
# 기존 버전 정보가 있는지 확인
|
||||
if grep -q 'android:versionCode' "$MANIFEST_FILE"; then
|
||||
# 기존 버전 정보 업데이트
|
||||
sed -i '' "s/android:versionCode=\"[0-9]*\"/android:versionCode=\"$NEW_VERSION_CODE\"/" "$MANIFEST_FILE"
|
||||
sed -i '' "s/android:versionName=\"[^\"]*\"/android:versionName=\"$NEW_VERSION_NAME\"/" "$MANIFEST_FILE"
|
||||
else
|
||||
# 버전 정보가 없으면 추가
|
||||
sed -i '' "s/<manifest xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\">/<manifest xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"\n android:versionCode=\"$NEW_VERSION_CODE\"\n android:versionName=\"$NEW_VERSION_NAME\">/" "$MANIFEST_FILE"
|
||||
fi
|
||||
echo -e "${GREEN}AndroidManifest.xml 파일의 버전 정보가 업데이트되었습니다.${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}경고: AndroidManifest.xml 파일을 찾을 수 없습니다.${NC}"
|
||||
fi
|
||||
|
||||
# build.gradle 파일의 버전 정보 업데이트
|
||||
GRADLE_FILE="android/app/build.gradle"
|
||||
if [ -f "$GRADLE_FILE" ]; then
|
||||
# 백업 파일 생성
|
||||
cp "$GRADLE_FILE" "${GRADLE_FILE}.bak"
|
||||
|
||||
# 버전 코드와 버전 이름 업데이트 (더 안정적인 방식으로 수정)
|
||||
# Update versionCode within defaultConfig block (ensure correct indentation)
|
||||
sed -i '' "/defaultConfig {/,/}/s/^[[:space:]]*versionCode[[:space:]]*=.*$/ versionCode = $NEW_VERSION_CODE/" "$GRADLE_FILE"
|
||||
# Update 'def versionCode = ...' (ensure correct indentation)
|
||||
sed -i '' "s/^[[:space:]]*def versionCode[[:space:]]*=.*$/ def versionCode = $NEW_VERSION_CODE/" "$GRADLE_FILE"
|
||||
# Update versionName within defaultConfig block (ensure correct indentation and quotes)
|
||||
sed -i '' "/defaultConfig {/,/}/s/^[[:space:]]*versionName[[:space:]]*=.*$/ versionName = \\\"$NEW_VERSION_NAME\\\"/" "$GRADLE_FILE"
|
||||
|
||||
echo -e "${GREEN}build.gradle 파일의 버전 정보가 업데이트되었습니다.${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}경고: build.gradle 파일을 찾을 수 없습니다.${NC}"
|
||||
fi
|
||||
|
||||
echo -e "${GREEN}버전 정보가 모든 파일에 저장되었습니다: 버전 코드=${BLUE}$NEW_VERSION_CODE${GREEN}, 버전 이름=${BLUE}$NEW_VERSION_NAME${GREEN}, 빌드 번호=${BLUE}$BUILD_NUMBER${NC}"
|
||||
}
|
||||
|
||||
# 빌드 시작 전에 버전 정보 저장
|
||||
@@ -182,156 +315,166 @@ rm -rf dist
|
||||
echo -e "${GREEN}빌드 캐시가 삭제되었습니다.${NC}"
|
||||
|
||||
# 1. 웹 앱 빌드
|
||||
echo -e "${YELLOW}1. 웹 앱 빌드 중...${NC}"
|
||||
npm run build
|
||||
if [ $? -ne 0 ]; then
|
||||
echo -e "${RED}웹 앱 빌드 실패. 빌드 프로세스를 중단합니다.${NC}"
|
||||
exit 1
|
||||
echo -e "${YELLOW}1. 웹 앱 빌드 중...${NC}" | tee -a "$LOG_FILE"
|
||||
echo "실행 명령어: npm run build" >> "$LOG_FILE"
|
||||
npm run build >> "$LOG_FILE" 2>&1
|
||||
BUILD_RESULT=$?
|
||||
if [ $BUILD_RESULT -ne 0 ]; then
|
||||
handle_error $BUILD_RESULT "웹 앱 빌드 실패" "npm run build"
|
||||
fi
|
||||
echo -e "${GREEN}웹 앱 빌드 완료${NC}"
|
||||
echo -e "${GREEN}웹 앱 빌드 완료${NC}" | tee -a "$LOG_FILE"
|
||||
|
||||
# 2. Capacitor에 웹 코드 복사 및 동기화
|
||||
echo -e "${YELLOW}2. Capacitor에 웹 코드 동기화 중...${NC}"
|
||||
npx cap sync android
|
||||
if [ $? -ne 0 ]; then
|
||||
echo -e "${RED}Capacitor 동기화 실패. 빌드 프로세스를 중단합니다.${NC}"
|
||||
exit 1
|
||||
echo -e "${YELLOW}2. Capacitor에 웹 코드 동기화 중...${NC}" | tee -a "$LOG_FILE"
|
||||
echo "실행 명령어: npx cap sync android" >> "$LOG_FILE"
|
||||
npx cap sync android >> "$LOG_FILE" 2>&1
|
||||
BUILD_RESULT=$?
|
||||
if [ $BUILD_RESULT -ne 0 ]; then
|
||||
handle_error $BUILD_RESULT "Capacitor 동기화 실패" "npx cap sync android"
|
||||
fi
|
||||
echo -e "${GREEN}Capacitor 동기화 완료${NC}"
|
||||
echo -e "${GREEN}Capacitor 동기화 완료${NC}" | tee -a "$LOG_FILE"
|
||||
|
||||
# 3. 안드로이드 APK/AAB 빌드
|
||||
cd android
|
||||
|
||||
# Gradle 메모리 설정 최적화
|
||||
export GRADLE_OPTS="-Xmx4g -Dorg.gradle.jvmargs='-Xmx4g -XX:+HeapDumpOnOutOfMemoryError'"
|
||||
echo -e "${YELLOW}3. 안드로이드 빌드 시작 (${BUILD_TYPE})...${NC}"
|
||||
|
||||
# 빌드 타입에 따라 다른 명령어 실행
|
||||
if [ "$BUILD_TYPE" = "debug" ]; then
|
||||
# 디버그 빌드
|
||||
./gradlew clean assembleDebug
|
||||
if [ $? -ne 0 ]; then
|
||||
echo -e "${RED}디버그 APK 빌드 실패. 오류를 확인하세요.${NC}"
|
||||
exit 1
|
||||
echo -e "${YELLOW}3. 안드로이드 빌드 시작 (debug)...${NC}" | tee -a "../$LOG_FILE"
|
||||
echo "실행 명령어: ./gradlew assembleDebug" >> "../$LOG_FILE"
|
||||
./gradlew assembleDebug >> "../$LOG_FILE" 2>&1
|
||||
BUILD_RESULT=$?
|
||||
if [ $BUILD_RESULT -ne 0 ]; then
|
||||
handle_error $BUILD_RESULT "디버그 APK 빌드 실패" "./gradlew assembleDebug"
|
||||
fi
|
||||
echo -e "${GREEN}디버그 APK 빌드 완료${NC}" | tee -a "../$LOG_FILE"
|
||||
|
||||
# 빌드된 APK 파일 경로 출력
|
||||
APK_PATH="app/build/outputs/apk/debug/app-debug.apk"
|
||||
DEST_PATH="$HOME/zellyy-finance-debug.apk"
|
||||
|
||||
if [ -f "$APK_PATH" ]; then
|
||||
echo -e "${GREEN}디버그 APK 빌드 성공!${NC}"
|
||||
echo -e "APK 파일 위치: $(pwd)/$APK_PATH"
|
||||
echo -e "${GREEN}APK 파일 생성 완료: ${BLUE}$APK_PATH${NC}" | tee -a "../$LOG_FILE"
|
||||
|
||||
# 홈 디렉토리로 APK 복사
|
||||
cp "$APK_PATH" "$DEST_PATH"
|
||||
echo -e "${GREEN}APK를 홈 디렉토리에 복사했습니다: $DEST_PATH${NC}"
|
||||
# APK 파일 크기 출력
|
||||
APK_SIZE=$(du -h "$APK_PATH" | cut -f1)
|
||||
echo -e "${GREEN}APK 파일 크기: ${BLUE}$APK_SIZE${NC}" | tee -a "../$LOG_FILE"
|
||||
|
||||
# 연결된 기기 확인
|
||||
DEVICES=$(adb devices | grep -v "List" | grep "device" | wc -l)
|
||||
if [ $DEVICES -gt 0 ]; then
|
||||
echo -e "${YELLOW}연결된 기기가 감지되었습니다. 설치하시겠습니까? (y/n)${NC}"
|
||||
read -r INSTALL
|
||||
if [ "$INSTALL" = "y" ] || [ "$INSTALL" = "Y" ]; then
|
||||
# 기기가 여러 개인 경우
|
||||
if [ $(adb devices | grep -v "List" | grep "device" | wc -l) -gt 1 ]; then
|
||||
echo -e "${YELLOW}여러 기기가 연결되어 있습니다. 특정 기기를 선택하세요:${NC}"
|
||||
adb devices | grep -v "List" | grep "device"
|
||||
echo -e "${YELLOW}기기 ID를 입력하세요:${NC}"
|
||||
read -r DEVICE_ID
|
||||
adb -s "$DEVICE_ID" install -r "$APK_PATH"
|
||||
else
|
||||
adb install -r "$APK_PATH"
|
||||
fi
|
||||
echo -e "${GREEN}설치 완료!${NC}"
|
||||
fi
|
||||
else
|
||||
echo -e "${YELLOW}연결된 기기가 없습니다. 다음 방법으로 APK를 설치할 수 있습니다:${NC}"
|
||||
echo "1. USB 케이블로 폰을 연결하고 파일 전송"
|
||||
echo "2. 이메일이나 메신저로 APK 파일 전송"
|
||||
echo "3. adb 명령어 사용: adb install $DEST_PATH"
|
||||
fi
|
||||
# 릴리즈 디렉토리로 복사
|
||||
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
|
||||
RELEASE_FILENAME="zellyy_debug_v${VERSION_NAME}_${TIMESTAMP}.apk"
|
||||
cp "$APK_PATH" "../release/$RELEASE_FILENAME"
|
||||
echo -e "${GREEN}APK 파일이 릴리즈 디렉토리에 복사되었습니다: ${BLUE}release/$RELEASE_FILENAME${NC}" | tee -a "../$LOG_FILE"
|
||||
else
|
||||
echo -e "${RED}APK 빌드 실패. 오류를 확인하세요.${NC}"
|
||||
exit 1
|
||||
echo -e "${RED}APK 파일을 찾을 수 없습니다: $APK_PATH${NC}" | tee -a "../$ERROR_LOG_FILE"
|
||||
fi
|
||||
|
||||
|
||||
elif [ "$BUILD_TYPE" = "release-aab" ]; then
|
||||
# AAB 릴리즈 빌드
|
||||
./gradlew clean bundleRelease
|
||||
if [ $? -ne 0 ]; then
|
||||
echo -e "${RED}릴리즈 AAB 빌드 실패. 오류를 확인하세요.${NC}"
|
||||
exit 1
|
||||
echo -e "${YELLOW}3. 안드로이드 빌드 시작 (release-aab)...${NC}" | tee -a "../$LOG_FILE"
|
||||
echo "실행 명령어: ./gradlew bundleRelease" >> "../$LOG_FILE"
|
||||
./gradlew bundleRelease >> "../$LOG_FILE" 2>&1
|
||||
BUILD_RESULT=$?
|
||||
if [ $BUILD_RESULT -ne 0 ]; then
|
||||
handle_error $BUILD_RESULT "릴리즈 AAB 빌드 실패" "./gradlew bundleRelease"
|
||||
fi
|
||||
echo -e "${GREEN}릴리즈 AAB 빌드 완료${NC}" | tee -a "../$LOG_FILE"
|
||||
|
||||
# 빌드된 AAB 파일 경로 출력
|
||||
AAB_PATH="app/build/outputs/bundle/release/app-release.aab"
|
||||
DEST_PATH="$HOME/zellyy-finance-release.aab"
|
||||
|
||||
if [ -f "$AAB_PATH" ]; then
|
||||
echo -e "${GREEN}릴리즈 AAB 빌드 성공!${NC}"
|
||||
echo -e "AAB 파일 위치: $(pwd)/$AAB_PATH"
|
||||
echo -e "${GREEN}AAB 파일 생성 완료: ${BLUE}$AAB_PATH${NC}" | tee -a "../$LOG_FILE"
|
||||
|
||||
# 홈 디렉토리로 AAB 복사
|
||||
cp "$AAB_PATH" "$DEST_PATH"
|
||||
echo -e "${GREEN}AAB를 홈 디렉토리에 복사했습니다: $DEST_PATH${NC}"
|
||||
# AAB 파일 크기 출력
|
||||
AAB_SIZE=$(du -h "$AAB_PATH" | cut -f1)
|
||||
echo -e "${GREEN}AAB 파일 크기: ${BLUE}$AAB_SIZE${NC}" | tee -a "../$LOG_FILE"
|
||||
|
||||
echo -e "${YELLOW}다음 단계:${NC}"
|
||||
echo "1. Google Play Console에 AAB 파일 업로드: $DEST_PATH"
|
||||
echo "2. 내부 테스트 트랙을 선택하여 업로드"
|
||||
echo "3. 검토 과정이 완료될 때까지 기다리기 (보통 몇 시간에서 24시간 소요)"
|
||||
# 릴리즈 디렉토리로 복사
|
||||
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
|
||||
RELEASE_FILENAME="zellyy_release_v${VERSION_NAME}_${TIMESTAMP}.aab"
|
||||
cp "$AAB_PATH" "../release/$RELEASE_FILENAME"
|
||||
echo -e "${GREEN}AAB 파일이 릴리즈 디렉토리에 복사되었습니다: ${BLUE}release/$RELEASE_FILENAME${NC}" | tee -a "../$LOG_FILE"
|
||||
else
|
||||
echo -e "${RED}AAB 빌드 실패. 오류를 확인하세요.${NC}"
|
||||
exit 1
|
||||
echo -e "${RED}AAB 파일을 찾을 수 없습니다: $AAB_PATH${NC}" | tee -a "../$ERROR_LOG_FILE"
|
||||
fi
|
||||
|
||||
elif [ "$BUILD_TYPE" = "release-apk" ]; then
|
||||
# 서명된 APK 릴리즈 빌드
|
||||
./gradlew clean assembleRelease
|
||||
if [ $? -ne 0 ]; then
|
||||
echo -e "${RED}서명된 릴리즈 APK 빌드 실패. 오류를 확인하세요.${NC}"
|
||||
exit 1
|
||||
echo -e "${YELLOW}3. 안드로이드 빌드 시작 (release-apk)...${NC}" | tee -a "../$LOG_FILE"
|
||||
echo "실행 명령어: ./gradlew assembleRelease" >> "../$LOG_FILE"
|
||||
./gradlew assembleRelease >> "../$LOG_FILE" 2>&1
|
||||
BUILD_RESULT=$?
|
||||
if [ $BUILD_RESULT -ne 0 ]; then
|
||||
handle_error $BUILD_RESULT "릴리즈 APK 빌드 실패" "./gradlew assembleRelease"
|
||||
fi
|
||||
echo -e "${GREEN}릴리즈 APK 빌드 완료${NC}" | tee -a "../$LOG_FILE"
|
||||
|
||||
# 빌드된 APK 파일 경로 출력
|
||||
APK_PATH="app/build/outputs/apk/release/app-release.apk"
|
||||
if [ -f "$APK_PATH" ]; then
|
||||
echo -e "${GREEN}서명된 APK 파일 생성 완료: ${BLUE}$APK_PATH${NC}" | tee -a "../$LOG_FILE"
|
||||
|
||||
# APK 파일 크기 출력
|
||||
APK_SIZE=$(du -h "$APK_PATH" | cut -f1)
|
||||
echo -e "${GREEN}APK 파일 크기: ${BLUE}$APK_SIZE${NC}" | tee -a "../$LOG_FILE"
|
||||
|
||||
# 릴리즈 디렉토리로 복사
|
||||
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
|
||||
RELEASE_FILENAME="zellyy_release_signed_v${VERSION_NAME}_${TIMESTAMP}.apk"
|
||||
cp "$APK_PATH" "../release/$RELEASE_FILENAME"
|
||||
echo -e "${GREEN}서명된 APK 파일이 릴리즈 디렉토리에 복사되었습니다: ${BLUE}release/$RELEASE_FILENAME${NC}" | tee -a "../$LOG_FILE"
|
||||
else
|
||||
echo -e "${RED}APK 파일을 찾을 수 없습니다: $APK_PATH${NC}" | tee -a "../$ERROR_LOG_FILE"
|
||||
fi
|
||||
|
||||
SIGNED_APK_PATH="app/build/outputs/apk/release/app-release.apk"
|
||||
DEST_PATH="$HOME/zellyy-finance-release.apk"
|
||||
|
||||
if [ -f "$SIGNED_APK_PATH" ]; then
|
||||
echo -e "${GREEN}서명된 릴리즈 APK 빌드 성공!${NC}"
|
||||
echo -e "APK 파일 위치: $(pwd)/$SIGNED_APK_PATH"
|
||||
|
||||
# 홈 디렉토리로 APK 복사
|
||||
cp "$SIGNED_APK_PATH" "$DEST_PATH"
|
||||
echo -e "${GREEN}서명된 APK를 홈 디렉토리에 복사했습니다: $DEST_PATH${NC}"
|
||||
|
||||
# 연결된 기기 확인
|
||||
DEVICES=$(adb devices | grep -v "List" | grep "device" | wc -l)
|
||||
if [ $DEVICES -gt 0 ]; then
|
||||
echo -e "${YELLOW}연결된 기기가 감지되었습니다. 설치하시겠습니까? (y/n)${NC}"
|
||||
read -r INSTALL
|
||||
if [ "$INSTALL" = "y" ] || [ "$INSTALL" = "Y" ]; then
|
||||
# 기기가 여러 개인 경우
|
||||
if [ $(adb devices | grep -v "List" | grep "device" | wc -l) -gt 1 ]; then
|
||||
echo -e "${YELLOW}여러 기기가 연결되어 있습니다. 특정 기기를 선택하세요:${NC}"
|
||||
adb devices | grep -v "List" | grep "device"
|
||||
echo -e "${YELLOW}기기 ID를 입력하세요:${NC}"
|
||||
read -r DEVICE_ID
|
||||
adb -s "$DEVICE_ID" install -r "$SIGNED_APK_PATH"
|
||||
else
|
||||
adb install -r "$SIGNED_APK_PATH"
|
||||
fi
|
||||
echo -e "${GREEN}설치 완료!${NC}"
|
||||
DEVICES=$(adb devices | grep -v "List" | grep "device" | wc -l)
|
||||
if [ $DEVICES -gt 0 ]; then
|
||||
echo -e "${YELLOW}연결된 기기가 감지되었습니다. 설치하시겠습니까? (y/n)${NC}"
|
||||
read -r INSTALL
|
||||
if [ "$INSTALL" = "y" ] || [ "$INSTALL" = "Y" ]; then
|
||||
# 기기가 여러 개인 경우
|
||||
if [ $(adb devices | grep -v "List" | grep "device" | wc -l) -gt 1 ]; then
|
||||
echo -e "${YELLOW}여러 기기가 연결되어 있습니다. 특정 기기를 선택하세요:${NC}"
|
||||
adb devices | grep -v "List" | grep "device"
|
||||
echo -e "${YELLOW}기기 ID를 입력하세요:${NC}"
|
||||
read -r DEVICE_ID
|
||||
adb -s "$DEVICE_ID" install -r "$APK_PATH"
|
||||
else
|
||||
adb install -r "$APK_PATH"
|
||||
fi
|
||||
else
|
||||
echo -e "${YELLOW}연결된 기기가 없습니다. 다음 방법으로 APK를 설치할 수 있습니다:${NC}"
|
||||
echo "1. USB 케이블로 폰을 연결하고 파일 전송"
|
||||
echo "2. 이메일이나 메신저로 APK 파일 전송"
|
||||
echo "3. adb 명령어 사용: adb install $DEST_PATH"
|
||||
echo -e "${GREEN}설치 완료!${NC}"
|
||||
fi
|
||||
else
|
||||
echo -e "${RED}APK 빌드 실패. 오류를 확인하세요.${NC}"
|
||||
exit 1
|
||||
echo -e "${YELLOW}연결된 기기가 없습니다. 다음 방법으로 APK를 설치할 수 있습니다:${NC}"
|
||||
echo "1. USB 케이블로 폰을 연결하고 파일 전송"
|
||||
echo "2. 이메일이나 메신저로 APK 파일 전송"
|
||||
echo "3. adb 명령어 사용: adb install $APK_PATH"
|
||||
fi
|
||||
|
||||
else
|
||||
echo -e "${RED}지원되지 않는 빌드 타입입니다: $BUILD_TYPE${NC}"
|
||||
echo -e "${YELLOW}사용법: ./build-apk-for-device.sh${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 빌드 실패 시 처리
|
||||
if [ $? -ne 0 ]; then
|
||||
echo -e "${RED}APK 빌드 실패. 오류를 확인하세요.${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 빌드 시간 표시
|
||||
show_build_time
|
||||
|
||||
echo -e "${GREEN}빌드 프로세스 완료: $(date)${NC}"
|
||||
echo -e "${BLUE}빌드 로그: $LOG_FILE${NC}"
|
||||
echo -e "${YELLOW}오류 로그: $ERROR_LOG_FILE${NC}"
|
||||
|
||||
# 최종 결과 요약
|
||||
echo -e "\n${PURPLE}===== 빌드 결과 요약 =====${NC}"
|
||||
echo -e "${CYAN}빌드 타입: $BUILD_TYPE${NC}"
|
||||
echo -e "${CYAN}버전 코드: $NEW_VERSION_CODE${NC}"
|
||||
echo -e "${CYAN}버전 이름: $VERSION_NAME${NC}"
|
||||
echo -e "${CYAN}빌드 넘버: $BUILD_NUMBER${NC}"
|
||||
|
||||
if [ "$BUILD_TYPE" = "debug" ] && [ -f "android/$APK_PATH" ]; then
|
||||
echo -e "${GREEN}디버그 APK: android/$APK_PATH${NC}"
|
||||
elif [ "$BUILD_TYPE" = "release-aab" ] && [ -f "android/$AAB_PATH" ]; then
|
||||
echo -e "${GREEN}릴리즈 AAB: android/$AAB_PATH${NC}"
|
||||
elif [ "$BUILD_TYPE" = "release-apk" ] && [ -f "android/$APK_PATH" ]; then
|
||||
echo -e "${GREEN}릴리즈 APK: android/$APK_PATH${NC}"
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user