[위치기반프로젝트4] Koltin UI

Boknami·2023년 4월 5일

프로젝트_LBS

목록 보기
4/6
post-thumbnail

🚩 목표 UI

첫 화면인 로그인 UI를 생성하는 것이 이번 주의 목표였다.
카카오, 네이버, 구글에 대한 로그인 API를 어플에 적용시켜 사용자들이 로그인을 할 때 선택권을 주고 싶었다.

UI를 만드는 것은 그렇게까지 큰 문제는 아니었다. constraint layout을 사용하고 이미지 4개를 적절히 배치만 시켜줬으면 되니 말이다. 문제는 각 회사들의 API를 끌어오는 과정이 너무나 어려웠다.

😥 고난과 해결

카카오 같은 경우는 이미 예전에 한 번 해보았기에 우선 구글 로그인부터 하려고 했다.

[1] 구글 파이어베이스 공식문서가 업데이트가 안 되어있다..

구글 로그인을 위해서 파이어베이스와 연동하고 라이브러리를 끌어오고..등 많은 작업을 했다.
그런데 그 작업들을 하는 사이에 애초에 공식 사이트에서 맞지 않는 부분이 너무 많았다.
현재 작업하는 안드로이드 스튜디오와 버전이 많이 상이한 내용이 있었다. 예를 들면 gradle 부분이다.

라고 나와있고 나의 안드로이드 스튜디오는

프로젝트 수준의 gradle 파일이 2개고 bulid.gradle에는 플러그인 정보만 있고,
settings.gradle 파일에는

pluginManagement {
    repositories {
        google()
        mavenCentral()
        gradlePluginPortal()
    }
}
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
    }
}
rootProject.name = "logintest"
include ':app'

이런 정보들이 있었다. 코틀린으로 라이브러리를 추가하는 일, 뷰 바인딩을 설정하는 일을 제외하고 gradle에 대해 자세히 알지 못하는 상태에서 이런 것들을 보니 정말로 미칠 노릇이었다. 공식 문서에서 업데이트를 꾸준하게 안해주면 이런 부분에 대해서는 헤매고 찾게 되는 것 같다.

아무튼 코드는 불사하고 아예 SDK추가가 안되서 여러 서칭을 하고 찾아본 결과
프로젝트 수준에 build.gradle에 플러그인 위에 classpath를 추가하는 방법이 있는 것을 알게 되었다.

buildscript {
    dependencies {
        classpath 'com.google.gms:google-services:4.3.15'
    }
}
plugins {
    id 'com.android.application' version '7.4.2' apply false
    id 'com.android.library' version '7.4.2' apply false
    id 'org.jetbrains.kotlin.android' version '1.8.0' apply false
}

[2] default_web_client_id 붉은 색

여러 연동들을 해고 나서 공식 문서에서 가져온 코드에서 유일하게 default_web_client_id가 붉은색으로 나타나며 인식이 안되었다.

검색을 해보니 이런 경우를 겪는 사람들이 꽤 많았다.

해결 1 : google-services.json

대부분 사람들이 google-services.json을 app폴더에 넣으면 된다고 했는데 애시당초 app폴더에 넣어 놓은 나는 또 갈피를 못 잡고 헤매게 되었다.

해결 2 : google-services.json

dependencies부분의 classpath버전을 낮춰서 사용하기도 종종 볼 수 있었다. 내가 4.3.10을 사용했고 해당 버전에 이러한 이슈들이 많았기 때문에 4.3.8버전으로 낮추어 사용하는 방법으로 해결하신 분들도 많았다. 하지만 이 역시 나의 경우 해결할 수 없었다.

해결 3 : build > rebuild

새로 추가하거나 한 내용들이 적용되지 않았을 수도 있으니 리빌드를 하고 실행해보라는 조언도 많았다. 나에겐 도움이 되지 않았다.

해결 4 : 처음부터 다시.

결국 아무리 찾고 헤매도 모르겠어서 아예 처음부터 다시 만들었다. 구글 콘솔로 들어가 원래 것을 삭제하고 처음부터 차근 차근 진행했다. 혹시나 싶어서 필요없을 것 같이 보였던 라이브러리들고 추가하고 classpaht버전도 4.3.10이 아닌 4.3.15를 사용하고 돌려보니 되었다..

어떤 글에서 보았는데(너무 많은 글들을 봐서 기억이 안난다..)

이 경로 (app > build > generated > res > google-services > debug)가 생겨났을 시에 완벽하게 해결된 것 같았다.
google-services.json가 인식되면서 해당 파일을 만들어주는 것 같았다.


[3] 액티비티 전환 불가

결국 구글 로그인을 넘어가고 네이버 로그인부터 하자는 심정으로 네이버 로그인을 시작했다.
네이버 로그인도 조금 헤매긴 했으나 한국 사이트고 공식문서가 잘 정리되어 있어서 만들 수 있었다.
아무튼 다 만들고 새 액티비티를 만들고 로그인 성공 시 intent와 startActivity로 새 액티비티로 넘어가려는데 계속 오류가 났다. 그냥 앱이 튕기는 현상, 캐시충돌? 같은 현상이 계속 나타났다.

너무나도 이해를 할 수가 없었다. 액티비티명이 이상한 것도 아니고 다른 블로거분들과 코드도 같은데 이상하게 나는 액티비티 전환이 되지 않았다. 물론 내가 무슨 잘못을 했거나 무지했던 부분이 있겠지만 이것만큼은 해결할 수가 없었다. 이런 경우 대부분의 경우 메니페스트에 activity를 선언 안했다는 내용이 있었는데 이미 선언이 잘 되어 있었다. 혹시나 이름에 대문자를 안 넣어서? 이 전에 넣었던 액티비티가 완벽하게 삭제되지 않아서 충돌? 여러가지 경우를 생각하고 도전해봤지만 해결하지 못했다. 내일 팀원회의에서 물어보고 해결할 예정이다..

0개의 댓글