728x90

지난 주에 테스트 출시해서 내부 테스트를 할 수 있도록 플레이 스토어에 출시했습니다.

아직 테스트 항목들을 구성해서 진행하지 못하였지만 주말에 쉬고 이제 광고를 앱에 올려보려 합니다. 

광고를 올리고 테스트 항목 리스트 작성하고 테스트 후 정시 출시 검토를 받는 것이 이번 안드로이드 개발 1차 목표입니다.

 

2025.06.19 - [프로그램/Flutter] - 안드로이드 앱 테스트 출시(2025.06.19)

 

안드로이드 앱 테스트 출시(2025.06.19)

점점 다른 일이 늘어가고 개인 개발 시간이 없어지네요. 아직 구현하고 싶은 기능이 많지만 필수 기능인 사진 슬라이드 기능만 심어서 테스트 출시를 했습니다.참고로 정리해 두고 싶은 내용이

jsi0.tistory.com

 

어렵게 생각하지 않았지만 다른분들이 매번 오래걸린다고 하소연하던 것이 생각나네요.

그래도 기능을 많이 넣지 않았으니 크게 문제가 되지는 않을 꺼라 생각합니다. 

 


1. 구글 플레이 스토어에 앱을 배포 등록시 광고 포함여부를 확인

 - 광고를 올릴때 광고 여부 체크 필요

    수정 : https://play.google.com/console

 

비즈니스를 위한 Google Play | 앱 출시 및 수익 창출 | Google Play Console

Google Play에서 비즈니스를 성장시킬 수 있도록 도와드립니다. 앱과 게임의 출시, 수익 창출, 성장에 필요한 도구와 가이드를 찾아보세요.

play.google.com

     앱선택 - 모니터링 및 개선 - 정책 및 프로그램 - 앱 콘텐츠  :  광고 여부 추가

      ( 테스트 출시 이후를 생각해서 개인정보처리방침 약관url부터 앱 액세스관리, 콘텐츠 등급 등 앱 설정을 다 해주는 것이 나중에 좋을 것 같네요. 앱 콘텐츠에 대해서 모두 다 작성해야 하는 것 같네요.)

 

2. 구글 애드몹에 가입하여 광고 설정

 - 구글 애드몹 : https://admob.google.com

 

Google AdMob: 모바일 앱 수익 창출

인앱 광고를 사용하여 모바일 앱에서 더 많은 수익을 창출하고, 사용이 간편한 도구를 통해 유용한 분석 정보를 얻고 앱을 성장시켜 보세요.

admob.google.com

   2.1. 가입- 지급 정보, 개인 확인

      - 지급 정보 - 세금정보 

      - 광고단위 등록 - 앱이름 등록, 광고 형식-배너( 광고 위치를 알수 있는 이름 지정 ) 

 

광고sdk 사용법

더보기

광고를 게재하고 수익을 창출하려면 먼저 Google 모바일 광고 SDK를 Flutter 앱에 통합해야 합니다. SDK를 통합하면 지원되는 광고 형식을 하나 이상 구현할 수 있습니다.

기본 요건

모바일 광고 SDK 가져오기

플랫폼별 설정

중요: 모든 개인 정보 보호 규정 준수 기능에 액세스하려면 최신 Google 모바일 광고 SDK를 사용하세요.

AndroidManifest.xml 업데이트

AndroidManifest.xml에 AdMob 앱 ID가 포함되어야 합니다. 그렇지 않으면 앱이 시작될 때 비정상 종료됩니다.

com.google.android.gms.ads.APPLICATION_ID라는 이름으로 <meta-data> 태그를 추가하여 AdMob 웹 인터페이스에서 확인된 AdMob 앱 ID를 앱의 android/app/src/main/AndroidManifest.xml 파일에 추가합니다. android:value의 경우 다음과 같이 따옴표로 묶은 앱 ID를 삽입합니다.

 
<manifest>
    <application>
        <!-- Sample AdMob app ID: ca-app-pub-3940256099942544~3347511713 -->
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
    <application>
