Android Studio Project를 이용하여 개발할 때 Hive SDK를 포팅하는 방법과 빌드하는 방법을 안내합니다.
본 가이드는 Android Studio 3.2 버전을 기준으로 안내합니다.
포팅하기
Android 개발 환경을 이용한다면 Hive SDK를 플러그인의 형태로 Android 개발 환경에 포팅해 주세요. 다음의 안내대로 Hive SDK를 개발 환경에 추가하고 필요한 설정 작업과 코드 작업을 수행하세요.
프로젝트 생성하기
-
- Android Studio Project를 실행하세요.
- Start a new Android Studio project를 클릭해 신규 프로젝트를 생성하세요. 기존에 생성한 프로젝트가 있다면 그대로 사용할 수 있습니다.
AndroidX 적용하기
Hive SDK v1.18.2부터 Android Support Library 버전을 업데이트하면서 AndroidX를 여러분의 프로젝트에 적용해야 합니다.
- Android Studio를 실행합니다.
- 메뉴 바에서 Refactor > Migrate to AndroidX를 실행합니다.
- 프로젝트 내 Android support library 참조가 변경되고 gradle.properties에 아래 항목이 추가됩니다.
- android.enableJetifier=true
- android.useAndroidX=true
Hive SDK 추가하기
Android Studio 프로젝트에 포팅하는 Hive SDK는 Hive 개발자 사이트에서 다운로드한 Hive SDK 압축 파일에 포함되어 있습니다.
공통 적용
- appinfo-1.0.x_default.jar
- peppermint-2.x.x.aar
- com2usmodule-1.x.x.aar
- com2us-tracking_lib-1.x.x.aar
- YouTubeAndroidWebPlayerApi.aar
- YouTubeAndroidPlayerApi.jar
- universalimageloader-release.aar
- commons-io-2.1.jar
- gson-2.2.4.jar
- httpmime-4.2.jar
- hive-base-x.x.x.aar
- hive-core-x.x.x.aar
- hive-iapv4-x.x.x.aar
- hive-protocol-x.x.x.aar
- hive-ui-x.x.x.aar
- hive-repayment-x.x.x.aar (v1.19.3+) (v1.19.4-)
- QQ 로그인 지원 시 추가
- open_sdk_r2973327_lite.jar (v1.19.2-)
- open_sdk_3.5.4.11_r3f56456_lite.jar (v1.19.2+)
- Huawei 로그인 지원 시 추가
- Peppermint_Social_Plugin_Huawei-2.x.x.aar
Hive Lebi를 지원
- IAP v1(InAppLibrary) 지원 시 추가 (v1.19.1-)
- InAppC2SSecurity.jar
- alipaySdk-15.6.8-20191021122514.aar
- WeChatPay 지원 시 추가
wechat-sdk-android-with-mta_5.0.8.jar(v1.19.1부터 제거, build.gradle 설정으로 변경)
- IAP v4(InAppV4) 지원 시 추가
- hive-iapv4-x.x.x.aar
- hive-iapv4-plugin-x.x.x.aar
ONE store를 지원
- IAP v1(InAppLibrary) 지원 시 추가 (v1.19.1-)
- ONE store V4 결제 지원 시 추가
- InAppTstoreSDKv4-16.06.00_20181012.jar
- ONE store V5 결제 지원 시 추가
- InAppTstoreSDKv5-17.03.00_20181012.jar
- ONE store V4 결제 지원 시 추가
- IAP v4(InAppV4) 지원 시 추가
- hive-iapv4-x.x.x.aar
- hive-iapv4-plugin-x.x.x.aar
- ONE store V4 결제 지원 시 추가 (v1.19.2+)
- InAppTstoreSDKv5-16.06.00_20201007.jar
- ONE store V5 결제 지원 시 추가 (v1.19.1-)
- InAppTstoreSDKv5-17.03.00_20181012.jar
- ONE store V6 결제 지원 시 추가 (v1.19.1+)
- onestore_iap_sdk-v19.00.01.aar
Amazon Market을 지원
- IAP v1(InAppLibrary) 지원 시 추가 (v1.19.1-)
- Amazon 결제 지원 시 추가
- in-app-purchasing-2.0.76.jar
- 기존 InAppAmazonSDK.jar를 제거
- Amazon 푸시 지원 시 추가
- amazon-device-messaging-1.0.1.jar
- Amazon 결제 지원 시 추가
- IAP v4(InAppV4) 지원 시 추가
- hive-iapv4-x.x.x.aar
- hive-iapv4-plugin-x.x.x.aar
- Amazon 결제 지원 시 추가
- in-app-purchasing-2.0.76.jar
- v1.19.1부터 v1.19.3 미만 버전은 SDK에 포함되어 별도 추가 필요 없음
- v1.19.3부터 SDK에서 제외되어 추가 필요
- 기존 InAppAmazonSDK.jar를 제거
- in-app-purchasing-2.0.76.jar
- Amazon 푸시 지원 시 추가
- amazon-device-messaging-1.0.1.jar
Galaxy Store를 지원
- IAP v1(InAppLibrary) 지원 시 추가 (v1.19.1-)
- Galaxy Store 결제 지원 시 추가
- SamsungInAppPurchase_5.1.0.aar
- Galaxy Store 결제 지원 시 추가
Huawei Market을 지원
- IAP v1(InAppLibrary) 지원 시 추가 (v1.19.1-)
- InAppLibrary-huawei-2.x.x.aar
- IAP v4(InAppV4) 지원 시 추가
- hive-iapv4-x.x.x.aar
- hive-iapv4-plugin-x.x.x.aar
외부 라이브러리 의존성 설정하기
Gradle 설정으로 Hive SDK에서 사용 중인 외부 라이브러리를 추가할 수 있습니다.
-
- 프로젝트 수준의 build.gradle 파일에 외부 라이브러리를 가져올 수 있도록 레파지토리를 추가합니다.
12345678allprojects {repositories {google()jcenter()mavenCentral()maven { url 'http://maven.singular.net/' } // singular 사용 시 추가}} - File > Project Structure 메뉴를 선택해 Project Structure 창을 띄웁니다.
- Dependencies 목록에서 app을 클릭, Declared Dependencies 하단 + 버튼을 클릭해 1 Library dependency를 선택합니다.
- Add Library Dependency 창이 뜨면 아래 항목을 추가합니다.
- implementation ‘com.google.firebase:firebase-iid:20.2.4’ // FCM 사용 시
- implementation ‘com.google.firebase:firebase-messaging:20.2.4’ // FCM 사용 시
- implementation ‘com.google.android.gms:play-services-auth:17.0.0’
- implementation ‘com.google.android.gms:play-services-ads-identifier:17.0.0’
- implementation ‘com.facebook.android:facebook-core:9.1.0’
- implementation ‘com.facebook.android:facebook-common:9.1.0’
- implementation ‘com.facebook.android:facebook-login:9.1.0’
- implementation ‘com.facebook.android:facebook-share:9.1.0’
- implementation ‘com.android.billingclient:billing:3.0.3’ // updated v1.19.1
- implementation ‘com.google.android.play:core:1.8.3’ // v1.19.1+
- implementation ‘com.google.android.play:core-ktx:1.8.1’ // v1.19.1+
- implementation ‘androidx.core:core-ktx:1.3.0’
- implementation ‘androidx.appcompat:appcompat:1.0.0’
- implementation ‘androidx.cardview:cardview:1.0.0’
- implementation ‘androidx.legacy:legacy-support-v4:1.0.0’
- implementation ‘androidx.constraintlayout:constraintlayout:1.1.3’
- implementation ‘androidx.recyclerview:recyclerview:1.2.0-alpha05’ // v1.19.0+ (C2S.19.0)
- implementation ‘com.android.installreferrer:installreferrer:2.2’
- implementation ‘com.adjust.sdk:adjust-android:4.28.0’ // Adjust 사용 시
- implementation ‘com.singular.sdk:singular_sdk:9.2.9’ // Singular 사용 시
- implementation ‘com.huawei.hms:hwid:6.4.0.300’ // Huawei 로그인 지원 시 (1.19.8)
- implementation ‘com.huawei.hms:iap:6.3.0.300’ // Huawei 결제 지원 시 (1.19.8)
- implementation ‘com.huawei.agconnect:agconnect-core:1.6.4.300’ // Huawei 로그인 지원 시 (1.19.8)
- implementation ‘com.huawei.hms:game:5.0.4.303’ // Huawei 로그인 지원 시 (1.19.8)
- implementation ‘com.squareup.okhttp3:okhttp:3.12.12’ // QQ Login 지원 시 (1.19.2+)
- 프로젝트 수준의 build.gradle 파일에 외부 라이브러리를 가져올 수 있도록 레파지토리를 추가합니다.
배포 버전에 포함된 외부 라이브러리 추가하기
Gradle을 이용해 최신 버전을 추가할 수 없거나 별도 관리가 필요한 라이브러리의 경우 Hive SDK와 함께 배포 버전에 포함합니다. Hive SDK 추가 방식과 동일하게 외부 라이브러리를 추가합니다.
Hive SDK에 대한 의존성 설정하기
배포 버전에 포함된 외부 라이브러리(.aar/.jar) 목록은 다음과 같습니다.
공통 적용
- YouTubeAndroidWebPlayerApi.aar
- YouTubeAndroidPlayerApi.jar
- universalimageloader-release.aar
- commons-io-2.1.jar
- gson-2.2.4.jar
- httpmime-4.2.jar
- QQ 로그인 지원 시 추가
- open_sdk_r2973327_lite.jar (1.19.2-)
- open_sdk_3.5.4.11_r3f56456_lite.jar (1.19.2+)
- Huawei 로그인 지원 시 추가
- Peppermint_Social_Plugin_Huawei-2.x.x.aar
Hive Lebi를 지원
- IAP v1(InAppLibrary) 지원 시 추가 (v1.19.1-)
- InAppC2SSecurity.jar
- alipaySdk-15.6.8-20191021122514.aar
- WeChatPay 지원 시 추가
wechat-sdk-android-with-mta_5.0.8.jar(v1.19.1부터 제거, build.gradle 설정으로 변경)
- IAP v4(InAppV4) 지원 시 추가
- hive-iapv4-x.x.x.aar
- hive-iapv4-plugin-x.x.x.aar
ONE store를 지원
- IAP v1(InAppLibrary) 지원 시 추가 (v1.19.1-)
- ONE store V4 결제 지원 시 추가
- InAppTstoreSDKv4-16.06.00_20181012.jar
- ONE store V5 결제 지원 시 추가
- InAppTstoreSDKv5-17.03.00_20181012.jar
- ONE store V4 결제 지원 시 추가
- IAP v4(InAppV4) 지원 시 추가
- hive-iapv4-x.x.x.aar
- hive-iapv4-plugin-x.x.x.aar
- ONE store V4 결제 지원 시 추가 (v1.19.2+)
- InAppTstoreSDKv5-16.06.00_20201007.jar
- ONE store V5 결제 지원 시 추가 (v1.19.1-)
- InAppTstoreSDKv5-17.03.00_20181012.jar
- ONE store V6 결제 지원 시 추가 (v1.19.1+)
- onestore_iap_sdk-v19.00.01.aar
Amazon Market을 지원
- IAP v1(InAppLibrary) 지원 시 추가 (v1.19.1-)
- Amazon 결제 지원 시 추가
- in-app-purchasing-2.0.76.jar
- 기존 InAppAmazonSDK.jar를 제거
- Amazon 푸시 지원 시 추가
- amazon-device-messaging-1.0.1.jar
- Amazon 결제 지원 시 추가
- IAP v4(InAppV4) 지원 시 추가
- hive-iapv4-x.x.x.aar
- hive-iapv4-plugin-x.x.x.aar
- Amazon 결제 지원 시 추가
- in-app-purchasing-2.0.76.jar
- v1.19.1부터 v1.19.3 미만 버전은 SDK에 포함되어 별도 추가 필요 없음
- v1.19.3부터 SDK에서 제외되어 추가 필요
- 기존 InAppAmazonSDK.jar를 제거
- in-app-purchasing-2.0.76.jar
- Amazon 푸시 지원 시 추가
- amazon-device-messaging-1.0.1.jar
Galaxy Store를 지원
- IAP v1(InAppLibrary) 지원 시 추가
- Galaxy Store 결제 지원 시 추가
- SamsungInAppPurchase_5.1.0.aar
- Galaxy Store 결제 지원 시 추가
아마존 설정 파일 추가하기
Amazon 빌링 사용 시 Appstore SDK에서 아이템 정보를 전달받으려면 /assets
위치에 암호화된 키 파일을 추가해야 합니다. 아마존 앱 스토어 가이드를 참고하여 AppstoreAuthenticationKey.pem 키를 다운로드 및 추가 방법에 대해 알아보세요.
Firebase 설정하기
- Hive SDK v1.19.6부터 Firebase에서 요구하는 manifest 설정이 아래와 같이 기본으로 포함되어 있습니다.
1234// Hive SDK의 기본 포함된 설정<meta-data android:name="firebase_analytics_collection_enabled" android:value="false" /><meta-data android:name="google_analytics_adid_collection_enabled" android:value="false" /> - 개발팀에서 Firebase의 애널리틱스 지표 기능을 자체적으로 사용하는 경우에는 아래의 내용을 확인하세요.
- 자체적으로 Firebase 애널리틱스 지표 수집 기능을 사용할 경우 프로젝트의 AndroidManifest.xml에서
firebase_analytics_collection_enabled
옵션을true
로 재정의 바랍니다.
123// 재정의<meta-data android:name="firebase_analytics_collection_enabled" android:value="true" tools:node="replace"/> - 자체적으로 Firebase 애널리틱스 지표 수집 시 유저의 Android 광고 Id를 수집할 경우 프로젝트의 AndroidManifest.xml에서
google_analytics_adid_collection_enabled
옵션을true
로 재정의 바랍니다.
123// 재정의<meta-data android:name="google_analytics_adid_collection_enabled" android:value="true" tools:node="replace"/>
- 자체적으로 Firebase 애널리틱스 지표 수집 기능을 사용할 경우 프로젝트의 AndroidManifest.xml에서
AndroidManifest.xml 설정하기
AndroidManifest.xml에 다음의 항목을 직접 입력해 주세요.
- Hive SDK 설정
- 공통 적용
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100<manifest><application android:name="com.com2us.appinfo.ApplicationContextProvider" ...><!-- UserEngagement Start--><activity android:name="com.com2us.module.engagement.C2SModuleEngagementRedirectActivity"><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="{게임 패키지 네임}" /></intent-filter></activity><!-- UserEngagement End --><!-- Chatbot Start --><activityandroid:name="com.com2us.peppermint.PeppermintChatbotActivity"android:configChanges="orientation|screenSize|keyboard|keyboardHidden"android:screenOrientation="behind" /><!-- Chatbot End --><!-- ActiveUser Start --><activityandroid:name="com.com2us.module.activeuser.useragree.AgreementUIActivity"android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|locale|fontScale"android:screenOrientation="behind"android:theme="@android:style/Theme.NoTitleBar.Fullscreen" /><service android:name="com.com2us.module.activeuser.downloadcheck.InstallService" /><!-- ActiveUser End --><!-- Promotion Start --><activityandroid:name="com.com2us.module.hivepromotion.impl.promotion.PromotionVideoActivity"android:hardwareAccelerated="true"android:screenOrientation="sensorLandscape"android:launchMode="standard"/><activityandroid:name="com.com2us.module.hivepromotion.impl.promotion.PromotionWebVideoActivity"android:hardwareAccelerated="true"android:screenOrientation="sensorLandscape"android:theme="@style/Theme.AppCompat.NoActionBar"/><activityandroid:name="com.com2us.module.mercury.MercuryVideoActivity"android:hardwareAccelerated="true"android:screenOrientation="sensorLandscape"android:launchMode="standard"/><activityandroid:name="com.com2us.module.mercury.MercuryWebVideoActivity"android:hardwareAccelerated="true"android:screenOrientation="sensorLandscape"android:theme="@style/Theme.AppCompat.NoActionBar"/><!-- Promotion End --><!-- Push Start --><activity android:name="com.com2us.module.push.ShowMsgActivity" android:launchMode="singleInstance" android:theme="@android:style/Theme.Translucent" /><activity android:name="com.com2us.module.push.NotificationMessage" android:exported="true" android:launchMode="singleInstance" android:theme="@android:style/Theme.Translucent" /><activity android:name="com.com2us.module.push.PushWakeLock" android:launchMode="singleInstance" android:theme="@android:style/Theme.Translucent" /><receiver android:name="com.com2us.module.push.LocalPushReceiver" android:process=":remote" /><receiver android:name="com.com2us.module.push.DeviceStatusReceiver"><intent-filter><action android:name="android.intent.action.BOOT_COMPLETED" /><action android:name="android.intent.action.TIME_SET" /><category android:name="{게임 패키지 네임}" /></intent-filter></receiver><!-- Push End --><!-- Peppermint Start --><providerandroid:name="androidx.core.content.FileProvider"android:authorities="{게임 패키지 네임}.provider"android:exported="false"android:grantUriPermissions="true"><meta-dataandroid:name="android.support.FILE_PROVIDER_PATHS"android:resource="@xml/provider_paths"/></provider><!-- Peppermint End --></application>// buildTargetSdk 30 이상에서 외부 앱 사용할 수 있도록 아래 내용 추가 (gradle 3.6.0 이상 필요) (v1.19.1+)// 그 외 적용하려는 외부 앱의 package 명칭 추가하여 사용 가능<queries><package android:name="com.kakao.talk" /><package android:name="jp.naver.line.android" /><package android:name="com.whatsapp" /><package android:name="com.facebook.katana" /><package android:name="com.facebook.orca" /><package android:name="com.tencent.mm" /><package android:name="com.tencent.mobileqq" /><package android:name="com.huawei.appmarket" /> // 1.19.4+, Huawei 적용 시<package android:name="com.huawei.hwid" /> // 1.19.4+, Huawei 적용 시</queries></manifest> - android:targetSdkVersion의 값이 28 이상일 때 아래 내용을 추가합니다.
- <uses-library android:name=”org.apache.http.legacy” android:required=”false”/> 설정은 <application></application> 내에 추가합니다.
12<uses-permission android:name="android.permission.FOREGROUND_SERVICE" /><uses-library android:name="org.apache.http.legacy" android:required="false"/>
- <uses-library android:name=”org.apache.http.legacy” android:required=”false”/> 설정은 <application></application> 내에 추가합니다.
- Android OS 12 이상 단말에서 광고 식별자를 사용할 수 있도록 AD_ID 권한을 추가합니다. (1.19.3+)
1<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
- FCM을 사용할 경우 아래 내용을 추가합니다.
12345<service android:name="com.com2us.module.fcm.MessagingService"><intent-filter><action android:name="com.google.firebase.MESSAGING_EVENT" /></intent-filter></service>
- QQ 로그인 지원하는 경우 아래 내용을 추가합니다.
12345678910111213141516171819202122<activityandroid:name="com.tencent.connect.common.AssistActivity"android:configChanges="orientation|keyboardHidden"android:screenOrientation="behind"android:theme="@android:style/Theme.Translucent.NoTitleBar" /><activityandroid: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{QQ appId}" /></intent-filter></activity>// (QQ 로그인 사용 시) Android 11 단말에서 사용 시 혹은 targetSDK 버전을 30 이상 적용 시<queries><package android:name=”con.tencent.mm” /></queries>
- 공통 적용
- Facebook 로그인에 필요한 설정을 추가합니다.
1234<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/applicationId" /><meta-data android:name="com.facebook.sdk.AutoInitEnabled" android:value="false"/><meta-data android:name="com.facebook.sdk.AdvertiserIDCollectionEnabled" android:value="false"/><meta-data android:name="com.facebook.sdk.AutoLogAppEventsEnabled" android:value="false"/>
- Google Play Services 로그인에 필요한 설정을 추가합니다.
1<meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/app_id" />
- 앱 사용 기기에서 앱 데이터를 백업한 후 다른 기기에서 복구하면 로컬 데이터에 저장된 정보가 그대로 복사될 수 있습니다. Hive에서 사용하는 기기 정보나 유저 식별 정보가 앱에 복사될 수 있으니 백업을 허용하지 마세요.
123<!-- <application> 태그 안에 android:allowBackup="false"로 설정 --><!-- (allowBackup을 설정하지 않을 경우 default는 true) --><application android:name="com.com2us…" android:allowBackup="false">
<manifest>
하위에 아래 값을 입력하여 전체 모듈에 적용할 공통 퍼미션을 설정합니다. (1.19.0+)- Hive 1.19.3부터는 READ_PHONE_STATE와 READ_PHONE_NUMBERS 권한 사용을 중단합니다. 또한, Hive 1.19.3 이상에서
manifest
에 dangerous 권한이 추가되어있다면 Hive 초기화 시 Hive SDK가 권한 고지와 권한 요청을 진행합니다. 별도의 시점에서 권한 고지 및 요청을 사용하려면 권한 고지 커스텀 및 권한 별도 요청 API를 참고하세요.
1 2 3 4 5 6 7 8 9 10 11 12 |
<uses-permission android:name="android.permission.INTERNET"/> <!-- <uses-permission android:name="android.permission.READ_PHONE_STATE" android:maxSdkVersion="25"/> <uses-permission android:name="android.permission.READ_PHONE_NUMBERS" /> --> <!-- 1.19.3부터 READ_PHONE_STATE, READ_PHONE_NUMBERS 권한을 사용하지 않습니다. --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.VIBRATE"/> <uses-permission android:name="android.permission.WAKE_LOCK"/> <uses-permission android:name="com.android.vending.BILLING"/> <uses-permission android:name="android.permission.GET_TASKS" android:maxSdkVersion="20" /> // Hive 프로필 사진첩 접근을 위한 설정 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="22"/> |
- IAP v1 사용 시
- WeChat Pay 충전 기능을 지원할 경우
<application>
하위에 아래 값을 입력하여 WeChat Pay를 설정합니다.12345678910<activityandroid:name="com.com2us.module.inapp.lebi.WeChatPayActivity" /><activity-alias android:name=".wxapi.WXPayEntryActivity"android:targetActivity="com.com2us.module.inapp.lebi.WeChatPayActivity"tools:node="replace"android:exported="true" />// (위챗페이 사용 시) Android 11 단말에서 사용 시 혹은 targetSDK 버전을 30 이상 적용 시<queries><package android:name="con.tencent.mm" /></queries>
- WeChat Pay 충전 기능을 지원할 경우
- IAP v4 사용 시
- 별도 설정 없음
- ONE store V4 결제를 지원할 경우
<application>
하위에 아래 값을 입력하여 ONE store V4 결제를 설정합니다.1234567891011121314151617181920// 1.19.2+ 에서 InAppV4 원스토어 V4 적용 시 tools:replace 설정을 반드시 추가해야 합니다.<meta-dataandroid:name="iap:api_version"android:value="4"tools:replace="android:value"/><activity android:name="com.skplanet.dodo.IapWeb"android:configChanges="orientation|locale|keyboardHidden|layoutDirection|screenSize"android:excludeFromRecents="true"android:windowSoftInputMode="stateHidden" />// (원스토어 사용 시) Android 11 단말에서 사용 시 혹은 targetSDK 버전을 30 이상 적용 시<queries><intent><action android:name="com.onestore.ipc.iap.IapService.ACTION" /></intent><intent><action android:name="android.intent.action.VIEW" /><data android:scheme="onestore" /></intent></queries> - ONE store V5 결제를 지원할 경우
<application>
하위에 아래 값을 입력하여 ONE store V5 결제를 설정합니다.1234567891011<meta-data android:name="iap:api_version" android:value="5" />// (원스토어 사용 시) Android 11 단말에서 사용 시 혹은 targetSDK 버전을 30 이상 적용 시<queries><intent><action android:name="com.onestore.ipc.iap.IapService.ACTION" /></intent><intent><action android:name="android.intent.action.VIEW" /><data android:scheme="onestore" /></intent></queries> - ONE store V6 결제를 지원할 경우
<application>
하위에 아래 값을 입력하여 ONE store V6 결제를 설정합니다.1234567891011// (원스토어 사용 시) Android 11 단말에서 사용 시 혹은 targetSDK 버전을 30 이상 적용 시<queries><intent><action android:name="com.onestore.ipc.iap.IapService.ACTION" /></intent><intent><action android:name="android.intent.action.VIEW" /> <data android:scheme="onestore" /></intent></queries>
- Amazon 결제를 지원할 경우
<application>
하위에 아래 값을 입력하여 Amazon 결제를 설정합니다.12345678910// IAPV1 사용 시 필수 설정// IAPv4 사용 시 설정 생략<receiverandroid:name="com.amazon.device.iap.ResponseReceiver"android:permission="com.amazon.inapp.purchasing.Permission.NOTIFY"><intent-filter><action android:name="com.amazon.inapp.purchasing.NOTIFY"></intent-filter></receiver> - Amazon 푸시를 지원할 경우
<application>
하위에 아래 값을 입력하여 Amazon 푸시를 설정합니다.1234567891011121314151617181920212223<service android:name="com.com2us.module.amazonpush.ADMMessageHandler" android:exported="false" /><receiver android:name="com.com2us.module.amazonpush.ADMMessageHandler$MessageAlertReceiver"android:permission="com.amazon.device.messaging.permission.SEND"><intent-filter><action android:name="com.amazon.device.messaging.intent.REGISTRATION" /><action android:name="com.amazon.device.messaging.intent.RECEIVE" /><category android:name="{게임 패키지 네임}"/></intent-filter></receiver><meta-data android:name="AmazonAPIKey" android:value="{Your API Key}"/><amazon:enable-feature android:name="com.amazon.device.messaging" android:required="true" /><permission android:name="{게임 패키지 네임}.permission.RECEIVE_ADM_MESSAGE" android:protectionLevel="signature"/><uses-permission android:name="{게임 패키지 네임}.permission.RECEIVE_ADM_MESSAGE"/><uses-permission android:name="com.amazon.device.messaging.permission.RECEIVE"/>
strings.xml 설정하기
res/values/strings.xml 파일에 아래와 같이 설정합니다.
- “app_id” 값에 Google App ID를 입력하세요.
예. 331526026701 - “applicationId” 값에 Facbook App ID를 입력하세요.
예. 1809615065921877 - WeChat Pay 충전 지원 시 “wechat_appid” 값에 WeChat에서 발급받은 AppID를 입력하세요.
예. wx810adfc018b5f0bd - WeChat Pay 충전 지원 시 “wechat_key” 값에 WeChat에서 발급받은 key를 입력하세요.
예. auILMZisSYHnEb4ISD58QYm7uETdVX6d - QQ 로그인 지원 시 “qq_appid” 값에 QQ에서 발급받은 APPID를 입력하세요.
예. 101518248
기타 설정하기
FCM 설정
/res/values/ 경로에 추가한 fcm_settings.xml 파일을 앱 설정에 맞게 수정합니다. FCM을 설정하려면 Firebase에 로그인한 후 프로젝트 설정 항목에서 google-service.json을 다운로드해 확인할 수 있습니다. 파일을 다운로드한 후 google-service.json 파일 내 주요 키 값을 fcm_settings.xml 파일에 설정해 FCM을 동작합니다.
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 |
<!– google-service.json에서 fcm_settings.xml로의 키 매칭 –> <!– (1) client > oauth_client > client_id : default_web_client_id –> <!– (2) project_info > firebase_url : firebase_database_url –> <!– (3) project_info > project_number : gcm_defaultSenderId –> <!– (4) client > api_key > current_key : google_api_key –> <!– (5) client > client_info > mobilesdk_app_id : google_app_id –> <!– (6) project_info > storage_bucket : google_storage_bucket –> <?xml version="1.0″ encoding="utf-8″?> <resources> <string name="default_web_client_id" translatable="false">123456789101-a12bcd34e5fghijk67abcdefghi8abde.apps.googleusercontent.com</string> <string name="firebase_database_url" translatable="false">https://hive-sdk-1234567.firebaseio.com</string> <string name="gcm_defaultSenderId" translatable="false">987654321010</string> <string name="google_api_key" translatable="false">AbcdEfGHIjk0LMnopQRsTUv2Wx3YzabcD45eFGh</string> <string name="google_app_id" translatable="false">1:123456789101:android:1a234bd567ef8g9h</string> <string name="google_storage_bucket" translatable="false">hive-sdk-1234567.appspot.com</string> </resources> |
Huawei 로그인 및 결제 설정
- Project 폴더에 Huawei 콘솔에서 다운로드한 agconnect-services.json 파일을 추가합니다.
- Hive SDK v1.19.8 이상 적용 시 agconnect.service.json 파일을 Huawei 콘솔에서 새로 다운로드하시기 바랍니다.
- Project 폴더 내 build.gradle 파일에 아래 내용을 추가합니다.
1234567891011121314151617allprojects {repositories {//...maven {url 'http://developer.huawei.com/repo/'} // huawei}}buildscript {repositories {//...maven {url 'http://developer.huawei.com/repo/'} // huawei}dependencies {//...classpath 'com.huawei.agconnect:agcp:1.6.4.300' // huawei (1.19.8)}}
-
-ignorewarnings
-keepattributes *Annotation*
-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes Signature
-keepattributes SourceFile,LineNumberTable
-keep class com.hianalytics.android.**{*;}
-keep class com.huawei.updatesdk.**{*;}
-keep class com.huawei.hms.**{*;}
- AndroidManifest 설정
- Hive 1.19.4이하에 Huawei를 적용하는 모든 버전에서 요구됩니다.
1234567891011121314// Huawei 요구 Android 권한 추가<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />// Android 11 대응을 위한 설정<queries><intent><action android:name="com.huawei.hms.core.aidlservice" /></intent></queries><queries><package android:name="com.huawei.appmarket" /><package android:name="com.huawei.hwid" /></queries>
Android Activity Lifecycle
MainActivity에서 Android Lifecycle에 맞춰 아래 코드를 호출합니다. Hive SDK가 정상 동작하려면 반드시 추가되어야 합니다.
Unity 환경에서 개발 시 적용
1 2 |
public class MainActivity extends com.com2us.module.activity.C2SModuleNativeActivity |
- UnityPlyerNativeActivity가 deprecated 처리된 Unity 환경에서 개발 시 적용
1 2 |
public class MainActivity extends com.com2us.module.activity.C2SModuleActivity |
Cocos2d-X 환경에서 개발 시 적용
1 2 |
public class MainActivity extends com.com2us.module.activity.C2SModuleCocos2dxActivity |
빌드하기
Gradle 설정하기
Gradle 설정으로 Hive SDK에서 사용 중인 외부 라이브러리를 추가할 수 있습니다.
- android > defaultConfig > applicationId에 AndroidManifest.xml 파일의
packageName
과 동일하게 입력해야 합니다. Hive SDK에서 지원하는minSdkVersion
은 15이고, Unity 환경에서 개발하거나 FCM을 사용하는 경우에는 16, Huawei Market을 지원하는 경우에는 17을 설정합니다.1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586android {compileSdkVersion 30buildToolsVersion "30.0.3"…defaultConfig {applicationId "com.hive.example.gameapp"minSdkVersion 15targetSdkVersion 30versionCode 1versionName "1.0"}…compileOptions { // HIVE 1.19.0+sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8}}dependencies {implementation fileTree(include: ['*.jar'], dir: 'libs')implementation fileTree(include: ['*.aar'], dir: 'libs')// Kotlin Library (Kotlin 1.4.32 사용)implementation 'org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version'implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.3" // v1.19.1+implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.3" // v1.19.1+// Android Support Libraryimplementation 'androidx.core:core-ktx:1.3.0'implementation 'androidx.appcompat:appcompat:1.0.0'implementation 'androidx.cardview:cardview:1.0.0'implementation 'androidx.legacy:legacy-support-v4:1.0.0'implementation 'androidx.constraintlayout:constraintlayout:1.1.3'implementation 'androidx.recyclerview:recyclerview:1.2.0-alpha05'// Google Play Servicesimplementation 'com.google.android.gms:play-services-auth:17.0.0'implementation 'com.google.android.gms:play-services-ads-identifier:17.0.0'// Google Billingimplementation 'com.android.billingclient:billing:3.0.3' // updated v1.19.1// Google In-App Reviewimplementation 'com.google.android.play:core:1.8.3' // v1.19.1+implementation 'com.google.android.play:core-ktx:1.8.1' // v1.19.1+// Firebaseimplementation 'com.google.firebase:firebase-iid:20.2.4'implementation 'com.google.firebase:firebase-messaging:20.2.4'// Facebookimplementation 'com.facebook.android:facebook-common:9.1.0' // updated v1.19.1implementation 'com.facebook.android:facebook-core:9.1.0' // updated v1.19.1implementation 'com.facebook.android:facebook-login:9.1.0' // updated v1.19.1implementation 'com.facebook.android:facebook-share:9.1.0' // updated v1.19.1implementation 'androidx.multidex:multidex:2.0.0'// Install Referrerimplementation 'com.android.installreferrer:installreferrer:2.2'// Tracking Moduleimplementation 'com.singular.sdk:singular_sdk:9.2.9' // for Singularimplementation 'com.adjust.sdk:adjust-android:4.28.0' // updated v1.19.1// Huawei 로그인 지원 시 (1.19.8)implementation 'com.huawei.hms:hwid:6.4.0.300'implementation 'com.huawei.agconnect:agconnect-core:1.6.4.300'implementation 'com.huawei.hms:game:5.0.4.303'// Huawei 결제 지원 시 (1.19.8)implementation 'com.huawei.hms:iap:6.3.0.300'// WeChat 결제 지원 시implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:1.4.0'// QQ 로그인 지원 시 (1.19.2+)implementation 'com.squareup.okhttp3:okhttp:3.12.12'…}apply plugin: 'com.huawei.agconnect' // Huawei 로그인 및 결제를 지원하는 경우 반드시 추가
ProGuard 설정하기
Hive SDK 및 Hive SDK에서 사용 중인 외부 라이브러리에 대해서 프로가드 설정을 하려면 다음의 내용을 적용하세요.
hive
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.** { *; } # 개별모듈 및 SDK v1 ORIG -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 |
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 적용시 포함 -keep class com.google.android.gms.common.ConnectionResult { int SUCCESS; } # google 적용시 포함 -keep class com.google.android.gms.ads.identifier.AdvertisingIdClient { com.google.android.gms.ads.identifier.AdvertisingIdClient$Info getAdvertisingIdInfo(android.content.Context); } # google 적용시 포함 -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.** { *; } |
huawei
1 2 3 4 5 6 7 8 9 10 |
-ignorewarnings -keepattributes Annotation -keepattributes Exceptions -keepattributes InnerClasses -keepattributes Signature -keepattributes SourceFile,LineNumberTable -keep class com.hianalytics.android.*{*;} -keep class com.huawei.updatesdk.*{*;} -keep class com.huawei.hms.*{*;} |