기본 콘텐츠로 건너뛰기

Flutter GoogleSignInException 해결기 - Debug는 되는데 Release에서만 Google 로그인 실패하는 이유

Flutter로 안드로이드 앱을 개발하면서 Google Sign-In과 Firebase Authentication을 함께 사용하는 경우가 많다. 나 역시 Windows 환경에서 Antigravity IDE를 사용하여 Flutter 앱을 개발하고 있었고, 개발 중에는 Google 로그인이 정상적으로 동작했다. 하지만 앱을 Google Play Console의 내부 테스트 트랙에 배포한 후 테스트를 진행하자 예상치 못한 문제가 발생했다. Google Sign-in failed. GoogleSignInException( code: GoogleSignInExceptionCode.canceled, activity is cancelled by the user. ) 처음에는 정말 사용자가 로그인을 취소한 것처럼 보였다. 하지만 실제 원인은 전혀 다른 곳에 있었다. Debug에서는 정상인데 Release에서는 왜 실패할까? 개발 중에는 Antigravity에서 Debug 모드로 실행했기 때문에 모든 것이 정상적으로 동작했다. Google 계정을 선택하면 Firebase Authentication까지 문제없이 로그인되었다. 하지만 Release App Bundle(AAB)을 만들어 Google Play 내부 테스트에 업로드한 후 설치하면 Google 계정 선택 이후 바로 예외가 발생했다. 처음에는 Firebase 설정이나 코드의 문제라고 생각했지만, 실제 원인은 앱이 서명(Signing)되는 방식에 있었다. Google Sign-In은 SHA-1을 이용해 앱을 인증한다 Google Sign-In은 단순히 패키지 이름만 확인하는 것이 아니다. Android 앱은 다음 두 가지 정보를 이용해 인증된다. Package Name SHA-1 인증서 지문 Firebase Console에 Android 앱을 등록할 때 SHA-1을 입력하는 이유도 바로 이것이다. Debug 환경에서는 Debug Keystore의 SHA-1이 사용된다. Release APK를 직접 설치하면 Relea...

“AI가 앱 코딩을 해준다고?” 바이브 코딩 실제 프롬프트 공개!

 요즘 AI 코딩, 특히 **바이브 코딩(Vibe Coding)**에 대한 관심이 높아지고 있다. 바이브 코딩은 개발자가 직접 코드를 짜기보다, AI에게 프롬프트(지시문)를 주고 코드를 생성하는 방식이다. 이 글에서는 실제로 내가 진행한 쇼핑리스트 앱 개발 사례를 기반으로 실제 사용한 프롬프트와 함께 바이브 코딩의 흐름을 생생하게 보여주고자 한다.


바이브 코딩


🔧 개발 환경 및 진행 상황

  • 개발 언어 및 프레임워크: Flutter (안드로이드 앱)
  • 백엔드 연동: Firebase (기본 기능 구현 완료)
  • IDE: Visual Studio Code + Cline Coding Agent
  • AI 도구: Google Gemini (무료 플랜)
  • 문서화: 전체 기획서, 요구사항, DB 설계 등은 ChatGPT로 작성

현재까지 전체 앱 기능의 절반 정도가 구현된 상태이며, Git으로 버전 관리하고 있다. 기능 별 오류 없이 안정적으로 동작하는 수준까지 완료한 뒤, 로컬 데이터베이스 기능을 추가로 구현하는 작업을 진행했다.


🧩 실제 사용한 바이브 코딩 프롬프트 예시