<manifest>

Dart 코드에서 플러그인을 초기화할 때는 동일한 value를 사용합니다.

AndroidManifest.xml 구성 및 앱 ID 설정에 관한 자세한 내용은 Android 가이드를 참고하세요.

모바일 광고 SDK 초기화

광고를 로드하기 전에 앱에서 MobileAds.instance.initialize()를 호출하여 모바일 광고 SDK를 초기화합니다. 이렇게 하면 SDK가 초기화되고 초기화가 완료되면(또는 30초의 제한 시간이 경과한 후에) 완료되는 Future를 반환합니다. 이 작업은 한 번만 처리하면 되며, 가장 좋은 시점은 앱을 실행하기 직전입니다.

 
import 'package:google_mobile_ads/google_mobile_ads.dart';
import 'package:flutter/material.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  MobileAds.instance.initialize();

  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  MyAppState createState() => MyAppState();
}

class MyAppState extends State<MyApp> {
  @override
  void initState() {
    super.initState();
    // Load ads.
  }
}


iOS

Info.plist 업데이트

앱의 ios/Runner/Info.plist 파일에 AdMob 웹 인터페이스에서 식별한 AdMob 앱 ID의 문자열 값이 포함된 GADApplicationIdentifier 키를 추가합니다.

 
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-################~##########</string>

Dart 코드에서 플러그인을 초기화할 때는 동일한 값을 전달해야 합니다.

Info.plist 구성 및 앱 ID 설정에 관한 자세한 내용은 iOS 가이드를 참고하세요.

자... 앱 수정하러 가봐야 겠네요.

728x90
728x90

 얼마전에 한번 연결해보다가 깔끔하게 동작하는 것을 못보고 요금제 사용을 해야 연동 된다는 식이어서 중지 했었습니다.

 하루가 다르게 정책도 바뀌고 서비스도 바뀌는 상황에서 개인 플젝에 디자인 요소를 고려해서 진행하는 단계로 와서 다시 정리하면서 해볼까 합니다.

※ 설치하고 당연히 될꺼라 생각했던 전에 남겨놓은 것들을 지우면서 너무 오래걸렸네요. 설정 이후 사용을 위해 필요한 것을은 docker로 컨테이너에 올리고 실행 3055포트로 만들어 놓았습니다. 도커 컨테이너 실행하고 figma에서 플러그인을 키고 소켓 접속, 커서에서 피그마 채널 접속해서 작업하라고 하면 되네요. 

 설치하는 동영상이 있는데 중간에 매칭이 잘 안되는 것이 있어서 몰랐는데 mcp 모듈로 소켓 연결해주는 것을 매번 실행을 해야 했네요. 깃허브에 나와있는 도커 이미지 생성하는 것에 소켓과 mcp 모듈 실행하는것을 수정해서 동작 확인 했습니다.

 내일은 디자인 작업을 해야 겠네요. 

 

 1. Figma에서 API 키 

더보기

1.1. figma.com에 접속해서 로그인 후 왼쪽 상당의 프로필 아이콘 클릭해서 셋팅 메뉴 선택

Setting => Security => Generate new token
1.2. 보안탭에서 개인 접속 토큰 발행 ( 토큰명 : figma-mcp-token )
  - 명칭, 기간,  권한( file content : Read-only 만 주어도 되고 사용용도에 맞춰서 다 주어도 됩니다.)
  대략적인 토큰은 이정도 길이네요.  figd_-------_-----------_------------------------B 

 
1.3. Figma와 Cursor 연결 MCP 서버를 선택
알고 있는 것은 두개입니다. 
Figma-Context-MCP, Cursor-talk-to-figma-mcp

ai를 시행착오가 있더라도 한번 해보는 것이 좋은 시기이기 때문에 검색을 해보고 좋은 것을 찾아서 우선 시도해 봅시다.

