chore: 패키지 업데이트 및 빌드 스크립트 추가
This commit is contained in:
255
build-apk.sh
Executable file
255
build-apk.sh
Executable file
@@ -0,0 +1,255 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 안드로이드 앱 빌드 스크립트 (디버그 및 릴리즈 버전)
|
||||
# 사용법: ./build-apk-for-device.sh
|
||||
|
||||
# 색상 정의
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# 프로젝트 디렉토리로 이동
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
# 빌드 타입 선택 메뉴
|
||||
echo -e "${YELLOW}Zellyy Finance 앱 빌드 스크립트${NC}"
|
||||
echo -e "${YELLOW}=============================${NC}"
|
||||
echo -e "빌드 타입을 선택하세요:"
|
||||
echo -e "1) 디버그 빌드 (개발 및 테스트용)"
|
||||
echo -e "2) 릴리즈 빌드 - AAB (Google Play 스토어 배포용)"
|
||||
echo -e "3) 릴리즈 빌드 - 서명된 APK"
|
||||
echo -e "4) 종료"
|
||||
echo -n "선택 (1-4): "
|
||||
read -r CHOICE
|
||||
|
||||
case $CHOICE in
|
||||
1)
|
||||
BUILD_TYPE="debug"
|
||||
;;
|
||||
2)
|
||||
BUILD_TYPE="release-aab"
|
||||
;;
|
||||
3)
|
||||
BUILD_TYPE="release-apk"
|
||||
;;
|
||||
4)
|
||||
echo -e "${YELLOW}빌드를 취소합니다.${NC}"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo -e "${RED}잘못된 선택입니다. 빌드를 취소합니다.${NC}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# 현재 버전 코드 가져오기
|
||||
CURRENT_VERSION_CODE=$(grep -o 'versionCode [0-9]*' android/app/build.gradle | awk '{print $2}')
|
||||
echo -e "${YELLOW}현재 버전 코드: ${CURRENT_VERSION_CODE}${NC}"
|
||||
|
||||
# 빌드 넘버 자동 설정
|
||||
BUILD_NUMBER=$CURRENT_VERSION_CODE
|
||||
echo -e "${GREEN}빌드 넘버가 자동으로 ${BUILD_NUMBER}(으)로 설정되었습니다.${NC}"
|
||||
|
||||
# 릴리즈 빌드인 경우 버전 코드 증가 여부 확인
|
||||
NEW_VERSION_CODE=$CURRENT_VERSION_CODE
|
||||
if [[ "$BUILD_TYPE" == "release-aab" || "$BUILD_TYPE" == "release-apk" ]]; then
|
||||
echo -e "${YELLOW}버전 코드를 증가시키겠습니까? 현재 버전 코드: ${CURRENT_VERSION_CODE} (y/n)${NC}"
|
||||
read -r INCREASE_VERSION
|
||||
if [[ "$INCREASE_VERSION" == "y" || "$INCREASE_VERSION" == "Y" ]]; then
|
||||
NEW_VERSION_CODE=$((CURRENT_VERSION_CODE + 1))
|
||||
echo -e "${GREEN}버전 코드가 ${NEW_VERSION_CODE}(으)로 증가됩니다.${NC}"
|
||||
fi
|
||||
|
||||
# 키스토어 정보 자동 설정
|
||||
KEYSTORE_PASSWORD="djqrP1dnl#"
|
||||
KEY_ALIAS="key0"
|
||||
KEY_PASSWORD="aplfarm99##"
|
||||
|
||||
echo -e "${GREEN}키스토어 비밀번호와 키 정보가 자동으로 설정되었습니다.${NC}"
|
||||
|
||||
# 서명 설정 업데이트
|
||||
echo -e "${YELLOW}서명 설정 업데이트 중...${NC}"
|
||||
sed -i '' "s/storePassword \".*\"/storePassword \"$KEYSTORE_PASSWORD\"/" android/app/build.gradle
|
||||
sed -i '' "s/keyAlias \".*\"/keyAlias \"$KEY_ALIAS\"/" android/app/build.gradle
|
||||
sed -i '' "s/keyPassword \".*\"/keyPassword \"$KEY_PASSWORD\"/" android/app/build.gradle
|
||||
echo -e "${GREEN}서명 설정이 업데이트되었습니다.${NC}"
|
||||
fi
|
||||
|
||||
echo -e "${YELLOW}Zellyy Finance 앱 빌드 시작 (${BUILD_TYPE}, 빌드 넘버: ${BUILD_NUMBER}, 버전 코드: ${NEW_VERSION_CODE}): $(date)${NC}"
|
||||
|
||||
# 캐시 삭제
|
||||
echo -e "${YELLOW}빌드 캐시 삭제 중...${NC}"
|
||||
rm -rf node_modules/.vite
|
||||
rm -rf android/app/build
|
||||
rm -rf android/.gradle
|
||||
rm -rf dist
|
||||
echo -e "${GREEN}빌드 캐시가 삭제되었습니다.${NC}"
|
||||
|
||||
# 빌드 넘버 및 버전 코드 업데이트
|
||||
echo -e "${YELLOW}build.gradle 파일 업데이트 중...${NC}"
|
||||
# 빌드 넘버 업데이트
|
||||
sed -i '' "s/buildConfigField \"int\", \"BUILD_NUMBER\", \"[0-9]*\"/buildConfigField \"int\", \"BUILD_NUMBER\", \"$BUILD_NUMBER\"/" android/app/build.gradle
|
||||
# 버전 코드 업데이트
|
||||
sed -i '' "s/versionCode [0-9]*/versionCode $NEW_VERSION_CODE/" android/app/build.gradle
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo -e "${RED}build.gradle 업데이트 실패. 빌드 프로세스를 중단합니다.${NC}"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "${GREEN}빌드 넘버가 ${BUILD_NUMBER}(으)로, 버전 코드가 ${NEW_VERSION_CODE}(으)로 업데이트되었습니다.${NC}"
|
||||
|
||||
# 1. 웹 앱 빌드
|
||||
echo -e "${YELLOW}1. 웹 앱 빌드 중...${NC}"
|
||||
npm run build
|
||||
if [ $? -ne 0 ]; then
|
||||
echo -e "${RED}웹 앱 빌드 실패. 빌드 프로세스를 중단합니다.${NC}"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "${GREEN}웹 앱 빌드 완료${NC}"
|
||||
|
||||
# 2. Capacitor에 웹 코드 복사 및 동기화
|
||||
echo -e "${YELLOW}2. Capacitor에 웹 코드 동기화 중...${NC}"
|
||||
npx cap sync android
|
||||
if [ $? -ne 0 ]; then
|
||||
echo -e "${RED}Capacitor 동기화 실패. 빌드 프로세스를 중단합니다.${NC}"
|
||||
exit 1
|
||||
fi
|
||||
echo -e "${GREEN}Capacitor 동기화 완료${NC}"
|
||||
|
||||
# 3. 안드로이드 APK/AAB 빌드
|
||||
cd android
|
||||
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
|
||||
fi
|
||||
|
||||
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"
|
||||
|
||||
# 홈 디렉토리로 APK 복사
|
||||
cp "$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 "$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
|
||||
else
|
||||
echo -e "${RED}APK 빌드 실패. 오류를 확인하세요.${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
elif [ "$BUILD_TYPE" = "release-aab" ]; then
|
||||
# AAB 릴리즈 빌드
|
||||
./gradlew clean bundleRelease
|
||||
if [ $? -ne 0 ]; then
|
||||
echo -e "${RED}릴리즈 AAB 빌드 실패. 오류를 확인하세요.${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
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"
|
||||
|
||||
# 홈 디렉토리로 AAB 복사
|
||||
cp "$AAB_PATH" "$DEST_PATH"
|
||||
echo -e "${GREEN}AAB를 홈 디렉토리에 복사했습니다: $DEST_PATH${NC}"
|
||||
|
||||
echo -e "${YELLOW}다음 단계:${NC}"
|
||||
echo "1. Google Play Console에 AAB 파일 업로드: $DEST_PATH"
|
||||
echo "2. 내부 테스트 트랙을 선택하여 업로드"
|
||||
echo "3. 검토 과정이 완료될 때까지 기다리기 (보통 몇 시간에서 24시간 소요)"
|
||||
else
|
||||
echo -e "${RED}AAB 빌드 실패. 오류를 확인하세요.${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
elif [ "$BUILD_TYPE" = "release-apk" ]; then
|
||||
# 서명된 APK 릴리즈 빌드
|
||||
./gradlew clean assembleRelease
|
||||
if [ $? -ne 0 ]; then
|
||||
echo -e "${RED}서명된 릴리즈 APK 빌드 실패. 오류를 확인하세요.${NC}"
|
||||
exit 1
|
||||
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}"
|
||||
fi
|
||||
else
|
||||
echo -e "${YELLOW}연결된 기기가 없습니다. 다음 방법으로 APK를 설치할 수 있습니다:${NC}"
|
||||
echo "1. USB 케이블로 폰을 연결하고 파일 전송"
|
||||
echo "2. 이메일이나 메신저로 APK 파일 전송"
|
||||
echo "3. adb 명령어 사용: adb install $DEST_PATH"
|
||||
fi
|
||||
else
|
||||
echo -e "${RED}APK 빌드 실패. 오류를 확인하세요.${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
else
|
||||
echo -e "${RED}지원되지 않는 빌드 타입입니다: $BUILD_TYPE${NC}"
|
||||
echo -e "${YELLOW}사용법: ./build-apk-for-device.sh${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo -e "${GREEN}빌드 프로세스 완료: $(date)${NC}"
|
||||
Reference in New Issue
Block a user