!!! Windows 환경에서 설치된 Android Studio 기준으로 작성한 내용입니다 !!!!

한글 Windows 환경에서 Android Studio 설치 후 기본 설정으로 사용시 종종 문제가 생기는 경우들이 발생합니다.

저같은 경우는 주로 Windows 내에서 사용자명을 한글로 사용하다보니 발생하는 이슈가 많았습니다.

cmd 창에서 set 명령을 쳐보면 아래와 같은 항목들이 보입니다.

HOMEPATH=\Users\한글유저명
...
TEMP=C:\Users\한글유저명\AppData\Local\Temp
TMP=C:\Users\한글유저명\AppData\Local\Temp
...
USERPROFILE=C:\Users\한글유저명

 

Windows 내 Android Studio에서는 저 값들을 기본으로 잡혀있는 것들이 있습니다.

대표적으로 설정파일들이 그러하지요.

사용 중에 또 언제 어떤 문제가 발생할지 몰라 먼저 바꿔봅니다.

gradle이나 Android SDK 경로는 바꿔 보았는데요.

(https://nobase-dev.tistory.com/273)

정작 Android Studio 설정 파일들은 아직 못바꾸고 있었네요.

 

c:\Program Files\Android\Android Studio\bin\idea.properties

 

위 파일이 해답을 가지고 있었습니다.

#---------------------------------------------------------------------
# Uncomment this option if you want to customize path to IDE config folder. Make sure you're using forward slashes.
#---------------------------------------------------------------------
# idea.config.path=${user.home}/.AndroidStudio/config
idea.config.path=d:/.AndroidStudio3.5/config

#---------------------------------------------------------------------
# Uncomment this option if you want to customize path to IDE system folder. Make sure you're using forward slashes.
#---------------------------------------------------------------------
# idea.system.path=${user.home}/.AndroidStudio/system
idea.system.path=d:/.AndroidStudio3.5/system

idea.config.path=d:/.AndroidStudio3.5/config

idea.system.path=d:/.AndroidStudio3.5/system

위 2 라인이 제가 추가한 부분입니다.

 

원래는 user.home으로 잡혀 있던 경로들입니다. (주석# 으로 처리되어 있으면 기본으로 먹힙니다.)

c:\Users\한글유저명\.AndroidStudio3.5\

위 경로가 기본으로 설정되었던 경로이고 하위에 config와 system 폴더가 자리잡고 있지요.

 

이제 두 폴더를 idea.properties에 설정한 경로로 복사하면 됩니다.

그리고 Android Studio를 재실행하면 끝!! 입니다~

 

다만 Android Studio 업데이트시는 idea.properties가 새로 설치되는 것으로 보이네요.

업데이트 후 재설정이 필요할 것으로 보입니다....

 

!!! Android 개발에 있어 많고 많은 빌드 에러 중 Windows 환경에서 종종 발생하는 에러에 대한 내용입니다 !!!!

Android Studio에서 Test Coverage를 돌릴 경우 발생하는 에러에 대해서 얘기해보려 합니다.

 

먼저 작성한 코드의 테스트 코드를 작성 후 Run 으로 동작이 잘 됨을 확인한 상태였습니다.

그 후 Run ... with Coverage 동작시 아래와 같은 에러가 발생하더군요.

java.lang.reflect.InvocationTargetException
FATAL ERROR in native method: processing of -javaagent failed
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:386)
	at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:401)

 

구글링을 해보아도 딱히 짐작이 가는 부분이 없습니다.

더 찾아보다보니 아래와 같은 내용이 있더군요.

https://youtrack.jetbrains.com/issue/IDEABKL-5941

안타깝게도 러시아 사용자도 유사한 증상을 겪은 것으로 보이죠.

Temp 경로에 러시아 문자가 들어가면서 발생한 것으로 보고 있고요.

저는 한글 유저명이 문제가 된 것으로 추정할 수 있었습니다.

다시 Android Studio 로 돌아가서 Run 윈도우를 뒤져 실행다시 커맨드를 봅니다.

 

아 제 환경은 gradle 경로도 미리 D 드라이브로 변경해놓은 상태였습니다.

