kakao 개발자 등록이 선행되어야한다.
====================================================
OpenSSL 다운로드 및 설치 ( https://code.google.com/archive/p/openssl-for-windows/downloads )
적당히 C:\OpenSSL 이런 간단한 경로에 압축해제(=설치)
조금 이따가 hash key를 얻기 위한 첫 단계임
====================================================
jdk 설치(이 단계는 설명 생략 검색해서 알아서 하자)
환경변수 세팅
unity는 자기가 알아서 찾는다. 하지만 android studio는 그렇지 않다.
정확한 세팅이 필요하다.
첫 번째.
제어판 > 시스템 > (좌측상측)고급 시스템 설정 > (아래쪽)환경변수(N)..
새로만들기 버튼이 두개 있는데 아래쪽 클릭
변수이름 : JAVA_HOME
변수값 : C:\Program Files\Java\jdk1.8.0_101 (버전 별로 실제 이름이 다름)
생성 돼었는지 확인후
같은 항목에 있는 path 변수 편집 버튼 클릭( 절대 위쪽 path를 말하는 것이 아님)
아래처럼 %JAVA_HOME%\bin 을 새로만들어 줌
참고로 java home 변수에 bin 까지 포함 시키면 안드로이드 스튜디오에서 에러남
======================================================
kakao gamecenter 사이트에서 앱 등록 ( 무료일때만 developers
사이트 )

앱 만들어져 있었다... 앱 이름을 클릭하면 관리할 수 있는 탭들이 좌측에 생성

네이티브 키 가 앱키가 되는것이고
레스트 api 키는 레스트 api를 사용하는 데 필요한 키
어드민 키는 기술레벨에서는 쓸일이 없다.

안드로이드 해쉬키를 구해와서 이곳에 등록해 줘야 한다.
자 이제 안드로이드 해쉬키를 구하는 방법을 기록한다.
안드로이드 스튜디오를 설치했기 때문에 있을것이다. 설치 안했으면 없겠지(설치하자)
C:\Users\bki(사용자계정명)\.android 에 debug.keystore 라는 파일이 존재
C:\OpenSSL\bin\openssl 에 오픈ssl 존재
윈도우키+r을 누르고 cmd 실행
keytool -exportcert -alias androiddebugkey -keystore C:\Users\bki\.android\debug.keystore | C:\OpenSSL\bin\openssl sha1 -binary | C:\OpenSSL\bin\openssl base64
을 자기 상황에 맞게 입력후 실행하면 해시 키값이 구해진다.
이것이 원형이라면 원형
keytool -exportcert -alias androiddebugkey -keystore <debug.keystore위치> | <openssl 위치> sha1 -binary | <openssl 위치> base64
1qVRV0cIZ7PiMadowqcSjQ+h2TE=
그러나 이것은 debug 용
우리는 release용 또한 필요하다.
참고 사이트 : https://developer.android.com/studio/publish/app-signing.html
릴리즈용 key는 미리 마련되어 있지 않기 때문에 생성해줘야 한다.
안드로이드 스튜디어로 간다. 위쪽에 배치된 메뉴에서 build를 선택
generate signed apk를 선택한다.
미리 만들어 둔 것이 있다면 choose existing 이겠지만 그렇지 않기에 create new
이정도로 입력후 확인 다음다음 빌드까지 해보자
일단 이 단계에서 빌드를 안해도 키는 생성 되는것으로 판단된다.
릴리즈 키 해시 구해보자
C:\Users\bki\.android 에 TestReleaseKey 파일 존재
C:\OpenSSL\bin\openssl 에 오픈ssl 존재
윈도우키+r을 누르고 cmd 실행
keytool -exportcert -alias TestReleaseKey -keystore C:\Users\bki\.android\TestReleaseKey | C:\OpenSSL\bin\openssl sha1 -binary | C:\OpenSSL\bin\openssl base64
역시 자신의 상황에 맞춰서 파일 경로는 바꿔줘야 한다.
r0lIUCzrORgTiRiRgvuhyO/k4S4=
이 키는 다음에 릴리즈 할때 사용하자
======================================================
EclipsProject에 kakao sdk import
우선 프로젝트 설정을 바꿔줌
General > Workspace >
Text file encoding 값을 UTF-8로
변경합니다
project를 import 해봅시다
위에서 보이는 것 처럼 현재 kakao sdk 와 unity project 둘다 import 된 상태이다.
kakao sdk는 library로 설정 해줘야 한다.(되어 있음)
이렇게 체크가 되어있다. 되어있어도 어디서 설정하는지 알고 넘어가자
반대로 주체가 되어 타 library를 이용하고 싶다면
import 된 것들 중에서 is library 체크된 것들이 뜨는 듯 하고 선택하여 추가 되면
이후에는 안뜨는걸 보니 똑띠네!

이렇게 추가된 모습을 볼 수 있음
이제 프로젝트에 앱키를 등록해보자
여기서의 앱키는 네이티브 앱키를 말 하는 것이며 카카오 사이트에서 앱 생성시 발급된다
프로젝트의 res/ values 에 kakao_string.xml 을 만들어보자
아래와 같이 기록한다.
<resources>
<string name="kakao_app_key">a3212fd7d16a9f7edd239a69441f3446</string>
<string name="kakao_scheme">kakaoa3212fd7d16a9f7edd239a69441f3446</string>
<string name="kakaolink_host">kakaolink</string>
<string name="kakaostory_host">kakaostory</string>
</resources>
AndroidManifest.xml 파일을 찾아 아래와 같은 위치에 같은 내용을 추가해 넣는다.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application>
<activity
...
android:name=".SampleLoginActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
...
<meta-data
android:name="com.kakao.sdk.AppKey"
android:value="@string/kakao_app_key" />
</application>
넣는 과정에서
필요한 activity 가 생긴다.
샘플을 보고 src와 gen 의 필요한 activity를 카피하고 오류 안나게 수정해준다.
( 카피작업들
- 카톡 샘플의 src / com.kakao.game.sample.common 아래 activity들을 복붙.
- 카톡 샘플의 gen / com.kakao.game.sample 아래 R.java를 복붙.
- android:debuggable="false" 이부분이 문제가 되면 그냥 지운다.
- import com.android.volley 같은 안드로이드 sdk 오류의 경우, 샘플의 lib 폴더에 있는
volley.jar 파일을 복사해 온다.
<<<<<여기부터 수정>>>>>
로그인 기능 등과 같이 카톡 sdk 기능을 이용하기 위해서는
<사용자 관리 설정>을 해주어야 한다.
이걸 안하면 아무리 구현해봐야 로그인 시도시 사용자 관리 설정을 해야 한다고 오류창만 나온다.
상단 중간쯤, 카카오 계정 로그인 하고 작은 글씨로 <사용자관리> 가 있다. 클릭!!!
중간에, 사용 OFF 로 된것을 On으로 바꾼다.
그리고 개인정보 관리 항목 정도만 수집목적을 입력하고 다른건 일단 사용 안함
하고 수정을 완료한다.
======================================================
unity 프로젝트에 카톡 sdk 연동과 로그인
이제부터는 새로운 프로젝트를 만들고 카톡 로그인을 적용시켜 보겠다.
unity project를 만든다( 카톡 개발자 사이트에 등록한 패키지 명으로)
이름은 카톡 개발자 사이트에 등록한 앱과 이름이 같도록 한다. 패키지명까지 같도록 한다. com.회사명.프로젝트명 (사실 꼭 같아야 하는지는 모르겠다, 안드로이드에서 프로젝트 생성시 회사명 앞에 사용자 명도 들어가는데 말이다.)
build settings : 안드로이드, 번들 com.회사명.프로젝트명 --> export
이름은 카톡 개발자 사이트에 등록한 앱과 이름이 같도록 한다. 패키지명까지 같도록 한다. com.회사명.프로젝트명 (사실 꼭 같아야 하는지는 모르겠다, 안드로이드에서 프로젝트 생성시 회사명 앞에 사용자 명도 들어가는데 말이다.)
export 된 폴더를 안드로이드 스튜디오를 이용해서 import project 한다.
Gradle 설정
아래 이미지에서 선택된 것이 그래이들이다.
allprojects 안에
allprojects {
repositories {
jcenter()
mavenCentral()
maven { url 'http://devrepo.kakao.com:8088/nexus/content/groups/public/' }
}
}
이렇게 수정해 준다.
keytool -exportcert -alias androiddebugkey -keystore <debug_keystore_path> -storepass android -keypass android | openssl sha1 -binary | openssl base64
다른 gradle에서 가져다 쓰기 위해 다음을 /gradle.properties 에 정의한다.
원문의 경우 버전이 1.0.40이었지만 현재 최신 버전은 50이다. 각자 현재의 최신 버전을 적어주도록 하자.
KAKAO_SDK_GROUP=com.kakao.sdk
KAKAO_SDK_VERSION=1.1.20
=====================================================
// 코드레벨 android 버전 문제 4.4.2가 안되는 문제
java.lang.NoSuchMethodError: android.content.res.Resources.getDrawable
package com.kakao.auth.authorization.authcode;
이 패키지의 KakaoWebViewDialog 스크립트의
private void createCrossImage() 메소드 내용을
Drawable crossDrawable = getContext().getResources().getDrawable(id, null);//"bk" 수정
에서
Drawable crossDrawable;
if(android.os.Build.VERSION.SDK_INT >= 21) {
crossDrawable = getContext().getResources().getDrawable(id, null);
}
else {
crossDrawable = getContext().getResources().getDrawable(id);
}
로 변경한다.
=====================================================
// 코드레벨 android 버전 문제 4.4.2가 안되는 문제
java.lang.UnsatisfiedLinkError: Native method not found: com.unity3d.player.UnityPlayer.UnitySendMessage:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V