1.2 Android SDK 설치

1.2. Android SDK 설치

 


1.2.1. 설치 환경

  • IDE: Android Studio

    • 기존 Eclipse 기반에서 개발하고 있다면 아래와 같이 마이그레이션을 먼저 진행해야 합니다.

      • 개발하고 있는 게임 프로젝트에서 우클릭하여 ' Properties > Android > Library' 에서 추가한 SDK 라이브러리들을 전부 'Remove' 한 뒤 'Apply' 합니다.

         

      • 구글에서 제공하는 마이그레이션 가이드를 참조하여 게임 프로젝트만 Android Studio로 마이그레이션을 진행합니다.

      • 이후 본 가이드를 따라 SDK를 적용하세요.

  • JDK: JDK 8이상

  • Android SDK: Android 12 (API 31)

  • OS : Android 6.0, API 23 이상 지원

  • Gradle Version 6.1.1 사용

1.2.2. SDK 환경 설정

1.2.2.1. build.gradle(project level)

buildscript {     repositories {         google()         mavenCentral()     }     dependencies {         classpath 'com.android.tools.build:gradle:4.0.1'         // 최소 3.1.2 버전 이상 필요         classpath 'com.google.gms:google-services:4.3.3'     } }    allprojects {     repositories {         google() mavenCentral()         maven {             url 'http://devrepo.kakao.com:8088/nexus/content/groups/public/'             name 'kakao'         }         maven {             url 'https://s3.ap-northeast-2.amazonaws.com/kakao-sdk-release/release/'             name 'Kakaogames'         }     } }

1.2.2.2. gradle.properties

3.10.4 버전에서 AndroidX 로 Migration 작업이 진행되었습니다.

# Project-wide Gradle settings. org.gradle.jvmargs=-Xmx4608M KAKAO_GAME_SDK_VERSION=3.14.0    # 아래 2개 설정 추가 android.useAndroidX=true android.enableJetifier=true

1.2.2.3. build.gradle(app level)

적용한 application 의 build.gradle 파일에 아래와 같이 필요한 모듈을 선택적으로 설정합니다.
gradle 3.0 미만 버전을 사용하여 'implementation' 을 사용할 수 없는 개발사에서는 'compile'을 사용하시면 됩니다.

apply plugin: 'com.android.application'   android { ... // Java 8 언어 기능을 사용하기 위해 필요 compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } ...    dependencies { // 디바이스 인증을 사용하는 게임에서 필요. implementation "com.kakaogame:idp_device:$KAKAO_GAME_SDK_VERSION" // 페이스북 인증을 사용하는 게임에서 필요. implementation "com.kakaogame:idp_facebook:$KAKAO_GAME_SDK_VERSION" // 구글게임 인증을 사용하는 게임에서 필요. implementation "com.kakaogame:idp_googlegame:$KAKAO_GAME_SDK_VERSION" // 카카오 인증을 사용하는 게임에서 필요. implementation "com.kakaogame:idp_kakao:$KAKAO_GAME_SDK_VERSION" // 애플 인증을 사용하는 게임에서 필요. implementation "com.kakaogame:idp_siwa:$KAKAO_GAME_SDK_VERSION" // 게임SDK의 주요 기능을 사용하기 위해서 필요. implementation "com.kakaogame:gamesdk:$KAKAO_GAME_SDK_VERSION" } apply plugin: 'com.google.gms.google-services' // Google Services plugin

1.2.2.4. 외부 라이브러리 dependencies

각 필요한 라이브러리들이 아래 버전으로 dependency 가 걸려있습니다. 카카오 게임SDK를 연결 시 자동으로 포함됩니다. 

SDK version

Module

External Libraries

SDK version

Module

External Libraries

3.7.1   

 

 

gamesdk

  • com.google.android.gms:play-services : 11.8.0

  • com.google.firebase:firebase-messaging:11.8.0

  • com.nostra13.universalimageloader:universal-image-loader:1.9.5

idp_kakao

  • com.google.android.gms:play-services : 11.8.0

idp_facebook

  • com.facebook.android:facebook-android-sdk : 4.+

idp_googlegame

  • com.google.android.gms:play-services : 11.8.0

3.8.0

gamesdk

  • com.google.android.gms:play-services-ads : 15.0.1

  • com.google.firebase:firebase-messaging:15.0.2

  • com.nostra13.universalimageloader:universal-image-loader:1.9.5

idp_kakao

  • com.google.android.gms:play-services-ads: 15.0.1

idp_facebook

  • com.facebook.android:facebook-android-sdk : 4.35.0

idp_googlegame

  • com.google.android.gms:play-services-auth: 15.0.1

  • com.google.android.gms:play-services-games : 15.0.1

3.9.1

gamesdk

  • com.google.android.gms:play-services-ads : 15.0.1

  • com.google.firebase:firebase-messaging:15.0.2

  • com.nostra13.universalimageloader:universal-image-loader:1.9.5

idp_kakao

  • com.google.android.gms:play-services-ads: 15.0.1

idp_facebook

  • com.facebook.android:facebook-android-sdk : 4.38.1

idp_googlegame

  • com.google.android.gms:play-services-auth: 15.0.1

  • com.google.android.gms:play-services-games : 15.0.1

3.10.0   

gamesdk

  • com.google.android.gms:play-services-ads : 16.0.0

  • com.nostra13.universalimageloader:universal-image-loader:1.9.5

idp_kakao

  • com.google.android.gms:play-services-ads : 16.0.0

idp_facebook

  • com.facebook.android:facebook-android-sdk : 5.0.1

idp_googlegame

  • com.google.android.gms:play-services-auth: 16.0.0

  • com.google.android.gms:play-services-games : 16.0.0

3.10.4 (AndroidX)  

gamesdk

  • com.google.android.gms:play-services-ads : 18.0.0

  • com.nostra13.universalimageloader:universal-image-loader:1.9.5

  • androidx.legacy:legacy-support-v4:1.0.0

  • androidx.cardview:cardview:1.0.0

  • androidx.appcompat:appcompat:1.0.0

idp_facebook

  • com.facebook.android:facebook-android-sdk : 5.8.0

idp_googlegame

  • com.google.android.gms:play-services-auth: 17.0.0

  • com.google.android.gms:play-services-games : 18.0.0

  • androidx.annotation:annotation:1.0.0

3.10.6  

gamesdk

  • com.google.android.gms:play-services-ads : 18.0.0

  • com.nostra13.universalimageloader:universal-image-loader:1.9.5

  • androidx.legacy:legacy-support-v4:1.0.0

  • androidx.cardview:cardview:1.0.0

  • androidx.appcompat:appcompat:1.0.0

  • com.android.installreferrer:installreferrer:1.0

idp_facebook

  • com.facebook.android:facebook-android-sdk : 5.8.0

idp_googlegame

  • com.google.android.gms:play-services-auth: 17.0.0

  • com.google.android.gms:play-services-games : 18.0.0

  • androidx.annotation:annotation:1.0.0

3.11.0

idp_facebook

  • com.facebook.android:facebook-android-sdk:9.0.0

3.11.5

common

  • com.google.android.gms:play-services-ads:19.3.0

  • androidx.legacy:legacy-support-v4:1.0.0

  • com.nostra13.universalimageloader:universal-image-loader:1.9.5

gamesdk

  • com.android.installreferrer:installreferrer:1.0

  • androidx.appcompat:appcompat:1.0.0

  • androidx.cardview:cardview:1.0.0

idp_kakao

  • com.kakao.sdk:v2-partner-common:2.5.2

  • com.kakao.sdk:v2-partner-user:2.5.2

  • com.kakao.sdk:v2-partner-talk:2.5.2

  • com.kakao.sdk:v2-story:2.5.2

  • com.kakao.sdk:v2-link:2.5.2

idp_facebook

  • com.facebook.android:facebook-android-sdk:9.0.0

idp_googlegame

  • com.google.android.gms:play-services-auth:17.0.0

  • com.google.android.gms:play-services-games:18.0.0

  • androidx.annotation:annotation:1.0.0

3.13.4

common

  • com.google.android.gms:play-services-ads:19.8.0

  • androidx.work:work-runtime:2.7.0

  • androidx.legacy:legacy-support-v4:1.0.0

  • com.nostra13.universalimageloader:universal-image-loader:1.9.5

gamesdk

  • com.android.installreferrer:installreferrer:1.0

  • androidx.appcompat:appcompat:1.0.0

  • androidx.cardview:cardview:1.0.0

idp_kakao

  • com.kakao.sdk:v2-partner-common:2.8.6

  • com.kakao.sdk:v2-partner-user:2.8.6

  • com.kakao.sdk:v2-partner-talk:2.8.6

  • com.kakao.sdk:v2-partner-friend:2.8.6

  • com.kakao.sdk:v2-story:2.8.6

  • com.kakao.sdk:v2-link:2.8.6

idp_facebook

  • com.facebook.android:facebook-android-sdk:11.3.0

idp_googlegame

  • com.google.android.gms:play-services-auth:19.2.0

  • com.google.android.gms:play-services-games:21.0.0

  • androidx.annotation:annotation:1.0.0

만약 게임에서 위 라이브러리와 dependencies가 겹치는 외부 라이브러리를 사용하는 경우 아래와 같이 해당 링크를 제거하여 버전이 높은 쪽으로 사용할 수 있습니다.

build.gradle(app level)

아래는 페이스북 SDK 버전을 게임에서 원하는 SDK버전으로 변경하는 예시입니다.

build.gradle(app level)

 1.2.2.5. kakao_game_sdk_configuration.xml

어플리케이션의 src/main/assets 디렉토리에 kakao_game_sdk_configuration.xml을 생성한 후 에디터로 파일을 열어서 정보를 추가 합니다.

항목

구분

설명

Values

항목

구분

설명

Values

appId

필수

기술PM으로부터 전달받은 게임의 앱 아이디를 설정합니다.

 

appSecret

필수

기술PM으로부터 전달받은 게임의 앱 시크릿 키를 설정합니다.

 

appVersion

필수

게임의 버전을 설정합니다. 이 버전을 기반으로 앱의 업그레이드 지원 여부를 자동으로 안내합니다.

 

market

필수

게임이 런칭되는 마켓을 설정합니다.

구글 플레이 : googlePlay
카카오게임샵 : kakaogameShop
원스토어 : oneStore 

debugLevel

선택

카카오게임 SDK의 로그 출력 레벨을 설정합니다. 설정하지 않으면 NONE으로 설정됩니다.

VERBOSE / DEBUG / ERROR / NONE(기본값)

serverType

선택

SDK 와 연결될 플랫폼의 서버 타입을 설정합니다. 실제 서비스 용 빌드에서는 "real" 로 설정하시면 됩니다.

real, real_global : 글로벌 서버로 접속 필요한 경우 사용

assets/kakao_game_sdk_configuration.xml

1.2.3. IDP 인증 정보 설정

1.2.3.1. 카카오 인증 정보 설정

src/main/res/values/kakao_game_kakao_auth.xml 에 아래 리소스 파일 추가 및 value 설정합니다.

"카카오앱키"값은 발급 받은 값으로 변경이 필요합니다.

res/values/kakao_game_kakao_auth.xml

1.2.3.2. 페이스북 인증 정보 설정

src/main/res/values/kakao_game_facebook_auth.xml 에 아래 리소스 파일 추가 및 value 설정합니다.

"페이스북앱키"값은 발급 받은 값으로 변경 필요합니다.

"페이스북 클라이언트 토큰"값은 https://kakaogames.atlassian.net/wiki/spaces/KS3GFC/pages/413893849/2.1#2.1.2.-%ED%8E%98%EC%9D%B4%EC%8A%A4%EB%B6%81-%EA%B0%9C%EB%B0%9C%EC%9E%90-%EC%84%BC%ED%84%B0(%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8-%ED%86%A0%ED%81%B0-%ED%99%95%EC%9D%B8)---SDK-3.15.0-%EC%9D%B4%EC%83%81-%EB%B2%84%EC%A0%84-%EC%A0%81%EC%9A%A9-%EC%8B%9C-%EC%84%A4%EC%A0%95-%ED%95%84%EC%9A%94 에서 확인하실 수 있습니다.

res/values/kakao_game_facebook_auth.xml

1.2.3.3. 구글 인증 정보 설정

src/main/res/values/kakao_game_google_auth.xml 에 아래 리소스 파일 추가 및 value 설정합니다.

"구글앱아이디"값과 "구글웹클라이언트아이디"값은 발급 받은 값으로 변경 필요합니다.

res/values/kakao_game_google_auth.xml

1.2.3.4. SigninWithApple 인증 정보 설정 (3.10.6 이상)

src/main/res/values/kakao_game_siwa_auth.xml 에 아래 리소스 파일 추가 및 value 설정합니다.

"SIWA클라이언트"값은 애플에서 발급 받은 값으로 변경 필요합니다.

res/values/kakao_game_siwa_auth.xml

1.2.4. AndroidManifest.xml 파일 설정

게임 앱의 AndroidManifest.xml 파일에 아래 사항들을 설정하여야 합니다.

1.2.4.1. 공통 설정

  • SDK 최소 지원 버전은 21 이상으로 설정합니다.

    • android:minSdkVersion="21"

  • SDK 타겟 버전을 31 으로 설정합니다.

    • 2018년 11월 1일부터는 targetSdk 버전이 26이상이 아닌 경우 앱을 업데이트하실 수 없습니다. 

    • 3.13.3에서 Android 12 대응 작업을 진행하였습니다.

      • android:exported 명시적 선언 추가

  • SDK 에서는 아래 퍼미션들을 공통으로 사용합니다

    • android.permission.INTERNET

    • android.permission.ACCESS_NETWORK_STATE

  • 다중 화면 처리를 위한 설정을 추가합니다.

    • 안드로이드 폰의 화면 분할 및 폴더블 폰에 대응하기 위해서 application 설정에 아래와 같이 추가합니다.

      • android:resizeableActivity="true"

    • 각 추가되는 Activity 설정에 아래와 같이 추가합니다.

      • android:configChanges="orientation|screenSize|keyboard|screenLayout|screenSize|smallestScreenSize"

  • 3.16.0 미만 버전에서는 IDP 인증을 위해 아래 Activity 가 설정되어야 합니다.

    • com.kakaogame.KGAuthActivity

  • ADID 를 얻기 위한 구글 설정 추가 (영향받는 버전: 3.10.4 버전 이상)

    • 구글 Ads 최신 버전에서 해당 설정이 없는 경우 앱이 동작하지 않는 이슈가 있어 아래와 같이 설정합니다.

    • 만약 게임에서 AdMob을 사용하고 있는 경우, 해당 필드에 게임의 AdMob App Id를 삽입합니다.

    • 퍼미션 선언 필요

AndroidManifest.xml (공통 설정)

1.2.4.2. URL 프로모션 설정

URL 프로모션 지원을 위해서는 아래와 같이 게임의 메인 Activity 에 intent filter 설정을 해주어야 합니다.

scheme은 "kakaogame" + 앱아이디 로 구성 됩니다.(예를들어 앱ID가 123456이면 scheme 값은 "kakaogame123456" 이 됩니다.)

AndroidManifest.xml (URL 프로모션 설정)

1.2.4.3. 초대 이벤트 설정

3.10.6 버전 이상 사용 시 아래 INSTALL_REFERRER 설정은 Manifest에서 하지 않습니다. 

하위 버전을 사용하다 3.10.6 버전으로 업그레이드하는 개발사에서는 아래 설정 내용을 삭제 해주시기 바랍니다.

초대 Install Referrer Receiver 선언을 설정합니다. 

1.2.4.3.1. 멀티플 브로드캐스트 리시버

멀티플 브로드캐스트 리시버를 사용하면 INSTALL_REFERRER 이벤트를 다른 모든 리시버에게 자동으로 전달하는 기능을 제공합니다.

다른 광고 플랫폼을 사용하지 않는 경우에도 사용 가능합니다.

멀티플 브로드캐스트 리시버(KGMultipleInstallReferrerReceiver)는 INSTALL_REFERRER 액션이 정의된 브로드캐스트 리시버 중에 제일 먼저 선언 되어야 합니다.

AndroidManifest.xml (초대 이벤트 설정)

1.2.4.3.2. 싱글 브로드캐스트 리시버

다른 광고 플랫폼에서 제공하는 멀티플 브로드캐스트 리시버를 사용하는 경우 싱글 브로드캐스트 리시버를 사용합니다.

광고 플랫폼의 브로드캐스트 리시버를 사용하는 방법은 해당 광고 플랫폼 가이드를 참조합니다.

AndroidManifest.xml (초대 이벤트 설정)

1.2.4.4. 카카오 인증 설정

  • 3.11.0 버전부터 해당 선언은 제거되었습니다.

    • KakaoWebViewActivity 선언이 필요합니다.

    • com.kakao.sdk.AppKey 메타 데이터 선언이 추가 되어야 합니다.

  • 메인 Activity에 아래 intent filter 선언이 추가 되어야 합니다.

  • AuthCodeHandlerActivity 선언과 intent filter 선언이 필요합니다.

  • AgeAuthActivity 선언과 intent filter 선언이 필요합니다.

  • Android 12 대응하여 exported가 명시적으로 선언되어야 합니다.

AndroidManifest.xml (카카오 인증 설정)

1.2.4.5. 구글 인증 설정

  • SignInHubActivity 선언이 추가 되어야 합니다.

  • com.google.android.gms.version/com.google.android.gms.games.APP_ID 메타 데이터 선언이 추가 되어야 합니다.

  • APP_ID에 숫자를 하드코딩하면 인증에 실패합니다. "@string/google_app_id" 형태로 작성하셔야 합니다.

AndroidManifest.xml (구글 인증 설정)

1.2.4.6. 페이스북 인증 설정

  • FacebookActivity 선언이 추가 되어야 합니다.

  • com.facebook.sdk.ApplicationId 메타 데이터 선언이 추가 되어야 합니다.

  • com.facebook.sdk.ClientToken 메타 데이터 선언이 추가 되어야 합니다.

AndroidManifest.xml (페이스북 인증 설정)

1.2.4.7. 트위터 인증 설정

  • TwitterOAuthActivity 선언이 추가 되어야 합니다.

AndroidManifest.xml (트위터 인증 설정)

1.2.4.8. 쿼리문 관련 설정

Android 11의 패키지 가시성 대응과 관련하여

특정버전 미만일 경우 쿼리를 추가해야 앱2앱 로그인이나 타사 앱의 기능을 사용할 수 있습니다.

AndroidManifest.xml (공통 설정)

1.2.4.9. 퍼미션 관련 설정

  • KGApplication.RequestPermissionsWithDescriptionPopup API 를 사용하기 위해서 AndroidManifest.xml에 meta-data 선언이 필요합니다.

    • meta-data를 설정하지 않으면 OS 에서 권한 팝업을 띄워주게 되어서 해당 API를 사용할 수 없게 됩니다.

AndroidManifest.xml (권한 팝업 설정)

1.2.4.10. Http 사용 설정

targetSdkVersion을 28 버전 이상으로 설정하고 http 통신을 사용하는 게임은 아래와 같은 설정이 필요합니다.

카카오 게임 SDK 내부에서는 http를 사용하지 않습니다. 개발사에서 cdn등 이슈로 http 콜이 필요한 경우에만 설정합니다.

  • Kakao SDK v3.8.3 이상 버전 사용 필수

  • http 콜이 필요한 도메인 설정

    • res/xml/network_security_config.xml 파일 생성하여 http 통신이 필요한 domain을 추가

      network_security_config.xml

    • AndroidManifest.xml 내 Application에 위에서 생성한 파일을 networkSecurityConfig 로 설정

      AndroidManifest.xml

1.2.4.11. 게임 내 지원 언어 리소스

라이브러리에서 게임 내 지원 언어 외 추가적인 언어 팩이 있을 때, 해당 언어를 제거하고 싶다면 아래 위치의 폴더를 제거 해주시면 됩니다.

예를 들어, 일본어 언어 설정을 제거하고 싶을 때에는 KakaoGameSDK>res>values-ja 폴더를 제거합니다.

1.2.5. 키 해시 확인 및 등록 방법

  • 앱의 빌드를 위해서는 빌드 머신의 키 해시를 등록해야 하며 다음과 같은 방법으로 키 해시를 확인하실 수 있습니다.

  • 디버그 키 해시 및 릴리즈 키 해시를 아래 가이드대로 구해서 [게임센터 > 게임관리 > 키해시등록] 메뉴에 등록해주세요.

1.2.5.1. 디버그 키 해시 구하기

  • Android SDK를 설치하면 androiddebugkey의 alias로 debug.keystore 파일에 개발용 인증서가 저장되어 있습니다. 인증서를 확인하는 방법은 아래와 같습니다. (주의: 아래는 실제 키 해시를 구하는 방법은 아닙니다.)

  • keystore 등록해야할 키 해시는 아래와 같이 수행하여 구해야 합니다.

    • 해당 샘플을 빌드한 머신에서 수행해야 합니다.

    • openssl 버전은 1.0.2 버전 혹은 그 이상것을 사용 해주시기 바랍니다.

  • 위 방법은 리눅스에서는 정상 동작을 보증하나, 윈도우즈 환경에서는 제대로 값을 얻지 못할 수도 있습니다.

    • 키 해시 오류가 날 경우, 아래의 방법으로도 시도해보시기 바랍니다.

[debug_keystore_path]

  • OS X와 리눅스 : Eclipse "ADT > Preferences > Android > Build > Default debug keystore" 에서 확인 가능합니다. 
    (예 : ~/.android/debug.keystore)

  • Windows : Eclipse "Window > Preferences > Android > Build > Default debug keystore" 에서 확인 가능합니다.

  • Windows Vista와 Windows 7 (예: C:\Users\.android\debug.keystore)

  • Windows XP (예 : C:\Documents and Settings\.android\debug.keystore)

  • keytool : $JAVA_HOME/bin 아래에 존재합니다.

  • openssl : Windows의 경우는 다운 받아 설치합니다.

1.2.5.2. 릴리즈 키 해시 구하기

  • invalid android_key_hash 오류 확인

    • 키 해시를 구하여 게임센터에 등록한 후에도 지속적으로 <com.kakao.util.exception.KakaoException: AUTHORIZATION_FAILED : invalid android_key_hash or ios_bundle_id or web_site_url> 오류를 받는다면 아래와 같이 정상적인 키 해시를 사용하고 있는지 확인하실 수 있습니다. 
      게임에서 사용하는 MainActivity 클래스에서 onCreate()를 임시로 아래와 같이 변경합니다.

    •  MainActivity

      위 코드를 실행시켜 Logcat 출력에 다음과 같이 표시된 메시지에서 키 해시를 확인합니다.

1.2.6. 빌드 확인

프로젝트가 정상적으로 빌드 되는지 확인합니다.