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

본 가이드는 Android Studio 3.2 버전을 기준으로 안내합니다.

포팅하기

Android 개발 환경을 이용한다면 개별모듈을 플러그인의 형태로 Android 개발 환경에 포팅해 주세요. 다음의 안내대로 개별모듈을 개발 환경에 추가하고 필요한 설정 작업과 코드 작업을 수행하세요.

프로젝트 생성하기

  1. Android Studio Project를 실행하세요.
  2. Start a new Android Studio project를 클릭해 신규 프로젝트를 생성하세요. 기존에 생성한 프로젝트가 있다면 그대로 사용할 수 있습니다.

AndroidX 적용하기

AndroidX를 적용하려면 먼저 모듈별 지원 버전을 확인하세요.

  • ModuleManager v2.5.15
  • ActiveUser v2.9.3
  • Mercury v2.13.1
  • HivePromotion v4.4.2 (C2S.19.0.1+)
  • Push v3.6.3
  • InApp v2.16.5
  • InAppV4 v14.5.0
  • Peppermint v2.8.2

위에 언급한 버전 또는 이후 버전을 사용 중이라면 Android Support Library 버전을 업데이트하면서 AndroidX를 여러분의 프로젝트에 적용해야 합니다. 아래 순서대로 AndroidX를 적용하세요.

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

개별모듈 추가하기

Android Studio 프로젝트에 포팅하는 개별모듈은 Hive 개발자 사이트에서 다운로드한 개별모듈 압축 파일에 포함되어 있습니다.

공통 적용

  • ModuleManager-2.x.x.aar
  • ActiveUser-2.x.x.aar
  • Peppermint-2.x.x.aar
  • Offerwall-2.x.x.aar
  • Push-3.x.x.aar
  • hive-core-x.x.x.aar (C2S.18.4+)
  • hive-protocol-x.x.x.aar (C2S.18.4+)
  • hive-base-x.x.x.aar (C2S.18.4+)
  • hive-ui-x.x.x.aar (C2S.19.0.1+)
  • hive-repayment-.x.x.x.aar (C2S.19.3+)(C2S.19.4-)
  • universalimageloader-release.aar
  • YouTubeAndroidWebPlayerApi.aar
  • YouTubeAndroidPlayerApi.jar
  • Unity 전용 라이브러리
    • ActiveUserPlugin.aar
    • MercuryUnityPlugin.aar
    • OfferwallUnityPlugin.aar
    • InAppUnityPlugin.aar
  • QQ 로그인 지원 시 추가
    • open_sdk_r2973327_lite.jar (C2S.19.2-)
    • open_sdk_3.5.4.11_r3f56456_lite.jar (C2S.19.2+)
  • Huawei 로그인 지원 시 추가
    • Peppermint_Social_Plugin_Huawei-2.x.x.aar

프로모션 기능 지원

  • 개별모듈 Promotion 1.0 지원 시 추가
    • Mercury-2.x.x.aar
  • 개별모듈 Promotion 2.0 지원 시 추가 (C2S.19.0.1+)
    • HivePromotion-4.x.x.aar
    • HivePromotionUnityPlugin.aar (Unity 개발 환경 시)

Google Play Store를 지원

  • IAP v1(InAppLibrary) 지원 시 추가 (C2S.19.1-)
    • InAppLibrary-googleplay-2.x.x.aar 혹은 InAppLibrary-inappAll-2.x.x.aar
  • IAP v4(InAppV4) 지원 시 추가
    • hive-iapv4-x.x.x.aar
    • hive-iapv4-plugin-x.x.x.aar

Hive Lebi를 지원

  • IAP v1(InAppLibrary) 지원 시 추가 (C2S.19.1-)
    • InAppLibrary-lebi-2.x.x.aar 혹은 InAppLibrary-inappAll-2.x.x.aar
    • InAppC2SSecurity.jar
    • alipaySdk-15.6.8-20191021122514.aar
    • WeChatPay 지원 시 추가
      • wechat-sdk-android-with-mta_5.0.8.jar
  • IAP v4(InAppV4) 지원 시 추가
    • hive-iapv4-x.x.x.aar
    • hive-iapv4-plugin-x.x.x.aar
    • WeChatPay 지원 시 추가
      • wechat-sdk-android-with-mta_5.0.8.jar
        (C2S.19.1부터 build.gradle에 추가하는 방법을 개별로 가이드)

