개발/유니티

[습관어플 만들기]#4 (어플 출시밒, 역컴파일 막기)

kimchangmin02 2025. 8. 29. 15:32

Part 1: 앱으로 출시하기 (안드로이드 기준)

이전에 잠깐 언급했던 과정을 다시 한번, 구체적으로 밟아나갈 시간입니다.

1단계: 빌드 플랫폼 전환하기

  1. 유니티 에디터 상단 메뉴에서 File > Build Settings... 로 들어갑니다.
  2. Platform 목록에서 **Android**를 선택하고, 오른쪽 아래의 Switch Platform 버튼을 누릅니다. (처음이라면 유니티가 안드로이드용 라이브러리를 임포트하느라 시간이 꽤 걸릴 수 있습니다.)

2단계: 플레이어 설정하기 (앱의 신분증 만들기)

  1. Build Settings 창 왼쪽 아래의 Player Settings... 버튼을 누릅니다.
  2. 새로운 창이 뜨면, 왼쪽 메뉴에서 Player를 선택합니다.
  3. Company Name: 당신의 이름이나 팀 이름을 적습니다.
  4. Product Name: 앱의 이름입니다. (예: 나쁜 습관 그만)
  5. Icon: 앱 아이콘으로 사용할 이미지를 설정합니다.
  6. Other Settings 섹션으로 이동하여 아래 항목들을 설정합니다.
    • Package Name (가장 중요!): 앱의 고유한 주소입니다. 전 세계에서 중복되면 안 됩니다. 보통 com.개발자이름.앱이름 형식을 따릅니다. (예: com.gemini.stopbadhabit)
    • Version: 앱의 버전 번호입니다. 처음이니 1.0으로 시작합니다.
    • Minimum API Level: 당신의 앱이 지원할 안드로이드의 최소 버전입니다. 보통 유니티가 추천하는 기본값을 그대로 두는 것이 좋습니다.
    • Target API Level: Automatic (highest installed)로 두는 것이 가장 좋습니다.

3단계: 키스토어(Keystore) 생성하기 (앱의 인감도장)

이것은 "이 앱은 내가 만든 것이 확실하며, 앞으로의 업데이트도 내가 하는 것이다"라고 증명하는 매우 중요한 디지털 서명 파일입니다.

  1. Player Settings Publishing Settings 섹션으로 이동합니다.
  2. Keystore Manager... 버튼을 클릭합니다.
  3. Keystore... > Create New > Anywhere를 선택하여 키스토어 파일을 저장할 위치를 정하고 파일 이름을 지정합니다. (예: my-app-release-key.keystore)
  4. 비밀번호를 두 번 입력합니다. (이 비밀번호는 절대 잊어버리면 안 됩니다!)
  5. Alias (별칭)에 키의 이름을 적고(예: mykey), 또 다른 비밀번호를 두 번 입력합니다. (키스토어 비밀번호와 같아도 무방합니다.)
  6. **Validity (years)**를 25년 이상으로 넉넉하게 설정하고, 나머지 정보들을 채운 뒤 Create Key를 누릅니다.
  7. ※ 경고: 생성된 .keystore 파일과 설정한 비밀번호들은 당신의 재산입니다. 절대로 잃어버리거나 다른 사람에게 유출해서는 안 됩니다. 잃어버리면 다시는 이 앱을 업데이트할 수 없습니다.

4단계: 최종 빌드하기

  1. 다시 Build Settings 창으로 돌아옵니다.
  2. Build 버튼을 누릅니다. (Build and Run은 바로 폰에 설치해서 테스트할 때 사용합니다.)
  3. 빌드 결과물이 저장될 폴더(Builds 폴더)를 선택하고, 파일 이름을 정합니다.
  4. 유니티가 빌드를 시작하고, 잠시 후 .aab (Android App Bundle) 파일이 생성될 겁니다. 이 파일이 바로 구글 플레이 스토어에 올릴 최종 결과물입니다.

