flutter 를 이용 앱 개발 - 1부

flutter 를 이용 앱 개발 - 1부
Photo by Artur Shamsutdinov / Unsplash

이번에 playstore / appstore 에 앱을 올리면서 생긴 일을 정리하며 기록으로 남긴다. 필자는 개발이라고는 알지 못하는 초보중에 초보이다. 아직도 이론 공부를 하면 이게 뭐지? 라는 생각을 하면서 기존에 고수들이 남긴 흔적을 찾으며 코딩을 따라하고 있다.

지난번 유료어플은 어떻게 해야하는 건가에 따른 개발이후 약 4개월만에 "가게부" 어플을 출시 하였다.

이번에 공부하면서 느낀 부분은 초반에 기획? 단계부터 앱을 어떻게 구상할 건가에 대해 고민을 했다. 여러 조사를 하면서 광고를 넣어야 할 앱이라면 그 광고를 어디에 어떻게 방식으로 기록을 하며 만들어야 최종단계에서 에러발생이 줄어든다했다.

여기서 여러 에러를 나열할 필요는 없지만, 간단하게 만든 체크리스트를 활용한다.

  • android / ios Fluter app 개발
  • Admob 사용에 있어서 마지막 개발 끝에 Real ID로 변경
  • android / ios 에 push upload screenshot
  • Icon 변경
  • 개인정보방침 URL 제작
  • 홍보용 Page 제작

1차적으로 위에 체크리스트를 가지고 활용하였다. 2차는 각각에 스토어에 업로드 할때 발생되는 에러도 해결해야한다.

이번에 사용된 내용을 중요 기록들

시뮬레이터와 리얼 디바이스에서 테스트를 할때 초기화 등에 사용할 수있는 스크립터

#!/usr/bin/env bash
set -e

FAILED_COMMANDS=()

function try_or_remind {
  local CMD="$1"
  echo "➡️ 실행 중: $CMD"
  bash -c "$CMD" || {
    echo "⚠️ 실패: $CMD"
    FAILED_COMMANDS+=("$CMD")
  }
}

echo "🔧 [STEP 0] Java 17 설정 (macOS only)"
JDK17_PATH=$(/usr/libexec/java_home -v17 2>/dev/null || true)
if [ -z "$JDK17_PATH" ]; then
  echo "❌ JDK 17이 설치되어 있지 않습니다. 먼저 설치하세요: brew install openjdk@17"
  exit 1
fi
export JAVA_HOME="$JDK17_PATH"
echo "✅ JAVA_HOME: $JAVA_HOME"
java -version

echo ""
echo "🧹 [STEP 1] Flutter Clean & Pub Get"
flutter clean
flutter pub get

echo ""
echo "🧼 [STEP 2] Android Gradle 정리"
if [ -f "android/gradlew" ]; then
  cd android
  try_or_remind "./gradlew clean"
  try_or_remind "./gradlew --stop"
  cd ..
else
  echo "⚠️ android/gradlew 없음. Android 정리 생략"
fi

echo ""
echo "🧹 [STEP 3] iOS Pods 및 캐시 정리"
try_or_remind "rm -rf ios/Pods ios/.symlinks ios/Flutter/Flutter.framework"
try_or_remind "pod cache clean --all"

echo ""
echo "🔁 [STEP 4] iOS Pod 재설치"
if [ -d "ios" ]; then
  cd ios
  try_or_remind "pod deintegrate"
  try_or_remind "pod install --repo-update"
  cd ..
else
  echo "⚠️ ios 디렉토리 없음. iOS 정리 생략"
fi

echo ""
echo "🧼 [STEP 5] Xcode DerivedData 삭제"
try_or_remind "rm -rf ~/Library/Developer/Xcode/DerivedData/*"

echo ""
echo "🧪 [STEP 6] (선택) 시뮬레이터 초기화 — 주석 해제시 실행됨"
# try_or_remind "xcrun simctl erase all"

echo ""
echo "✅ 전체 캐시 및 빌드 환경 초기화 완료!"

if [ ${#FAILED_COMMANDS[@]} -ne 0 ]; then
  echo ""
  echo "❌ 실패한 명령어 요약:"
  for cmd in "${FAILED_COMMANDS[@]}"; do
    echo " - $cmd"
  done
else
  echo "🎉 모든 명령이 성공적으로 실행되었습니다!"
fi

적당한 이름으로 저장하고(clean_all.sh) -> 터미널에서 chmod +x clean_all.sh 로 실행권한 준다.

이렇게 하면 android / iphone 를 초기화하면서 에러를 줄일 수 있다.

ios 리셋

#!/usr/bin/env bash
set -e          # 오류 발생 시 즉시 중단

echo "1) Flutter & Dart 캐시 정리"
flutter clean
flutter pub get

echo "2) iOS Pods + Symlinks 제거"
rm -rf ios/Pods ios/.symlinks ios/Flutter/Flutter.framework

echo "3) CocoaPods 전역 캐시 비우기"
pod cache clean --all

echo "4) Pod 재설치"
cd ios
pod deintegrate        # Podfile.lock까지 깨끗하게
pod install --repo-update
cd ..

echo "5) Xcode DerivedData 전체 삭제"
rm -rf ~/Library/Developer/Xcode/DerivedData/*   # 안전 ― Xcode가 자동 재생성 :contentReference[oaicite:2]{index=2}

echo "6) (선택) 시뮬레이터 초기화"
# xcrun simctl erase all        # 주석 해제 시 모든 시뮬레이터 데이터 초기화

echo "💡 캐시 초기화 완료 — 이제 flutter run / flutter build ipa 수행"

적당한 이름으로 저장하고 , 실행권한 준다.

사용된 파일관련된것은 2부에서 계속 한다.