Android Studio Project를 이용하여 개발할 때 Hive SDK를 포팅하는 방법과 빌드하는 방법을 안내합니다.

포팅하기

Android 개발 환경을 이용한다면 다음의 안내대로 Hive SDK를 개발 환경에 추가하고 필요한 설정 작업과 코드 작업을 수행하세요.

개발 환경

Hive SDK 버전별로 필요한 Gradle, Android Gradle Plugin, Kotlin Gradle Plugin 최소 버전은 다음과 같습니다.

Hive SDK Gradle Android Gradle Plugin Kotlin Gradle Plugin
v4.15.2 이상 v4.15.6 미만 v5.6.4 v3.6.4 v1.4.32
v4.15.6 이상 v4.16.2 미만 v6.1 v3.6.4 v1.5.10
v4.16.2 이상 v4.21.0 미만 v6.1.1 v4.0.0 v1.5.20
v4.21.0 이상 v23.0.0 미만 v6.1.1 v4.0.0 v1.6.20
v23.0.0 이상 v7.5 v7.4.2 v1.8.0

 

Gradle 설정하기

My Project/gradle/wrapper/gradle-wrapper.properties 파일에 Gradle 버전을 설정할 수 있습니다. 아래는 Gradle 6.1.1 설정 예시입니다.

 

Gradle 플러그인 설정하기

프로젝트 수준의 Gradle 파일(build.gradle)에 Gradle 플러그인 버전을 설정할 수 있습니다. 아래는 Android Gradle Plugin 4.0.0, Kotlin Gradle Plugin 1.6.20 설정 예시입니다.

 

AndroidX 적용하기

Hive SDK v4.13.0부터 Android Support Library 버전을 업데이트하면서 AndroidX를 여러분의 프로젝트에 적용해야 합니다.

  1. Android Studio를 실행합니다.
  2. 메뉴 바에서 Refactor > Migrate to AndroidX 를 실행합니다.
  3. 프로젝트 내 Android support library 참조가 변경되고 gradle.properties에 아래 항목이 추가됩니다.

* android.enableJetifier=true
* android.useAndroidX=true

Java 1.8 추가하기

Hive SDK v4.14.4부터 Java 1.8을 사용하기 위해서는 모듈 수준의 build.gradle 파일에 아래 코드를 추가해야 합니다.

 

Gradle에 Hive SDK와 외부 라이브러리 추가하기

Gradle 파일에 Hive SDK 및 외부 라이브러리를 추가합니다. 사용할 Hive SDK 버전($HIVE_SDK_VERSION)과 사용할 외부 라이브러리 항목만 명시하면, 현재 Hive SDK 버전에 맞는 외부 라이브러리 버전을 자동으로 설정하여 외부 라이브러리를 추가합니다. 만약 Hive SDK 버전을 업데이트하면 호환되는 외부 라이브러리 버전도 자동으로 업데이트합니다. 외부 라이브러리 버전을 직접 입력하는 방식으로 외부 라이브러리를 추가할 수 있지만, 더는 권장하지 않습니다.

  1. 프로젝트 수준의 build.gradle 파일에 외부 라이브러리를 가져올 수 있도록 레파지토리를 추가합니다.

  2. 모듈 수준의 build.gradle 파일에 Hive SDK 및 외부 라이브러리를 추가합니다. 아래는 build.gradle 예시입니다.

 