이 앱의 home_screen에서 쇼핑리스트를 작성할 때, 쇼핑 아이템을 카테고리별로 찾아서 쇼핑 아이템명의 버튼을 클릭해서 쇼핑리스트에 추가하는 기능의 UI가 정의되어 있어. 이 카테고리별 제품을 앱 내의 데이터베이스에 저장해서 아이템을 로컬 DB에서 찾고 보여주는 기능이 필요해. 로컬데이터 베이스를 위해서 floor 패키지를 추가해 주고, 다음의 기능들을 순서대로 구현해 줘:

  • 앱이 처음 설치될 때 데이타베이스를 구축하고 초기데이타를 넣는 기능. 데이타베이스 구축은 초기데이타 파일인 supermarket_products.json의 내용을 참고해서 구축하고 초기데이타 json파일로부터 데이타를 입력하기
  • home_screen에 구현된 UI를 유지해서 Select 탭이 선택된 경우 카테고리 선택하는 하는 것은 dropdown으로 floor db에서 카테고리 리스트를 가져와서 보여주고, 카테고리가 선택되면 해당 카테고리의 상품 아이템이 보여지도록 구현하기
  • 현재 home_screen에 구현되어 있는 상품 아이템 버튼이 클릭되면 쇼핑리스트에 추가되는 부분은 수정되지 않고, 현재 하드코딩 되어 있는 상품 아이템 버튼에 로컬 데이타베이스에서 가져온 상품명을 넣어주는 것으로 수정하기

이 프롬프트는 앱의 **로컬 데이터베이스(Floor 패키지)**를 설정하고, 기존 UI를 그대로 유지하면서 동적으로 데이터를 표시하도록 하는 작업을 지시한 것이다.


⏱ 작업에 걸린 시간 및 과정

  • 초기 데이터 파일 작성: 인터넷 검색 → ChatGPT로 JSON 파일 생성 → 완료까지 약 1시간 30분 소요
  • 전체 코드 작성: 위 프롬프트 하나로 Google Gemini가 문법 오류 없이 정상 작동하는 코드 제공
  • 개발 완료 상태: Cline에서 Task Completed로 표시되고 실제 디바이스에서 디버깅 중

🎯 바이브 코딩, 정말 30분 만에 앱을 만들 수 있을까?

유튜브 영상이나 블로그에서 “5분만에 앱 완성!”, “30분이면 코딩 끝!”이라는 말은 AI의 코드 생성 속도만을 강조한 표현일 뿐이다. 실제로 쓸만한 앱을 만들기 위해서는 기획, 설계, 문서 작성, 테스트까지 수많은 단계가 필요하다.

또한, 프롬프트가 구체적이고 정확할수록 더 원하는 결과에 가까운 코드를 얻을 수 있다. 단순히 “쇼핑리스트 기능 만들어줘”라고 하기보다는, 어떤 방식의 리스트인지, 어디에 저장할지, UI 요소는 어떤지까지 디테일하게 알려주는 것이 중요하다.


🤖 바이브 코딩의 함정? AI가 기존 코드를 지워버리기도 한다

처음 바이브 코딩을 시도했을 때는 Google Gemini에게 전체 문서를 준 뒤, “Auto-approve” 옵션으로 진행했다. 그 결과, 전체 코드의 약 30~40%를 빠르게 생성했지만, API 요청 한도 제한에 막혀 멈췄다.

다음날 다시 시도할 때는, 프롬프트를 단계별로 쪼개서 “부분 승인 방식”으로 진행했는데, 기존에 이미 작성된 코드와 다른 방식으로 새로 구현해버리는 문제도 발생했다. AI가 같은 AI라도 상황에 따라 선택하는 코드 방식이 달라질 수 있기 때문이다.


✅ 정리하며 – 생초보가 알아야 할 바이브 코딩의 핵심

  • 프롬프트는 코드의 설계도다. 자세할수록 원하는 결과에 가까워진다.
  • 코드의 일부만 바꾸고 싶다면, 반드시 기존 코드를 유지하라고 명시하자.
  • 작업 시간을 줄일 수는 있지만, 앱 완성까지의 과정은 여전히 사람이 조율해야 한다.

AI와 함께하는 코딩은 생산성과 재미 모두를 올려줄 수 있는 새로운 도구다. 하지만 그만큼 프롬프트 작성 능력과 테스트 능력도 함께 길러야 바이브 코딩의 진짜 힘을 느낄 수 있다.

