OLD | NEW |
1 # Introduction | 1 # Working remotely with Android |
2 | 2 |
3 When you call `$SRC/build/android/run_tests.py` or `$SRC/build/android/run_instr
umentation_tests.py` it assumes an android device is attached to the local host. | 3 [TOC] |
4 | |
5 If you want to work remotely from your laptop with an android device attached to
it, while keeping an ssh connection to a remote desktop machine where you have
your build environment setup, you will have to use one of the two alternatives l
isted below. | |
6 | 4 |
7 | 5 |
8 # Option 1: SSHFS - Mounting the out/Debug directory | 6 ## Introduction |
| 7 |
| 8 When you call /build/android/run_tests.py or |
| 9 /build/android/run_instrumentation_tests.py it assumes an android device |
| 10 is attached to the local host. |
| 11 |
| 12 TODO: these scripts do not exist. |
| 13 |
| 14 If you want to work remotely from your laptop with an android device attached to |
| 15 it, while keeping an ssh connection to a remote desktop machine where you have |
| 16 your build environment setup, you will have to use one of the two alternatives |
| 17 listed below. |
| 18 |
| 19 ## Option 1: SSHFS - Mounting the out/Debug directory |
9 | 20 |
10 ### On your remote host machine | 21 ### On your remote host machine |
11 (_you can open a regular ssh to your host_) | |
12 ``` | |
13 # build it | |
14 desktop$ cd $SRC; | |
15 desktop$ . build/android/envsetup.sh | |
16 desktop$ build/gyp_chromium -DOS=android | |
17 desktop$ ninja -C out/Debug | |
18 ``` | |
19 (see also AndroidBuildInstructions). | |
20 | 22 |
| 23 You can open a regular ssh to your host. |
| 24 |
| 25 # build it |
| 26 desktop$ cd $SRC; |
| 27 desktop$ . build/android/envsetup.sh |
| 28 desktop$ build/gyp_chromium -DOS=android |
| 29 desktop$ ninja -C out/Debug |
| 30 |
| 31 See also |
| 32 [Android Build Instructions](https://www.chromium.org/developers/how-tos/android
-build-instructions). |
21 | 33 |
22 ### On your laptop | 34 ### On your laptop |
23 (_you have to have an android device attached to it_) | 35 |
24 ``` | 36 You have to have an android device attached to it. |
| 37 |
| 38 ```shell |
25 # Install sshfs | 39 # Install sshfs |
| 40 |
26 laptop$ sudo apt-get install sshfs | 41 laptop$ sudo apt-get install sshfs |
27 | 42 |
28 # Mount the chrome source from your remote host machine into your local laptop. | 43 # Mount the chrome source from your remote host machine into your local laptop. |
| 44 |
29 laptop$ mkdir ~/chrome_sshfs | 45 laptop$ mkdir ~/chrome_sshfs |
30 laptop$ sshfs your.host.machine:/usr/local/code/chrome/src ./chrome_sshfs | 46 laptop$ sshfs your.host.machine:/usr/local/code/chrome/src ./chrome_sshfs |
31 | 47 |
32 # Setup enviroment. | 48 # Setup enviroment. |
| 49 |
33 laptop$ cd chrome_sshfs | 50 laptop$ cd chrome_sshfs |
34 laptop$ . build/android/envsetup.sh | 51 laptop$ . build/android/envsetup.sh |
35 laptop$ adb devices | 52 laptop$ adb devices |
36 laptop$ adb root | 53 laptop$ adb root |
37 | 54 |
38 # Install APK (which was previously built in the host machine). | 55 # Install APK (which was previously built in the host machine). |
| 56 |
39 laptop$ python build/android/adb_install_apk.py --apk ContentShell.apk --apk_pac
kage org.chromium.content_shell | 57 laptop$ python build/android/adb_install_apk.py --apk ContentShell.apk --apk_pac
kage org.chromium.content_shell |
40 | 58 |
41 # Run tests. | 59 # Run tests. |
| 60 |
42 laptop$ python build/android/run_instrumentation_tests.py -I --test-apk ContentS
hellTest -vvv | 61 laptop$ python build/android/run_instrumentation_tests.py -I --test-apk ContentS
hellTest -vvv |
43 ``` | 62 ``` |
44 | 63 |
45 **This is assuming you have the exact same linux version on your host machine an
d in your laptop.** | 64 *** note |
| 65 This is assuming you have the exact same linux version on your host machine and |
| 66 in your laptop. |
| 67 *** |
46 | 68 |
47 But if you have different versions, lets say, ubuntu lucid on your laptop, and t
he newer ubuntu precise on your host machine, some binaries compiled on the host
will not work on your laptop. | 69 But if you have different versions, lets say, ubuntu lucid on your laptop, and t
he newer ubuntu precise on your host machine, some binaries compiled on the host
will not work on your laptop. |
48 In this case you will have to recompile these binaries in your laptop: | 70 In this case you will have to recompile these binaries in your laptop: |
49 ``` | 71 |
| 72 ```shell |
50 # May need to install dependencies on your laptop. | 73 # May need to install dependencies on your laptop. |
| 74 |
51 laptop$ sudo ./build/install-build-deps-android.sh | 75 laptop$ sudo ./build/install-build-deps-android.sh |
52 | 76 |
53 # Rebuild the needed binaries on your laptop. | 77 # Rebuild the needed binaries on your laptop. |
| 78 |
54 laptop$ build/gyp_chromium -DOS=android | 79 laptop$ build/gyp_chromium -DOS=android |
55 laptop$ ninja -C out/Debug md5sum host_forwarder | 80 laptop$ ninja -C out/Debug md5sum host_forwarder |
56 ``` | 81 ``` |
57 | 82 |
| 83 ## Option 2: SSH Tunneling |
58 | 84 |
59 # Option 2: SSH Tunneling | 85 ### Option 2a: Use a script |
60 | 86 |
61 ## Option 2a: Use a script | 87 Copy /tools/android/adb_remote_setup.sh to your laptop, then run it. |
| 88 adb_remote_setup.sh updates itself, so you only need to copy it once. |
62 | 89 |
63 Copy src/tools/android/adb\_remote\_setup.sh to your laptop, then run it. adb\_r
emote\_setup.sh updates itself, so you only need to copy it once. | 90 ```shell |
64 | |
65 ``` | |
66 laptop$ curl "http://src.chromium.org/svn/trunk/src/tools/android/adb_remote_set
up.sh" > adb_remote_setup.sh | 91 laptop$ curl "http://src.chromium.org/svn/trunk/src/tools/android/adb_remote_set
up.sh" > adb_remote_setup.sh |
67 laptop$ chmod +x adb_remote_setup.sh | 92 laptop$ chmod +x adb_remote_setup.sh |
68 laptop$ ./adb_remote_setup.sh <desktop_hostname> <path_to_adb_on_desktop> | 93 laptop$ ./adb_remote_setup.sh <desktop_hostname> <path_to_adb_on_desktop> |
69 ``` | 94 ``` |
70 | 95 |
71 ## Option 2b: Manual tunneling | 96 ### Option 2b: Manual tunneling |
72 | 97 |
73 You have to make sure that ports 5037, 10000, ad 10201 are not being used on eit
her your laptop or your desktop. | 98 You have to make sure that ports 5037, 10000, ad 10201 are not being used on |
74 Try the command: `netstat -nap | grep 10000` to see | 99 either your laptop or your desktop. Try the command: `netstat -nap | grep 10000` |
| 100 to see |
75 | 101 |
76 Kill the pids that are using those ports. | 102 Kill the pids that are using those ports. |
77 | 103 |
78 ### On your host machine | 104 #### On your host machine |
79 ``` | 105 |
| 106 ```shell |
80 desktop$ killall adb | 107 desktop$ killall adb |
81 desktop$ killall host_forwarder | 108 desktop$ killall host_forwarder |
82 ``` | 109 ``` |
83 | 110 |
84 ### On your laptop | 111 #### On your laptop |
85 ``` | 112 |
| 113 ```shell |
86 laptop$ ssh -C -R 5037:localhost:5037 -R 10000:localhost:10000 -R 10201:localhos
t:10201 <desktop_host_name> | 114 laptop$ ssh -C -R 5037:localhost:5037 -R 10000:localhost:10000 -R 10201:localhos
t:10201 <desktop_host_name> |
87 ``` | 115 ``` |
88 | 116 |
89 ### On your host machine | 117 #### On your host machine |
| 118 |
| 119 ```shell |
| 120 desktop$ python build/android/run_instrumentation_tests.py -I --test-apk Content
ShellTest -vvv |
90 ``` | 121 ``` |
91 desktop$ python build/android/run_instrumentation_tests.py -I --test-apk Content
ShellTest -vvv | |
92 ``` | |
OLD | NEW |