2 minute read

저번주까지는 빌드에 성공한 aosp를 삼성 기기에 플래싱 해보려고 노력을 해봤지만 내가 아는 지식 선에서는 불가능하였다. 그래서 삼성 기기에 aosp를 올리려면 실제 안드로이드 펌웨어에 대한 지식과 펌웨어 제작 툴 같은 것이 필요할 것 같고 그게 아니라면 aosp를 기기에 플래싱하기 위해서는 구글 픽셀폰이나 넥서스폰이 필요할 것으로 생각된다.

하지만 지금 당장에 해당 기기들은 구할 수가 없으니 일단은 빌드한 이미지를 emulator에 올려볼 것이다.


1. 안드로이드 스튜디오 설치

6.PNG

먼저 그냥 aosp가 설치된 상태에서 emulator라는 명령어를 치면 아무것도 뜨지 않는다.

7.PNG

왜냐하면 avd(android virtual device)가 아무것도 없기 때문이다. 따라서 avd를 다운받으려면 안드로이드 스튜디오를 설치하면서 같이 설치할 수 밖에 없다.

그래서 linux용 안드로이드 스튜디오를 다운받아보겠다.

8.PNG

먼저 리눅스에서 android 스튜디오를 다운받는다.

9.PNG

그리고 압축을 풀어서 내용물을 desktop 경로에 넣어준다.

10.PNG

그리고 해당 폴더로 가서 terminal을 열고 bin에 들어가면 위와 같이 studio.sh라는 파일이 존재한다. 해당 파일을 실행하면 android studio가 실행된다.

11.PNG

그리고 설치를 진행해준다.


2. Android Virtual Device(AVD) install

12.PNG

설치가 끝나면 위와 같이 more actions에서 virtual device manager를 선택해준다.

13.PNG

그리고 create device를 눌러준다.

14.PNG

우리가 빌드한 이미지는 aosp taimen이다 해당 이미지는 pixel 2 XL을 타겟으로 한 이미지이기 때문에 pixel 2 xl을 선택해준다.

15.PNG

그리고 recommended에서 안드로이드 10버전인 Q를 다운로드 받아준다.

16.PNG

그리고 위와 같이 설치를 진행해준다.

17.PNG

그리고 emulator를 실행시켜보면 안된다고 뜬다. 찾아보니 이는 가상화머신에서는 안드로이드 emulator를 쓸 수 없기 때문이라고 한다. 하지만 우리는 android studio의 emulator를 쓰는 것이 아니기 때문에 일단 여기까지 하고 다시 terminal로 돌아간다.


3. Emulator 실행

18.PNG

다시 프로젝트 폴더로 돌아와서 우리가 빌드한 aosp_taimen-userdebug를 lunch해준다.

19.PNG

그리고 emulator -list-avds를 검색해보면 우리가 설치한 avd가 잡히는 것을 볼 수 있다.

이후 emulator 명령어로 실행을 해보니

20.PNG

똑같이 검은색 화면이 뜨는 걸 확인할 수 있었다. 아직은 emulator 명령어를 치더라도 이전과 바뀐 게 없으니 아직은 당연한 결과이다.


4. 빌드한 이미지 적용 및 환경변수 설정

21.PNG

avd를 설치하고 나면 위 폴더가 생기는데 여기서 .img 파일을 검색해보면 위 그림과 같이 나오는 것을 볼 수 있다. 이 .img 파일들은 우리가 빌드한 project 폴더내에도 존재한다. 따라서 해당 파일들을 위 폴더로 복사할 것이다.

22.PNG

위와 같이 cp명령어를 이용하여 우리가 빌드한 이미지를 avd system_images 폴더내의 이미지경로에 복사해준다.

23.PNG

그리고 환경변수를 다음과 같이 설정해준다. 그 후 다시 에뮬레이터를 실행해보았는데

24.PNG

똑같이 아무일도 일어나지 않았다. 그래서 다시 열심히 검색을 해보았는데 빌드한 이미지가 emulator 용이 아니라서 그럴 수도 있다는 정보를 찾았다.

30.PNG

그래서 위 그림과 같이 여러가지 타겟을 빌드해본 뒤 에뮬레이터용 타겟을 찾을 수 있었다.


5. 빌드 타겟 변경 후 재빌드 및 1~4.과정 반복

빌드 타겟을 변경하기 위하여 다시 빌드 전으로 되돌아갔다.

25.PNG

그 후 python 버전을 변경해주었다. 3.6 -> 2.7

26.PNG

그리고 swap file의 용량을 기존 12G에서 16G까지 늘려주었다. 12G로 하니 중간에 메모리 오류가 자꾸 발생해서 그냥 늘려주었다.

27.PNG

또한 java heap 사이즈도 8GB로 늘려주었다. 이것 역시 오류를 잡기 위해서 실행하였다.

29.PNG

그리고 lunch 명령어를 실행하여 이번에는 aosp_arm-eng를 타겟으로 설정하였다. 그리고 m -j4 명령어로 빌드하였다. 4시간 정도가 걸려서 빌드가 끝나고 위의 1~4과정들을 따라서 해보았더니 결과적으로 에뮬레이터에 이미지를 올리는 것 까지는 성공하였다.

5.PNG

3.PNG

4.PNG

28.PNG

우리가 빌드한 이미지의 이름과 비교해보면 정확히 일치하는 것을 확인할 수 있다.

우리가 빌드한 taimen-userdebug 타겟은 진짜 기기에 올릴 때 올릴 수 있도록 하기 위한 빌드인것 같고 에뮬레이터에 올리고 싶다면 aosp_arm-eng 타겟을 설정하는 게 맞을 것 같다.

그리고 이번에 성공한거는 막 어떤 일련의 과정을 따라서 하다가 성공한 것이 아닌 어쩌다 보니 우연하게 성공한 거라고 조금 더 성공과정에 대한 체계적인 연구가 필요할 것 같다.


참고한 사이트

안드로이드 에뮬레이터 환경에서 OS 이미지 적용을 위한 안드로이드 OS 풀 소스 빌드 방법 :: Programist’s Laboratory

AOSP x86_64 Emulator not visible in Android Studio - Stack Overflow

Codewalker: AOSP build and run emulator(Android Virtual Device)

안드로이드 스튜디오 AVD ERROR Emulator: emulator: ERROR: x86 emulation currently requires hardware acceleration! Emulator: Process finished with exit code 1 : 네이버 블로그

Nano Blog - 오병우 :: AMD 라이젠 CPU에서 AVD (Android Virtual Device) 사용 방법

AndroidStudio 4294967201 오류 ::: AMD CPU를 사용하는 시스템에서 AVD 사용을 위해 android emulator 설치할 때

https://docs.microsoft.com/en-us/answers/questions/414550/can-i-run-android-emulator-in-vmware-workstation-v.html

AVD 실행 안되는 현상 . Your CPU does not support VT-x

https://codechacha.com/ko/run-android-emulator/

Categories:

Updated: