https://victorygamestudio.tistory.com/37
[유니티] 카카오 로그인 연동 feat. 안드로이드
글을 안 쓴지 꽤 오래됬는데.. 이번에 한 삽질은 유독 날 괴롭혔기 때문에 글을 남기려고 한다. 유니티 카카오 로그인이 짜증나는 이유.카카오에서 유니티에서 바로 사용할 수 있는 플러그인
victorygamestudio.tistory.com
카카오 로그인 연동하면서, 안드로이드 플러그인을 개발했었다. (위 링크에 개발 일지를 적어두었다.)
이때 aar 로 만든 플러그인을 유니티로 넣어서 해결할 수 있었는데.. 문제는 네이버 로그인을 하면서 추가적으로 발생했다.
네이버 로그인 같은 경우는 유니티 22.3.xx 버전 이상으로 업데이트를 해야만 적용할 수 있었는데
22.3.xx 버전부터 gradle 이 업데이트 되면서 로컬에 있는 aar 을 적용할 수가 없어졌다 ㅡㅡ.. 분명히 됬었는데, 안 되어버리는 황당한 상황 속에서 2주의 긴 시간 동안(물론 계속한건 아니고.. 퇴근하고 집에와서 깔짝깔짝)하게 되었다.
해결 과정
- 유니티 버전 업데이트(22.3.xx)
- Custom gradle 추가
- baseProjectTemplate.gradle
- maintemplate.gradle
- settingTemplate.gradle
- gradleTemplate.properties
- baseProjectTemplate.gradle 가 만약 처리되어 있다면 삭제 후 재추가
- 내가 업데이트한 유니티 22.3.27의 경우에는 gradle 7.2 가 설치되어 있음.
- gradle 에 맞는 android gradle plugin 을 불러와야함. 그게 바로 'com.android.application' 부분임.
plugins {
// 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
id 'com.android.application' version '7.1.2' apply false
id 'com.android.library' version '7.1.2' apply false
id 'maven-publish'
**BUILD_SCRIPT_DEPS**
}
task clean(type: Delete) {
delete rootProject.buildDir
}
- settingTemplate.gradle 추가는 무조건 해야함.
- 왜냐하면 유니티 버전 업데이트 되면서, repository 관련된 부분들은 무조건 settingTemplate 에서 관리되고 있기 때문이다.
repositories {
**ARTIFACTORYREPOSITORY**
gradlePluginPortal()
google()
mavenCentral()
}
- gradleTemplate.properties
- android.enableR8=true
- gradle 버전이 올라가면서 R8 이 상관없다고 나오는데.. 일단 gpt 형이 알려준대로 함. ㅋ
만약에 aar 을 추가했을 때 여기까지하면.. aar 문제를 제외한 기본적인 빌드 문제는 해결했다고 봐도 된다. 하지만... aar
을 추가한 경우에는 로컬로 다이렉트로 접근하는게 아니고 로컬 maven 에 올리고 그걸 다시 가져오는 방식으로 처리해야한다.
Execution failed for task ':unityLibrary:bundleReleaseLocalLintAar'.
aar 을 사용할 때 그냥 사용하면 위에 에러가 디질듯이 나온다. 따라서 아래 방법에 무조건 따라라..!!!!!
- baseProjectTemplate.gradle 에 id 'maven-publish' 을 추가한다. 위에 내가 첨부해둔 곳에 같이 적혀있다.
- 이걸 쓰는 이유는 커스텀 플러그인을 로컬 maven 에 올리기 위함이다.
- maintemplate.gradle 에 로컬 maven 에 올리는 코드를 작성한다.
- groupId 와 artifacId, version 은 implement할 때 사용할 이름이다. 설명이 부족한데 이 다음으로 넘어가면 이해할 수 있다.
- 그리고 artifact 에는 내가 로컬 maven 에 올리려고 하는 aar 을 지정한다.
def buildDir = "${project.rootDir}/Library/Bee/Android/Prj/IL2CPP/Gradle/unityLibrary/build"
publishing {
publications {
aar(MavenPublication) {
groupId = 'com.example'
artifactId = 'unity-kakao-login-release'
version = '1.0'
artifact(file('libs/unity-kakao-login-release.aar'))
}
}
repositories {
maven {
url uri("${buildDir}/libs/")
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'], exclude: ['unity-kakao-login-release.aar'])
// 위에서 추가한 로컬 maven 을 아래와 같이 groupid artifactid version 을 통해서 접근한다.
implementation 'com.example:unity-kakao-login-release:1.0@aar'
}
- 그리고 위에 보면 좀 이상한 코드 존재한다.
- implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'], exclude: ['unity-kakao-login-release.aar'])
- 왜 이렇게 적어뒀냐면.. 로컬 maven 에서 가져올 때 무조건 plugins/Android/libs 안으로 생성되게 된다.
- 근데, implementation fileTree 의 경우는 로컬 파일로 읽게 된다.
- 이게 왜 문제냐? 우리가 지금 aar 을 로컬로 읽어서 문제였지 않나? 그래서 힘들게 maven 으로 읽어오고 있는데 얘를 다시 로컬로 읽으면 무슨 소용이냐.
- 간단히 말해서 aar 을 fileTree 를 이용해서 읽으면 안 된다. 그래서 aar 을 제외해준다.
- 그리고 implementation 'com.example:unity-kakao-login-release:1.0@aar' 에 maven 을 통해서 읽어온다. 참 번거롭다.
이러면 aar 을 포함해서 빌드 돌릴 수 있다.
요약
- 유니티 버전이 올라가면서 gradle 도 버전이 같이 올라감.
- gradle 버전 업 되면서 로컬 AAR 을 불러올 수 없음 ( fileTree 등으로). 무조건 maven 등으로 불러와야함.
- aar 을 빌드할 때, 로컬 maven 에 올리고 그걸 다시 가져오는 식으로 처리해야함.
추가..
사실 위에는 구글에서 제공하는 External Dependency Manager 를 이용하여 해결된다... ㅡㅡ;;
그냥 Force Resolve 한방이면.. 별로의 dependency 에 추가하지 않아도 Plugin 에 넣어두면 자동으로 처리함..;;
따라서 External Dependency Manager 를 사용하자!!!!
'유니티' 카테고리의 다른 글
유니티 DllNotFoundException: Unable to load DLL 'FirebaseCppApp 해결 (0) | 2024.12.27 |
---|---|
[유니티] 카카오 로그인 연동 feat. 안드로이드 (1) | 2024.10.27 |
[유니티] 구글 IAP 업데이트 후 비정상 종료 (0) | 2023.10.11 |
[유니티3D] Mixamo 움직이는 애니메이션 대응 (0) | 2023.10.08 |
[유니티3D] 3D 애니메이션 방향이 이상할 때 (0) | 2023.09.15 |