Hive SDK, Google 확장 기능, Facebook 확장 기능은 다음 라이브러리들을 포함합니다.

  • com.com2us.android.hive:hive-sdk
    • com.com2us.android.hive:hive-core
    • com.com2us.android.hive:hive-protocol
    • com.com2us.android.hive:hive-service
      • com.com2us.android.hive:hive-service-google-base
    • com.com2us.android.hive:hive-ui
      • com.com2us.android.hive:hive-ui-languagepack
      • androidx.recyclerview:recyclerview
      • com.github.bumptech.glide:glide
    • org.jetbrains.kotlin:kotlin-reflect
    • org.jetbrains.kotlinx:kotlinx-coroutines-core
    • org.jetbrains.kotlinx:kotlinx-coroutines-android
    • androidx.lifecycle:lifecycle-runtime-ktx
    • androidx.lifecycle:lifecycle-viewmodel-ktx
    • androidx.lifecycle:lifecycle-livedata-ktx
  • com.com2us.android.hive:hive-authv4-provider-google-sign
    • com.google.android.gms:play-services-auth
  • com.com2us.android.hive:hive-authv4-provider-google-playgames
    • com.google.android.gms:play-services-games-v2
  • com.com2us.android.hive:hive-authv4-provider-facebook
    • com.facebook.android:facebook-core
    • com.facebook.android:facebook-common
    • com.facebook.android:facebook-login
    • com.facebook.android:facebook-share

 

배포 버전에 포함된 외부 라이브러리 추가하기

Gradle을 이용해 최신 버전을 추가할 수 없거나 별도 관리가 필요한 라이브러리의 경우 Hive SDK와 함께 배포 버전에 포함합니다. 아래 안내에 따라 외부 라이브러리를 추가합니다.

  1. 모듈 수준의 build.gradle 파일에 libs 폴더에 대한 의존성을 설정합니다.
  2. 모듈 수준의 libs 폴더에 배포 버전에 포함된 외부 라이브러리(.aar/.jar)를 추가합니다. 배포 버전에 포함된 외부라이브러리 목록은 다음과 같습니다.
    • mid-sdk-2.10.jar (QQ IdP 로그인 지원 시 이 파일 추가)
    • mta-sdk-2.0.0.jar (QQ 또는 Wechat IdP 로그인 지원 시 이 파일 추가)
    • open_sdk_3.5.4.11_r3f56456_lite.jar (QQ IdP 로그인 지원 시 이 파일 추가)

 

AndroidManifest.xml 설정하기

AndroidManifest.xml에 다음의 항목을 직접 입력해 주세요.

  • Facebook 설정
    • provider 설정: android:authorities 속성 값으로 com.facebook.app.FacebookContentProvider 에 Facebook AppID를 붙여서 입력하세요.
      • 예 : FacebookAppID가 123456789일 때
        <provider android:authorities="com.facebook.app.FacebookContentProvider123456789" />
    • meta-data 설정: android:value 속성 값으로 Facebook App ID, Facebook Client Token(Facebook SDK v13 이상 필수) 값을 입력하세요.
      • 예: FacebookAppID가 123456789일 때
      • 예: Facebook Client Token이 123456789일 때
  • Google Play Services 설정
    • meta-data 설정: android:value 속성 값으로 Google AppID 값을 입력하세요.
      • 예: GoogleAppID 의 값이 56789876일 때
        android:value="56789876"
  • Custom URL Scheme 사용을 위해 Main Activity 의 intent-filter 속성에 넣어주는 <data android:scheme=”” /> 부분에 ApplicationId 가 추가되었는지 확인하세요.

 

Hive SDK Configuration 추가하기

res/raw/hive_config.xml 파일을 추가합니다. Hive SDK 동작을 위해 반드시 추가해야 합니다.
hive_config.xml 파일 바로가기

 

Android Activity Lifecycle

MainActivity에서 Android Lifecycle에 맞춰서 아래 코드를 호출합니다. Hive SDK 동작을 위해 반드시 추가되어야 합니다.

 