댓글

이 블로그의 인기 게시물

호주 입국 신고서 작성법 총정리! 꼭 알아야 할 유의사항

 호주는 아름다운 자연과 높은 삶의 질로 많은 여행자와 유학생이 찾는 나라다. 하지만 입국 절차를 제대로 준비하지 않으면 공항에서 예상치 못한 문제를 겪을 수 있다. 그중에서도 "입국 신고서"는 필수적으로 작성해야 하는 문서 중 하나다. 이번 글에서는 호주 입국 신고서 작성법과 주의해야 할 사항 을 상세히 정리해 본다. 1. 호주 입국 신고서란? 호주 입국 신고서(Australian Incoming Passenger Card, IPC) 는 모든 여행자가 공항 입국 심사 시 제출해야 하는 서류다. 이는 세관 신고 및 검역 목적 으로 사용되며, 호주 정부가 여행자의 신상 정보와 반입 물품을 파악하는 데 도움을 준다. 2. 입국 신고서 작성 시기 및 방법 ① 언제 작성해야 할까? 호주 입국 신고서는 비행기 안에서 승무원이 배포 한다. 따라서 비행기가 호주 공항에 도착하기 전, 미리 작성해 두는 것이 좋다. ② 어떻게 작성해야 할까? 입국신고서 내용: 반드시 영어로 작성해야 한다. 개인 정보 입력: 여권에 기재된 영문 이름, 생년월일, 국적 등을 정확하게 기입한다. 호주 내 주소: 체류할 호텔이나 숙소 주소를 적어야 한다. 만약 정확한 주소를 모르면, 예약한 호텔 이름이라도 적어두는 것이 좋다. 방문 목적: 관광(Tourism), 사업(Business), 유학(Study) 등 방문 목적을 선택한다. 반입 물품 신고: 음식, 동식물, 의약품, 현금(10,000 AUD 이상) 등 신고해야 하는 품목이 있는지 체크 해야 한다. 특히 네 ( Yes )/아니오(No) 를 선택하는 부분에서는 잘 모르겠으면 무조건 네 ( Yes )에 체크해야 미신고 항목에 대한 벌금을 피할 수 있다. 건강 상태 및 범죄 이력: 최근 6일 이내에 방문한 국가 및 건강 상태에 대한 질문이 포함되며, 범죄 기록 여부도 체크해야 한다. 3. 신고해야 하는 물품과 주의사항 호주는 검역 규정이 매우 엄격한 국가 다. 따라서 아래와 같은 물품을 반입할 경우 반드시 신고해야 한다. ...