2. Cursor 설정

더보기

git 주소

git clone https://github.com/sonnylazuardi/cursor-talk-to-figma-mcp.git

git clone https://github.com/GLips/Figma-Context-MCP.git

 클론으로 프로젝트를 복사하셔도 되고 해당 github 들어가서 소스 다운로드 받아도 됩니다.

 받은 폴더를 프로젝트 열기 또는 폴더 열기로 커서ai로 열고 터미널 창에서 아래와 같이 입력합니다.

1. Cursor에 Bun 설치하기
curl -fsSL https://bun.sh/install | bash

2. 설치를 실행해서 커서의 활성 프로젝트에도 MCP 설치
bun setup

3. Websocket 서버를 시작
bun socket

4. MCP server
bunx cursor-talk-to-figma-mcp

 3번에서 소켓 활성화 하고 포트 확인해서 figma plugin에 연결 포트 확인하고 연결해줌

피그마에서 플러그인 추가하고 플러그인에 소켓 연결해서 채널명 획득

 


그런데 제가 알기로는 node.js가 설치가 되어 있다면 cursor에 MCP json 등록하면 자동 설치로 알고 있습니다. 위에서 작업을 하면 mcp 설정이 자동으로 입력되도록 되어 있으니 아래 내용은 작업하지 마시고 참고만 하세요.

// Add the server to your Cursor MCP configuration in ~/.cursor/mcp.json:
{
  "mcpServers": {
    "TalkToFigma": {
      "command": "bunx",
      "args": ["cursor-talk-to-figma-mcp@latest"]
    }
  }
}

 뭔가 설명이 없어서 맥기준으로 홈 폴더가 "~/" 이므로 "~/.cursor"폴더로 들어가서 파일을 조회해 보았습니다. mcp 설정을 한적이 없어서 파일이 없는 것 같습니다. 

일단 파일 생성 후 mcp  확장해도 되겠지만 파일을 읽어야 하는지 커서가 알아야 할 것 같아서 설정들어가서 mcp검색하여 mcp 설정보기를 했습니다. 

"cmd+p" => "> mcp"

 

 

  ※ 피그마와 통신하기 위해서는 MCP 서버 관련 소켓 활성화와 해당 포트 정보가 필요합니다. 위에서 소켓 구동하는 내용이 필요합니다. 그리고 cursor ai에서 피그마 cursor-talk-to-figma-mcp 프러그 인 정보로 mcp 설정을 하니 요금제를 사용하라고 안내가 연결되네요. 일단 무료로 가능한지 무시하고 진행해보겠습니다.

 

 

 

00. MCP 프레임워크 설치하기 - 오류내용 

더보기

sdk 를 못 찾는다는 메시지가 나와서 찾아 해메이다가 mcp 프레임워크를 일단 설치 해봤습니다. 그런데 결국 확인 결과 전에 작업 했던 자료중에 보안 이슈가 있어서 라이브러리가 삭제되었는데 참조하는 불상사가 발생해서 찾아서 설치/삭제를 반복했습니다.

 삭제 후 캐시 지우고 재부팅하니까 잘 못된 정보를 찾지 않았습니다. 

( 문제 라이브러리 cursor-mcp 에서 modelcontextprotocol/typescript-sdk 를 참조하는데 modelcontextprotocol/sdk를 참조해야 했음. cursor-mcp 모듈 라이브러리를 모두 삭제하고 캐시 지우고 재부팅했습니다. )

// npm install @modelcontextprotocol/sdk
// npm install -D typescript @types/node
bun add @modelcontextprotocol/sdk

 

 

 

728x90
728x90

점점 다른 일이 늘어가고 개인 개발 시간이 없어지네요.

 

아직 구현하고 싶은 기능이 많지만 필수 기능인 사진 슬라이드 기능만 심어서 테스트 출시를 했습니다.