Hive SDK v4.15.8 이상부터 디퍼드 딥링크 기능을 지원합니다. 관련 기능을 사용하려는 경우 아래 설정 절차를 확인 바랍니다. 반대로 해당 기능을 사용하지 않는 경우 아래 IMPORTANT 항목을 반드시 참고 바랍니다.

 

  • 디퍼드 딥링크는 Android에서 Google Play 스토어만 지원하고 있습니다.
  • Hive 유저 에퀴지션(UA)을 통해 친구 초대 링크를 공유하고자 하는 경우 설정하세요. 기존 방식과 디퍼드 딥링크 방식 중 자유롭게 사용 가능합니다.
  • 기존 UA 친구 초대 링크 디퍼드 딥링크를 통한 UA 친구 초대 링크
    동작 – 초대링크 접속 시 자체적으로 구현한 웹 페이지에 게임 설치 및 게임 실행 유도 UI를 통해서 유저가 진입

    – 초대 링크에 별도의 정보를 담고 있지 않음

    – 초대링크 접속 시 별도의 웹 페이지 없이 게임 설치 유도(마켓으로 이동) 및 게임 실행 유도

    – 초대링크에 정보를 담을 수 있음 (Hive SDK에서 제어)

    지원 플랫폼 – 설치 유도 시 자체적으로 구현한 웹 페이지에 각 마켓 url을 임의 구현 가능 – 구글 플레이 스토어만 지원 (크롬 브라우저를 통해 접속시에만 가능)
  • 디퍼드 딥링크 설정 시 Hive 유저 에퀴지션(UA) 기능의 동작 순서는 다음과 같습니다.
    1. A 유저가 UA 초대 링크를 통해 디퍼드 딥링크 형태의 링크를 공유
    2. 초대 링크를 공유 받은 B 유저가 해당 링크를 통해 앱에 접속할 경우 서버는 링크 정보를 분석하여 B가 A의 초대를 받아 게임을 진행하였음을 확인: 보상을 위한 정보 획득
    3. 디퍼드 딥링크는 하나의 링크로 제공되며, B 유저의 단말기에 앱이 설지되지 않은 경우에는 앱 설치를 유도하고, 이미 앱을 설치한 경우에는 앱을 실행하여 A 유저와 B 유저의 정보를 프로모션 서버로 전달
  • Hive 콘솔에서 디퍼드 딥링크 설정
    1. Hive 콘솔의 프로모션 > 앱 설정에서 디퍼드 딥링크를 설정할 앱을 검색하세요. 목록의 앱 이름을 클릭하면 기본 설정 페이지로 이동합니다.
    2. 기본 설정앱 아이디 설정 영역에서 설정하고자 하는 Android 앱 아이디를 확인하세요.
    3. 아래의 설명을 참고하여 앱 아이디 설정에서 일반, UA 초대, SHA256 항목을 입력하세요.

      • 일반: https://play.google.com/store/apps/details?id={앱아이디}
      • UA 초대: market://details?id={앱아이디}
      • SHA256: SHA256 지문은 구글 콘솔에서 확인할 수 있습니다. (Google Play Console > 앱 > 설정 > 앱 무결성 > 앱 서명)
      • 해당 내용은 assetlinks.json 파일을 구성하고 활용하는 데 사용됩니다. 관련 내용은 Android 앱 링크 인증하기 가이드에서 확인하세요.
    4. 디퍼드 딥링크를 활성화 합니다. (Hive 콘솔 접속 > 프로모션 > 앱 설정 > 앱 검색 > UA 설정 > 디퍼드 딥링크 사용 설정 – 사용 > 저장)
  • AndroidManifest.xml에 디퍼드 딥링크 관련 내용 설정
  • Hive v4.16.2 이상 적용 시 아래 내용을 참고하여 AndroidManifest.xml에 추가합니다.

 

아마존 설정 파일 추가하기

Amazon 빌링 사용 시 Appstore SDK에서 아이템 정보를 전달받으려면 /assets 위치에 암호화된 키 파일을 추가해야 합니다. 아마존 앱 스토어 가이드를 참고하여 AppstoreAuthenticationKey.pem 키를 다운로드 및 추가 방법에 대해 알아보세요.

 

Amazon 노티피케이션 사용 시 앱이 메시지를 수신할 수 있도록 앱에 유효한 API 키가 포함되어야 합니다. 아마존 콘솔 가이드를 참고하여 아마존 콘솔에서 API 키를 생성 후 이를 /assets/api_key.txt 파일 형태로 포함해야 합니다.