호주에서 처음 집을 구한다면? 하우스, 유닛, 타운하우스, 아파트 비교 분석

 호주에서 처음 집을 구하는 사람이라면 다양한 주택 유형이 있다는 것을 알게 된다. 하우스, 유닛, 타운하우스, 아파트 등 여러 가지 선택지가 있으며, 각 유형마다 장점과 단점이 있다. 이 글에서는 호주의 대표적인 주거 형태를 비교 분석하여 어떤 집이 자신에게 가장 적합한지 결정하는 데 도움을 주고자 한다. 1. 호주의 대표적인 주거 형태 1) 하우스 (House) 하우스는 독립된 단독 주택으로, 개인 정원과 차고를 포함하는 경우가 많다. 일반적으로 도심보다 외곽 지역에 많으며, 가족 단위 거주자들에게 인기가 높다. 장점: 넓은 실내 공간과 정원 보유 이웃과의 간섭이 적어 사생활 보호 가능 반려동물 키우기에 적합 장기적으로 부동산 가치 상승 가능성 높음 단점: 유지 보수 비용이 높음 (정원 관리, 수리 등) 보통 렌트비와 구매 가격이 가장 비쌈 도심과 거리가 있어 출퇴근 시간이 길어질 가능성 있음 2) 유닛 (Unit) 유닛은 작은 단독 주택 또는 빌라 스타일의 주거 형태로, 일반적으로 몇 개의 유닛이 한 단지 내에 위치한다. 1~2층 정도의 낮은 건물로 구성되며, 아파트보다 독립성이 높은 편이다. 장점: 상대적으로 저렴한 렌트비 및 구매 비용 단독 주택보다 유지 보수 부담이 적음 도심과 가까운 곳에서도 구할 수 있음 단점: 하우스보다 공간이 좁음 정원이 없거나 아주 작음 이웃과의 거리가 가까워 소음 문제 발생 가능 3) 타운하우스 (Townhouse) 타운하우스는 2~3층으로 이루어진 연립 주택으로, 여러 세대가 한 건물에 붙어 있는 형태다. 일반적으로 아파트보다 크고, 하우스보다는 작은 형태로 중간 가격대를 형성한다. 장점: 하우스보다 저렴하면서도 공간 활용이 가능함 작은 마당이나 개인 주차 공간 제공 보안이 상대적으로 우수함 단점: 벽을 공유하기 때문에 이웃 간 소음 문제 발생 가능 하우스만큼의 넓은 정원이 없음 관리비(Body Corporate Fee)가 발생할 수 있음 4) 아파트 (Apartment) 아파트는 여러 가구가 한 건물에 거주하는 ...

호주에서 자동차 구매 & 운전법 완벽 정리 – 도로 규칙, 중고차 구매 팁

 호주는 넓은 국토를 가진 나라로, 자동차는 필수적인 이동 수단이다. 장기 체류자나 이민자라면 자동차 구매와 운전법을 정확히 이해하는 것이 중요하다. 이 글에서는 호주에서 자동차를 구매하는 방법과 도로 규칙, 중고차 구매 팁을 정리한다. 1. 호주에서 자동차 구매하기 1.1 신차 vs 중고차 신차 구매 : 자동차 브랜드 공식 딜러를 통해 구매 가능하며, 보증 기간과 최신 기술을 포함한다. 가격이 비싸지만 상태가 완벽하다. 중고차 구매 : 가격이 저렴하지만 차량 상태를 꼼꼼히 확인해야 한다. 신뢰할 수 있는 판매처에서 구매하는 것이 중요하다. 1.2 자동차 구매 방법 딜러샵 방문 : 신차 또는 중고차를 공식 딜러샵에서 구매하면 법적 보호를 받을 수 있다. 온라인 중고차 거래 사이트 : Carsales , Gumtree , Facebook Marketplace 등에서 다양한 차량을 검색할 수 있다. 개인 간 거래 : 가격 협상이 가능하지만 차량 점검과 서류 확인이 필수다. 1.3 자동차 등록 및 보험 자동차를 구매하면 해당 주(州) 정부에 차량을 등록해야 한다. 필수 보험( CTP, Compulsory Third Party Insurance )을 가입해야 하며, 추가로 종합보험을 고려하는 것이 좋다. 2. 호주의 도로 규칙 2.1 기본적인 교통 법규 좌측통행 : 호주는 좌측통행 국가이므로 도로의 왼쪽 차선을 따라 주행해야 한다. 속도 제한 : 일반적으로 도시 지역은 50 - 60km/h가 기본이다. 주차 규정 : 거리마다 주차 허용 여부와 제한 시간이 다르므로 표지판을 반드시 확인해야 한다. 2.2 운전 면허와 국제면허증 관광객은 국제운전면허증과 자국 면허증을 함께 소지하면 일정 기간 동안 운전할 수 있다. 장기 체류자는 해당 주에서 정해진 기간 내에 호주 면허증으로 전환해야 한다. 2.3 음주운전 및 기타 주의사항 호주의 법정 혈중알코올농도(BAC) 제한은 0.05%다. 휴대폰 사용은 엄격히 금지되며, 블루투스 기능을 이용한 핸즈프리 통화만 허용된다. 3...