참고로 정리해 두고 싶은 내용이 있어서 적어 봅니다.

 

시뮬레이터와 apk 빌드 버전은 인증은 개발자 컴퓨터 sha-1로 구글클라우드 콘솔에 등록하여 사용

출시를 위해 번들링한 것은 구글에서 인증 sha-1로 구글클라우드 콘솔에 등록하여 사용

 

번들 반영했는데 구글 로그인이 안되어 당황하면서 해결되어 정리해 봅니다.

 

멋진 앱을 만들기 위해 고심하기 보다 기능하나로 출시 해보라는 말을 들은 적이 있어 예전에 내가 필요했던 기능을 출시해 보았습니다. 

구버전 기기를 활용하는 것과 추가적으로 필요한 기능을 추가하다보면 확실히 오래 걸릴 것 같아서 시작했지만 나름 재미있네요.

 

구글 Auth 인증 관련

더보기

Google Play에 앱을 번들(.aab)로 올리면 Google이 자체 서명 키로 앱을 서명합니다.

Step 1. Google Play 서명 키 SHA-1 확인

  1. Play Console 접속
  2. 앱 선택
  3. 왼쪽 메뉴: 릴리스 > 앱 무결성(App integrity) 클릭
  4. 앱 서명 키 인증서의 SHA-1 복사

Step 2. Cloud Console에 SHA-1 등록

  1. Google Cloud Console 접속
  2. 좌측 메뉴: 사용자 인증 정보
  3. Android용 OAuth 2.0 클라이언트 ID 클릭
  4. SHA-1 인증서 지문 필드에 복사한 SHA-1 붙여넣기
  5. 저장

참고: 이미 SHA-1이 있으면 두 개 이상 추가 가능 (로컬 + Play용 둘 다)

2025.06.16 - [프로그램/Flutter] - Vibe Coding 를 이용한 샘플코딩 점검(2025.06.16)

 

Vibe Coding 를 이용한 샘플코딩 점검(2025.06.16)

구글 플레이 스토어에 어제 개발자 등록을 하면서 언제 이번 파일럿 프로그램을 시작한지 생각해 보았습니다. 잠시 글을 멈추고 코딩하면서 구글 크라우드 api도 구경하고 Vibe 코딩의 단점도 경

jsi0.tistory.com

2025.06.02 - [프로그램/Flutter] - flutter 샘플 프로그램 만들어보기(2025.06.01)

 

flutter 샘플 프로그램 만들어보기(2025.06.01)

너무 사용 안한지 오래 되어서 감이 떨어진것 같아서 샘플 코딩을 해볼까 합니다. 개발 환경 설정은 다시 정리해서 따로 적어 보도록 하겠습니다.우선은 flutter 관련해서 잊었던 감각부터 살려놓

jsi0.tistory.com

( 구글 로그인을 위한 로컬 sha-1 생성 )

더보기

로컬 시뮬레이터와 빌드 버전용

 

keytool -list -v  -keystore ~/.android/debug.keystore  -alias androiddebugkey \
  -storepass android  -keypass android

 

keytool -genkey -v -keystore ~/.android/your_keystore_name.jks -keyalg RSA \

  -keysize 2048 -validity 10000 -alias your_key_alias

 

구글 클라우드 콘솔에 안드로이드 클라이언트 ID를 등록하고 json 파일을 다운받아서 flutter 프로젝트 아래폴더에 넣으면 됩니다.

 

android/app/ client_secret.......apps.googleusercontent.com.json

728x90
728x90

 구글 플레이 스토어에 어제 개발자 등록을 하면서 언제 이번 파일럿 프로그램을 시작한지 생각해 보았습니다.

 잠시 글을 멈추고 코딩하면서 구글 크라우드 api도 구경하고 Vibe 코딩의 단점도 경험하고 재미있었네요.

 기획은 좀더 오래 된것 같은데, 아시는 분이 전자 앨범을 구한다는 이야기를 전에 듣고 생각하던것을 이번에 쉬면서 만들어 보게 되었네요.