5단계: 구글 플레이 스토어에 등록하기

  1. 구글 플레이 콘솔(https://play.google.com/console)에 접속하여 개발자 계정을 만듭니다. (일회성 등록 수수료 25달러 필요)
  2. '앱 만들기'를 통해 새로운 앱을 등록하고, 스토어에 표시될 앱 이름, 설명, 스크린샷, 개인정보처리방침 등을 작성합니다.
  3. '프로덕션' 트랙에서 방금 빌드한 .aab 파일을 업로드하고, 구글의 심사를 거쳐 최종적으로 출시합니다.

Part 2: 보안 - "코드를 베낄 수 있잖아요?"

정말 중요한 질문입니다. 결론부터 말씀드리면,

"100% 완벽한 보안은 존재하지 않지만, 기본적인 난독화(Obfuscation)로 대부분의 공격을 막을 수 있습니다."

역직렬화(Deserialization) 공격은 보통 서버와 통신하는 복잡한 앱에서 발생하는 문제이고, 사용자님의 앱처럼 데이터를 로컬(PlayerPrefs)에만 저장하는 경우에는 크게 걱정하지 않으셔도 됩니다.

우리가 걱정해야 할 것은 **'역컴파일(Decompilation)'**입니다. 악의적인 사용자가 .apk 파일을 분해해서 당신의 C# 코드를 거의 그대로 훔쳐보는 것을 말합니다.

해결책: 코드 난독화 (ProGuard)

난독화란, 코드의 변수 이름이나 함수 이름을 아무 의미 없는 a, b, c 같은 문자로 바꿔버려서, 사람이 코드를 읽어도 그 로직을 전혀 이해할 수 없게 만드는 기술입니다.

다행히도, 유니티는 이 기능을 아주 쉽게 사용할 수 있도록 내장하고 있습니다.

  1. Player Settings > Publishing Settings로 갑니다.
  2. Minify 섹션을 찾으세요.
  3. Release 드롭다운 메뉴를 클릭하여 **ProGuard**를 선택하세요.
  4. 이것이 전부입니다!

이제 Release 모드로 빌드하면, 유니티가 알아서 당신의 코드를 읽기 어렵게 만들어줍니다. 이것만으로도 취미 수준의 해커나 단순한 코드 복제는 거의 완벽하게 막을 수 있습니다.

 

 

 

 

 

 

 

 

이게 무슨 뜻인가요? (쉽게 설명)

문제점:

"당신이 만들고 있는 앱이 구형 32비트 방식만 지원하고 있습니다."

요구사항:

"하지만 구글 플레이 스토어 같은 대부분의 앱 스토어는 현대적인 64비트 방식을 반드시 지원하도록 요구합니다."

32비트와 64비트 비유 (도로의 차선):

  • 32비트 (ARMv7): 오래된 32차선 도로입니다. 데이터를 처리하는 데 한계가 있습니다.
  • 64비트 (ARM64): 현대적인 64차선 도로입니다. 훨씬 더 많은 데이터를 빠르고 효율적으로 처리할 수 있습니다.

최근에 나오는 거의 모든 스마트폰은 64비트를 지원합니다. 그래서 구글은 "모든 앱은 최신 64차선 도로에서도 달릴 수 있도록 준비해야 합니다!"라고 의무화한 것입니다.


해결책: 경고 메시지가 시키는 대로 하기

경고 메시지의 마지막 부분에 해결책이 그대로 적혀있습니다.

"Player Settings에서 Scripting Backend를 IL2CPP로 설정하고, Target Architectures에 ARM64가 포함되도록 하세요."

이 두 가지 설정만 바꿔주면 모든 것이 해결됩니다.

1. Scripting Backend 변경 (엔진 교체):

  • Mono (현재 설정): C# 코드를 실행하는 구형 엔진입니다.
  • IL2CPP (우리가 설정할 것): C# 코드를 매우 최적화된 C++ 코드로 변환한 뒤 실행하는 신형 고성능 엔진입니다. 성능도 더 좋고, 보안에도 유리하며, 64비트를 지원하기 위해 필수적입니다.

2. Target Architectures 변경 (지원 도로 추가):

  • ARMv7 (현재 체크됨): 32차선 도로를 지원하겠다는 뜻입니다.
  • ARM64 (추가로 체크할 것): 64차선 도로도 함께 지원하겠다는 뜻입니다.

미션: Player Settings에서 두 가지 설정 변경하기

  1. **Project Settings > Player**로 가세요. (아마 이미 열려있을 겁니다.)
  2. Other Settings 메뉴를 펼치세요.
  3. Configuration 이라는 하위 섹션을 찾으세요.
  4. 첫 번째 항목인 **Scripting Backend**를 Mono에서 **IL2CPP**로 변경하세요.
    • (변경하면 유니티가 잠시 스크립트를 다시 컴파일하느라 약간의 로딩 시간이 있을 수 있습니다.)
  5. 바로 아래 Target Architectures 섹션을 보세요.
  6. ARM64 체크박스를 클릭하여 활성화하세요. (ARMv7도 계속 체크된 상태로 두는 것이 더 많은 구형 기기를 지원할 수 있어 좋습니다.)

 

 

 

 

 

 

'제품 포장' 비유 (빌드와 ProGuard의 관계)

  • 당신의 유니티 프로젝트: 제품을 만드는 모든 설계도와 부품이 있는 **'공장'**입니다.
  • 빌드(Build) 과정: 공장에서 설계도와 부품을 조립하여, 완성된 제품(.aab 파일)을 '포장 상자'에 담는 과정입니다.
  • ProGuard (난독화): 제품을 아무나 열어볼 수 없도록, 아주 복잡하고 튼튼한 **'보안 잠금장치'**를 포장 상자에 추가하는 작업입니다.

사용자님께서 하신 일:

  1. "빌드했는데": '보안 잠금장치'(ProGuard) 없이, 그냥 일반 포장 상자에 제품을 담았습니다.
  2. 이제 ProGuard를 켰습니다: 공장에서는 이제 '보안 잠금장치'를 사용할 준비가 되었습니다.

문제점:
이미 포장이 끝난 상자 밖에 서서 "보안 잠금장치를 적용하라!"고 외쳐도, 상자 안의 내용물은 바뀌지 않습니다. 잠금장치는 포장하는 '과정 중에' 추가되어야만 의미가 있습니다.

해결책:

이미 포장된 상자는 버리고, 공장으로 돌아가 새로운 제품을 '보안 잠금장치가 달린 상자'에 처음부터 다시 포장해야 합니다.


기술적인 설명

**빌드(Build)**는 '일회성 스냅샷' 과정입니다.

Build 버튼을 누르는 순간, 유니티는 다음과 같은 일을 순서대로 처리합니다.

  1. 프로젝트의 모든 Assets Settings를 읽어들입니다.
  2. C# 스크립트를 IL2CPP를 통해 C++ 코드로 변환합니다.
  3. 이때 ProGuard 설정이 켜져 있다면, 변환된 코드의 이름들을 마구 뒤섞는 '난독화' 작업을 수행합니다.
  4. 모든 결과물을 하나로 합쳐서 최종 파일(.aab)로 만듭니다.

ProGuard를 켜기 전에 만든 .aab 파일은 3번 난독화 과정이 아예 빠진 채로 만들어진 결과물입니다. 따라서 그 안에는 당신의 코드가 비교적 읽기 쉬운 형태로 그대로 남아있습니다.


지금 당장 해야 할 일

  1. Player Settings > Publishing Settings에서 Minify > Release가 **ProGuard**로 설정되어 있는지 다시 한번 확인하세요.
  2. Player Settings > Other Settings에서 Scripting Backend가 **IL2CPP**로, Target Architectures에 **ARM64**가 체크되어 있는지 확인하세요.
  3. 이제 모든 설정이 완벽하니, File > Build Settings...로 가서 Build 버튼을 다시 누르세요.
  4. 이전에 빌드했던 .aab 파일이 있다면, 그 파일을 덮어쓰거나 새로운 이름으로 저장하여 새로운 빌드 결과물을 만드세요.

 

 

 

 

 

 

이것은 유니티가 "앱의 성능을 더 좋게 만들 수 있는 추가 옵션이 있는데, 사용하시겠어요?" 라고 친절하게 물어보는 것에 가깝습니다.


이 알림의 정체: Adaptive Performance (적응형 성능)

이전에 PC 버전으로 빌드할 때 한번 보셨던 알림입니다. 다시 한번 설명해 드릴게요.

  • 기능: 스마트폰으로 앱을 오래 사용하면 뜨거워지거나 배터리가 빨리 닳는 것을 방지하기 위해, 기기의 상태(온도 등)를 실시간으로 감지하여 성능을 자동으로 조절해주는 고급 기능입니다. (예: 너무 뜨거워지면 프레임을 살짝 낮춰서 열을 식힘)
  • Provider (제공자): 이 기능은 삼성, 구글 등 스마트폰 제조사마다 작동 방식이 조금씩 다르기 때문에, '삼성용 부품(Provider)', '구글용 부품' 등을 따로 설치해줘야 합니다.
  • 왜 떴는가?: 2D Mobile 템플릿으로 프로젝트를 시작했기 때문에, 유니티는 "이 프로젝트는 모바일용이니, 이 고급 기능을 사용하는 게 좋을 거야!"라고 가정하고 이 기능의 사용 여부를 물어보는 것입니다.

그래서 뭘 눌러야 하나요? (결론)

지금 단계에서는 Ignore (무시)를 누르는 것이 가장 좋습니다.

이유:

  1. 필수 기능이 아닙니다: 이 기능이 없어도 앱은 완벽하게 작동합니다. 이것은 어디까지나 '추가적인 성능 최적화' 옵션입니다.
  2. 단순한 앱에는 불필요합니다: 사용자님의 앱은 3D 게임처럼 기기에 큰 부하를 주는 앱이 아닙니다. 달력과 리스트를 보여주는 UI 기반의 앱에서는 이 기능의 효과가 거의 미미하며, 오히려 불필요하게 앱의 용량만 차지할 수 있습니다.
  3. 나중에 언제든지 추가할 수 있습니다: 만약 나중에 앱의 기능을 확장해서 성능 최적화가 필요하다고 판단되면, 그때 Project Settings > Adaptive Performance 메뉴로 들어가서 직접 설치할 수 있습니다.

Go to Settings를 누르면 이 기능을 설치하고 설정하는 다소 복잡한 과정으로 넘어가게 됩니다. 지금은 핵심 기능에만 집중하는 것이 좋습니다.

요약:

이 알림은 "성능 최적화 추가 기능 쓸래?" 라는 질문입니다. 우리 앱에는 지금 당장 필요 없으므로, 가볍게 Ignore 버튼을 누르고 빌드를 계속 진행하시면 됩니다.

 

 

 

 

 

 

 

무엇이 바뀌었나요? (더 쉬워졌습니다)

  • 이전 버전: Release 모드에서 어떤 난독화 도구(None, ProGuard 등)를 쓸지 직접 '선택'하는 드롭다운 메뉴 방식이었습니다.
  • 최신 버전 (현재 사용자님의 버전): 더 이상 선택할 필요 없이, **"출시(Release) 빌드에서 난독화를 사용할 것인가?"**를 묻는 단순한 체크박스 방식으로 바뀌었습니다.

결론적으로, Release 체크박스를 켜는 것이 ProGuard를 활성화하는 것과 동일한, 완벽하게 올바른 행동입니다.

유니티는 내부적으로 안드로이드 빌드를 할 때, Release 체크박스가 켜져 있으면 가장 표준적이고 강력한 난독화 도구인 **ProGuard (또는 그 후속 기술인 R8)**를 사용하도록 자동으로 설정합니다.


스크린샷 확인: 완벽하게 설정하셨습니다!

사용자님께서 올려주신 스크린샷을 보니,

  • Keystore 경로와 비밀번호, Alias가 모두 잘 입력되어 있습니다.
  • Minify 섹션의 Release에 체크(✔)가 되어 있습니다.

아주 잘 설정하셨습니다. 이 상태가 바로 출시를 위한 최종 보안 설정이 완료된 상태입니다.

이제 모든 준비가 끝났습니다. 이 상태로 다시 빌드를 진행하시면, 보안 잠금장치까지 완벽하게 갖춘 최종 .aab 파일을 얻으실 수 있습니다.

 

 

 

 

 

1. "이 apk 파일을 더블클릭하면, 앱이 실행되는 건가? 안드로이드에서?"

네, 정확히 맞습니다!

  • PC에서는: .apk 파일은 안드로이드 운영체제 전용 설치 파일이라서, 윈도우에서는 더블클릭해도 실행되지 않습니다.
  • 안드로이드 스마트폰에서는:  .apk 파일을 스마트폰으로 옮긴 뒤 (USB 케이블, 이메일, 클라우드 등 어떤 방법이든), 스마트폰의 파일 탐색기 앱에서 이 파일을 찾아서 탭(클릭)하면 '설치' 화면이 나타납니다. '출처를 알 수 없는 앱 설치'를 허용하라는 메시지가 뜰 수 있는데, 허용하고 설치하면 당신의 앱이 스마트폰에 설치되고, 다른 앱들처럼 아이콘을 눌러 실행할 수 있게 됩니다! 이것이 바로 친구들에게 먼저 테스트해달라고 보내줄 수 있는 파일입니다.

"그럼 이제 데스크톱에서 오류 고치려면 다시 switch 해야 하는 건가"

아니요, 그럴 필요 없습니다! 한번 Switch Platform을 해두면, 유니티는 계속 안드로이드 모드를 기억합니다. 그냥 코드 수정하고, 유니티 에디터에서 플레이(▶) 버튼을 눌러 PC에서 똑같이 테스트하고, 수정이 완료되면 다시 Build 버튼만 눌러 새로운 .apk 파일을 만들면 됩니다. 다른 플랫폼(예: 아이폰)으로 바꾸기 전까지는 다시 스위치할 필요가 전혀 없습니다.


2. "다음 단계: playstore에 등록하는 방법"

이것이 마지막 여정입니다. Build Settings 창에서 한 가지 중요한 변경을 하고, 구글 플레이 콘솔에서 절차를 밟으면 됩니다.

A. 빌드 포맷 변경 (APK -> AAB)

.apk 파일은 직접 설치용이고, 구글 플레이 스토어에 정식으로 올릴 때는 .aab (Android App Bundle) 라는 더 최적화된 파일을 요구합니다.

  1. 유니티의 Build Settings 창을 엽니다.
  2. Build App Bundle (Google Play) 이라는 체크박스가 보일 겁니다. 이것을 클릭하여 활성화하세요.
  3. 이제 Build를 누르면 .apk 대신 .aab 파일이 생성됩니다. 이 파일이 바로 스토어에 업로드할 파일입니다.

B. 구글 플레이 콘솔 절차

  1. 개발자 계정 등록: 구글 플레이 콘솔 사이트로 가서, 구글 계정으로 로그인하고 개발자 등록 절차를 진행합니다.
    • "근데 난 아직 신분 등록도 안 했는데": 네, 이 과정에서 신분증(여권, 운전면허증 등)을 촬영하여 본인 인증을 하고, 해외 결제가 가능한 카드로 25달러를 일회성으로 결제해야 합니다. 구글의 심사에 1~2일 정도 소요될 수 있습니다.
  2. 앱 만들기: 계정 생성이 완료되면, '앱 만들기'를 통해 앱의 기본 정보를 입력합니다.
  3. 스토어 등록정보 작성: 사용자들이 보게 될 앱의 이름, 간단한 설명, 자세한 설명, 스크린샷(최소 2장 이상), 앱 아이콘(512x512 픽셀) 등을 업로드합니다.
  4. 앱 콘텐츠 설정: 앱의 대상 연령, 광고 포함 여부, 개인정보처리방침 링크 등을 정직하게 답변해야 합니다. (개인정보를 수집하지 않는 단순한 앱이라면, 무료 개인정보처리방침 생성기 웹사이트를 이용해 간단히 만들 수 있습니다.)
  5. AAB 파일 업로드: '프로덕션' 메뉴에서 '새 버전 만들기'를 통해, 우리가 만든 .aab 파일을 업로드합니다.
  6. 검토 및 출시: 모든 정보를 다 입력하고 나면, '검토 시작' 버튼을 눌러 구글에 심사를 요청합니다. 보통 며칠(최대 7일) 정도의 심사 기간을 거쳐 승인이 나면, 드디어 전 세계 사람들이 당신의 앱을 다운로드할 수 있게 됩니다!

결론:

  • 지금 당장 할 수 있는 일:
    1. 만들어진 .apk 파일을 당신의 스마트폰에 직접 설치해서, 꿈에 그리던 첫 실행을 직접 경험해보세요!
    2. Build Settings에서 Build App Bundle을 체크하고 .aab 파일을 미리 만들어 두세요.
    3. 구글 플레이 콘솔에 접속해서 개발자 계정 등록 절차를 시작하세요. (신분증과 카드 준비)

 

 

 

 

 

 

결론부터 말씀드리면, 지금 보고 계신 Default Icon Default Cursor는 PC/Mac/Linux용 설정이라서, 안드로이드 앱과는 아무런 관련이 없습니다.

  • Default Cursor: PC 게임에서 사용할 마우스 커서 모양입니다. 터치스크린인 스마트폰에는 마우스 커서가 없으니, 이 설정은 완전히 무시하셔도 됩니다.
  • Default Icon: PC/Mac/Linux용 프로그램의 아이콘입니다.

우리가 설정해야 할 진짜 '앱 아이콘'은 바로 그 아래, Settings for Android 라는 섹션 안에 숨어있습니다.


진짜 안드로이드 앱 아이콘 설정하는 법

1단계: Icon 메뉴 펼치기

  1. 지금 보고 계신 Project Settings 창을 그대로 유지하세요.
  2. Settings for Android 섹션 안에, Icon 이라고 쓰인 접혀있는 메뉴를 찾으세요. (제목 옆에 작은 화살표(▶)가 있을 겁니다.)
  3.  Icon 메뉴를 클릭하여 펼치세요.

2단계: 아이콘 이미지 등록하기

메뉴를 펼치면, Adaptive Icons, Round Icons, Legacy Icons 등 여러 가지 아이콘을 등록하는 칸이 나타날 겁니다. 처음에는 복잡해 보이지만, 핵심은 Adaptive Icons 입니다.

  • Adaptive Icons (가장 중요! 최신 안드로이드 방식):
    • 요즘 스마트폰들은 아이콘 모양이 동그라미, 네모 등 제각각입니다. 이 '적응형 아이콘'은 어떤 모양에서도 예쁘게 보이도록 **배경(Background Layer)**과 **전경(Foreground Layer)**을 따로 등록하는 방식입니다.
    • Background: 아이콘의 배경색이나 간단한 패턴 이미지를 등록합니다.
    • Foreground: 아이콘의 핵심이 되는 로고나 그림 이미지를 등록합니다. (배경이 투명한 PNG 파일이 가장 좋습니다.)
  • Round Icons / Legacy Icons (구형 안드로이드 호환용):
    • 오래된 버전의 안드로이드나 특정 런처에서 사용되는 아이콘입니다.
    • 보통은 Adaptive Icons Foreground에 썼던 이미지를 그대로 등록하거나, 간단한 정사각형 모양의 아이콘을 하나 만들어서 등록해주면 됩니다.

3단계: 이미지 넣는 방법

  1. Project  Assets 폴더 안에, 아이콘으로 사용할 이미지 파일을 미리 넣어두세요. (예: my_icon.png)
  2. Icon 설정에서 원하는 슬롯 옆의 Select 버튼을 누르세요.
  3. 프로젝트에 있는 이미지 목록이 뜨면, 원하는 아이콘 이미지를 선택합니다.
  4. 또는, Project 창에 있는 이미지 파일을 마우스로 끌어서 원하는 아이콘 슬롯에 드래그 앤 드롭해도 됩니다.

프로 팁: 아이콘 만들 때 알아두면 좋은 것

  • 크기: 구글 플레이 스토어에 등록하려면 최소 512x512 픽셀 크기의 아이콘이 필요합니다. 처음부터 1024x1024 픽셀 정도의 고화질로 만들어두면 좋습니다.
  • 파일 형식: 배경이 없는 로고 등을 표현하려면, 반드시 PNG 형식으로 저장해야 배경을 투명하게 만들 수 있습니다.

요약:

Default Icon Cursor는 무시하시고, Settings for Android 섹션 안의 Icon 메뉴를 펼쳐서 그 안에 있는 Adaptive Icons Background Foreground를 채워주시는 것이 정답입니다.

 

 

 

 

 

 

똑똑한 유니티'가 알아서 해줍니다!

다행히도, 유니티는 아주 똑똑해서, 우리가 가장 큰 사이즈의 아이콘 하나만 제대로 등록하면, 나머지 작은 사이즈들은 그 이미지를 바탕으로 **알아서 크기를 조절(리사이징)**해서 채워줍니다.

결론:

맨 위에 있는 가장 큰 해상도(xxxhdpi, 432x432px)의 Background Foreground 슬롯, 딱 두 개만 채우면 됩니다.


미션: 가장 큰 아이콘 슬롯에 이미지 등록하기

  1. 고화질 아이콘 이미지 준비:
    • 아이콘으로 사용할 이미지를 최소 432x432 픽셀 이상의 고화질로 준비합니다. (512x512나 1024x1024를 추천합니다.)
    • 배경(Background)용: 단색이거나 간단한 패턴 이미지.
    • 전경(Foreground)용: 로고나 핵심 그림. 배경이 투명한 PNG 파일이 가장 좋습니다.
  2. 이미지를 유니티 프로젝트에 넣기:
    • 준비한 이미지 파일들을 Project 창의 Assets 폴더 안으로 드래그 앤 드롭하여 임포트합니다.
  3. 가장 큰 슬롯에 등록:
    • 지금 보고 계신 Icon 설정 창에서, 맨 위에 있는 xxxhdpi (432x432px) 섹션을 찾으세요.
    • Background 슬롯 옆의 Select 버튼을 누르거나, Project 창에 있는 배경 이미지를 이 슬롯으로 드래그 앤 드롭하세요.
    • Foreground 슬롯에도 마찬가지로 전경(로고) 이미지를 드래그 앤 드롭하세요.

이것이 전부입니다!

나머지 xxhdpi, xhdpi 등 아래에 있는 작은 사이즈의 슬롯들은 그냥 비워두셔도 괜찮습니다. 유니티가 빌드 과정에서 맨 위에 등록된 고화질 이미지를 바탕으로 각 사이즈에 맞는 버전을 자동으로 생성해 주기 때문입니다.

물론, 각 해상도별로 최적화된 이미지를 직접 만들어서 모든 칸을 다 채워주면 앱의 완성도는 더 올라가겠지만, 첫 출시 단계에서는 전혀 그럴 필요가 없습니다.

핵심만 기억하세요:

가장 큰 사이즈(xxxhdpi) 하나만 제대로 채우면 나머지는 유니티가 알아서 해준다!

 

 

 

 

 

Foreground만 채워도 기술적으로는 가능하지만, 그렇게 하면 일부 스마트폰에서 아이콘이 아주 이상하게 보일 수 있습니다. Background를 채우는 것이 훨씬 더 안전하고 전문적인 방법입니다.


왜 Background를 채워야 할까요? ('접시'와 '음식' 비유)

안드로이드의 '적응형 아이콘(Adaptive Icon)' 시스템은 '접시(Background)'와 '음식(Foreground)'의 개념으로 작동합니다.

  • Background (배경) = 접시: 아이콘의 전체적인 모양과 배경색을 결정합니다.
  • Foreground (전경) = 음식: 접시 위에 올라가는 핵심 로고나 그림입니다.

스마트폰 제조사(삼성, 구글 등)나 사용자가 설정한 테마에 따라, 이 '접시'의 모양은 동그라미가 될 수도, 네모가 될 수도, 모서리가 둥근 사각형이 될 수도 있습니다. 안드로이드 시스템은 '음식'은 그대로 둔 채 '접시'의 모양만 바꿔서 통일감을 줍니다.

만약 Foreground만 채우고 Background를 비워두면 어떻게 될까요?

그것은 '투명한 접시' 위에 음식을 올려놓는 것과 같습니다.

그러면 스마트폰 운영체제는 "어? 접시가 없네? 그럼 내가 임의로 아무 접시나 받쳐줘야겠다" 라고 생각하고, 보통 아무런 디자인이 없는 단색 흰색이나 회색 배경을 강제로 깔아버립니다.

결과: 당신의 로고가 너무 작게 보이거나, 원하지 않는 배경색과 합쳐져서 아주 어색하게 보일 수 있습니다.


해결책: "배경 이미지가 없어요!" (가장 쉽고 완벽한 해결책)

배경 이미지가 없어도 괜찮습니다! 우리는 **'단색 배경'**을 아주 쉽게 만들 수 있습니다.

1단계: '1x1 픽셀짜리 마법의 흰색 도화지' 만들기

  1. PC에서 '그림판' (또는 포토샵 등 아무 이미지 편집기)을 엽니다.
  2. 이미지 크기를 가로 1픽셀, 세로 1픽셀로 만듭니다.
  3. 이 1픽셀을 흰색으로 칠합니다.
  4. 이 파일을 white_pixel.png 같은 이름으로 저장합니다.

2단계: 유니티에서 '마법의 도화지'에 색칠하기

  1. 방금 만든 white_pixel.png 파일을 유니티 Project 창의 Assets 폴더 안으로 드래그 앤 드롭합니다.
  2. 다시 Project Settings Icon 설정으로 돌아갑니다.
  3. xxxhdpi (432x432px) 섹션의 Background 슬롯에, 이 white_pixel.png 이미지를 끌어다 놓으세요.
  4. 바로 이것이 핵심입니다: Background 슬롯 바로 옆에는 색상을 지정할 수 있는 작은 네모 칸이 있습니다.
  5. 이 색상 칸을 클릭해서, 당신의 앱 테마에 맞는 원하는 배경색(예: 파란색, 회색 등)을 선택하세요. 유니티가 1x1짜리 흰색 도화지를 당신이 선택한 색으로 쭉 늘려서 배경을 만들어 줄 겁니다.

3단계: Foreground Legacy 아이콘 설정하기

  1. Foreground 슬롯에는 당신이 가진 메인 아이콘 이미지를 끌어다 놓으세요.
  2. 아래로 스크롤해서 Legacy and Round Icons 섹션을 찾으세요.
  3. 이곳은 구형 안드로이드를 위한 곳입니다. 여기에 있는 슬롯들에도 당신이 가진 메인 아이콘 이미지를 그대로 끌어다 놓으세요.

최종 추천 방법 요약

  • 배경(Background): 1x1 흰색 픽셀 이미지를 넣고, 유니티의 Color 기능으로 원하는 단색을 칠하세요.
  • 전경(Foreground): 당신이 가진 메인 아이콘 이미지를 넣으세요.
  • 레거시(Legacy): 당신이 가진 메인 아이콘 이미지를 그대로 넣으세요.

이것이 바로 당신의 앱 아이콘을 모든 기기에서 가장 멋지고 전문적으로 보이게 만드는 표준 방식입니다.

 

 

 

 

"몇몇 apk 앱들은 그냥 인터넷에 있는 apk 파일 다운 받으면 바로 깔리던데"

네, 맞습니다! 그리고 당신이 만든 이 .apk 파일도 친구에게 보내주면, 친구는 당신이 말한 그 간단한 방법으로 바로 설치할 수 있습니다.


그렇다면 왜 저는 '복잡한 과정'을 설명했을까요? (두 가지 방법의 차이)

제가 설명드린 과정과 당신이 알고 있는 과정은, 목적지가 같지만 가는 길이 다른 두 가지 방법입니다. 비유하자면 이렇습니다.

  • 방법 A: '개발자의 특급 배송' (제가 설명드린 방법)
    • 과정: Build and Run, USB 디버깅, 개발자 모드...
    • 목적: 이것은 개발자가 '코드를 수정하고 -> 결과를 확인하는' 반복적인 작업을 최대한 빠르고 편리하게 하기 위한 전문가용 방법입니다.
    • USB 케이블을 한 번만 연결해두면, 유니티에서 버튼 클릭 한 번으로 빌드 + 스마트폰 전송 + 자동 설치 + 자동 실행이 한 번에 이루어집니다. 코드를 한 줄 고치고 바로 테스트할 때, 매번 파일을 이메일로 보내고 다운로드할 필요가 없으니 엄청나게 효율적이죠.
    • No Android devices connected 에러가 떴을 때, 이 '특급 배송' 시스템을 준비하는 과정을 제가 설명드렸던 것입니다.
  • 방법 B: '일반 사용자의 직접 설치' (당신이 알고 있는 방법)
    • 과정: 인터넷에서 .apk 다운로드 -> 파일 클릭 -> 설치.
    • 목적: 이것은 이미 완성된 앱 파일을 받아서, 사용자가 '설치'라는 행위만 할 때 사용하는 가장 일반적인 방법입니다.

결론:

당신은 '개발자'이기 때문에 '개발자의 특급 배송' 방법을 사용할 '수도' 있지만, 당연히 '일반 사용자'처럼 당신의 앱을 설치해볼 수도 있습니다. 둘 중 어떤 방법을 선택하든 결과는 똑같습니다.


지금 당장, 가장 쉬운 방법으로 당신의 앱을 설치해 보세요!

USB 케이블을 찾거나 드라이버를 설치하는 과정이 번거롭다면, 당신에게 가장 익숙한 방법으로 설치하는 것이 최고입니다.

1단계: .apk 파일을 당신의 스마트폰으로 보내기 (가장 쉬운 방법들)

  • 나에게 카톡 보내기: PC 카카오톡을 열고, '나와의 채팅방'에 .apk 파일을 그냥 끌어다 놓으세요.
  • 이메일로 보내기: 당신의 이메일 계정으로 들어가서, 당신 자신에게 .apk 파일을 첨부하여 메일을 보내세요.
  • 클라우드 사용하기: 구글 드라이브, 드롭박스, 네이버 MYBOX 등에 .apk 파일을 업로드하세요.

2단계: 스마트폰에서 다운로드 및 설치

  1. 스마트폰에서 방금 파일을 보낸 앱(카카오톡, 이메일, 구글 드라이브 등)을 엽니다.
  2. 첨부된 .apk 파일을 탭하여 다운로드합니다.
  3. 다운로드가 완료되면, 알림 창을 내리거나 다운로드한 앱에서 파일을 탭하여 실행합니다.
  4. **"출처를 알 수 없는 앱 설치"**를 허용하라는 창이 뜨면, 허용을 누릅니다. (이번에는 카카오톡이나 이메일 앱에 대해 허용하게 될 겁니다.)
  5. 설치 버튼을 누릅니다.
  6. 설치 완료 후 **열기**를 누르면 끝!