본문 바로가기
SW 개발/Android

[실패 사례] WSL(Windows Subsystem for Linux) 에서 Android 빌드하기

by Kibua20 2020. 7. 3.

Windows 10에서 Windows Subsystem Linux(WSL) 를 20년 5월 버전에 배포하였다.  윈도우 10에서 리눅스 커널이 그대로 올라가고, 리눅스의 실행 파일(elf)가 실행할 수 있다.   USB와 같은 직력화 디바이스 컨트롤은 아직은 불가능하지만, GPU 접근이 가능하고 X-sever를 사용하면 GUI Application 도 실행 가능하다. 이에 WSL 환경에서 Android 소스를 빌드가 가능한지 확인하였다.

 

결과적으로 WSL에서 Android 소스 다운로드는 가능하나, 빌드는 "case sensitive file system"을 지원하지 않아 불가능하다. 

 

1. WSL 가상 메모리 늘리기

WSL에서는  linux command 로  가상 메모리 설정은 불가능하고, wslconfig를 사용해서 설정해야 한다. 

방법: WSL 2.0 Global configuration (.wslconfig) 을 통한 성능 향상

2. build tool 설치

WSL에서 apt를 사용해서 Android build tool 설치가 가능하다. 

방법:   Android 10 (Q-OS) 소스 다운로드 

 

$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip libncurses5

 

3. git 설정

$ git config --global user.name kibua20
$ git config --global user.email "kibua20@gmail.com"
$ git config --global core.editor vim
$ git config --list

4. Android 소스 다운로드 하기

Android 소스 다운로드 가능하다.  repo 다운로드 중이 일부 TLS 에러 발생은 하고 원인을 확인할 필요는 있다. 

방법:

Android 소스 최적화 (100GB에서 65GB로 줄이기)  

Android 10 (Q-OS) 소스 다운로드

 

repo init -u https://android.googlesource.com/platform/manifest -b android-10.0.0_r36 -c --depth=1 --no-tags ;
repo sync -j4 -q -c --no-tags;
repo start android-10.0.0_r36 --all

5. 빌드 확인 - 에러 발생

Android 빌드는 시작하면 아래와 같이 " Case-insensitive filesystems not supported" 에러가 발생한다.  WSL에서 EXT4 포맷을 인식하지 못해서 NTFS로 포맷한 상태이다. WSL에서 File system은 기본적으로 NTFS 를 기반으로 개발된 것으로 추정된다. 

향후 해결 방안을 찾으면 추후 업데이트 예정이다.

 

방법:  Ubuntu에서 Android 10 빌드하기

 

. build/envsetup.sh
lunch aosp_taimen-userdebug
export _JAVA_OPTIONS=-Xmx4g​
m

10:07:39 ************************************************************
10:07:39 You are building on a case-insensitive filesystem.
10:07:39 Please move your source tree to a case-sensitive filesystem.
10:07:39 ************************************************************
10:07:39 Case-insensitive filesystems not supported

 

 

7/6) Twitter '댬'님께서 공유해준 정보 - WSL에서도 대소문자 구분 가능 (추후 확인 예정)

https://devblogs.microsoft.com/commandline/per-directory-case-sensitivity-and-wsl/

https://devblogs.microsoft.com/commandline/improved-per-directory-case-sensitivity-support-in-wsl/

 

관련 글

[모바일/Android] - repo 실행 시 DeprecationWarning: imp module 대처법

[모바일/Android] - Android 소스 최적화 (100GB에서 65GB로 줄이기)

[모바일/Android] - Android 11 (R-OS) Emulator에 설치하기

[모바일/Android] - Android 11 기능 소개

[모바일/Android] - Ubuntu에서 Android 10 빌드하기

[모바일/Android] - Android Studio 4.0 사용하기

[모바일/Android] - Android 10 (Q-OS) 소스 다운로드

[개발환경] - WSL 2.0 설치 방법 및 기능 확인

[개발환경] - Ubuntu 에서 SW 개발 Tool 설치




댓글2

  • Favicon of https://one-it.tistory.com BlogIcon 아이톤 2020.09.24 13:24 신고

    wsl에서 안드로이드 빌드는 불가능한거였군요.. 감사합니다.
    답글

    • Favicon of https://kibua20.tistory.com BlogIcon Kibua20 2020.09.24 13:57 신고

      wsl2 에서 대소 문자 구분은 가능하다가 해서 해봤지만 안되더라구요. 대소문자 구분이 되면 안드로이드 빌드는 가능할 것 같아요. 제가 방법을 못 찾는듯해요. 저는 우분투 쓰고 있어 찾다 말았어요...
      wsl 초기 버전에서 시도한 사람이 있어요. 성공여부는 몰라요