[Android Studio] Kakao Android SDK를 Android Studio에서 Import 후 사용하기
2017. 6. 22. 18:58ㆍMobile/Xamarin
여기서는 Android Studio를 통해 Kakao Android SDK를 불러와서 구현하는 방법을 소개합니다. 보통 이 정도는 Kakao API 문서를 보고 구현할 수 있어야 하지만..., Kakao API문서만 보고 구현하다보면 수많은 오류와 이슈에 직면하기 때문에 따로 정리하였습니다.
이 글을 작성할 때 개발환경은 다음과 같습니다.
- Android Studio 2.3.3
- Minimum SDK : API 16(Android 4.0 IceCreamSandwich)
- Windows 10 Pro 64비트
- Compile Sdk Version : API 26: Android 8.0 (O)
- Build Tools Version : 26.0.0
- Min Sdk Version : 14
- Target Sdk Version : 21
- Kako Android SDK Version : 1.4.0
진행 순서는 다음과 같습니다.
- 먼저 https://developers.kakao.com/에서 App을 등록합니다.
- Kakao Android Library를 다운로드 후 압축을 풉니다. (https://developers.kakao.com/docs/android)
- Android Studio를 실행하고 새 프로젝트를 생성합니다.
- Platform은 Phone and Tablet 선택
- Minimum SDK는 API 14 이상
- Kakao Android Library를 Import 합니다.
- File - New - Import Module
- 다운로드한 Kakao Android Library 경로 입력
- 자동으로 로드되는 모든 모듈 선택
- File - New - Import Module
- 프로젝트 루트에 존재하는 build.gradle를 열고 allprojects 부분을 다음과 같이 수정합니다.
allprojects { repositories { jcenter() mavenCentral() maven { url 'http://devrepo.kakao.com:8088/nexus/content/groups/public/' } } }
- 프로젝트 루트의 gradle.properties를 열고 다음 라인을 추가합니다.
KAKAO_SDK_GROUP=com.kakao.sdk KAKAO_SDK_VERSION=1.0.51
- Module의 build.gradle (App폴더에 존재하는 build.gradle)을 열고 다음을 수정합니다.
(dependencies의 최하단에 KAKAO_SDK 추가)dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:26.+' testCompile 'junit:junit:4.12' compile group: project.KAKAO_SDK_GROUP, name: 'kakaolink', version: project.KAKAO_SDK_VERSION }
- res/values/strings.xml 파일을 열고 다음 3개의 라인을 추가합니다.
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">Aar.Kakao</string> <!-- 하단의 '앱키'는 App등록 시 발급받은 '네이티브 앱 키'로 대체 --> <string name="kakao_app_key">앱키</string> <!-- 하단의 '앱키'는 App등록 시 발급받은 '네이티브 앱 키'로 대체 (kakao + 앱키 형태로 작성) --> <string name="kakao_scheme">kakao앱키</string> <string name="kakaolink_host">kakaolink</string> </resources>
- AndroidManifest.xml을 열고 다음과 같이 2개 라인을 추가합니다.
- <intent-filter> 태그 하위에 다음 라인 추가
<data android:scheme="@string/kakao_scheme" android:host="@string/kakaolink_host" />
- application 태그가 끝나기 전에 다음 라인 추가
<meta-data android:name="com.kakao.sdk.AppKey" android:value="@string/kakao_app_key"/>
- 완성된 전체 AndroidMenifest.xml은 다음과 같습니다.
<?xml version="1.0" encoding="utf-8"?> <manifest package="com.droidappkakao" xmlns:android="http://schemas.android.com/apk/res/android"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <-- Spalsh Activity없이 Main Activity하나로 구성할 경우 --> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> <intent-filter> <!-- 주의: Kakako 설정은 항상 LAUNCHER가 포함된 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="@string/kakao_scheme" android:host="@string/kakaolink_host" /> </intent-filter> </activity> <meta-data android:name="com.kakao.sdk.AppKey" android:value="@string/kakao_app_key"/> </application> </manifest>
Splash Activity를 따로 구성할 경우 아래와 같은 구조로 작성하실 수 있습니다. LAUNCHER와 Kakao설정은 다른 Intent-filter로 분리해야 합니다. 그렇지 않으면 앱아이콘이 사라지는 문제가 발생합니다.
<?xml version="1.0" encoding="utf-8"?> <manifest package="com.droidappkakao" xmlns:android="http://schemas.android.com/apk/res/android"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <-- Spalsh Activity를 사용할 경우 XML구조 --> <activity android:name=".SplashActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <activity android:name=".MainActivity"> <!-- 주의: Kakako 설정은 항상 LAUNCHER가 포함된 Intent-filter와 분리해 주세요. 그렇지 않으면 앱 아이콘이 사라지는 현상이 발생합니다. --> <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="@string/kakao_scheme" android:host="@string/kakaolink_host" /> </intent-filter> </activity> <meta-data android:name="com.kakao.sdk.AppKey" android:value="@string/kakao_app_key"/> </application> </manifest>
- <intent-filter> 태그 하위에 다음 라인 추가
- 이제 Activity에서 Kakao SDK를 호출하시면 됩니다. 여기서는 카카오링크를 실행하는 버튼을 추가해보도록 하겠습니다.
res/layout/activity_main.xml을 열고 다음과 같이 버튼을 추가합니다.
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.droidappkakao.MainActivity"> <Button android:id="@+id/btnKakaoLink" android:text="Run KakaoLink" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent"/> </android.support.constraint.ConstraintLayout>
- 이제 MainActivity.java를 열고 Kakao Link API를 사용해봅시다. API에 대한 상세한 내용은 개발가이드를 참고해주세요.
package com.droidappkakao; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import com.kakao.KakaoLink; import com.kakao.KakaoParameterException; import com.kakao.KakaoTalkLinkMessageBuilder; public class MainActivity extends AppCompatActivity { private KakaoLink kakaoLink; private KakaoTalkLinkMessageBuilder kakaoTalkLinkMessageBuilder; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); try { kakaoLink = KakaoLink.getKakaoLink(this); kakaoTalkLinkMessageBuilder = kakaoLink.createKakaoTalkLinkMessageBuilder(); } catch (KakaoParameterException e) { Log.e("error", e.getMessage()); } Button button = (Button) findViewById(R.id.btnKakaoLink); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { try { Button btnSender = (Button)view; kakaoTalkLinkMessageBuilder.addText("TEST"); kakaoLink.sendMessage(kakaoTalkLinkMessageBuilder.build(), btnSender.getContext()); } catch (KakaoParameterException e) { Log.e("error", e.getMessage()); } } }); } }
- 위 앱을 실행하신 후 버튼을 클릭하면 카카오톡으로 연결되는 것을 보실 수 있습니다.
'Mobile > Xamarin' 카테고리의 다른 글
[Xamarin] Xamarin을 위한 .NET Standard Library (0) | 2017.09.13 |
---|---|
[Xamarin] Xamarin.Forms 공용코드를 .NET Standard Library로 작성하기 (0) | 2017.09.11 |
[Xamarin.Android] Binding Java Library (0) | 2017.06.22 |
[Xamarin.Forms] CustomRenderer 제작 시 참고사항 (0) | 2017.06.10 |
[SQLite.NET] Xamarin에서 SQLite사용하기 (0) | 2017.05.21 |