xref: /aosp_15_r20/external/angle/doc/DevSetupAndroid.md (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1*8975f5c5SAndroid Build Coastguard Worker# ANGLE for Android
2*8975f5c5SAndroid Build Coastguard Worker
3*8975f5c5SAndroid Build Coastguard Worker**Important note**: Android builds currently require Linux.
4*8975f5c5SAndroid Build Coastguard Worker
5*8975f5c5SAndroid Build Coastguard Worker## Setting up the ANGLE build for Android
6*8975f5c5SAndroid Build Coastguard Worker
7*8975f5c5SAndroid Build Coastguard WorkerPlease follow the instructions in [DevSetup](DevSetup.md) to check out and bootstrap ANGLE with
8*8975f5c5SAndroid Build Coastguard Workergclient. Then edit your `.gclient` to add `target_os = ['android']` to check out Android
9*8975f5c5SAndroid Build Coastguard Workerdependencies. Then run `gclient sync` to download all required sources and packages.
10*8975f5c5SAndroid Build Coastguard Worker
11*8975f5c5SAndroid Build Coastguard WorkerThe following command will open a text editor to populate GN args for an Android Release build:
12*8975f5c5SAndroid Build Coastguard Worker```
13*8975f5c5SAndroid Build Coastguard Workergn args out/Android
14*8975f5c5SAndroid Build Coastguard Worker```
15*8975f5c5SAndroid Build Coastguard Worker
16*8975f5c5SAndroid Build Coastguard WorkerOnce the editor is up, paste the following GN args to generate an Android build, and save the file.
17*8975f5c5SAndroid Build Coastguard Worker```
18*8975f5c5SAndroid Build Coastguard Workertarget_os = "android"
19*8975f5c5SAndroid Build Coastguard Workertarget_cpu = "arm64"
20*8975f5c5SAndroid Build Coastguard Workeris_component_build = false
21*8975f5c5SAndroid Build Coastguard Workeris_debug = false
22*8975f5c5SAndroid Build Coastguard Workerangle_assert_always_on = true   # Recommended for debugging. Turn off for performance.
23*8975f5c5SAndroid Build Coastguard Workeruse_remoteexec = true           # Googlers-only! If you're not a Googler remove this.
24*8975f5c5SAndroid Build Coastguard Worker```
25*8975f5c5SAndroid Build Coastguard Worker
26*8975f5c5SAndroid Build Coastguard WorkerMore targeted GN arg combinations can be found [below](#android-gn-args-combinations).
27*8975f5c5SAndroid Build Coastguard Worker
28*8975f5c5SAndroid Build Coastguard WorkerIf you run into any problems with the above, you can copy the canonical args from CI:
29*8975f5c5SAndroid Build Coastguard Worker - Visit the ANGLE [CI Waterfall](https://ci.chromium.org/p/angle/g/ci/console).
30*8975f5c5SAndroid Build Coastguard Worker - Open any recent Android build.
31*8975f5c5SAndroid Build Coastguard Worker - Expand the for "lookup GN args" step and copy the GN args.
32*8975f5c5SAndroid Build Coastguard Worker - If you are not a Googler, also omit the `use_remoteexec` flag.
33*8975f5c5SAndroid Build Coastguard Worker
34*8975f5c5SAndroid Build Coastguard Worker## Building ANGLE for Android
35*8975f5c5SAndroid Build Coastguard Worker
36*8975f5c5SAndroid Build Coastguard WorkerBuild all ANGLE targets using the following command:
37*8975f5c5SAndroid Build Coastguard Worker
38*8975f5c5SAndroid Build Coastguard Worker```
39*8975f5c5SAndroid Build Coastguard Workerautoninja -C out/Android
40*8975f5c5SAndroid Build Coastguard Worker```
41*8975f5c5SAndroid Build Coastguard Worker
42*8975f5c5SAndroid Build Coastguard WorkerMost ANGLE build targets are supported. We do not support the ANGLE samples on
43*8975f5c5SAndroid Build Coastguard WorkerAndroid currently. ANGLE tests will be in your `out/Android` directory, and can
44*8975f5c5SAndroid Build Coastguard Workerbe run with various options. For instance, angle perftests can be run with:
45*8975f5c5SAndroid Build Coastguard Worker
46*8975f5c5SAndroid Build Coastguard Worker```
47*8975f5c5SAndroid Build Coastguard Worker./out/Android/angle_perftests --verbose --local-output --gtest_filter=DrawCallPerf*
48*8975f5c5SAndroid Build Coastguard Worker```
49*8975f5c5SAndroid Build Coastguard Worker
50*8975f5c5SAndroid Build Coastguard WorkerAdditional details are in [Android Test Instructions][AndroidTest].
51*8975f5c5SAndroid Build Coastguard Worker
52*8975f5c5SAndroid Build Coastguard WorkerAdditional Android dEQP notes can be found in [Running dEQP on Android](dEQP.md#Running-dEQP-on-Android).
53*8975f5c5SAndroid Build Coastguard Worker
54*8975f5c5SAndroid Build Coastguard WorkerIf you are targeting WebGL and want to run with ANGLE, you will need to build within a full
55*8975f5c5SAndroid Build Coastguard WorkerChromium checkout. Please follow the [Chromium build instructions for Android][ChromeAndroid].
56*8975f5c5SAndroid Build Coastguard WorkerAlso refer to the [ANGLE Guide][ANGLEChrome] on how to work with Top of Tree ANGLE in Chromium.
57*8975f5c5SAndroid Build Coastguard WorkerBuild the `chrome_public_apk` target, and follow the [GPU Testing][GPU Testing] doc, using
58*8975f5c5SAndroid Build Coastguard Worker`--browser=android-chromium`. Make sure to set your `CHROMIUM_OUT_DIR` environment variable, so
59*8975f5c5SAndroid Build Coastguard Workerthat your browser is found, otherwise the tests will use the stock browser.
60*8975f5c5SAndroid Build Coastguard Worker
61*8975f5c5SAndroid Build Coastguard Worker[AndroidTest]: https://chromium.googlesource.com/chromium/src/+/main/docs/testing/android_test_instructions.md
62*8975f5c5SAndroid Build Coastguard Worker[GPU Testing]: http://www.chromium.org/developers/testing/gpu-testing#TOC-Running-the-GPU-Tests-Locally
63*8975f5c5SAndroid Build Coastguard Worker[ChromeAndroid]: https://chromium.googlesource.com/chromium/src/+/main/docs/android_build_instructions.md
64*8975f5c5SAndroid Build Coastguard Worker[ANGLEChrome]: BuildingAngleForChromiumDevelopment.md
65*8975f5c5SAndroid Build Coastguard Worker
66*8975f5c5SAndroid Build Coastguard Worker## Using ANGLE as the Android OpenGL ES driver
67*8975f5c5SAndroid Build Coastguard Worker
68*8975f5c5SAndroid Build Coastguard WorkerStarting with Android 10 (Q), you can load ANGLE as your device's OpenGL ES driver.
69*8975f5c5SAndroid Build Coastguard Worker
70*8975f5c5SAndroid Build Coastguard Worker`== Important Note ==` You can only run this ANGLE with *DEBUGGABLE APPS* or when you have
71*8975f5c5SAndroid Build Coastguard Worker*ROOT ACCESS*. Debuggable apps are [marked debuggable][Debuggable] in the manifest. For root
72*8975f5c5SAndroid Build Coastguard Workeraccess, see the [Android documentation][UserDebug] for how to build from source.
73*8975f5c5SAndroid Build Coastguard Worker
74*8975f5c5SAndroid Build Coastguard WorkerTo build the ANGLE APK, you must first bootstrap your build by following the steps
75*8975f5c5SAndroid Build Coastguard Worker[above](#ANGLE-for-Android). The steps below will result in an APK that contains the ANGLE
76*8975f5c5SAndroid Build Coastguard Workerlibraries and can be installed on any Android 10+ build.
77*8975f5c5SAndroid Build Coastguard Worker
78*8975f5c5SAndroid Build Coastguard WorkerApps can be opted in to ANGLE [one at a time](#ANGLE-for-a-single-OpenGL-ES-app), in
79*8975f5c5SAndroid Build Coastguard Worker[groups](#ANGLE-for-multiple-OpenGL-ES-apps), or [globally](#ANGLE-for-all-OpenGL-ES-apps). The
80*8975f5c5SAndroid Build Coastguard Workerapps must be launched by the Java runtime since the libraries are discovered within an installed
81*8975f5c5SAndroid Build Coastguard Workerpackage. This means ANGLE cannot be used by native executables or SurfaceFlinger at this time.
82*8975f5c5SAndroid Build Coastguard Worker
83*8975f5c5SAndroid Build Coastguard Worker## Building the ANGLE APK
84*8975f5c5SAndroid Build Coastguard Worker
85*8975f5c5SAndroid Build Coastguard WorkerUsing `gn args` from above, you can build the ANGLE apk using:
86*8975f5c5SAndroid Build Coastguard Worker```
87*8975f5c5SAndroid Build Coastguard Workerautoninja -C out/Android angle_apks
88*8975f5c5SAndroid Build Coastguard Worker```
89*8975f5c5SAndroid Build Coastguard Worker
90*8975f5c5SAndroid Build Coastguard Worker## Installing the ANGLE APK
91*8975f5c5SAndroid Build Coastguard Worker
92*8975f5c5SAndroid Build Coastguard Worker```
93*8975f5c5SAndroid Build Coastguard Workeradb install -r -d --force-queryable out/Android/apks/AngleLibraries.apk
94*8975f5c5SAndroid Build Coastguard Worker```
95*8975f5c5SAndroid Build Coastguard WorkerYou can verify installation by looking for the package name:
96*8975f5c5SAndroid Build Coastguard Worker```
97*8975f5c5SAndroid Build Coastguard Worker$ adb shell pm path org.chromium.angle
98*8975f5c5SAndroid Build Coastguard Workerpackage:/data/app/org.chromium.angle-HpkUceNFjoLYKPbIVxFWLQ==/base.apk
99*8975f5c5SAndroid Build Coastguard Worker```
100*8975f5c5SAndroid Build Coastguard Worker
101*8975f5c5SAndroid Build Coastguard WorkerNote that `angle_debug_package` must be set to `org.chromium.angle` for this apk to be loaded.
102*8975f5c5SAndroid Build Coastguard Worker
103*8975f5c5SAndroid Build Coastguard Worker## Selecting ANGLE as the OpenGL ES driver
104*8975f5c5SAndroid Build Coastguard Worker
105*8975f5c5SAndroid Build Coastguard WorkerFor debuggable applications or root users, you can tell the platform to load ANGLE libraries from
106*8975f5c5SAndroid Build Coastguard Workerthe installed package.
107*8975f5c5SAndroid Build Coastguard Worker```
108*8975f5c5SAndroid Build Coastguard Workeradb shell settings put global angle_debug_package org.chromium.angle
109*8975f5c5SAndroid Build Coastguard Worker```
110*8975f5c5SAndroid Build Coastguard WorkerRemember that ANGLE can only be used by applications launched by the Java runtime.
111*8975f5c5SAndroid Build Coastguard Worker
112*8975f5c5SAndroid Build Coastguard WorkerNote: Side-loading apk on Cuttlefish currently requires [special setup](#Cuttlefish-setup)
113*8975f5c5SAndroid Build Coastguard Worker
114*8975f5c5SAndroid Build Coastguard Worker## ANGLE driver choices
115*8975f5c5SAndroid Build Coastguard Worker
116*8975f5c5SAndroid Build Coastguard WorkerThere are multiple values you can use for selecting which OpenGL ES driver is loaded by the platform.
117*8975f5c5SAndroid Build Coastguard Worker
118*8975f5c5SAndroid Build Coastguard WorkerThe following values are supported for `angle_gl_driver_selection_values`:
119*8975f5c5SAndroid Build Coastguard Worker - `angle` : Use ANGLE.
120*8975f5c5SAndroid Build Coastguard Worker - `native` : Use the native OpenGL ES driver.
121*8975f5c5SAndroid Build Coastguard Worker - `default` : Use the default driver. This allows the platform to decide which driver to use.
122*8975f5c5SAndroid Build Coastguard Worker
123*8975f5c5SAndroid Build Coastguard WorkerIn each section below, replace `<driver>` with one of the values above.
124*8975f5c5SAndroid Build Coastguard Worker
125*8975f5c5SAndroid Build Coastguard Worker### ANGLE for a *single* OpenGL ES app
126*8975f5c5SAndroid Build Coastguard Worker
127*8975f5c5SAndroid Build Coastguard Worker```
128*8975f5c5SAndroid Build Coastguard Workeradb shell settings put global angle_gl_driver_selection_pkgs <package name>
129*8975f5c5SAndroid Build Coastguard Workeradb shell settings put global angle_gl_driver_selection_values <driver>
130*8975f5c5SAndroid Build Coastguard Worker```
131*8975f5c5SAndroid Build Coastguard Worker
132*8975f5c5SAndroid Build Coastguard Worker### ANGLE for *multiple* OpenGL ES apps
133*8975f5c5SAndroid Build Coastguard Worker
134*8975f5c5SAndroid Build Coastguard WorkerSimilar to selecting a single app, you can select multiple applications by listing their package
135*8975f5c5SAndroid Build Coastguard Workernames and driver choice in comma separated lists.  Note the lists must be the same length, one
136*8975f5c5SAndroid Build Coastguard Workerdriver choice per package name.
137*8975f5c5SAndroid Build Coastguard Worker```
138*8975f5c5SAndroid Build Coastguard Workeradb shell settings put global angle_gl_driver_selection_pkgs <package name 1>,<package name 2>,<package name 3>,...
139*8975f5c5SAndroid Build Coastguard Workeradb shell settings put global angle_gl_driver_selection_values <driver 1>,<driver 2>,<driver 3>,...
140*8975f5c5SAndroid Build Coastguard Worker```
141*8975f5c5SAndroid Build Coastguard Worker
142*8975f5c5SAndroid Build Coastguard Worker### ANGLE for *all* OpenGL ES apps
143*8975f5c5SAndroid Build Coastguard Worker
144*8975f5c5SAndroid Build Coastguard Worker`Note: This method only works on a device with root access.`
145*8975f5c5SAndroid Build Coastguard Worker
146*8975f5c5SAndroid Build Coastguard WorkerEnable:
147*8975f5c5SAndroid Build Coastguard Worker```
148*8975f5c5SAndroid Build Coastguard Workeradb shell settings put global angle_gl_driver_all_angle 1
149*8975f5c5SAndroid Build Coastguard Worker```
150*8975f5c5SAndroid Build Coastguard WorkerDisable:
151*8975f5c5SAndroid Build Coastguard Worker```
152*8975f5c5SAndroid Build Coastguard Workeradb shell settings put global angle_gl_driver_all_angle 0
153*8975f5c5SAndroid Build Coastguard Worker```
154*8975f5c5SAndroid Build Coastguard Worker
155*8975f5c5SAndroid Build Coastguard Worker## Check for success
156*8975f5c5SAndroid Build Coastguard Worker
157*8975f5c5SAndroid Build Coastguard WorkerCheck to see that ANGLE was loaded by your application:
158*8975f5c5SAndroid Build Coastguard Worker```
159*8975f5c5SAndroid Build Coastguard Worker$ adb logcat -d | grep ANGLE
160*8975f5c5SAndroid Build Coastguard WorkerV GraphicsEnvironment: ANGLE developer option for <package name>: angle
161*8975f5c5SAndroid Build Coastguard WorkerI GraphicsEnvironment: ANGLE package enabled: org.chromium.angle
162*8975f5c5SAndroid Build Coastguard WorkerI ANGLE   : Version (2.1.0.f87fac56d22f), Renderer (Vulkan 1.1.87(Adreno (TM) 615 (0x06010501)))
163*8975f5c5SAndroid Build Coastguard Worker```
164*8975f5c5SAndroid Build Coastguard Worker
165*8975f5c5SAndroid Build Coastguard WorkerNote that this might be logged by the built-in ANGLE and not the installed apk if `angle_debug_package` wasn't set.
166*8975f5c5SAndroid Build Coastguard Worker
167*8975f5c5SAndroid Build Coastguard Worker## Clean up
168*8975f5c5SAndroid Build Coastguard Worker
169*8975f5c5SAndroid Build Coastguard WorkerSettings persist across reboots, so it is a good idea to delete them when finished.
170*8975f5c5SAndroid Build Coastguard Worker```
171*8975f5c5SAndroid Build Coastguard Workeradb shell settings delete global angle_debug_package
172*8975f5c5SAndroid Build Coastguard Workeradb shell settings delete global angle_gl_driver_all_angle
173*8975f5c5SAndroid Build Coastguard Workeradb shell settings delete global angle_gl_driver_selection_pkgs
174*8975f5c5SAndroid Build Coastguard Workeradb shell settings delete global angle_gl_driver_selection_values
175*8975f5c5SAndroid Build Coastguard Worker```
176*8975f5c5SAndroid Build Coastguard Worker
177*8975f5c5SAndroid Build Coastguard Worker## Troubleshooting
178*8975f5c5SAndroid Build Coastguard Worker
179*8975f5c5SAndroid Build Coastguard WorkerIf your application is not debuggable or you are not root, you may see an error like this in the log:
180*8975f5c5SAndroid Build Coastguard Worker```
181*8975f5c5SAndroid Build Coastguard Worker$ adb logcat -d | grep ANGLE
182*8975f5c5SAndroid Build Coastguard WorkerV GraphicsEnvironment: ANGLE developer option for <package name>: angle
183*8975f5c5SAndroid Build Coastguard WorkerE GraphicsEnvironment: Invalid number of ANGLE packages. Required: 1, Found: 0
184*8975f5c5SAndroid Build Coastguard WorkerE GraphicsEnvironment: Failed to find ANGLE package.
185*8975f5c5SAndroid Build Coastguard Worker```
186*8975f5c5SAndroid Build Coastguard WorkerDouble check that you are root, or that your application is [marked debuggable][Debuggable].
187*8975f5c5SAndroid Build Coastguard Worker
188*8975f5c5SAndroid Build Coastguard Worker## Android GN args combinations
189*8975f5c5SAndroid Build Coastguard Worker
190*8975f5c5SAndroid Build Coastguard WorkerThe [above](#angle-gn-args-for-android) GN args only modify default values to generate a Debug
191*8975f5c5SAndroid Build Coastguard Workerbuild for Android. Below are some common configurations used for different scenarios.
192*8975f5c5SAndroid Build Coastguard Worker
193*8975f5c5SAndroid Build Coastguard WorkerTo determine what is different from default, you can point the following command at your target
194*8975f5c5SAndroid Build Coastguard Workerdirectory. It will show the list of gn args in use, where they came from, their current value,
195*8975f5c5SAndroid Build Coastguard Workerand their default values.
196*8975f5c5SAndroid Build Coastguard Worker```
197*8975f5c5SAndroid Build Coastguard Workergn args --list <dir>
198*8975f5c5SAndroid Build Coastguard Worker```
199*8975f5c5SAndroid Build Coastguard Worker
200*8975f5c5SAndroid Build Coastguard Worker### Performance config
201*8975f5c5SAndroid Build Coastguard Worker
202*8975f5c5SAndroid Build Coastguard WorkerThis config is designed to get maximum performance by disabling debug configs and validation layers.
203*8975f5c5SAndroid Build Coastguard WorkerNote: The oddly named `is_official_build` is a more aggressive optimization level than `Release`. Its name is historical.
204*8975f5c5SAndroid Build Coastguard Worker```
205*8975f5c5SAndroid Build Coastguard Workertarget_os = "android"
206*8975f5c5SAndroid Build Coastguard Workertarget_cpu = "arm64"
207*8975f5c5SAndroid Build Coastguard Workerangle_enable_vulkan = true
208*8975f5c5SAndroid Build Coastguard Workeris_component_build = false
209*8975f5c5SAndroid Build Coastguard Workeris_official_build = true
210*8975f5c5SAndroid Build Coastguard Workeris_debug = false
211*8975f5c5SAndroid Build Coastguard Worker```
212*8975f5c5SAndroid Build Coastguard Worker
213*8975f5c5SAndroid Build Coastguard Worker### Debug config
214*8975f5c5SAndroid Build Coastguard Worker
215*8975f5c5SAndroid Build Coastguard WorkerThis config is useful for quickly ensuring Vulkan is running cleanly. It disables debug, but
216*8975f5c5SAndroid Build Coastguard Workerenables asserts and allows validation errors.
217*8975f5c5SAndroid Build Coastguard Worker```
218*8975f5c5SAndroid Build Coastguard Workertarget_os = "android"
219*8975f5c5SAndroid Build Coastguard Workertarget_cpu = "arm64"
220*8975f5c5SAndroid Build Coastguard Workeris_component_build = false
221*8975f5c5SAndroid Build Coastguard Workeris_debug = true
222*8975f5c5SAndroid Build Coastguard Worker```
223*8975f5c5SAndroid Build Coastguard Worker
224*8975f5c5SAndroid Build Coastguard Worker#### Application Compatibility
225*8975f5c5SAndroid Build Coastguard Worker
226*8975f5c5SAndroid Build Coastguard WorkerApplication compatibility may be increased by enabling non-conformant features and extensions with
227*8975f5c5SAndroid Build Coastguard Workera GN arg:
228*8975f5c5SAndroid Build Coastguard Worker
229*8975f5c5SAndroid Build Coastguard Worker```
230*8975f5c5SAndroid Build Coastguard Workerangle_expose_non_conformant_extensions_and_versions = true
231*8975f5c5SAndroid Build Coastguard Worker```
232*8975f5c5SAndroid Build Coastguard Worker
233*8975f5c5SAndroid Build Coastguard Worker### Cuttlefish setup
234*8975f5c5SAndroid Build Coastguard Worker
235*8975f5c5SAndroid Build Coastguard WorkerCuttlefish uses ANGLE as a system GL driver, on top of SwiftShader. It also uses SkiaGL (not SkiaVk)
236*8975f5c5SAndroid Build Coastguard Workerdue to a SwiftShader limitation. This enables preloading of GL libs - so in this case, ANGLE - into Zygote,
237*8975f5c5SAndroid Build Coastguard Workerwhich with the current implementation of the loader results in system libs being loaded instead of
238*8975f5c5SAndroid Build Coastguard Workerloading them from the debug apk. To workaround, a custom library name can be set via a GN arg:
239*8975f5c5SAndroid Build Coastguard Worker
240*8975f5c5SAndroid Build Coastguard Worker```
241*8975f5c5SAndroid Build Coastguard Workerangle_libs_suffix = _angle_in_apk
242*8975f5c5SAndroid Build Coastguard Worker```
243*8975f5c5SAndroid Build Coastguard Worker
244*8975f5c5SAndroid Build Coastguard Workerand enabled in the platform with this setting (mind the lack of a leading underscore compared to the above):
245*8975f5c5SAndroid Build Coastguard Worker
246*8975f5c5SAndroid Build Coastguard Worker```
247*8975f5c5SAndroid Build Coastguard Workeradb shell setprop debug.angle.libs.suffix angle_in_apk
248*8975f5c5SAndroid Build Coastguard Worker```
249*8975f5c5SAndroid Build Coastguard Worker
250*8975f5c5SAndroid Build Coastguard Worker## Accessing ANGLE traces
251*8975f5c5SAndroid Build Coastguard Worker
252*8975f5c5SAndroid Build Coastguard WorkerTo sync and build the ANGLE traces, jump to [ANGLE Restricted Traces](https://chromium.googlesource.com/angle/angle.git/+/HEAD/src/tests/restricted_traces/README.md#angle-restricted-traces).
253*8975f5c5SAndroid Build Coastguard Worker
254*8975f5c5SAndroid Build Coastguard Worker## Command line for launching chrome on Android
255*8975f5c5SAndroid Build Coastguard Worker
256*8975f5c5SAndroid Build Coastguard Worker[This Makefile](https://github.com/phuang/test/blob/main/chromium/Makefile) contains many useful
257*8975f5c5SAndroid Build Coastguard Workercommand lines for launching chrome.
258*8975f5c5SAndroid Build Coastguard Worker
259*8975f5c5SAndroid Build Coastguard WorkerTargets run_chrome_public_apk_* is for launching chrome on Android.
260*8975f5c5SAndroid Build Coastguard Worker
261*8975f5c5SAndroid Build Coastguard WorkerTo use this Makefile, download it into chrome build tree, and use below commands (for more targets please check Makefile)
262*8975f5c5SAndroid Build Coastguard Worker```
263*8975f5c5SAndroid Build Coastguard Worker# To edit gn args
264*8975f5c5SAndroid Build Coastguard Worker$ make args OUT=out_android/Release  # The OUT can be set in Makefile instead of passing it in command line
265*8975f5c5SAndroid Build Coastguard Worker
266*8975f5c5SAndroid Build Coastguard Worker# Build and run chrome on Android device with GLRenderer
267*8975f5c5SAndroid Build Coastguard Worker$ make run_chrome_public_apk_gl
268*8975f5c5SAndroid Build Coastguard Worker
269*8975f5c5SAndroid Build Coastguard Worker# Build and run chrome on Android device with SkiaRenderer
270*8975f5c5SAndroid Build Coastguard Worker$ make run_chrome_public_apk_skia
271*8975f5c5SAndroid Build Coastguard Worker
272*8975f5c5SAndroid Build Coastguard Worker# Run adb logcat
273*8975f5c5SAndroid Build Coastguard Worker$ make adb_logcat
274*8975f5c5SAndroid Build Coastguard Worker
275*8975f5c5SAndroid Build Coastguard Worker# Symbolize Android crash stack
276*8975f5c5SAndroid Build Coastguard Worker$ make android_symbol
277*8975f5c5SAndroid Build Coastguard Worker
278*8975f5c5SAndroid Build Coastguard Worker# Build and run gpu_unittests
279*8975f5c5SAndroid Build Coastguard Worker$ make gpu_unittests GTEST_FILTER="gtest-filters" # If GTEST_FILTER is not specified, all tests will be run.
280*8975f5c5SAndroid Build Coastguard Worker```
281*8975f5c5SAndroid Build Coastguard Worker
282*8975f5c5SAndroid Build Coastguard Worker[Debuggable]: https://developer.android.com/guide/topics/manifest/application-element#debug
283*8975f5c5SAndroid Build Coastguard Worker[UserDebug]: https://source.android.com/setup/build/building
284