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 설정 예시입니다.
1 2 3 |
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip |
Gradle 플러그인 설정하기
프로젝트 수준의 Gradle 파일(build.gradle)에 Gradle 플러그인 버전을 설정할 수 있습니다. 아래는 Android Gradle Plugin 4.0.0, Kotlin Gradle Plugin 1.6.20 설정 예시입니다.
1 2 3 4 5 6 7 8 |
buildscript { dependencies { classpath "com.android.tools.build:gradle:4.0.0" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20" } } |
AndroidX 적용하기
Hive SDK v4.13.0부터 Android Support Library 버전을 업데이트하면서 AndroidX를 여러분의 프로젝트에 적용해야 합니다.
- Android Studio를 실행합니다.
- 메뉴 바에서 Refactor > Migrate to AndroidX 를 실행합니다.
- 프로젝트 내 Android support library 참조가 변경되고 gradle.properties에 아래 항목이 추가됩니다.
* android.enableJetifier=true
* android.useAndroidX=true
Java 1.8 추가하기
Hive SDK v4.14.4부터 Java 1.8을 사용하기 위해서는 모듈 수준의 build.gradle 파일에 아래 코드를 추가해야 합니다.
1 2 3 4 5 6 7 8 |
android { ... compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } ... } |
Gradle에 Hive SDK와 외부 라이브러리 추가하기
Gradle 파일에 Hive SDK 및 외부 라이브러리를 추가합니다. 사용할 Hive SDK 버전($HIVE_SDK_VERSION
)과 사용할 외부 라이브러리 항목만 명시하면, 현재 Hive SDK 버전에 맞는 외부 라이브러리 버전을 자동으로 설정하여 외부 라이브러리를 추가합니다. 만약 Hive SDK 버전을 업데이트하면 호환되는 외부 라이브러리 버전도 자동으로 업데이트합니다. 외부 라이브러리 버전을 직접 입력하는 방식으로 외부 라이브러리를 추가할 수 있지만, 더는 권장하지 않습니다.
-
프로젝트 수준의 build.gradle 파일에 외부 라이브러리를 가져올 수 있도록 레파지토리를 추가합니다.
123456789allprojects {repositories {google()mavenCentral()gradlePluginPortal()}} -
모듈 수준의 build.gradle 파일에 Hive SDK 및 외부 라이브러리를 추가합니다. 아래는 build.gradle 예시입니다.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576dependencies {// Hive SDK BOM ex: 23.0.0implementation(platform("com.com2us.android.hive:hive-sdk-bom:${project.HIVE_SDK_VERSION}"))// Hive SDKimplementation "com.com2us.android.hive:hive-sdk"// Analytics Provider, 사용하는 Provider 만 추가합니다.implementation "com.com2us.android.hive:hive-analytics-provider-adjust"implementation "com.com2us.android.hive:hive-analytics-provider-appsflyer"implementation "com.com2us.android.hive:hive-analytics-provider-firebase"implementation "com.com2us.android.hive:hive-analytics-provider-singular"// AuthV4 기기 관리 서비스implementation "com.com2us.android.hive:hive-authv4-device-management"// AuthV4 구글 앱 내 업데이트implementation "com.com2us.android.hive:hive-authv4-google-inappupdate"// AuthV4 구글 reCAPTCHAimplementation "com.com2us.android.hive:hive-authv4-google-recaptcha"// AuthV4 중국 실명 인증implementation "com.com2us.android.hive:hive-authv4-real-name-verification"// AuthV4 Provider, 사용하는 Provider 만 추가합니다.implementation "com.com2us.android.hive:hive-authv4-provider-apple-signin"implementation "com.com2us.android.hive:hive-authv4-provider-facebook"implementation "com.com2us.android.hive:hive-authv4-provider-google-playgames"implementation "com.com2us.android.hive:hive-authv4-provider-google-signin"implementation "com.com2us.android.hive:hive-authv4-provider-hive-membership"implementation "com.com2us.android.hive:hive-authv4-provider-huawei"implementation "com.com2us.android.hive:hive-authv4-provider-line" // require minSdk 24implementation "com.com2us.android.hive:hive-authv4-provider-qq"implementation "com.com2us.android.hive:hive-authv4-provider-vk"implementation "com.com2us.android.hive:hive-authv4-provider-wechat"implementation "com.com2us.android.hive:hive-authv4-provider-weverse"// DataStoreimplementation "com.com2us.android.hive:hive-datastore"// IapV4, Market 추가시 자동 포함됩니다.implementation "com.com2us.android.hive:hive-iapv4"// IapV4 Market, 사용하는 Market 만 추가합니다.implementation "com.com2us.android.hive:hive-iapv4-market-amazon"implementation "com.com2us.android.hive:hive-iapv4-market-google"implementation "com.com2us.android.hive:hive-iapv4-market-huawei"implementation "com.com2us.android.hive:hive-iapv4-market-lebi"implementation "com.com2us.android.hive:hive-iapv4-market-onestore"implementation "com.com2us.android.hive:hive-iapv4-market-samsung"implementation "com.com2us.android.hive:hive-iapv4-market-hivestore"// Promotionimplementation "com.com2us.android.hive:hive-promotion"// Promotion 구글 앱 내 리뷰implementation "com.com2us.android.hive:hive-promotion-google-inappreview"// Promotion 동영상 기능을 상용할 경우 추가합니다.implementation "com.com2us.android.hive:youtube-helper"// Push, Amazon Device Messagingimplementation "com.com2us.android.hive:hive-push-amazon-adm"// Push, Firebase Cloud Messagingimplementation "com.com2us.android.hive:hive-push-google-fcm"// Hercules 어뷰징 탐지implementation "com.com2us.android.hive:hive-hercules"// 구글 Install Referrer 추적을 위해 사용합니다.implementation "com.android.installreferrer:installreferrer"// 이전 HiveC2S, HiveV1 을 사용할 경우 추가합니다.implementation "com.com2us.android.hive:hive-plugin-c2s"// Native 개발이 아닌 경우에 추가합니다.implementation "com.com2us.android.hive:hive-plugin-java"}
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와 함께 배포 버전에 포함합니다. 아래 안내에 따라 외부 라이브러리를 추가합니다.
- 모듈 수준의 build.gradle 파일에 libs 폴더에 대한 의존성을 설정합니다.
1234dependencies {implementation fileTree(include: ['*.jar'], dir: 'libs')implementation fileTree(include: ['*.aar'], dir: 'libs')} - 모듈 수준의 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" />
- 예 : FacebookAppID가 123456789일 때
- meta-data 설정: android:value 속성 값으로 Facebook App ID, Facebook Client Token(Facebook SDK v13 이상 필수) 값을 입력하세요.
- 예: FacebookAppID가 123456789일 때
123<meta-dataandroid:name="com.facebook.sdk.ApplicationId"android:value="fb${facebookId}"/> - 예: Facebook Client Token이 123456789일 때
123<meta-dataandroid:name="com.facebook.sdk.ClientToken"android:value="fb${facebookClientToken}"/>
- 예: FacebookAppID가 123456789일 때
- provider 설정: android:authorities 속성 값으로 com.facebook.app.FacebookContentProvider 에 Facebook AppID를 붙여서 입력하세요.
- Google Play Services 설정
- meta-data 설정: android:value 속성 값으로 Google AppID 값을 입력하세요.
- 예: GoogleAppID 의 값이 56789876일 때
android:value="56789876"
- 예: GoogleAppID 의 값이 56789876일 때
- meta-data 설정: android:value 속성 값으로 Google AppID 값을 입력하세요.
- Custom URL Scheme 사용을 위해 Main Activity 의 intent-filter 속성에 넣어주는 <data android:scheme=”” /> 부분에 ApplicationId 가 추가되었는지 확인하세요.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586<manifestxmlns:android="http://schemas.android.com/apk/res/android"package="com.com2us.hivesdk.normal.freefull.google.global.android.common"android:versionCode="2"android:versionName="4.0.0"android:installLocation="auto"xmlns:tools="http://schemas.android.com/tools"><uses-sdk android:minSdkVersion="16" android:targetSdkVersion="28"/><uses-feature android:glEsVersion="0x00020000"/><uses-feature android:name="android.hardware.touchscreen"/><uses-featureandroid:name="android.hardware.touchscreen.multitouch"android:required="false"/><uses-featureandroid:name="android.hardware.touchscreen.multitouch.distinct"android:required="false"/><supports-screensandroid:anyDensity="true"android:largeScreens="true"android:normalScreens="true"android:smallScreens="true"android:xlargeScreens="true"/><applicationandroid:allowBackup="false"tools:replace="android:allowBackup"android:hardwareAccelerated="true"android:icon="@drawable/app_icon"android:label="@string/app_name"android:isGame="true"><activityandroid:label="@string/app_name"android:name="com.hive.sample.MainActivity"android:screenOrientation="sensor"android:launchMode="singleTask"android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale|layoutDerection"><intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LAUNCHER"/></intent-filter><!- for userengagement -><intent-filter><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /><data android:scheme="${applicationId}" /></intent-filter></activity><!- for Hive SDK Social begin -><provider android:authorities="com.facebook.app.FacebookContentProvider${facebookId}"android:name="com.facebook.FacebookContentProvider"android:exported="true" /><meta-dataandroid:name="com.facebook.sdk.ApplicationId"android:value="fb${facebookId}"/><meta-dataandroid:name="com.facebook.sdk.ClientToken"android:value="fb${facebookClientToken}"/><!- Social end -><!- Google Play Services -><meta-dataandroid:name="com.google.android.gms.games.APP_ID"android:value="${googleplayId}"/><!-- QQ Auth --><activity android:name="com.tencent.tauth.AuthActivity" android:launchMode="singleTask" android:noHistory="true"><intent-filter><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /><data android:scheme="tencent${qqAppId}" /></intent-filter></activity><!-- QQ Auth --></application></manifest>
Hive SDK Configuration 추가하기
res/raw/hive_config.xml 파일을 추가합니다. Hive SDK 동작을 위해 반드시 추가해야 합니다.
hive_config.xml 파일 바로가기
Android Activity Lifecycle
MainActivity에서 Android Lifecycle에 맞춰서 아래 코드를 호출합니다. Hive SDK 동작을 위해 반드시 추가되어야 합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); HiveActivity.onCreate(this, savedInstanceState); } @Override protected void onStart() { super.onStart(); HiveActivity.onStart(this); } @Override protected void onRestart() { super.onRestart(); HiveActivity.onRestart(this); } @Override protected void onResume() { super.onResume(); HiveActivity.onResume(this); } @Override protected void onPause() { HiveActivity.onPause(this); super.onPause(); } @Override protected void onStop() { HiveActivity.onStop(this); super.onStop(); } @Override protected void onDestroy() { HiveActivity.onDestroy(this); super.onDestroy(); } @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); HiveActivity.onWindowFocusChanged(this, hasFocus); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); HiveActivity.onNewIntent(this, intent); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); HiveActivity.onActivityResult(this, requestCode, resultCode, data); } // Android SDK 6.0 (android-23) API over @TargetApi(23) @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); HiveActivity.onRequestPermissionsResult(this, requestCode, permissions, grantResults); } |
디퍼드 딥링크 설정하기
Hive SDK v4.15.8 이상부터 디퍼드 딥링크 기능을 지원합니다. 관련 기능을 사용하려는 경우 아래 설정 절차를 확인 바랍니다. 반대로 해당 기능을 사용하지 않는 경우 아래 IMPORTANT 항목을 반드시 참고 바랍니다.
- 디퍼드 딥링크는 Android에서 Google Play 스토어만 지원하고 있습니다.
- Hive 유저 에퀴지션(UA)을 통해 친구 초대 링크를 공유하고자 하는 경우 설정하세요. 기존 방식과 디퍼드 딥링크 방식 중 자유롭게 사용 가능합니다.
-
기존 UA 친구 초대 링크 디퍼드 딥링크를 통한 UA 친구 초대 링크 동작 – 초대링크 접속 시 자체적으로 구현한 웹 페이지에 게임 설치 및 게임 실행 유도 UI를 통해서 유저가 진입 – 초대 링크에 별도의 정보를 담고 있지 않음
– 초대링크 접속 시 별도의 웹 페이지 없이 게임 설치 유도(마켓으로 이동) 및 게임 실행 유도 – 초대링크에 정보를 담을 수 있음 (Hive SDK에서 제어)
지원 플랫폼 – 설치 유도 시 자체적으로 구현한 웹 페이지에 각 마켓 url을 임의 구현 가능 – 구글 플레이 스토어만 지원 (크롬 브라우저를 통해 접속시에만 가능) - 디퍼드 딥링크 설정 시 Hive 유저 에퀴지션(UA) 기능의 동작 순서는 다음과 같습니다.
- A 유저가 UA 초대 링크를 통해 디퍼드 딥링크 형태의 링크를 공유
- 초대 링크를 공유 받은 B 유저가 해당 링크를 통해 앱에 접속할 경우 서버는 링크 정보를 분석하여 B가 A의 초대를 받아 게임을 진행하였음을 확인: 보상을 위한 정보 획득
- 디퍼드 딥링크는 하나의 링크로 제공되며, B 유저의 단말기에 앱이 설지되지 않은 경우에는 앱 설치를 유도하고, 이미 앱을 설치한 경우에는 앱을 실행하여 A 유저와 B 유저의 정보를 프로모션 서버로 전달
- Hive 콘솔에서 디퍼드 딥링크 설정
- Hive 콘솔의 프로모션 > 앱 설정에서 디퍼드 딥링크를 설정할 앱을 검색하세요. 목록의 앱 이름을 클릭하면 기본 설정 페이지로 이동합니다.
- 기본 설정의 앱 아이디 설정 영역에서 설정하고자 하는 Android 앱 아이디를 확인하세요.
- 아래의 설명을 참고하여 앱 아이디 설정에서 일반, UA 초대, SHA256 항목을 입력하세요.
- 일반: https://play.google.com/store/apps/details?id={앱아이디}
- UA 초대: market://details?id={앱아이디}
- SHA256: SHA256 지문은 구글 콘솔에서 확인할 수 있습니다. (Google Play Console > 앱 > 설정 > 앱 무결성 > 앱 서명)
- 해당 내용은 assetlinks.json 파일을 구성하고 활용하는 데 사용됩니다. 관련 내용은 Android 앱 링크 인증하기 가이드에서 확인하세요.
- 디퍼드 딥링크를 활성화 합니다. (Hive 콘솔 접속 > 프로모션 > 앱 설정 > 앱 검색 > UA 설정 > 디퍼드 딥링크 사용 설정 – 사용 > 저장)
- Hive 콘솔의 프로모션 > 앱 설정에서 디퍼드 딥링크를 설정할 앱을 검색하세요. 목록의 앱 이름을 클릭하면 기본 설정 페이지로 이동합니다.
- AndroidManifest.xml에 디퍼드 딥링크 관련 내용 설정
- Hive v4.16.2 이상 적용 시 아래 내용을 참고하여 AndroidManifest.xml에 추가합니다.
1234567891011121314151617181920212223242526272829303132<!-- Deferred Deeplink Activity --><activityandroid:name="com.hive.userengagement.DeferredDeeplinkActivity"android:exported="true"><!-- 샌드박스 서버에서 사용 시 추가 --><intent-filter android:autoVerify="true"><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /><dataandroid:scheme="https"android:host="sandbox-promotion.qpyou.cn"android:pathPattern="/deeplink/${applicationId}/vid/.*" /></intent-filter><!-- 상용 서버에서 사용 시 추가 --><intent-filter android:autoVerify="true"><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /><dataandroid:scheme="https"android:host="promotion.qpyou.cn"android:pathPattern="/deeplink/${applicationId}/vid/.*" /></intent-filter></activity>
아마존 설정 파일 추가하기
Amazon 빌링 사용 시 Appstore SDK에서 아이템 정보를 전달받으려면 /assets
위치에 암호화된 키 파일을 추가해야 합니다. 아마존 앱 스토어 가이드를 참고하여 AppstoreAuthenticationKey.pem 키를 다운로드 및 추가 방법에 대해 알아보세요.
Amazon 노티피케이션 사용 시 앱이 메시지를 수신할 수 있도록 앱에 유효한 API 키가 포함되어야 합니다. 아마존 콘솔 가이드를 참고하여 아마존 콘솔에서 API 키를 생성 후 이를 /assets/api_key.txt 파일 형태로 포함해야 합니다.
VK 설정 추가하기
- /res/values/strings.xml 파일에 vk 콘솔에서 발급받은 app id를 설정해주세요.
-
1<integer name="com_vk_sdk_AppId">your_app_id</integer>
Huawei 빌드 설정 추가하기
- agconnect-services.json 추가
- Project 폴더에 Huawei 콘솔에서 다운로드한 agconnect-services.json 파일을 추가해주세요.
- Project – build.gradle 파일 설정
- AppGallery Connect 플러그인과 Maven 주소를 추가해주세요.
12345678910111213141516171819202122buildscript {repositories {google()jcenter()// Huawei HMS Core SDK.maven {url 'https://developer.huawei.com/repo/'}}dependencies {...// Huawei AppGallery Connect pluginclasspath 'com.huawei.agconnect:agcp:1.9.1.301'}}allprojects {repositories {google()jcenter()/// Huawei HMS Core SDK.maven {url 'https://developer.huawei.com/repo/'}}} - App – build.gradle 파일 설정
- Huawei 인증과 빌링 관련 라이브러리 설정 및 플러그인을 추가해주세요.
123456dependencies {// Huawei Dependencyimplementation "com.com2us.android.hive:hive-authv4-provider-huawei" // Huawei 인증implementation "com.com2us.android.hive:hive-iapv4-market-huawei" // Huawei 빌링}apply plugin: 'com.huawei.agconnect' - 난독화 설정
- R8(구, ProGuard) 구성 파일 설정에서 ‘huawei’ 설정 부분을 참고해주세요.
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 지원을 위한 설정은 아래 내용을 확인바랍니다.
- 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 등 외부 트래킹 라이브러리와 관련된 선언 제거
- 보안 모듈 선언 제거
123456789101112131415161718192021222324252627282930313233343536373839404142434445… (생략) …// Hive SDK (Hive SDK v4 23.0.0 이상 버전)implementation "com.com2us.android.hive:hive-sdk"implementation "com.com2us.android.hive:hive-authv4-provider-facebook-cloudgame"// 일반 Facebook은 제거// implementation "com.com2us.android.hive:hive-authv4-provider-facebook// Facebook Cloud 빌드에서는 구글 관련 모두 제거// implementation "com.com2us.android.hive:hive-authv4-google-inappupdate"// implementation "com.com2us.android.hive:hive-authv4-google-recaptcha"// implementation "com.com2us.android.hive:hive-iapv4-market-google"// implementation "com.com2us.android.hive:hive-promotion-google-inappreview"// implementation "com.com2us.android.hive:hive-push-google-fcm"// implementation "com.android.installreferrer:installreferrer"… (생략) …// Hive SDK (Hive SDK v4.16.4.0 이상 버전)implementation "com.com2us.android.hive:hive-sdk"implementation "com.com2us.android.hive:hive-service-extension-facebookCloudGame"// Facebook Cloud 빌드에서 필수 제거// implementation "com.com2us.android.hive:hive-service-extension-google-signin"// Facebook Cloud 빌드에서 필수 제거// implementation "com.com2us.android.hive:hive-service-extension-google-playgames"… (생략) …// Hive SDK (Hive SDK v4.16.2 이상 v4.16.4.0 미만 버전)implementation "com.com2us.android.hive:hive-sdk:{HIVE_SDK_VERSION}"implementation "com.com2us.android.hive:hive-service-extension-facebookCloudGame:{HIVE_SDK_VERSION}"// Facebook Cloud 빌드에서 필수 제거// implementation "com.com2us.android.hive:hive-service-extension-google:{HIVE_SDK_VERSION}"… (생략) …// Hive SDK (Hive SDK v4.16.2 미만 버전. Facebook SDK 선언 추가 필요)implementation ‘com.facebook.android:facebook-core:13.0.0'implementation ‘com.facebook.android:facebook-common:13.0.0'implementation 'com.facebook.android:facebook-login:13.0.0'implementation 'com.facebook.android:facebook-share:13.0.0'implementation 'com.facebook.android:facebook-gamingservices:13.0.0'… (생략) … - hive_config.xml 설정
기존에 Facebook 기능을 Hive SDK를 통해 제공하고 있던 앱이라면 Facebook Cloud Game을 위해 별도 설정해야할 부분은 없습니다. 이미 포함하고 있던 hive_config.xml(페이스북 앱아이디 등 페이스북 관련 값이 작성되어있는)을 유지바랍니다.
hive_config.xml에 대한 사항은 개발자 페이지를 확인 바랍니다. - Facebook 콘솔 설정
정상적인 SDK 동작을 위해 게임 APK 등록 시 아래 경로를 ‘Save file paths’에 등록바랍니다.콘솔 내 위치 페이스북 콘솔 앱 대시보드 > 게임 > 클라우드 게임 업로드 > 게임 APK 업로드 > Save file paths 등록 내용 /data/data/{Your package name}/files/hive*
/data/data/{Your package name}/shared_prefs/* - Facebook Cloud Game 특이사항
Facebook Cloud 환경에서 APK 실행 시 에뮬레이터 혹은 루팅 환경과 유사한 성격을 띄고 있어(file path가 모바일과 다름 등) 앱가드 또는 게임프로젝트에서 사용 중인 기타 보안 모듈에서 앱 동작을 제한할 수 있으니 관련된 부분을 제거 혹은 확인바랍니다.
(Hive 4.16.2 샘플에서 보안 모듈 추가 시 Facebook Cloud Game 빌드가 정상 수행되지 않았습니다.)
Firebase Analytics 추가하기
Firebase 콘솔에서 앱등록 후, 발급받은 google-services.json 파일을 프로젝트에 넣어주세요.
프로젝트 수준의 Gradle 파일 (build.gradle)에 아래의 코드를 추가하세요.
1 2 3 4 5 6 |
buildscript { dependencies { ... classpath 'com.google.gms:google-services:4.3.14' } } |
1 2 3 4 5 6 |
dependencies { implementation "com.com2us.android.hive:hive-analytics-provider-firebase" } // build.gradle 최 하단에 다음 코드를 추가해주세요. apply plugin: 'com.google.gms.google-services' |
ONE Store 빌드 설정하기
- 프로젝트 수준 build.gradle에 다음과 같이 설정합니다.
12345678allprojects {repositories {...// only for OneStoremaven { url 'https://repo.onestore.co.kr/repository/onestore-sdk-public' }...}} - 모듈 수준 build.gradle에 다음을 추가합니다.
12345dependencies {...implementation "com.onestorecorp.sdk:sdk-iap"...}
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를 지원하는 경우 아래 설정을 확인바랍니다.
-
build.gradle에 필요한 라이브러리 설정
Hive SDK 및 외부 라이브러리 의존성 설정하기 내용에서 hive-authv4-provider-google-playgames를 적용합니다. hive-authv4-provider-google-playgames는 play-service-games-v2 라이브러리를 포함합니다.
123456… (생략) …// Play Games on PC 빌드 시 필수implementation "com.com2us.android.hive:hive-authv4-provider-google-playgames"… (생략) … -
hive_config.xml 설정
hive_config.xml 설정하기를 참고하여
태그 내 태그에서 playAppId와 serverClientId를 설정합니다. -
미사용 Android 권한 제거
Google Play Games on PC에서는 android.hardware.wifi.feature 항목을 지원하지 않습니다. 아래 권한을 게임에서 사용중이라면 제거 부탁드립니다.
12<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
일반 구글 로그인 지원
Google Play Games가 아닌 일반 구글 로그인을 지원하려면 모듈 수준 build.gradle 파일에 다음 설정이 필요합니다.
1 2 3 4 5 6 7 8 9 |
// 아래와 같이 Google Play Games 로그인을 지원하는 구글 모듈이 포함된 경우 그 모듈을 제거해주세요. // implementation "com.com2us.android.hive:hive-service-extension-google:$HIVE_SDK_VERSION" // implementation "com.com2us.android.hive:hive-service-extension-googlev2:$HIVE_SDK_VERSION" // implementation "com.com2us.android.hive:hive-service-extension-google-playgames:$HIVE_SDK_VERSION" // implementation "com.com2us.android.hive:hive-service-extension-google-signin:$HIVE_SDK_VERSION" // implementation "com.com2us.android.hive:hive-authv4-provider-google-playgames" // 일반 구글 로그인이 포함된 의존성을 추가합니다. implementation "com.com2us.android.hive:hive-authv4-provider-google-signin" |
빌드하기
Gradle 설정하기
android > defaultConfig > applicationId 란에 AndroidManifest.xml 파일의 packageName과 동일하게 입력해야 합니다. Hive SDK의 minSdkVersion은 21입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
android { compileSdkVersion 31 buildToolsVersion "31.0.0" … defaultConfig { applicationId "hive.example.game.com.gameapp" minSdkVersion 21 targetSdkVersion 31 versionCode 1 versionName "1.0" // Application에서 사용할 페이스북 AppId. AndroidManifest.xml 파일의 ${facebookId} 항목이 아래의 값으로 치환됨 manifestPlaceholders = [facebookId:"123456789"] // Application에서 사용할 페이스북 Client Token. AndroidManifest.xml 파일의 ${facebookClientToken} 항목이 아래의 값으로 치환됨 manifestPlaceholders += [facebookClientToken:"123456789"] // Application에서 사용할 구글플레이(PGS) AppId. AndroidManifest.xml 파일의 ${googleplayId} 항목이 아래의 값으로 치환됨 manifestPlaceholders += [googleplayId:"123456789"] // Application에서 사용할 QQ AppId. AndroidManifest.xml 파일의 ${qqAppId} 항목이 아래의 값으로 치환됨 manifestPlaceholders += [qqAppId:"123456789"] compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } … } |
앱 축소, 난독화, 최적화
R8(구, ProGuard) 구성 파일 설정
앱 최적화를 위해 R8 컴파일러를 사용하려면 다음의 내용에 따라 R8 구성 파일을 설정하세요.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
-keep class com.google.android.material.** { *; } -dontwarn com.google.android.material.** -dontnote com.google.android.material.** -dontwarn androidx.** -keep class androidx.** { *; } -keep interface androidx.** { *; } # ORIG/KS Interface -keep class com.hive.** { *; } # KS -keep class com.gcp.** { *; } # 개별모듈 -keep class com.com2us.** { *; } |
unity
1 2 3 |
-keep class com.android.** { *; } -keep class com.unity3d.** { *; } |
1 2 |
-keep class com.facebook.** { *; } |
google / admob/adkit
1 2 3 4 5 |
-keep class com.google.** { *; } -keepattributes *Annotation* -dontobfuscate |
line
1 2 3 4 5 6 |
-keepparameternames -renamesourcefileattribute SourceFile -keepattributes *Annotation*, Signature, InnerClasses, SourceFile, LineNumberTable, EnclosingMethod -dontobfuscate -dontwarn java.lang.invoke.* |
vk
1 2 3 4 5 6 7 |
-keep class com.vk.** { *; } -dontwarn org.seamless. -dontwarn org.eclipse.jetty.** -dontwarn org.fourthline.** -dontshrink -dontoptimize |
1 2 |
-keep class * extends android.app.Dialog |
1 2 3 4 |
-keep class com.tencent.mm.opensdk.** { *; } -keep class com.tencent.wxop.** { *; } -keep class com.tencent.mm.sdk.** { *; } |
adjust
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
-keep class com.adjust.sdk.** { *; } # Google Play Store에 앱을 게시하는 경우 포함 -keep class com.google.android.gms.common.ConnectionResult { int SUCCESS; } # Google Play Store에 앱을 게시하는 경우 포함 -keep class com.google.android.gms.ads.identifier.AdvertisingIdClient { com.google.android.gms.ads.identifier.AdvertisingIdClient$Info getAdvertisingIdInfo(android.content.Context); } # Google Play Store에 앱을 게시하는 경우 포함 -keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$Info { java.lang.String getId(); boolean isLimitAdTrackingEnabled(); } -keep public class com.android.installreferrer.** { *; } |
singular
1 2 3 |
-keep class com.singular.sdk.** { *; } -keep public class com.android.installreferrer.** { *; } |
appsflyer
1 2 |
-keep public class com.android.installreferrer.** { *; } |
huawei
1 2 3 4 5 6 7 8 9 10 11 |
-ignorewarnings -ignorewarnings -keepattributes *Annotation* -keepattributes Exceptions -keepattributes InnerClasses -keepattributes Signature -keepattributes SourceFile,LineNumberTable -keep class com.huawei.hianalytics.**{*;} -keep class com.huawei.updatesdk.**{*;} -keep class com.huawei.hms.**{*;} |
Glide
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
-keep public class * implements com.bumptech.glide.module.GlideModule -keep class * extends com.bumptech.glide.module.AppGlideModule { <init>(...); } -keep public enum com.bumptech.glide.load.ImageHeaderParser$** { **[] $VALUES; public *; } -keep class com.bumptech.glide.load.data.ParcelFileDescriptorRewinder$InternalRewinder { *** rewind(); } # for DexGuard only -keepresourcexmlelements manifest/application/meta-data@value=GlideModule |
amazon
1 2 3 4 |
-dontwarn com.amazon.** -keep class com.amazon.** {*;} -keepattributes *Annotation* |
언어 리소스 설정
앱 축소를 위해 사용하지 않는 언어 리소스를 삭제할 수 있습니다. Hive SDK에서 지원하는 16개국 언어 중 사용하지 않는 언어 리소스를 삭제하려면 Android Gradle 플러그인의 resConfigs
속성에 실제로 사용할 언어만 지정합니다. 이 속성에서 지정하지 않은 언어 리소스는 앱에서 모두 삭제됩니다. 다음 코드는 언어 리소스를 영어와 한국어로 제한하는 방법을 보여줍니다.
1 2 3 4 5 6 7 8 |
android { defaultConfig { ... resConfigs "en", "ko" } } |