2025.06.02 - [프로그램/Flutter] - flutter 샘플 프로그램 만들어보기(2025.06.01)

 

flutter 샘플 프로그램 만들어보기(2025.06.01)

너무 사용 안한지 오래 되어서 감이 떨어진것 같아서 샘플 코딩을 해볼까 합니다. 개발 환경 설정은 다시 정리해서 따로 적어 보도록 하겠습니다.우선은 flutter 관련해서 잊었던 감각부터 살려놓

jsi0.tistory.com

 집중해서 프로그램 코딩할 시간이 생겨서 나름 집중했는데 플루터 특성을 이해하기도 전에 과감하게 바이브 코딩으로 구조를 잡고 시작해 보았습니다. 

 그래서 알게된 바이브 코딩의 제일 큰 단점은 API와 같이 버전업을 하면서 사라진 기능을 계속 가이드해주고 안되는 결과를 옛날 네비게이션처럼 같은 자리를 돌게 한다는 것입니다. 약간의 경험이 있다면 디버깅을 통해서 개선점을 찾고 확인 가능한 부분이라 시간을 들였지만 기본 기능은 잘 구현이 되었습니다. 

 

오늘은 플레이 스토어 개발자 승인 대기중에 들어왔다가 작업 기간이 실감되어 간단하게 적어봅니다. 


 

개발 관련 공유합니다.

더보기

 전체적인 작업 순서는 아래와 같이 진행하였습니다. 혹시나 바이브 코딩으로 Flutter 프로그램 만드시는 분들이 있다면 참고가 되었으면 하는 생각에 적어 봅니다.

 

1. 플루터 프로젝트 생성

2. AI LLM 3대장에 프로그램 개발 요건 문의 - ex) OOO 프로그램을 Flutter로 만들려고 하는데 필요한 요건들을 알려줘.

3. AI LLM 3대장에 프로그램 개발 요건 취합하여 선별한 내용으로 주요 기능 개발 일정 작성 요청

4. 주요 기능 개발 일정 취합하여 프로젝트 구조 작성 요청 ( 참고해서 폴더 구조를 잡는데 개인적으로 CursorAi 로 기본 구조 잡았음 )

5. 주요 기능 개발 요건 순으로 프로그램 코딩 요청

6. 테스트 및 버그 수정 

7. 구조 잡고 git에 올리고 기능별 피쳐 브랜치로 반영 후 AI가 엉뚱하게 버그 만들면 롤백하고 재요청

 

다시 한다면 2~3번은 n8n이나 make를 통해서 자동화하는 것이 좋을 것 같습니다. 

 

그렇게 해서 lib 폴더에 코딩하고 google cloude console에서 프로젝트 생성하고 api 사용을 위해 인증정보 만들고 api 사용등록하고 테스트 계정 등록해서 clientId 등록하고 json 파일 받아서 안드로이드 앱 폴더에 넣어주고 ios 쪽에도 별도로 등록해 주고, 이것 저것 많이 해줘야 했네요.

 

 결국 vibe 코딩도 요즘 AI사용법에 필요한 다각도로 시도하는 능력을 요구합니다. 

 한번에 안되면 안되는 원인을 찾아서 원인의 해결방법을 질문하는 능력이 요구되네요. 

 

결과물 사진입니다.

 크로스 플랫폼의 장점도 경험하고 이주정도 재미있었네요.

Chrome
android
iphone

 이미지 라이브러리 중에 최신 선호되는 것을 찾아서 변경하고 이미지 그리드 화면에 광고를 올린 다음 출시하면될 것 같네요. 상세 보는 화면은  광고없이 보는 것이 중요하니까 그리드에 올리는 정도면 사용자도 불편하지 않겠죠.

 

728x90

+ Recent posts