https://nobase-dev.tistory.com/273

원인은 Temp 경로가 Windows 환경에서는 사용자 홈으로 잡혀서 생긴 문제로 보입니다.

https://stackoverflow.com/a/29716813

https://docs.microsoft.com/ko-kr/windows/win32/api/fileapi/nf-fileapi-gettemppatha?redirectedfrom=MSDN#remarks

위 글들을 보면 기본으로 사용자 홈이 잡힌 이유는 아래와 같네요.

  1. Java에서 temp 경로를 Windows 환경에서는 Win32API 인 GetTempPath를 사용함
  2. GetTempPath에서는 아래의 순서로 경로를 지정함.
  3. The path specified by the TMP environment variable.
  4. The path specified by the TEMP environment variable.
  5. The path specified by the USERPROFILE environment variable.
  6. The Windows directory.

아무튼 다시 아래 글을 보아 Android Studio에서도 temp 경로를 수정해봅니다.

https://intellij-support.jetbrains.com/hc/en-us/community/posts/360000020720-IntelliJ-Idea-generate-classpath-jar-files-in-C-Users-User-AppData-Local-Temp-

 

IntelliJ Idea generate classpath.jar files in C:\Users\User\AppData\Local\Temp\

I need change location where IntelliJ Idea generate the classpath.jar files. When I generate a new service, controller or domain file, is generated a new classpath.jar file in C:\Users\User\AppData...

intellij-support.jetbrains.com

Help -> Edit Custom VM Option 에서 아래 문구 추가 후 Android Studio 재시작

(studio64.exe.vmoptions)

# custom Android Studio VM options, see https://developer.android.com/studio/intro/studio-config.html
-Djava.io.tmpdir=d:/temp

 

이제 다시 Run ... with Coverage를 돌려봅니다.

 

오오 이제 잘 나오네요.

한글 Windows에서 개발은 참 다양한 어려움들이 있는 것 같네요. ^^

!!! Android 개발에 있어 많고 많은 빌드 에러 중 Windows 환경에서 종종 발생하는 에러에 대한 내용입니다 !!!!

개인적으로 Android 개발에 있어서 Android Studio에서 Build나 Run 하는 경우가 많았는데요.

주로 툴의 UI 버튼등을 단순히 눌러서 해왔죠.

하지만 Terminal 에서 Build 가 필요할 때도 있지요.

기껏 Terminal 에서 Build 하는 명령어 등을 검색 후 실행했을때 에러가 뜬다면 참 번거럽겠죠.

그 수많은 에러 중 아래의 에러 문구시에 대한 해결책입니다.

C:\Users\?????\.gradle\caches\transforms-1\files-1.1\appcompat-v7-28.0.0.aar\50aa894a55f6ff1ab5e7586893bfabff\res\layout\abc_dialog_title_material.xml: error: file not found.
C:\Users\?????\.gradle\caches\transforms-1\files-1.1\appcompat-v7-28.0.0.aar\50aa894a55f6ff1ab5e7586893bfabff\res\drawable\abc_spinner_textfield_background_material.xml: error: file not found.

> Task :mobile:mergeDebugResources
Error: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details


FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':mobile:mergeDebugResources'.
> Error: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 18s
14 actionable tasks: 6 executed, 8 up-to-date

D:\HelloWorld>

 

어디가 문제일까요?

그냥 느낌적인 느낌으로 눈에 들어오는 부분이 있을 겁니다?????

C:\Users\?????\.gradle\caches\transforms-1\files-1.1\appcompat-v7-28.0.0.aar\50aa894a55f6ff1ab5e7586893bfabff\res\layout\abc_dialog_title_material.xml: error: file not found.

 

gradle 캐시에 외부 라이브러리들을 저장해놓고 빌드시 사용하는 것으로 보이죠.

그 경로에 한글이 들어가서 문제가 발생한 것으로 보이고요.

그럼 왜 굳이 gradle은 캐시 위치를 저리 잡는지에 대한 궁금증이 생깁니다.

https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_environment_variables

gradle docs에서 뒤져보니 이런 문구가 있네요.

GRADLE_USER_HOME

