This document guides how to use the Kakao SDK for Android("Android SDK") provided by the Kakao API platform.
The Android SDK uses the following libraries that are automatically installed when installing the Android SDK.
Set Android app information in [App] > [General] > [Platform] on the app management page. Refer to Platform.
Key hashes are the values hashed from the certificate fingerprints of the certificate and used to check if the app is malicious and the updates or changes are from the original app. The API server checks if the key hash added to the request matches the value specified in [App] > [General] > [Platform] on the app management page. Key hash has two types.
Check the key hashes in one of the ways below. Register all of the key hashes in [App] > [General] > [Platform] > [Android] on the app management page. Refer to Platform.
Make sure to add all debug key hashes by development environments and a release key hash. Kakao API calls are not allowed to apps without key hashes. If several developers participate in developing an app, register all debug key hashes that each developer has because they have all different debug key hashes depending on development environments.
To get key hashes using Terminal, Keytool program, key and certificate management tool are required. On Windows, download OpenSSL for Windows libraries is required. On Mac, Keytool is installed.
Run the command in Command Prompt according to the operating system.
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64
keytool -exportcert -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | PATH_TO_OPENSSL_LIBRARY\bin\openssl base64
Call the getKeyHash()
method provided in Utility
through the Android SDK.
import com.kakao.sdk.common.util.Utility
var keyHash = Utility.getKeyHash(this)
With Google Play App Signing, use the SHA-1 certificate fingerprint obtained on the Google Play Console, not generating a Release key hash on the Terminal. Refer to Play Console Help > Use Play App Signing for more details.
In the Google Play Console, select [Release Management] > [App Signing], and then copy the value of SHA-1 certificate fingerprint. Refer to Use Play App Signing.
keytool -printcert -file ./deployment_cert.der
Run the following command in Terminal with the SHA-1 certificate fingerprint value obtained.
echo "{SHA-1_CERTIFICATE_FINGERPRINT}" | xxd -r -p | openssl base64
Allow internet permission to communicate with the Kakao Sever through the Kakao APIs.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.sample">
<!-- Allow Internet permission -->
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
...
To enable shrinking, obfuscation, and optimization when building the release version of the app, add the following codes in the ProGuard rules file to exclude the Kakao SDK from shrinking and obfuscation.
-keep class com.kakao.sdk.**.model.* { <fields>; }
# https://github.com/square/okhttp/pull/6792
-dontwarn org.bouncycastle.jsse.**
-dontwarn org.conscrypt.*
-dontwarn org.openjsse.**
# refrofit2 (with r8 full mode)
-if interface * { @retrofit2.http.* <methods>; }
-keep,allowobfuscation interface <1>
-keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation
-if interface * { @retrofit2.http.* public *** *(...); }
-keep,allowoptimization,allowshrinking,allowobfuscation class <3>
-keep,allowobfuscation,allowshrinking class retrofit2.Response
Set Gradle by declaring a Maven repository to sync the project with the Android SDK. Depending on the version of Android Studio, the file to declare repositories is different. Refer to Dependency management in Gradle for more details.
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
maven { url = java.net.URI("https://devrepo.kakao.com/nexus/content/groups/public/") }
}
}
Add the required modules to the build.gradle.kts file at the module level. You can add either all modules or only the required ones.
dependencies {
implementation("com.kakao.sdk:v2-all:${LATEST_VERSION}") // Add all modules (Available in 2.11.0 or higher)
implementation("com.kakao.sdk:v2-user:${LATEST_VERSION}") // Module for the Kakao Login APIs
implementation("com.kakao.sdk:v2-share:${LATEST_VERSION}") // Module for the Kakao Talk Share APIs
implementation("com.kakao.sdk:v2-talk:${LATEST_VERSION}") // Module for the Kakao Talk Channel, Kakao Talk Social, Kakao Talk Message APIs
implementation("com.kakao.sdk:v2-friend:${LATEST_VERSION}") // Module for the picker APIs
implementation("com.kakao.sdk:v2-navi:${LATEST_VERSION}") // Module for the Kakao Navi APIs
implementation("com.kakao.sdk:v2-cert:${LATEST_VERSION}") // Module for the Kakao Certification APIs
}
dependencies {
implementation("com.kakao.sdk:v2-all-rx:${LATEST_VERSION}") // Add all modules (Available in 2.11.0 or higher)
implementation("com.kakao.sdk:v2-user-rx:${LATEST_VERSION}") // Module for the Kakao Login APIs
implementation("com.kakao.sdk:v2-share-rx:${LATEST_VERSION}") // Module for the Kakao Talk Share APIs
implementation("com.kakao.sdk:v2-talk-rx:${LATEST_VERSION}") // Module for the Kakao Talk Channel, Kakao Talk Social, Kakao Talk Message APIs
implementation("com.kakao.sdk:v2-friend-rx:${LATEST_VERSION}") // Module for the picker APIs
implementation("com.kakao.sdk:v2-navi:${LATEST_VERSION}") // Module for the Kakao Navi APIs
implementation("com.kakao.sdk:v2-cert:${LATEST_VERSION}") // Module for the Kakao Certification APIs
}
To use the Android SDK, you must install it and then initialize it by including the native app key of your Kakao Developers app in the init()
method. The native app key can be found on the App Management page under [App] > [General] > [App key].
If you are using a class that extends Application
, you can initialize it as shown below.
class GlobalApplication : Application() {
override fun onCreate() {
super.onCreate()
// Other codes for initialization
// Initialize Android SDK
KakaoSdk.init(this, "${YOUR_NATIVE_APP_KEY}")
}
}
You must also set the name of the class that performs Kakao SDK initialization in the application
of AndroidManifest.xml
. In the example above, initialization was done in the GlobalApplication
class, so add the same name in the settings as shown below.
<application
<!-- android:name setting -->
android:name=".GlobalApplication"
<!-- ... -->
>
The modules and main features of Android SDK are below.
Module | Client | Description |
---|---|---|
v2-common |
- | Common module for essential elements Main features: Initialize |
v2-auth |
AuthApiClient |
Module for the authentication and token management through Kakao Login Main features: Check token presence API |
v2-user |
UserApiClient |
Module for the Kakao Login APIs Main features: Kakao Login API, Retrieve user information API |
v2-share |
ShareClient |
Module for the Kakao Talk Share APIs Main features: Send message with custom template API |
v2-talk |
TalkApiClient |
Module for the Kakao Talk Channel, Kakao Talk Social, Kakao Talk Message APIs Main features: Follow Kakao Talk Channel API |
v2-template |
- | Module for message templates |
v2-friend |
PickerClient |
Module for the picker APIs Main features: Retrieve friends through picker API |
v2-navi |
NaviClient |
Module for the Kakao Navi APIs |
v2-cert |
CertApiClient |
Module for the Kakao Certification APIs |
Module | Client | Description |
---|---|---|
v2-common |
- | Common module for essential elements Main features: Initialize |
v2-auth-rx |
AuthApiClient |
Module for the authentication and token management through Kakao Login Main features: Check token presence API |
v2-user-rx |
UserApiClient |
Module for the Kakao Login APIs Main features: Kakao Login API, Retrieve user information API |
v2-share-rx |
ShareClient |
Module for the Kakao Talk Share APIs |
v2-talk-rx |
TalkApiClient |
Module for the Kakao Talk Channel, Kakao Talk Social, Kakao Talk Message APIs Main features: Follow Kakao Talk Channel API |
v2-friend-rx |
PickerClient |
Module for the picker APIs Main features: Retrieve friends through picker API |
Some modules in the Kakao SDK are dependent on another module. Each subordinate module is automatically added together.