ONE store를 지원

  • IAP v1(InAppLibrary) 지원 시 추가 (C2S.19.1-)
    • InAppLibrary-tstore-2.x.x.aar 혹은 InAppLibrary-inappAll-2.x.x.aar
    • ONE store V4 결제 지원 시 추가
    • InAppTstoreSDKv4-16.06.00_20201007.jar
    • ONE store V5 결제 지원 시 추가
    • InAppTstoreSDKv5-17.03.00_20201007.jar
  • IAP v4(InAppV4) 지원 시 추가
    • hive-iapv4-x.x.x.aar
    • hive-iapv4-plugin-x.x.x.aar
    • ONE store V4 결제 지원 시 추가 (C2S.19.2+)
    • InAppTstoreSDKv4-16.06.00_20201007.jar
    • ONE store V5 결제 지원 시 추가 (C2S.19.1-)
    • InAppTstoreSDKv5-17.03.00_20201007.jar
    • ONE store V6 결제 지원 시 추가 (C2S.19.1+)
    • onestore_iap_sdk-v19.00.01.aar

Amazon Market을 지원

  • IAP v1(InAppLibrary) 지원 시 추가 (C2S.19.1-)
    • IAP v1(InAppLibrary) 지원 시 추가 (C2S.19.1-)
      • in-app-purchasing-2.0.76.jar
        • C2S.19.1부터 C2S.19.3 미만 버전은 hive-iapv4-x.x.x.aar에 포함되어 별도 추가 필요 없음
        • C2S.19.3부터 hive-iapv4-x.x.x.aar에서 제외되어 추가 필요
      • 기존 InAppAmazonSDK.jar를 제거
    • Amazon 푸시 지원 시 추가
      • amazon-device-messaging-1.0.1.jar
  • IAP v4(InAppV4) 지원 시 추가
    • hive-iapv4-x.x.x.aar
    • hive-iapv4-plugin-x.x.x.aar
    • Amazon 결제 지원 시 추가
    • in-app-purchasing-2.0.76.jar
    • 기존 InAppAmazonSDK.jar를 제거
    • Amazon 푸시 지원 시 추가
    • amazon-device-messaging-1.0.1.jar

Galaxy Store를 지원

  • IAP v1(InAppLibrary) 지원 시 추가 (C2S.19.1-)
    • InAppLibrary-galaxystore-2.x.x.aar 혹은 InAppLibrary-inappAll-2.x.x.aar
    • Galaxy Store 결제 지원 시 추가
    • SamsungInAppPurchase_5.1.0.aar

Huawei Market을 지원

  • IAP v1(InAppLibrary) 지원 시 추가 (C2S.19.1-)
    • InAppLibrary-huawei-2.x.x.aar
  • IAP v4(InAppV4) 지원 시 추가
    • hive-iapv4-x.x.x.aar
    • hive-iapv4-plugin-x.x.x.aar
       

