나의 SW개발 이야기/안드로이드
V8 안드로이드 버전 빌드
Piano2sky
2017. 3. 27. 16:06
V8 안드로이드 버전 빌드
- 소스를 받아온다 (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있는 소스까지 다 끌어온다.)
- 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 관련 파일은 주석처리하여 막는다
- 빌드한다
- .gclient에 target os 설정하기
- gclient sync
소스 받아오기
dependency 소스도 같이 받아오기
- 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
- make arm.release -> 이렇게 하면 1G짜리 binrary가 나온다~ ㅠㅠ 이유가 뭘까. toolchain