기본이 되는 글은
https://drive.google.com/file/d/1ZYCrJ1WRtq2ioTIsNnPo3M0jQJgezzSM/view
하지만 저 글대로 해도 안되는 경우가 많아 적어놓는다.
개발환경
유니티 : 2020.3.9f1
안드로이드 : 4.2.2
기본적인 세팅은 카카오 개발자 사이트에서 알려주는대로 세팅을 하면 되는 것이고 안드로이드 스튜디오에서 로그인에 필요한 파일 2개를 만들어서 하나는 앱 초기화시에 하나는 로그인시에 쓰면 된다.
초기화용 (코틀린) - GlobalApplication.kt
package 패키지이름
import android.app.Application
import com.kakao.sdk.common.KakaoSdk
import com.kakao.sdk.common.util.Utility
class GlobalApplication :Application() {
override fun onCreate() {
super.onCreate()
KakaoSdk.init(this, "9a38f4281b...")
val keyHash = Utility.getKeyHash(this)
println("키 해쉬 : $keyHash")
}
}
로그인용 (코틀린) - UKakao.kt
package 패키지 이름
import com.kakao.sdk.auth.model.OAuthToken
import com.kakao.sdk.user.UserApiClient
import com.unity3d.player.UnityPlayer
class UKakao {
fun KakaoLogin() {
// 로그인 공통 callback 구성
val callback: (OAuthToken?, Throwable?) -> Unit = { token, error ->
if (error != null) {
//Log.e(TAG, "로그인 실패", error)
println("로그인 실패 : $error")
}
else if (token != null) {
//Log.i(TAG, "로그인 성공 ${token.accessToken}")
println("로그인 성공 ${token.accessToken}")
}
}
// 카카오톡이 설치되어 있으면 카카오톡으로 로그인, 아니면 카카오계정으로 로그인
if (UserApiClient.instance.isKakaoTalkLoginAvailable(UnityPlayer.currentActivity)) {
UserApiClient.instance.loginWithKakaoTalk(UnityPlayer.currentActivity, callback = callback)
} else {
UserApiClient.instance.loginWithKakaoAccount(UnityPlayer.currentActivity, callback = callback)
}
}
}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN-->
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="패키지이름"
xmlns:tools="http://schemas.android.com/tools">
<!-- 인터넷 사용 권한 설정-->
<uses-permission android:name="android.permission.INTERNET" />
<application android:name="패키지이름.GlobalApplication">
<activity android:name="com.unity3d.player.UnityPlayerActivity"
android:theme="@style/UnityThemeSelector"
android:usesCleartextTraffic="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!--
<intent-filter>
<data android:host="oauth" android:scheme="kakao9a38f4..." />
</intent-filter>
-->
<meta-data android:name="com.kakao.sdk.AppKey" android:value="9a38f4..." />
<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
</activity>
</application>
</manifest>
baseProjectTemplate.gradle
// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN
allprojects {
buildscript {
repositories {**ARTIFACTORYREPOSITORY**
google()
jcenter()
maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/' }
}
dependencies {
// If you are changing the Android Gradle Plugin version, make sure it is compatible with the Gradle version preinstalled with Unity
// See which Gradle version is preinstalled with Unity here https://docs.unity3d.com/Manual/android-gradle-overview.html
// See official Gradle and Android Gradle Plugin compatibility table here https://developer.android.com/studio/releases/gradle-plugin#updating-gradle
// To specify a custom Gradle version in Unity, go do "Preferences > External Tools", uncheck "Gradle Installed with Unity (recommended)" and specify a path to a custom Gradle version
classpath 'com.android.tools.build:gradle:3.6.0'
**BUILD_SCRIPT_DEPS**
}
}
repositories {**ARTIFACTORYREPOSITORY**
google()
jcenter()
flatDir {
dirs "${project(':unityLibrary').projectDir}/libs"
}
maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/' }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
mainTemplate.gradle
// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN
apply plugin: 'com.android.library'
**APPLY_PLUGINS**
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "com.kakao.sdk:v2-user:2.8.4" // 카카오 로그인
implementation "com.kakao.sdk:v2-talk:2.8.4" // 친구, 메시지(카카오톡)
implementation "com.kakao.sdk:v2-story:2.8.4" // 카카오스토리
implementation "com.kakao.sdk:v2-link:2.8.4" // 메시지(카카오링크)
implementation "com.kakao.sdk:v2-navi:2.8.4" // 카카오내비
**DEPS**}
android {
compileSdkVersion **APIVERSION**
buildToolsVersion '**BUILDTOOLS**'
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
defaultConfig {
minSdkVersion **MINSDKVERSION**
targetSdkVersion **TARGETSDKVERSION**
ndk {
abiFilters **ABIFILTERS**
}
versionCode **VERSIONCODE**
versionName '**VERSIONNAME**'
consumerProguardFiles 'proguard-unity.txt'**USER_PROGUARD**
}
lintOptions {
abortOnError false
}
aaptOptions {
noCompress = ['.ress', '.resource', '.obb'] + unityStreamingAssets.tokenize(', ')
ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~"
}**PACKAGING_OPTIONS**
}**REPOSITORIES**
**IL_CPP_BUILD_SETUP**
**SOURCE_BUILD_SETUP**
**EXTERNAL_SOURCES**
gradleTemplate.properties
org.gradle.jvmargs=-Xmx**JVM_HEAP_SIZE**M
org.gradle.parallel=true
android.enableR8=**MINIFY_WITH_R_EIGHT**
android.useAndroidX = true
unityStreamingAssets=.unity3d**STREAMING_ASSETS**
**ADDITIONAL_PROPERTIES**
로그인처리 KakaoLogin.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class KakaoLogin : MonoBehaviour
{
private AndroidJavaObject ajo;
void Start()
{
ajo = new AndroidJavaObject( "패키지이름.UKakao" );
}
public void login()
{
ajo.Call( "KakaoLogin" );
}
}
위의 소스들은 잘 되는 소스를 적어놓은 것이고 아래글이 참고한 블로그와 내가 해결한 차이를 비교한 글이다.
문제 1
유니티에서 Edit - Project Settings - Player - Publishing Settings - Build 에서 파일 생성시 글 대로만 하면 AndroidX 관련 에러가 발생한다.
그래서 하나 더 생성해서 밑에 단계에서 수정해야 한다.
위의 글과 연결되는 부분인데 참고 글에서는 mainTemplate.gradle에 카카오 로그인 관련 모듈 설치후 AndroidX 관련 에러를 수정하기 위해 gradleTemplate.properties 에 android.useAndroidX = true 라는 문장을 추가한다.
문제 2
의외로 이 문제를 설명한 블로그나 참고자료를 찾기 힘들었는데 기본적으로 생성한 AndroidManifest.xml 에서 제일 상단에 있는 패키지 이름을 유니티 패키지 이름과 같게 수정해주어야 한다.
문제 3
AndroidManifest.xml에서 oauth 관련 에러는 다음과 같이 com.kakao.sdk.AppKey 방식으로 수정 할 수 있다.
문제 4
카카오 로그인시 "관리자 설정 이슈 (KOE004)" 관련 오류 발생시 카카오 개발자 사이트에서 [내 애플리케이션] > [카카오 로그인] 에서 로그인 기능 활성화
참고로 안드로이드 버전 관련 에러는 아래 글을 참고하면 된다.
https://es1015.tistory.com/418
[Android Studio] Installed Build Tools Revision 31.0.0 is corrupted 에러 해결 방법
안드로이드 스튜디오 Installed Build Tools Revision 31.0.0 is corrupted 오류 해결 방법 새 컴퓨터에 안드로이드 스튜디오를 설치하고 빌드를 진행하니 아래와 같은 오류가 발생했다. 오류 Could not determine..
es1015.tistory.com
'개발환경 구축 > 플랫폼 및 서비스관련' 카테고리의 다른 글
유니티에서 페이스북 로그인 (안드로이드) (0) | 2023.04.22 |
---|