AndroidManifest.xml 설정하기

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

  • 개별모듈 설정
    • 아래 내용은 각 모듈에 공통으로 필요합니다.
    • android:targetSdkVersion의 값이 28 이상일 때 아래 내용을 추가합니다. <uses-library android:name=”org.apache.http.legacy” android:required=”false”/> 설정은 <application></application> 내에 추가합니다.

    • Android OS 12 이상 단말에서 광고 식별자를 사용할 수 있도록 AD_ID 권한을 추가합니다. (C2S.19.3+)

    • FCM을 사용할 경우 아래 내용을 추가합니다.

    • QQ 로그인 지원하는 경우 아래 내용을 추가합니다.

    • QQ 로그인을 지원하면서 Android 11 (API 30) 대응 시 AndroidManifest 설정 사항 (아래에 각각 해당하는 경우 설정 필요)
      • Android 11 단말에서 QQ로그인 사용 시
      • targetSDK 버전을 30 이상 적용하여 QQ로그인 사용 시

    • 챗봇 기능을 지원하는 경우 아래 내용을 추가합니다.

  • Facebook 설정
    • Facebook 로그인에 필요한 설정을 추가합니다.

  • Google Play Services 설정
    • Google Play Services 로그인에 필요한 설정을 추가합니다.

  • Android 앱 데이터 백업 허용 여부 설정
    • 앱 사용 기기에서 앱 데이터를 백업한 후 다른 기기에서 복구하면 로컬 데이터에 저장된 정보가 그대로 복사될 수 있습니다. Hive에서 사용하는 기기 정보나 유저 식별 정보가 앱에 복사될 수 있으니 백업을 허용하지 마세요.

  • 퍼미션 설정
    • <manifest> 하위에 아래 값을 입력하여 전체 모듈에 적용할 공통 퍼미션을 설정합니다. (C2S.19.0+)

    • READ_PHONE_STATE : Hive SDK v1을 사용할 때 선언되는 위험 권한(dangerous permission) 중 하나로, 앱 최초 실행 시 권한 고지 페이지를 노출한 후 팝업을 띄워 유저에게 권한 사용 여부를 묻는다. C2S.19.0.1 이상을 적용하는 경우 maxSdkVersion을 25으로 설정한다.
    • READ_PHONE_NUMBERRS : Hive SDK v1을 사용할 때 선언되는 위험 권한(dangerous permission) 중 하나로, 앱 최초 실행 시 권한 고지 페이지를 노출한 후 팝업을 띄워 유저에게 권한 사용 여부를 묻는다. C2S.19.0.1 이상을 READ_PHONE_STATE와 함께 설정한다. (C2S.19.0.1 미만 사용 시 READ_PHONE_STATE을 maxSdkVersion 제한 없이 사용)
    • C2S.19.3부터 각 모듈은 READ_PHONE_STATE와 READ_PHONE_NUMBERS 권한 사용을 중단합니다. 또한, Hive 1.19.3 이상에서 manifest에 dangerous 권한이 추가되어있다면 Hive 초기화 시 Hive SDK가 권한 고지와 권한 요청을 진행합니다. 별도의 시점에서 권한 고지 및 요청을 사용하려면 권한 고지 커스텀권한 별도 요청 API를 참고하세요.
  • Lebi Market 설정
    • IAP v1 사용 시
      • WeChat Pay 충전 기능을 지원할 경우 <application> 하위에 아래 값을 입력하여 WeChat Pay를 설정합니다.

    • IAP v4 사용 시
      • 별도 설정 없음
    • Wechat Pay 충전 기능을 지원하면서 Android 11 (API 30) 대응 시 AndroidManifest 설정 사항 (IAP v1/v4 공통, 아래에 각각 해당하는 경우 설정 필요)
      • Android 11 단말에서 Wechat Pay 사용 시
      • targetSDK 버전을 30 이상 적용하여 Wechat Pay 사용 시

  • ONE store Market 설정
    • ONE store V4 결제를 지원할 경우 <application> 하위에 아래 값을 입력하여 ONE store V4 결제를 설정합니다.

    • ONE store V5 결제를 지원할 경우 <application> 하위에 아래 값을 입력하여 ONE store V5 결제를 설정합니다.

    • ONE store V6 결제를 지원하는 경우에는 V6에 대해 개별로 설정할 사항이 없습니다.
    • (ONE store 적용 공통 사항) Android 11 (API 30) 대응 시 AndroidManifest 설정 사항 (아래에 각각 해당하는 경우 설정 필요)
      • Android 11 단말에서 원스토어 사용 시
      • targetSDK 버전을 30 이상 적용하여 원스토어 사용 시

    • ONE Store V7 결제를 지원하는 경우 라이브러리 다운로드를 위한 설정만 추가하면 됩니다. OneStore V7은 국내 빌드 혹은 글로벌 빌드(C2S.22.0.1 이상)로 적용 가능합니다. 기존 OneStore V6 결제의 onestore_iap_sdk-v19.00.02.aar 파일이 있다면 제거합니다.

      프로젝트 수준 build.gradle

      모듈 수준 build.gradle: 국내용 빌드

      모듈 수준 build.gradle: 글로벌 빌드

  • Amazon Market 설정
    • (IAP v1에만 해당)Amazon 결제를 지원할 경우 <application> 하위에 아래 값을 입력하여 Amazon 결제를 설정합니다.

    • Amazon 푸시를 지원할 경우 <application> 하위에 아래 값을 입력하여 Amazon 푸시를 설정합니다.

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을 동작합니다.

Huawei 로그인 및 결제 설정
  1. Project 폴더에 Huawei 콘솔에서 다운로드한 agconnect-services.json 파일을 추가합니다.
  2. Project 폴더 내 build.gradle 파일에 아래 내용을 추가합니다.
  • Proguard 사용시 난독화 제외 설정하기
      – 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 설정
    • C2S.19.4 이하에 Huawei를 적용하는 모든 버전에서 요구됩니다.

Android Activity Lifecycle