VK 설정 추가하기

  • /res/values/strings.xml 파일에 vk 콘솔에서 발급받은 app id를 설정해주세요.

Huawei 빌드 설정 추가하기

  1. agconnect-services.json 추가
    • Project 폴더에 Huawei 콘솔에서 다운로드한 agconnect-services.json 파일을 추가해주세요.
  2. Project – build.gradle 파일 설정
    • AppGallery Connect 플러그인과 Maven 주소를 추가해주세요.
  3. App – build.gradle 파일 설정
    • Huawei 인증과 빌링 관련 라이브러리 설정 및 플러그인을 추가해주세요.
  4. 난독화 설정

Facebook Cloud Game 빌드 설정하기

Hive 4.16.1 에서 Facebook Cloud Game 플랫폼을 지원합니다.
Facebook Cloud Game 빌드는 Android 빌드로만 구성 가능하며 iOS에서는 지원하지 않습니다. 그리고 Facebook Cloud Game은 미국 내 특정 지역에서만 서비스 되고 있습니다.
(2020년 10월 기준 미국 매사추세츠, 뉴욕, 뉴저지, 코네티컷, 로드아일랜드, 델라웨어, 펜실베이니아, 메릴랜드, 워싱턴 D.C., 버지니아, 웨스트버지니아 등 캘리포니아, 텍사스, 대서양 중북부 주 전역 서비스)

Facebook Cloud Game은 Facebook 및 컴투스 플랫폼실 담당자와 협의를 통해 빌드 지원 여부 확인이 필요합니다. 빌드를 지원하고자 할 경우 컴투스 플랫폼실에 문의바랍니다. 자세한 내용은 클라우드 게임 홈페이지Facebook Developers 페이지를 참고할 수 있습니다.

