안드로이드 프로젝트 디렉터리 이름에 쉼표가 있으면?

잘 실행되던 안드로이드 프로젝트를 복사하여 새 프로젝트를 만들어서 이를 실행하였는데 처음 보는 오류가 발생하였다. 디렉터리(폴더) 이름에 쉼표가 있으면 어떤 문제가 생기는지 알아본다.

안드로이드 프로젝트 복사본 만들기

지난 두어 달 앱 개발 공부를 하면서 이런저런 오류를 많이 경험하였다. 이번에는 또 다른 오류가 등장했다.

프로젝트 코드에 중요한 변화가 생길 시점이 되면 나는 습관적으로 복사본을 만들어서 새 프로젝트를 시작하곤 한다. 이게 최선인지는 아직 잘 모르겠지만, 한 가지 좋은 점은 예전 어떤 시점의 코드가 늘 보관되어 있으므로 안심이 된다는 것이다. 뭔가 잘 생각나지 않으면 과거의 코드를 다시 보면 궁금증이 바로 해소된다.

프로젝트 복사본을 만들기 위해서 일단 원본 프로젝트가 안드로이드 스튜디오에 열려 있는 상태에서 다음과 같이 한다:

Build > Clean Project

이렇게 하면 빌드 과정에 생성됐던 파일들이 모두 삭제되어 알짜배기만 남으므로 용량이 확 줄어들어 든다. 그런 다음에 파일 브라우저에서 디렉터리(폴더)를 통째로 복사하여 다른 이름으로 바꾼다.

이제 안드로이드 스튜디오에서 새로 만든 프로젝트를 열어서 계속 작업하면 된다. 그런데 나는 그렇게 하기보다는 프로젝트 이름까지 바꾸는 걸 좋아한다. 프로젝트 최상위 디렉터리의 이름이 바뀌어도 프로젝트의 이름은 바뀌지 않는다. 프로젝트의 이름을 바꾸면 기기에 앱을 설치했을 때 이 앱의 과거 버전과 현재 버전이 기기에서 공존할 수 있어서 좋다.

따라서 내가 프로젝트의 복사본을 만든다는 것은 곧 프로젝트의 이름을 바꾸는 것으로 귀결된다.

안드로이드 프로젝트 이름 바꾸기

제일 중요한 파일은 app/build.gradle.kts 이다. 앱의 이름을 편의상 Abc Def 라고 하겠다. 다음과 같이 바꾼다.

applicationId = "com.example.abcdef"
namespace = "com.example.abcdef"

그 외에 settings.gradle.kts, app/src/main/res/values/strings.xml 을 고친다. app/src/main/AndroidManifest.xml 파일도 한 번 들여다 본다.

지금까지 고친 파일들은 안드로이드 스튜디오가 아니라 다른 편집기에서 고쳐도 된다 (나는 곧잘 그렇게 한다).

이제 안드로이드 스튜디오를 실행하여 방금 새로 만든 프로젝트를 연다. 아직 중요한 수정을 더 해야 한다.

안드로이드 스튜디오에서 패키지명을 새로 정한 이름에 맞게 변경해야 한다 (안드로이드 스튜디오에서 패키지하고 부르는 것이 파일 브라우저에서는 디렉터리로 보인다).

왼쪽 Project 탭 > 드롭다운 메뉴: Project 선택 > app/src/main/java/com/example/ 밑에 이전 프로젝트의 이름이 보인다. 그걸 새 이름으로 바꾸기 위해서: 우클릭 -> Refactor -> Rename : 창에 새 이름을 넣는다(abcdef). Search in comments and strings & Search for text occurrences 모두 선택 & Project Files -> Refactor.
바뀐 경로를 표시해 보면, 결국 아래와 같이 된다.
app/src/main/java/com/example/abcdef

app:kspDebugKotlin FAILED 오류 발생!

프로젝트 이름을 여러 번 바꿔 보아서 이제는 기록해 놓은 걸 안 보고도 할 수 있다. 그런데 뜻밖에도 앱을 실행하자 처음 보는 오류가 발생하였다.

> Task :app:kspDebugKotlin FAILED
Wrong plugin option format: null, should be plugin:<pluginId>:<optionName>=<value>

지난번의 오류와는 또 달랐다.
https://hhtt.kr/102886

아무리 해도 해결되지 않는 오류

이 오류를 해결하기 위해서 여러 가지 시도를 했다. 그동안 프로젝트 이름을 여러 번 변경하면서 해 놓았던 기록을 꼼꼼히 보면서 이런저런 노력을 했다. 어제저녁 세 시간 날렸다. 안드로이드 스튜디오를 업그레이드해서 그런가?

그러다가 문득 깨달음이 왔다.

‘원본이 있잖아. 지금 나를 괴롭히고 있는 프로젝트는 단지 복사본일 뿐이다. 원본을 실행해 보자.’

원본은 잘만 실행되었다. 프로젝트 이름을 바꾸는 과정에서 뭔가 문제가 있었다는 뜻이다.

자고 일어나서 다시 무슨 문제 때문인지 알아내기 위해서 노력했다. 잘 실행되는 원본이 있으니 큰 문제라고는 할 수 없다. 그러나 나는 답을 알아내야겠다. 그렇게 오늘 다시 세 시간을 날렸다.

그러다가 문득 프로젝트 디렉터리를 보았다. 프로젝트 최상위 디렉터리의 이름이 이런 식으로 되어 있었다:

basic-android-kotlin-compose-training-aaaaa-app4(bbbbb,room,retrofit)

혹시 쉼표가 문제를 일으켰나? 다른 프로젝트 최상위 디렉터리 이름을 다 살펴보았다. 이 프로젝트를 빼면 디렉터리 이름에 쉼표가 있는 프로젝트는 하나도 없었다. 결국 프로젝트 이름을 다음과 같이 바꾸었다.

basic-android-kotlin-compose-training-aaaaa-app4(bbbbb-room-retrofit)

앱을 실행하니 잘 실행되었다.

쉼표 때문에 6시간 날렸다!

프로젝트 최상위 디렉터리 이름에 쉼표가 있었지만, 앱을 실행하기 전에는 아무 문제가 없는 듯이 보였다. 아마도 컴파일러, 또는 ksp 가 쉼표를 처리하는 데 문제가 있나 보다.

내 PC 운영체제와 안드로이드 스튜디오 정보는 다음과 같다.

* 운영체제: ubuntu 20.04
* 안드로이드 스튜디오 버전:
Android Studio Hedgehog | 2023.1.1
Build #AI-231.9392.1.2311.11076708, built on November 10, 2023

앞으로 디렉터리 이름에 기호나 특수문자를 쓸 때는 정신 바짝 차려야겠다.

“쉼표! 네가 뺏어간 내 피 같은 6시간 어떡할 거냐?!”

Leave a Comment