Specifies the Gradle user home directory (which defaults to $USER_HOME/.gradle if not set).

맞습니다.

저는 GRADLE_USER_HOME 을 설정하질 않았었네요.

Android Studio에서는 Setting 에서 설정이 가능해보이네요.

Gradle home 항목이 그걸로 보이는데... 사실 안해봐서 모릅니다;;

일단 저는 Terminal 이나 Windows CMD 창에서 작업을 시작했으니 그 곳에서 설정을 해봅니다.

Windows에서 환경변수를 보는 것이 set이라는 명령어를 사용하네요.

> set
ALLUSERSPROFILE=C:\ProgramData
ANDROID_HOME=d:\Android\sdk\
ANDROID_SDK_HOME=d:\Android\sdk\
APPDATA=C:\Users\유저명\AppData\Roaming
classpath=%classpath%;
...

참고로 GRADLE_USER_HOME 은 안보이네요.

저는 d:\.gradle\ 경로로 지정을 해보겠습니다.

>set GRADLE_USER_HOME=d:\.gradle\
>set
...
GRADLE_USER_HOME=d:\.gradle\
...

이제 되었네요.

다시 Terminal 에서 빌드를 진행해보면 두가지의 경우가 발생할 겁니다.

잘 되거나.. 다른 에러가 발생하겠죠.

Good Luck!!

+) Windows 에서는 보통 시스템 환경변수 설정에서 직접 입력하기도 하지요.

Android Studio 3.5 버전 기준으로 작성했어요

한글 Windows 환경에서 한글 계정으로 개발을 하다보니 종종 USER HOME 문제로 경로가 제대로 인식 안되는 경우들이 생기네요.

그래서 Android Studio에서 Android SDK 및 gradle 경로를 특정 위치로 변경하는 방법에 대해 소개합니다.

Android Studio 메뉴에서 File-Settings... 를 선택합니다.

Appearance & Behavior - System Setting - Android SDK 를 선택합니다.

그리고 Android SDK Location 을 원하는 경로로 지정합니다.

하는 김에 gradle 경로도 바꿔봅니다.

똑같이 Setting에서 Build, Exception, Deployment - Gradle 을 선택합니다.

여기서 Service directory path 에 원하는 경로를 지정합니다.

이제 Android SDK도 다운로드 해보고 gradle sync도 해봅니다.

잘 되면 그걸로 된 겁니다. ^^

1. 아래와 같은 로그가 떨어짐.

ERROR: The specified Gradle distribution 'https://services.gradle.org/distributions/gradle-4.4-all.zip' does not appear to contain a Gradle distribution.

2. Android Gradle plugin 버전 및 사용하려는 gradle 버전 확인

./build.gradle

buildscript { dependencies { classpath 'com.android.tools.build:gradle:3.1.4' } }

.\gradle\wrapper\gradle-wrapper.properties

distributionUrl=https://services.gradle.org/distributions/gradle-4.4-all.zip

3. 버전별 최소 gradle 버전 확인

https://developer.android.com/studio/releases/gradle-plugin#updating-gradle

3 - 1. 최소 gradle 버전에 부합한 경우 맞춰서 수정

build.gradle 이나 gradle-wrapper.properties 파일 내 버전을 한쪽에 맞춰서 수정

4. 최소 gradle 버전에 적합한데도 발생한 경우

예전에 직접 gradle 쪽 초기화를 하고 싶어 직접 gradle 경로에서 파일들을 삭제 하던 중 폴더만 남고 삭제가 안된 경우가 있었음. 그로 인해 gradle 있지만 동작 안하는 것으로 감지한 듯함. 직접 gradle zip 파일을 받아서 해당 경로에 풀어 주고 다시 gradle sync

  • gradle zip 다운로드 : https://services.gradle.org/distributions/gradle-4.4-all.zip

  • gradle 경로 확인 : Android Studio -> File -> Settings -> Build, Execution, Deployment -> Gradle -> Service directory path 확인

  • \.gradle\wrapper\dists\gradle-4.4-all\9br9xq1tocpi6njlyu5op1\gradle-4.4\ 위치에 zip 압축 해제

  • Android Studio에서 다시 sync

+ Recent posts