MainActivity에서 Android Lifecycle에 맞춰 아래 코드를 호출합니다. 개별모듈이 정상 동작하려면 반드시 추가되어야 합니다.

  • 모듈 인스턴스 선언 예시 (Java native, C Plugin, 기타 환경)
    • MainActivity에서 모듈 라이브러리의 인스턴스를 아래와 같이 선언한 경우를 예시로 설명
    • 각 모듈이 생성자 호출을 통해 MainActivity를 알 수 있도록 구현 필요
    • 해당 내용은 Unity 환경이 아닌 ‘Java native 환경, Cocos2d-x 엔진 등 C Plugin 환경, 그외 기타 자체 환경’에서 개별모듈 사용 시 해당
      • Unity에선 모듈 패키지에서 제공하는 플러그인 코드를 통해 제어됨
    • 게임 로직(초기화 시점)에 따라 인스턴스 생성자를 호출하는 부분은 자유롭게 구현 가능
  • 모듈 인스턴스 선언 예시 (Unity 환경)
    • MainActivity(보통 UnityPlayerActivity)에서 모듈 라이브러리의 인스턴스를 아래와 같이 선언한 경우를 예시로 설명
    • 각 모듈이 생성자 호출을 통해 MainActivity를 알 수 있도록 구현 필요
    • Unity에선 모듈 패키지에서 제공하는 플러그인 코드를 통해 제어되나 모듈 패키지에서 제공하는 HubUnityController 를 사용하는 경우에 해당
      • HubUnityController는 Peppermint에 신호를 전달하는 역할
    • 게임 로직(초기화 시점)에 따라 인스턴스 생성자를 호출하는 부분은 자유롭게 구현 가능
  • Peppermint 공통 적용
    • Pepermint에서 소셜 서비스 관련 응답 처리를 위해 필요
    • Peppermint에서 Android 권환 관련 처리를 위해 필요
  • ActiveUser 사용 시 적용 (C Plugin 환경)
    • 약관 동의 후 모듈 내부로 신호 전달
    • 약관 로직이 끝났는지 알려주는 UserAgreeCB(API 문서 링크)를 게임 로직에서 활용할 경우 필요
    • C Plugin 외 다른 환경은 적용 필요하지 않음

InApp 모듈(IAP v1)을 사용하는 경우

  • Unity 환경에서 개발 시 적용
  • 그 외 환경에서 개발 시 적용
  • Lebi Market
    WeChat Pay 지원 시 추가로 설정합니다. (WeChat Pay로부터의 응답 처리)

    • Unity 환경에서 개발 시 적용
    • 그 외 환경에서 개발 시 적용

     

InAppV4 모듈(IAP v4)을 사용하는 경우

  • HiveActivity의 lifecycle 메서드 호출 필요
    • 하단에 ‘C2S.19.0.1 이상 모듈을 사용하는 경우’ 항목 참고

C2S.19.0.1 이상 모듈을 사용하는 경우

  • 공통 적용
    • 메인 액티비티에서 lifecycle 메서드에 HiveActivity의 lifecycle 메서드를 호출하도록 구현
      • 기존 각기 개별모듈에서 사용되는 lifecycle 메서드를 지우고 HiveActivity lifecycle 메서드로 대체하는 것이 아닌 추가 호출해야하는 요소
      • 모든 환경(Unity, C Plugin, Java native, 기타 환경)에서 적용 필요
    • hive-core-x.x.x.aar, hive-protocol-x.x.x.aar, hive-base-x.x.x.aar, hive-ui-x.x.x.aar 라이브러리가 C2S.19.0.1에서 기본 적용 요소가 되어 설정이 꼭 필요한 내용
      • C2S.19.3부터는 추가로 hive-repayment-x.x.x.aar 적용 필요
      • C2S.19.4부터는 hive-repayment-x.x.x.aar 라이브러리 제거됨
    • InAppV4를 사용하는 경우 마켓 응답을 처리하기 위해 꼭 필요한 내용

빌드하기

Gradle 설정하기

Gradle 설정으로 개별모듈에서 사용 중인 외부 라이브러리를 추가할 수 있습니다.

  1. 프로젝트 수준의 build.gradle 파일에 외부 라이브러리를 가져올 수 있도록 레파지토리를 추가합니다.
  2. android > defaultConfig > applicationIdAndroidManifest.xml 파일의 packageName과 동일하게 입력해야 합니다. 개별모듈에서 지원하는 minSdkVersion은 15이고, Unity 환경에서 개발할 경우 16, Huawei Market을 지원할 경우 17을 설정합니다.

 

ProGuard 설정하기

Hive SDK 및 Hive SDK에서 사용 중인 외부 라이브러리에 대해서 프로가드 설정을 하려면 다음의 내용을 적용하세요.

hive

unity

facebook

google / admob/adkit

qq

wechat

adjust

singular

huawei