| # Android Dev Tips |
| |
| Just an internal tips page for people working on the memory team. |
| |
| [TOC] |
| |
| ## Building clank |
| |
| See instructions on the official [android build |
| page](/docs/android_build_instructions.md) for the most up to date info. |
| However, it will tell you how to build _everything_ which is way way more than |
| you need and way way harder. In short, you mostly need to do 3 (well, 2) |
| things: |
| |
| 1. Create a gn out directory with `target_os="android"` in the GN args |
| 2. Disable NaCl. (not strictly necessary, but it makes Albert feel better) |
| 3. Build the `chrome_public_apk` |
| |
| ## Too much text! I just want to run my thing! |
| |
| Fine fine. First, ensure only one phone is attached. If you have multiple, |
| you'll need to pass the device ID everywhere. Also, despite common wisdom, you |
| do NOT have to root your phone. Anyways...here's command lines to copy-🍝. |
| |
| Get your environment setup (adb in your path, etc): |
| ``` |
| $ source build/android/envsetup.sh |
| ``` |
| |
| Incremental build/deploy: |
| ``` |
| $ ninja -C out/clank -j1000 chrome_public_apk && ./build/android/adb_install_apk.py --keep_data out/clank/apks/ChromePublic.apk && ( ./build/android/adb_kill_chrome_public ; ./build/android/adb_run_chrome_public ) |
| |
| ``` |
| |
| Setting flags (**see next part!**): |
| ``` |
| $ ./build/android/adb_chrome_public_command_line --my-happy-flag-here |
| |
| ``` |
| |
| Select chromium as the system debug app to pick up flags!: |
| * Go to the `Developer Options` in Android Settings |
| * Find the `Select debug app` option. |
| * Select Chromium (after your first install) |
| |
| If you neglect to do this AND you do not have a rooted phone, the |
| `adb_chrome_public_command_line` tool cannot write a command line file into the |
| right location for your Chrome binary to read. When in doubt, verify the flags |
| in `about://version`. |
| |
| |
| ## What is `chrome_public_apk`? |
| |
| This seems to be the Android moral equivalent of the the `chrome` target on |
| desktop. It builds the APK that you want to install on your phone to run your |
| version of chromium. |
| |
| |
| ## Running logcat without going crazy. |
| |
| Logcat dumps a lot of system messages on periodic timers which can be noisy. |
| Often you just want to look at stack traces and things from chrome logs. This |
| can be filtered with a command like the following: |
| |
| ``` |
| adb logcat -s chromium:* ActivityManager:* WindowManager:* libc:* DEBUG:* System.err:* |
| ``` |
| |
| The `-s` silences everything that's not explicitly listed by default. |
| `ActivityManager` shows the android life-cycle events for Chrome. `WindowManager` |
| shows window changes. `libc` and `DEBUG` show stack traces. `System.err` is the |
| Java interpretation of the C failures. And `chromium` is obviously the bulk of |
| the interesting messages. |
| |
| ## Running telemetry (aka `./tools/perf/run_benchmark`) |
| |
| Passing in `--device=` with the correct id from `adb devices` will make the |
| script talk to your phone. You will need to go to the `Developer Options` and |
| force the screen to not lock. Then you can select the executable to run with |
| one of: |
| |
| ``` |
| --browser=exact --browser-executable=out/clank/apks/ChromePublic.apk |
| ``` |
| |
| or if you want to run something already installed on the phone, there's a set of |
| nifty options to `--browser` like: |
| |
| ``` |
| --browser=android-chrome-chrome |
| --browser=android-chrome-beta |
| --browser=android-chrome-dev |
| --browser=android-chrome-canary |
| --browser=android-chrome-chromium |
| ``` |