나의 SW개발 이야기/안드로이드

V8 안드로이드 버전 빌드

Piano2sky 2017. 3. 27. 16:06
V8 안드로이드 버전 빌드


  1. 소스를 받아온다 (gclient)
          1.1 기본 소스를 받는다.
               Git과 Depot tool을 설치하고 GIT을 이용해 받는다.
               > gclient
               V8소스를 받을 위치로 이동한 뒤

               

               
               -> 여기까지는 기본적인 소스만 받게 됨. Android(+종속되어 있는 NDK 등 추가파일) && 5.5 버전을 받기 위해서 추가적인 작업이 필요함

               현재 Branch는 Master이기 때문에 최신버전(5.9)를 빌드하게 됨
               따라서 Branch를 5.5로 변경

               > git reset --hard (필요하면)
               > git checkout -B 5.5-lkgr
              
         
          1.2 Dependency가 있는 소스를 추가로 받는다. 
               .gclient에 target os 설정한다. ['android'] 
               (.gclient 파일은 hidden인데다가 gclient 설치한 위치에 있다. V8소스를 받을 위치에서 gclient 설치 위치로 이동해야한다. 주의할 것)

               > ls -la (la 옵션을 주면 hidden file까지 다 표시됨. .gclient 파일은 hidden)

Depot_tool를 설치한 메인 폴더 v8 (현재는 v8build로 수정한 상태)에서 .gclient 파일을 찾을 수 있음
vi를 이용해 target_os = ['android'] 추가 

               

       
               
               > gclient sync (이제 android의 dependency있는 소스까지 다 끌어온다.)


  1. Build 파일을 설정한다( GN Build)
          2.1 GYP/GN을 통해 OS별 Project파일을 Generate한다
 
          2.2 GN 으로 Project 파일 생성 ( https://github.com/v8/v8/wiki/Building-with-GN ) 
            
               

 
v8gen.py에 client.v8.ports를 사용하여 실제 빌드 가능한 옵션들을 찾음.
V8 Android Arm - builder 선택

> tools/dev/v8gen.py -b "V8 Android Arm - builder" -m client.v8.ports yoo



         3. Build 파일을 설정한다 GYP (Generate Your Project by Google, under BSD License)
               
               > python gypfiles/gyp_v8.py -Dv8_use_external_startup_data=0 -Dicu_use_data_file_flag=0 -Dv8_enable_i18n_support=0
               > python gypfiles/gyp_v8.py -Dv8_use_external_startup_data=0 -Dicu_use_data_file_flag=0 -Dv8_enable_i18n_support=0 -Dtarget_arch=arm64 -Dv8_target_arch=arm64
          

icu 관련 파일은 주석처리하여 막는다

  1. 빌드한다




  1. .gclient에 target os 설정하기

  1. gclient sync
          소스 받아오기
          dependency 소스도 같이 받아오기


  1. gypfiles/gyp_v8
          makefile, sln 등 각종 build 파일을 생성시켜주는 python 파일 
          빌드 옵션을 포함하거나 제거할 수 있음

<명령프롬프트>  
python gypfiles/gyp_v8.py -Dv8_use_external_startup_data=0 -Dicu_use_data_file_flag=0 -Dv8_enable_i18n_support=0 


  1. make arm.release  -> 이렇게 하면 1G짜리 binrary가 나온다~ ㅠㅠ 이유가 뭘까. toolchain