Android 스튜디오 업데이트 일대기

park_sujeong·2023년 4월 20일
0

Android

목록 보기
12/13
post-thumbnail

2021년쯤에 Adnroid Studio를 설치했다. 그때 버전이 Arctic Fox였다. 지금까지 Android Studio 업데이트를 한번도 안해서 오늘 이 글을 쓰기전까지도 나의 소중한 IDE는 2021년 버전 그대로다. 그래 Arctic Fox다. 그 당시엔 Bumblebee가 막 나올때라 안정화 버전인 Arctic Fox를 다운받았었다. 그리고 그 당시에 Gradle 버전과 Android Gradle Plugin 버전이 호환이 잘안되서 세팅하는데 고생했던 기억에 업데이트를 차일피일 미루고 오늘에까지 왔다.

오늘 큰 마음 먹고 Android Studio를 업데이트하기로 했다. 매일 경고창 뜨는 것도 지겹고 버전이 많이 나와서 해야되겠다 싶었다.

우선 Android Studio를 업그레이드 하기전에 나에게 찾아올 재앙을 생각해봤다.


Android Studio 버전 업데이트 전 고려사항

  • Java Version
  • Gradle Version
  • Android Gradle Plugin Version

우선적으로 기존의 Android Studio 버전에서 진행하던 프로젝트들도 계속 작업을 해야해서 버전 생각밖에 안들었다. 호환이 안맞으면 어떡하지, 빌드 에러나면 어떡하지, 다시 프로젝트 생성해야된다면 난 끝이야, 이런 생각으로 한거같다. 그만큼 소프트웨어나 IDE나 프레임워크의 버전을 업그레이드 할 때는 무섭다.






업데이트 댕 쉽ㄴ..ㅔ...?


업데이트하는 방법은 간단했다. Android Developers에서 새로운 버전을 다운로드한 후 기존에 설치된 Android Studio을 대체하면 되었다. 그리고 이제 대망의 프로젝트 빌드 순간이었다. 그리고 어느순간부터 Build창에 시뻘건 글씨가 매우 많이 뜨는 걸 보면서 '아..큰일났네' 싶었다. 몇년만에 업데이트하는 거라 당연히 버전이 안맞을거라고는 생각했었는데 뭐 이상한거부터 다 안되는 거 같았다. 하나 해결하면 그 다음 에러가 터지고 또 그 다음 에러가 터지는 연쇄에러였다.


우선 내가 약 2년동안 사용한 환경이다.

기존 환경 설정

  • Android Studio : Arctic Fox
  • Gradle version : 7.2
  • Android Gradle Plugin : 7.0
  • Java : openJDK 11.0.15

Android Gradle Plugin 업데이트를 추천드립니다.

Android Studio를 업데이트하고 Android Gradle Plugin 버전을 8.0으로 업그레이드하라는 경고 메세지가 떴다. 그래서 '오케이, 이게 호환이 맞나보군?'하면서 바로 Android Gradle Plugin 버전을 8.0으로 업그레이드했다. 그리고 경고 메세지가 사라지고 이제는 Gradle version 에러가 떴다. Android Gradle Plugin 8.0이 필요한 최소 Gradle 버전은 8.0이라는 거다. ㅇㅋ 그까짓꺼 업그레이드 해준다. 그렇게 나는 Android Gradle Plugin과 Gradle 버전을 둘 다 8.0으로 업그레이드 후 다시 빌드를 진행했다.

그리고 또 에러가 나왔다. Android Gradle Plugin(AGP) 8.0은 Java 최소 버전이 17인 것이다.ㅋㅋㅋㅋㅋㅋㅋㅋㅋ? 17? Java 버전 17로 바로 올리는건 라이브러리 호환성이라든가 뭐 이것저것 캥기는게 많았다. 그래서 쭈굴쭈굴해진채로 AGP downgrade를 하기위해 Gradle과 Android Gradle Plugin의 최소 버전을 찾아봤다.


Android Studio & Android Gradle Plugin

Android Studio 버전필요한 플러그인 버전
Giraffe 2022.3.13.2~8.1
Flamingo 2022.2.13.2~8.0
Electric Eel 2022.1.13.2~7.4
Dolphin 2021.3.13.2~7.3
Chipmunk 2021.2.13.2~7.2
Bumblebee 2021.1.13.2~7.1
Arctic Fox 2020.3.13.1~7.0

Android Gradle Plugin & Gradle

플러그인 버전최소 Gradle 버전최소 Java 버전
8.18.017
8.08.017
7.47.511
7.37.411
7.27.3.311
7.17.211
7.07.011
4.2.0+6.7.1-

이제 내가 버전을 어떻게 맞춰야할지 대강 보였다.

  1. 첫번째로 Flamingo를 사용하니 Android Gradle Plugin(AGP)는 3.2 ~ 8.0 버전을 사용해야 한다.
    -> ㅇㅋ. 아무거나 쓰면 되겠군

  2. 두번째로 내가 사용하는 Java version인 11을 쭉 써야하니 나에게 Gradle 선택지는 7.0 ~ 7.5다.
    -> 그 중에서 제일 최신인 7.5를 채택한다.

  3. 마지막으로 플러그인도 7.4로 하면 되겠다.

이런 과정을 통해서 내 Android Studio의 환경 설정은 아래처럼 변했다.

변경된 환경 설정

  • Android Studio : Flamingo
  • Gradle version : 7.5
  • Android Gradle Plugin : 7.4
  • Java : openJDK 11.0.15



classpath는 앞으로 사용할 수 없을것이야

이제 끝났나? 해치웠나? 하면서 빌드를 했다. 그리고 또 에러가 뿅하고 튀어나왔다. 자꾸 어디서 그렇게 기어나오는지 모르겠다.

이번 에러는 Plugin with id 'com.google.gms.google-services' not found.다. 이때까지 잘 썼는데 갑자기 못찾는다고 에러가 뜨면 당연히 변경된 환경부터 의심하기 시작한다. build.gradle에서 에러가 났고 마침 내가 gradle 버전을 변경했으니 당연히 관련된 내용을 조사했다. 그래서 찾아보니 Android Gradle Plugin을 업데이트해서 발생한 에러 같았다.

Android Developers의 출시 노트를 참고하면 Gradle 7.0부터는 buildscript 블록 내부에서 classpath를 사용하는 것이 더 이상 권장하지 않고 settings.gradle 파일에서 외부 라이브러리나 플러그인과 같은 의존성을 지정하는 것이 권장된다고 한다. 사용은 된다고 했는데 왜 나는 안되나싶어서 캐시 날리고 clean build -> rebuild 이 방식으로 계속 테스트 해봤는데 어느 순간 됐다. 뭐지..?

기존에 사용했던 방식은 프로젝트 단의 build.gradle에서 buildScript {}에서 dependencies 블록에서 선언하는 방식이었는데 plugins에 선언하면 된다. com.google.gms.google-services를 예시로 확인해보자!


7.x 이전

buildscript {
  ...
  dependencies {
    classpath 'com.google.gms:google-services:4.3.10'
  }
}

7.x 이후 build.gradle(project)

plugins {
    id 'com.google.gms.google-services' version '4.3.10' apply false
}

이후 버전에서는 콜론(:)을 사용하는 대신 .이나 -을 사용해야 한다.


그렇다면, app단의 build.gradle에서는 어떻게 설정해야할까?

7.x 이후 build.gradle(app)

plugins {
    ...
    id 'com.google.gms.google-services'
}

똑같이 plugins에 선언해주면 된다. 단지 version 부분은 빼고 넣는다.





업데이트 완료 후기

이게 뭐라고 이렇게 에러를 많이 만났나 생각도 들고, 이때까지 업데이트 안한게 뻘줌해질 정도로 업데이트 방식은 간단하다. 단지 딸려오는 에러가 많아서 힘들었는데 그건 내가 Gradle과 플러그인에 대한 지식이 부족해서 그런거같다. Java 버전을 안바꿔서 에러가 이 정도로 그친거같기도 하다..?

profile
Android Developer

2개의 댓글

comment-user-thumbnail
2023년 5월 11일

참고잘했습니다 감사합니다!

1개의 답글