OLD | NEW |
| (Empty) |
1 # Prerequisites | |
2 * a Linux/Mac workstation | |
3 * v8 r12178 (on Google Code) or later | |
4 * an Android emulator or device with matching USB cable | |
5 * make sure [building with GYP](http://code.google.com/p/v8-wiki/wiki/Building
WithGYP) works | |
6 | |
7 | |
8 # Get the code | |
9 | |
10 * Use the instructions from https://code.google.com/p/v8-wiki/wiki/UsingGit to
get the code | |
11 * Once you need to add the android dependencies: | |
12 ``` | |
13 v8$ echo "target_os = ['android']" >> ../.gclient && gclient sync --nohooks | |
14 ``` | |
15 * The sync will take a while the first time as it downloads the Android NDK to
v8/third\_party | |
16 * If you want to use a different NDK, you need to set the gyp variable android
\_ndk\_root | |
17 | |
18 | |
19 # Get the Android SDK | |
20 * tested version: `r15` | |
21 * download the SDK from http://developer.android.com/sdk/index.html | |
22 * extract it | |
23 * install the "Platform tools" using the SDK manager that you can start by run
ning `tools/android` | |
24 * now you have a `platform_tools/adb` binary which will be used later; put it
in your `PATH` or remember where it is | |
25 | |
26 | |
27 # Set up your device | |
28 * Enable USB debugging (Gingerbread: Settings > Applications > Development > U
SB debugging; Ice Cream Sandwich: Settings > Developer Options > USB debugging) | |
29 * connect your device to your workstation | |
30 * make sure `adb devices` shows it; you may have to edit `udev` rules to give
yourself proper permissions | |
31 * run `adb shell` to get an ssh-like shell on the device. In that shell, do: | |
32 ``` | |
33 cd /data/local/tmp | |
34 mkdir v8 | |
35 cd v8 | |
36 ``` | |
37 | |
38 | |
39 # Push stuff onto the device | |
40 * make sure your device is connected | |
41 * from your workstation's shell: | |
42 ``` | |
43 adb push /file/you/want/to/push /data/local/tmp/v8/ | |
44 ``` | |
45 | |
46 | |
47 # Compile V8 for Android | |
48 Currently two architectures (`android_arm` and `android_ia32`) are supported, ea
ch in `debug` or `release` mode. The following steps work equally well for both
ARM and ia32, on either the emulator or real devices. | |
49 * compile: | |
50 ``` | |
51 make android_arm.release -j16 | |
52 ``` | |
53 * push the resulting binary to the device: | |
54 ``` | |
55 adb push out/android_arm.release/d8 /data/local/tmp/v8/d8 | |
56 ``` | |
57 * the most comfortable way to run it is from your workstation's shell as a one
-off command (rather than starting an interactive shell session on the device),
that way you can use pipes or whatever to process the output as necessary: | |
58 ``` | |
59 adb shell /data/local/tmp/v8/d8 <parameters> | |
60 ``` | |
61 * warning: when you cancel such an "adb shell whatever" command using Ctrl+C,
the process on the phone will sometimes keep running. | |
62 * Alternatively, use the `.check` suffix to automatically push test binaries a
nd test cases onto the device and run them. | |
63 ``` | |
64 make android_arm.release.check | |
65 ``` | |
66 | |
67 | |
68 # Profile | |
69 * compile a binary, push it to the device, keep a copy of it on the host | |
70 ``` | |
71 make android_arm.release -j16 | |
72 adb push out/android_arm.release/d8 /data/local/tmp/v8/d8-version.under.test | |
73 cp out/android_arm.release/d8 ./d8-version.under.test | |
74 ``` | |
75 * get a profiling log and copy it to the host: | |
76 ``` | |
77 adb shell /data/local/tmp/v8/d8-version.under.test benchmark.js --prof | |
78 adb pull /data/local/tmp/v8/v8.log ./ | |
79 ``` | |
80 * open `v8.log` in your favorite editor and edit the first line to match the f
ull path of the `d8-version.under.test` binary on your workstation (instead of t
he `/data/local/tmp/v8/` path it had on the device) | |
81 * run the tick processor with the host's `d8` and an appropriate `nm` binary: | |
82 ``` | |
83 cp out/ia32.release/d8 ./d8 # only required once | |
84 tools/linux-tick-processor --nm=$ANDROID_NDK_ROOT/toolchain/bin/arm-linux-androi
deabi-nm | |
85 ``` | |
86 | |
87 # Compile SpiderMonkey for Lollipop | |
88 ``` | |
89 cd firefox/js/src | |
90 autoconf2.13 | |
91 ./configure \ | |
92 --target=arm-linux-androideabi \ | |
93 --with-android-ndk=$ANDROID_NDK_ROOT \ | |
94 --with-android-version=21 \ | |
95 --without-intl-api \ | |
96 --disable-tests \ | |
97 --enable-android-libstdcxx \ | |
98 --enable-pie | |
99 make | |
100 adb push -p js/src/shell/js /data/local/tmp/js | |
101 ``` | |
OLD | NEW |