Hive SDK를 통한 Facebook Cloud Game 지원을 위한 설정은 아래 내용을 확인바랍니다.

 

  1. build.gradle에 필요한 라이브러리 설정
    Hive SDK 및 외부 라이브러리 의존성 설정하기 내용에서 hive-service-extension-facebook을 제거하고 hive-service-extension-facebookCloudGame 를 적용합니다.

    • (Hive 4.16.2 미만) hive-service-extension-facebookCloudGame은 facebook-gamingservices 라이브러리를 필요로 합니다.
    • (Hive 4.16.2 이상) hive-service-extension-facebookCloudGame은 facebook-gamingservices 및 기타 Facebook 라이브러리를 포함합니다.
    • (Hive SDK v4 23.0.0 이상) hive-authv4-provider-facebook-cloudgame은 facebook-gamingservices 및 기타 Facebook 라이브러리를 포함합니다.

    추가로 Facebook Cloud Game은 외부 인증 및 트래킹 라이브러리와 관련된 기능의 정상 동작을 보장하지 않고 있어 외부 라이브러리와 관련된 선언을 제거합니다.

    • hive-authv4-provider-google-signin, hive-authv4-provider-google-playgames는 제거
    • Wechat, VK 등의 외부 인증 라이브러리와 관련된 선언 제거
    • Adjust, AppsFlyer, Singular 등 외부 트래킹 라이브러리와 관련된 선언 제거
    • 보안 모듈 선언 제거
  2.  

  3. hive_config.xml 설정
    기존에 Facebook 기능을 Hive SDK를 통해 제공하고 있던 앱이라면 Facebook Cloud Game을 위해 별도 설정해야할 부분은 없습니다. 이미 포함하고 있던 hive_config.xml(페이스북 앱아이디 등 페이스북 관련 값이 작성되어있는)을 유지바랍니다.
    hive_config.xml에 대한 사항은 개발자 페이지를 확인 바랍니다.
  4.  

  5. Facebook 콘솔 설정
    정상적인 SDK 동작을 위해 게임 APK 등록 시 아래 경로를 ‘Save file paths’에 등록바랍니다.

    콘솔 내 위치 페이스북 콘솔 앱 대시보드 > 게임 > 클라우드 게임 업로드 > 게임 APK 업로드 > Save file paths
    등록 내용 /data/data/{Your package name}/files/hive*
    /data/data/{Your package name}/shared_prefs/*
  6.  

  7. Facebook Cloud Game 특이사항
    Facebook Cloud 환경에서 APK 실행 시 에뮬레이터 혹은 루팅 환경과 유사한 성격을 띄고 있어(file path가 모바일과 다름 등) 앱가드 또는 게임프로젝트에서 사용 중인 기타 보안 모듈에서 앱 동작을 제한할 수 있으니 관련된 부분을 제거 혹은 확인바랍니다.
    (Hive 4.16.2 샘플에서 보안 모듈 추가 시 Facebook Cloud Game 빌드가 정상 수행되지 않았습니다.)

Firebase Analytics 추가하기

Firebase 콘솔에서 앱등록 후, 발급받은 google-services.json 파일을 프로젝트에 넣어주세요.
프로젝트 수준의 Gradle 파일 (build.gradle)에 아래의 코드를 추가하세요.

  • 모듈 수준의 build.gradle 파일에 Firebase Analytics 의존성을 추가합니다.
  • ONE Store 빌드 설정하기

    1. 프로젝트 수준 build.gradle에 다음과 같이 설정합니다.
    2. 모듈 수준 build.gradle에 다음을 추가합니다.

    Google Play Games on PC 빌드 설정하기

    Hive 4.16.2부터 Google Play Games on PC를 정식 지원합니다.
    Google Play Games on PC는 Google 및 컴투스 플랫폼실 담당자와 협의를 통해 빌드 지원 여부 확인이 필요합니다. 빌드와 관련된 부분은 컴투스 플랫폼실에 문의 바랍니다.
    Google의 PC 환경 에뮬레이터 플랫폼인 Google Play Games on PC를 지원하는 경우 아래 설정을 확인바랍니다.

    1. build.gradle에 필요한 라이브러리 설정

      Hive SDK 및 외부 라이브러리 의존성 설정하기 내용에서 hive-authv4-provider-google-playgames를 적용합니다. hive-authv4-provider-google-playgames는 play-service-games-v2 라이브러리를 포함합니다.

    2. hive_config.xml 설정

      hive_config.xml 설정하기를 참고하여 태그 내 태그에서 playAppId와 serverClientId를 설정합니다.

    3. 미사용 Android 권한 제거

      Google Play Games on PC에서는 android.hardware.wifi.feature 항목을 지원하지 않습니다. 아래 권한을 게임에서 사용중이라면 제거 부탁드립니다.

    일반 구글 로그인 지원

    Google Play Games가 아닌 일반 구글 로그인을 지원하려면 모듈 수준 build.gradle 파일에 다음 설정이 필요합니다.

    빌드하기

    Gradle 설정하기

    android > defaultConfig > applicationId 란에 AndroidManifest.xml 파일의 packageName과 동일하게 입력해야 합니다. Hive SDK의 minSdkVersion은 21입니다.

    앱 축소, 난독화, 최적화

    R8(구, ProGuard) 구성 파일 설정

    앱 최적화를 위해 R8 컴파일러를 사용하려면 다음의 내용에 따라 R8 구성 파일을 설정하세요.

    unity

    facebook

    google / admob/adkit

    line

    vk

    qq

    wechat

    adjust

    singular

    appsflyer

    huawei

    Glide

    amazon

    언어 리소스 설정

    앱 축소를 위해 사용하지 않는 언어 리소스를 삭제할 수 있습니다. Hive SDK에서 지원하는 16개국 언어 중 사용하지 않는 언어 리소스를 삭제하려면 Android Gradle 플러그인의 resConfigs 속성에 실제로 사용할 언어만 지정합니다. 이 속성에서 지정하지 않은 언어 리소스는 앱에서 모두 삭제됩니다. 다음 코드는 언어 리소스를 영어와 한국어로 제한하는 방법을 보여줍니다.