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

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

 

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

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

 

시뮬레이터와 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
728x90

n8n 사용하는 것을 다시 이어서 해보려고 docker를 시작하니 새버전이 2개가 늘었다고 나오네요.

다시 docker를 받아야 할지 고민하다가 업데이트 방법이 있는지 알아보려 합니다.

 

 

제일 편한 방법은 compose를 재실행일 것 같은데 작성한 워크플로우를 백업하고 n8n를 버전업하고 워크플로우를 다시 넣으면 될것 같습니다.

** docker image latest 버전인 1.94 버전이네요. 아래 방법으로 다시 실행해도 버전업이 안되는 사유를 열심히 찾아 보니 결국 docker image 버전 때문이었네요. 

 안정화 버전이 올라가면 그때 업데이트 하시는 것을 권장합니다. 

굳이 최신 버전으로 다시 받을 경우에는 아래와 같이 버전에 맞춰서 받는 것이 맞을 것 같습니다. 

x-n8n: &service-n8n
  image: n8nio/n8n:latest
  ...
  image: n8nio/n8n:1.97.0

** 최신 버전 이미지의 경우 docker desktop에서 Tag정보를 조회하면 알수있습니다.


 

https://docs.n8n.io/hosting/cli-commands/#workflows

 

CLI commands | n8n Docs

Hosting n8n Using the CLI CLI commands for n8n n8n includes a CLI (command line interface), allowing you to perform actions using the CLI rather than the n8n editor. These include starting workflows, and exporting and importing workflows and credentials. R

docs.n8n.io

 

1. 워크플로우 백업

문서에서는 백업 방법이 나와있지만 권한 문제로 정상 동작을 하지 않네요.

compose.yml 에 n8n관련해서 수정하고 다시 반영해서 진행하는 것이 좋아 보이네요. 백업해야 하는 중요 플로우는 ui에서 다운로드하시는것이 직관적인것 같네요.

다음번 백업을 사용할 수 있도록 폴더를 추가하고 넘어가겠습니다.

  n8n:
    <<: *service-n8n
    hostname: n8n
    container_name: n8n
    restart: unless-stopped
    ports:
      - 5678:5678
    volumes:
      - n8n_storage:/home/node/.n8n
      - ./n8n/demo-data:/demo-data
      - ./shared:/data/shared
      - ./n8n/backups:/n8n/backups:rw   <<--추가

참고 문서 

Workflows#
Export all your workflows to the standard output (terminal):


n8n export:workflow --all
Export a workflow by its ID and specify the output file name:


n8n export:workflow --id=<ID> --output=file.json
Export all workflows to a specific directory in a single file:


n8n export:workflow --all --output=backups/latest/file.json
Export all the workflows to a specific directory using the --backup flag (details above):


n8n export:workflow --backup --output=backups/latest/
Credentials#
Export all your credentials to the standard output (terminal):


n8n export:credentials --all
Export credentials by their ID and specify the output file name:


n8n export:credentials --id=<ID> --output=file.json
Export all credentials to a specific directory in a single file:


n8n export:credentials --all --output=backups/latest/file.json
Export all the credentials to a specific directory using the --backup flag (details above):


n8n export:credentials --backup --output=backups/latest/
Export all the credentials in plain text format. You can use this to migrate from one installation to another that has a different secret key in the configuration file.

 

 

2. compose 재실행

2025.05.27 - [프로그램/docker] - vibe coding 를 위한 deepseek in On-Premise(2025.05.26)

 

vibe coding 를 위한 deepseek in On-Premise(2025.05.26)

AI 홍보하시는 분들은 AI를 이용해서 코딩을 모두 할 수 있을 것처럼 이야기하지만 내용을 아는 사람이 일을 시키고 확인이 되어야 하듯 시니어 개발자에게 좀더 좋은 환경이 열리는 느낌이네요.

jsi0.tistory.com

docker compose --profile gpu-nvidia up

 

3. 워크플로우 재등록

ui에서 내려  받았다면 import도 ui에서 진행하면 될것 같습니다.

 

 

이전설치글 참조 바랍니다.

2025.05.27 - [프로그램/docker] - vibe coding 를 위한 deepseek in On-Premise(2025.05.26)

728x90

+ Recent posts