diff options
Diffstat (limited to 'en/devices')
-rw-r--r-- | en/devices/camera/camera3_requests_methods.html | 2 | ||||
-rw-r--r-- | en/devices/graphics/implement-vulkan.html | 6 | ||||
-rw-r--r-- | en/devices/graphics/run-tests.html | 2 | ||||
-rw-r--r-- | en/devices/input/diagnostics.html | 6 | ||||
-rw-r--r-- | en/devices/input/getevent.html | 2 | ||||
-rw-r--r-- | en/devices/storage/config.html | 8 | ||||
-rw-r--r-- | en/devices/tech/admin/provision.html | 2 | ||||
-rw-r--r-- | en/devices/tech/admin/testing-provision.html | 15 | ||||
-rw-r--r-- | en/devices/tech/connect/emergency-affordance.html | 2 | ||||
-rw-r--r-- | en/devices/tech/dalvik/dex-format.html | 5 | ||||
-rw-r--r-- | en/devices/tech/debug/asan.html | 4 | ||||
-rw-r--r-- | en/devices/tech/debug/native-crash.html | 11 | ||||
-rw-r--r-- | en/devices/tech/display/hdr.html | 19 | ||||
-rw-r--r-- | en/devices/tech/ota/sign_builds.html | 4 | ||||
-rw-r--r-- | en/devices/tech/test_infra/tradefed/full_example.html | 12 | ||||
-rw-r--r-- | en/devices/tv/hdmi-cec.html | 1 | ||||
-rw-r--r-- | en/devices/tv/reference-tv-app.html | 6 |
17 files changed, 53 insertions, 54 deletions
diff --git a/en/devices/camera/camera3_requests_methods.html b/en/devices/camera/camera3_requests_methods.html index 55c0db6b..edd4dfe5 100644 --- a/en/devices/camera/camera3_requests_methods.html +++ b/en/devices/camera/camera3_requests_methods.html @@ -57,7 +57,7 @@ returned by the HAL through the <code>process_capture_result()</code> call. This it needs to retain for the capture processing. The HAL is responsible for waiting on and closing the buffers' fences and returning the buffer handles to the framework.</p> - The HAL must write the file descriptor for the input buffer's release sync fence +<p>The HAL must write the file descriptor for the input buffer's release sync fence into <code>input_buffer</code>-><code>release_fence</code>, if <code>input_buffer</code> is not <code>NULL</code>. If the HAL returns <code>-1</code> for the input buffer release sync fence, the framework is free to immediately reuse the input buffer. Otherwise, the framework will wait on the diff --git a/en/devices/graphics/implement-vulkan.html b/en/devices/graphics/implement-vulkan.html index 918343e1..b2a5c283 100644 --- a/en/devices/graphics/implement-vulkan.html +++ b/en/devices/graphics/implement-vulkan.html @@ -80,12 +80,10 @@ image is built. The loader uses the existing HAL mechanism (see <code><a href="h for discovering and loading the driver. Preferred paths for 32-bit and 64-bit Vulkan drivers are:</p> -<p> <pre class="devsite-click-to-copy"> /vendor/lib/hw/vulkan.<ro.product.platform>.so /vendor/lib64/hw/vulkan.<ro.product.platform>.so </pre> -</p> <p>Where <<code>ro.product.platform</code>> is replaced by the value of the system property of that name. For details and supported alternative @@ -175,7 +173,6 @@ implementation-defined private gralloc usage flags. When creating a swapchain, the platform asks the driver to translate the requested format and image usage flags into gralloc usage flags by calling:</p> -<p> <pre class="devsite-click-to-copy"> VkResult VKAPI vkGetSwapchainGrallocUsageANDROID( VkDevice device, @@ -184,7 +181,6 @@ VkResult VKAPI vkGetSwapchainGrallocUsageANDROID( int* grallocUsage ); </pre> -</p> <p>The <code>format</code> and <code>imageUsage</code> parameters are taken from the <code>VkSwapchainCreateInfoKHR</code> structure. The driver should fill @@ -234,7 +230,7 @@ the following data:</p> .sharingMode = VkSwapChainCreateInfoWSI::sharingMode .queueFamilyCount = VkSwapChainCreateInfoWSI::queueFamilyCount .pQueueFamilyIndices = VkSwapChainCreateInfoWSI::pQueueFamilyIndices -</pre></p> +</pre> <h3 id=acquire_image>Aquiring images</h3> <p><code>vkAcquireImageANDROID</code> acquires ownership of a swapchain image diff --git a/en/devices/graphics/run-tests.html b/en/devices/graphics/run-tests.html index b0d043b2..124d7eb7 100644 --- a/en/devices/graphics/run-tests.html +++ b/en/devices/graphics/run-tests.html @@ -65,7 +65,7 @@ application package.</p> <tr> <td rowspan=2 style="vertical-align:middle">GLES3 Module</td> - <td><code>build/modules/gles3/deqp-gles3</td> + <td><code>build/modules/gles3/deqp-gles3</code></td> <td><code><dst>/deqp-gles3</code></td> </tr> diff --git a/en/devices/input/diagnostics.html b/en/devices/input/diagnostics.html index 92780018..160ceaed 100644 --- a/en/devices/input/diagnostics.html +++ b/en/devices/input/diagnostics.html @@ -300,7 +300,7 @@ have a mouse but its HID descriptor says it does.)</p> ButtonState: 0x00000000 Down: false DownTime: 0 -</code></pre> +</pre> <p>Here is a joystick. Notice how all of the axes have been scaled to a normalized range. The axis mapping can be configured using key layout files.</p> <pre class="devsite-click-to-copy"> @@ -344,7 +344,7 @@ Device 18: Logitech Logitech Cordless RumblePad 2 HAT_Y: min=-1.00000, max=1.00000, flat=0.00000, fuzz=0.00000 scale=1.00000, offset=0.00000, highScale=1.00000, highOffset=0.00000 rawAxis=17, rawMin=-1, rawMax=1, rawFlat=0, rawFuzz=0, rawResolution=0 -</code></pre> +</pre> <p>At the end of the input reader dump there is some information about global configuration parameters such as the mouse pointer speed.</p> <pre class="devsite-click-to-copy"> @@ -366,7 +366,7 @@ parameters such as the mouse pointer speed.</p> SwipeMaxWidthRatio: 0.2 MovementSpeedRatio: 0.8 ZoomSpeedRatio: 0.3 -</code></pre> +</pre> <h4 id="things-to-look-for_1">Things To Look For</h4> <ol> <li> diff --git a/en/devices/input/getevent.html b/en/devices/input/getevent.html index 69746bcd..3223d8ef 100644 --- a/en/devices/input/getevent.html +++ b/en/devices/input/getevent.html @@ -93,7 +93,7 @@ adb shell su -- getevent -lp /dev/input/event1 ABS_MT_PRESSURE : value 0, min 0, max 255, fuzz 0, flat 0, resolution 0 input props: INPUT_PROP_DIRECT -</code></pre> +</pre> <h2 id="showing-live-events">Showing live events</h2> <p>The following example shows a two-finger multi-touch gesture for a touchscreen using the Linux multi-touch input protocol "B". The <code>-l</code> diff --git a/en/devices/storage/config.html b/en/devices/storage/config.html index 91442b2f..272566f7 100644 --- a/en/devices/storage/config.html +++ b/en/devices/storage/config.html @@ -69,13 +69,13 @@ Other possible flags are <code>nonremovable</code>, <h2 id=configuration_details>Configuration details</h2> <p>External storage interactions at and above the framework level are handled -through <code>MountService</code>. -Due to configuration changes in Android 6.0 (like the +through <code>MountService</code>. Due to configuration changes in Android 6.0 (like the removal of the storage_list.xml resource overlay), the configuration details -are split into two categories. +are split into two categories.</p> <h3 id=android_5_x_and_earlier>Android 5.x and earlier</h3> -The device-specific <code>storage_list.xml</code> configuration + +<p>The device-specific <code>storage_list.xml</code> configuration file, typically provided through a <code>frameworks/base</code> overlay, defines the attributes and constraints of storage devices. The <code><StorageList></code> element contains one or more <code><storage></code> elements, exactly one of which should be marked diff --git a/en/devices/tech/admin/provision.html b/en/devices/tech/admin/provision.html index e1acd3e7..47177daa 100644 --- a/en/devices/tech/admin/provision.html +++ b/en/devices/tech/admin/provision.html @@ -137,7 +137,7 @@ mimetype from the setup experience:</p> <item>application/com.android.managedprovisioning</item> </pre> -<h3 id=do_provision_cs>Provisioning via Cloud Services</h2> +<h3 id=do_provision_cs>Provisioning via Cloud Services</h3> <p>Device owner provisioning via cloud services is another method through which a device can be provisioned in device owner mode during out-of-the-box setup. The device can collect credentials (or tokens) and use them to perform a lookup diff --git a/en/devices/tech/admin/testing-provision.html b/en/devices/tech/admin/testing-provision.html index a8a219d2..af303a01 100644 --- a/en/devices/tech/admin/testing-provision.html +++ b/en/devices/tech/admin/testing-provision.html @@ -64,8 +64,8 @@ the corresponding tag. Available branches include:</p> <table> <tr> -<th>Branch Name</td> -<th>Supported Android Platform</td> +<th>Branch Name</th> +<th>Supported Android Platform</th> </tr> <tr> <td>afw-test-harness-nougat-dev</td> @@ -171,9 +171,9 @@ packages from the <code>AfwTestHarness/tests</code> test package directory. Common plans include: <ul> -<li><code><strong>afw-userdebug-build</code></strong>. Contains all test +<li><code><strong>afw-userdebug-build</strong></code>. Contains all test packages that require a userdebug build.</li> -<li><code><strong>afw-user-build</code></strong>. Runs on a user build but +<li><code><strong>afw-user-build</strong></code>. Runs on a user build but requires the test device to be set up properly, including completing the initial setup and enabling USB debugging.</li> </ul> @@ -288,8 +288,6 @@ as: as: <code>screenshot-<em>random_number</em>.png</code>. This information is also logged in the host log.</li> </ul> -</li> -</ul> <h2 id=faq>FAQ</h2> <p>For help with questions not answered below, contact @@ -309,7 +307,8 @@ with userdebug build?</strong></p> <p><em>Yes, but we recommend that you run this test plan on a user build.</em></p> <p><strong>Sometimes my test fails because UI loading takes too much time. How -can I fix this?</strong></p><em>Configure the <code>timeout_size</code> setting +can I fix this?</strong></p> +<p><em>Configure the <code>timeout_size</code> setting in <code>./android-cts/repository/testcases/afw-test.props</code>. Valid settings are: S, M, L, XL, XXL.</em></p> @@ -330,7 +329,7 @@ your_btn.text=your_customized_text your_btn.package=your_package your_btn.action=click </pre> -<em><p>To define multiple widgets, separate using commas.</em></p> +<p><em>To define multiple widgets, separate using commas.</em></p> <p><strong>The test package <code>com.android.afwtest.NfcProvisioning</code> (or diff --git a/en/devices/tech/connect/emergency-affordance.html b/en/devices/tech/connect/emergency-affordance.html index bbaccacf..eee981b7 100644 --- a/en/devices/tech/connect/emergency-affordance.html +++ b/en/devices/tech/connect/emergency-affordance.html @@ -217,7 +217,7 @@ connected when the lock screen is active. The emergency dialer only connects calls to the list of numbers provided by the Radio Interface Layer (RIL), through the system property 'ril.ecclist', when no SIM is installed and '<code>ril.ecclist<<i>SimSlotNumber</i>></code>' when a SIM is inserted -and <code><i><SimSlotNumber></code></i> is the slot ID of the default +and <code><i><SimSlotNumber></i></code> is the slot ID of the default subscriber.<br> Device manufacturers using the emergency affordance feature must ensure that devices in India always enable 112 as an emergency number in the RIL.</p> diff --git a/en/devices/tech/dalvik/dex-format.html b/en/devices/tech/dalvik/dex-format.html index fde14a8b..38547c97 100644 --- a/en/devices/tech/dalvik/dex-format.html +++ b/en/devices/tech/dalvik/dex-format.html @@ -350,7 +350,7 @@ uint NO_INDEX = 0xffffffff; // == -1 if treated as a signed int </pre> <h3 id="access-flags">access_flags definitions</h3> -<h4>embedded in class_def_item, encoded_field, encoded_method, and +<h4>embedded in class_def_item, encoded_field, encoded_method, and InnerClass</h4> <p>Bitfields of these flags are used to indicate the accessibility and @@ -1324,7 +1324,6 @@ may appear in a <code>.dex</code> file. <code>0</code> if <code>field_ids_size == 0</code>. The offset, if non-zero, should be to the start of the <code>field_ids</code> section.</td> -</td> </tr> <tr> <td>method_ids_size</td> @@ -2878,7 +2877,7 @@ address += (adjusted_opcode / DBG_LINE_RANGE) </table> <h3 id="annotation-set-item">annotation_set_item</h3> -<h4>referenced from annotations_directory_item, field_annotations_item, +<h4>referenced from annotations_directory_item, field_annotations_item, method_annotations_item, and annotation_set_ref_item</h4> <h4>appears in the data section</h4> <h4>alignment: 4 bytes</h4> diff --git a/en/devices/tech/debug/asan.html b/en/devices/tech/debug/asan.html index 353aa4bd..1c12ad62 100644 --- a/en/devices/tech/debug/asan.html +++ b/en/devices/tech/debug/asan.html @@ -74,7 +74,7 @@ output and to <code>logcat</code> and then crashes the process.</p> <p>Due to the way ASan works, a library built with ASan cannot be used by an executable that's built without ASan.</p> -<p class="note">Note</strong>: In runtime situations where an ASan library is +<p class="note"><strong>Note</strong>: In runtime situations where an ASan library is loaded into an incorrect process, you will see unresolved symbol messages starting with <code>_asan</code> or <code>_sanitizer</code>.</p> @@ -155,7 +155,7 @@ the availability of symbolized libraries on the host.</p> <p>AddressSanitizer cannot see into Java code, but it can detect bugs in the JNI libraries. For that, you'll need to build the executable with ASan, which in -this case is <code>/system/bin/app_process(<em>32|64</code></em>). This will +this case is <code>/system/bin/app_process(<em>32|64</em>)</code>. This will enable ASan in all apps on the device at the same time, which is a bit stressful, but nothing that a 2GB RAM device cannot handle.</p> diff --git a/en/devices/tech/debug/native-crash.html b/en/devices/tech/debug/native-crash.html index c1658cc5..00f72cd0 100644 --- a/en/devices/tech/debug/native-crash.html +++ b/en/devices/tech/debug/native-crash.html @@ -46,7 +46,7 @@ using one of the Android-specific fatal logging types), but they all involve calling <code>abort</code>. A call to <code>abort</code> basically signals the calling thread with SIGABRT, so a frame showing "abort" in <code>libc.so</code> plus SIGABRT are the things to look for in the <code>debuggerd</code> output to -recognize this case. +recognize this case.</p> <p> As mentioned above, there may be an explicit "abort message" line. But you @@ -83,7 +83,7 @@ backtrace: More recent versions call <code><a href="http://man7.org/linux/man-pages/man2/tgkill.2.html">tgkill(2)</a></code> directly from <code>abort</code>, so there are fewer stack frames for you to -skip over before you get to the interesting frames: +skip over before you get to the interesting frames:</p> <pre class="devsite-click-to-copy"> pid: 25301, tid: 25301, name: crasher >>> crasher <<< @@ -155,6 +155,7 @@ href="http://man7.org/linux/man-pages/man3/fopen.3.html">fopen(3)</a></code> or <code><a href="http://man7.org/linux/man-pages/man3/opendir.3.html">opendir(3)</a></code> call actually succeeded first. +</p> <p> Here's an example of <code>readdir</code>: @@ -192,7 +193,7 @@ offset <code>sizeof(int) + sizeof(size_t) + sizeof(dirent*)</code> into <code>struct DIR</code>, which on a 32-bit device is 4 + 4 + 4 = 12 = 0xc, so you found the bug: <code>readdir</code> was passed a null pointer by the caller. At this point you can paste the stack into the stack tool to find out -<em>where</em> in logcat this happened. +<em>where</em> in logcat this happened.</p> <pre class="prettyprint"> struct DIR { @@ -396,7 +397,7 @@ ip 00000006 sp ff96ad18 lr f700ced5 pc f700dc98 cpsr 400b0010 <p>The register dump shows the content of the CPU registers at the time the signal was received. (This section varies wildly between ABIs.) How useful -these are will depend on the exact crash.<p> +these are will depend on the exact crash.</p> <pre class="devsite-click-to-copy"> backtrace: @@ -464,7 +465,7 @@ that can be recognized by looking at the maps include:</p> will show the BuildId (if present) in Android M and later, so you can see exactly which version of your code crashed. (Platform binaries include a BuildId by default since Android M. NDK r12 and later automatically pass -<code>-Wl,--build-id</code> to the linker too.)<p> +<code>-Wl,--build-id</code> to the linker too.)</p> <pre class="devsite-click-to-copy"> ab163000-ab163fff r-- 3000 1000 /system/xbin/crasher diff --git a/en/devices/tech/display/hdr.html b/en/devices/tech/display/hdr.html index f85ff1da..53e4ae8f 100644 --- a/en/devices/tech/display/hdr.html +++ b/en/devices/tech/display/hdr.html @@ -167,9 +167,9 @@ array if HDR is not supported by the display.</li> <h3 id="decoder">Decoder</h3> -<p>Applications shall use the existing +<p>Applications shall use the existing <a href="https://developer.android.com/reference/android/media/MediaCodecInfo.CodecCapabilities.html#profileLevels"> -<code>CodecCapabilities.profileLevels</code></a> API to verify support for the +<code>CodecCapabilities.profileLevels</code></a> API to verify support for the new HDR capable profiles:</p> <h4>Dolby-Vision</h4> @@ -385,10 +385,12 @@ that matches the display's color volume.</li> <li>Determine the color, mastering, and potential dynamic metadata for the blended scene.</li> <li>Convert the resulting blended scene to the derived color -space/volume.</ol></li> +space/volume.</li> +</ol> +</li> <li>If displaying directly to the display, convert the resulting blended scene to the required display signals to produce that scene. -</ol></li> +</li> </ol> <h4>Display discovery</h4> @@ -407,16 +409,19 @@ its HDR capability through HDMI EDID as defined in <a href="https://standards.cta.tech/kwspub/published_docs/CTA-861.3-Preview.pdf"> CTA-861.3</a> section 4.2.</li> -<li>The following EOTF mapping shall be used:<ul> +<li>The following EOTF mapping shall be used: +<ul> <li>ET_0 Traditional gamma - SDR Luminance Range: not mapped to any HDR type</li> <li>ET_1 Traditional gamma - HDR Luminance Range: not mapped to any HDR type</li> -<li>ET_2 SMPTE ST 2084 - mapped to HDR type HDR10</ul></li> +<li>ET_2 SMPTE ST 2084 - mapped to HDR type HDR10</li> +</ul> +</li> <li>The signaling of Dolby Vision or HLG support over HDMI is done as defined by their relevant bodies.</li> <li>Note that the HWC2 API uses float desired luminance values, so the 8-bit -EDID values must be translated in a suitable fashion.</ul></li> +EDID values must be translated in a suitable fashion.</li> </ul> <h3 id="decoders">Decoders</h3> diff --git a/en/devices/tech/ota/sign_builds.html b/en/devices/tech/ota/sign_builds.html index fbc0d718..06106755 100644 --- a/en/devices/tech/ota/sign_builds.html +++ b/en/devices/tech/ota/sign_builds.html @@ -33,9 +33,9 @@ holds true both for updating user apps by overwriting the .apk, and for overriding a system app with a newer version installed under <code>/data</code>.</li> <li>If two or more applications want to share a user ID (so they can share -data, etc.), they must be signed with the same key.</ul></li> +data, etc.), they must be signed with the same key.</li></ul> <li>OTA update packages must be signed with one of the keys expected by the -system or the installation process will reject them.</ul></li> +system or the installation process will reject them.</li> </ol> <h2 id="release-keys">Release keys</h2> diff --git a/en/devices/tech/test_infra/tradefed/full_example.html b/en/devices/tech/test_infra/tradefed/full_example.html index f2bbb704..32b6b28f 100644 --- a/en/devices/tech/test_infra/tradefed/full_example.html +++ b/en/devices/tech/test_infra/tradefed/full_example.html @@ -151,7 +151,7 @@ example/helloworld: Runs the hello world test tf> run example/helloworld 05-12 13:21:21 I/TestInvocation: Starting invocation for target stub on build 0 on device 004ad9880810a548 Hello, TF World! -</code></pre> +</pre> <h2 id="deviceinteract">Interacting with a device (D, R)</h2> <p>So far, our HelloWorldTest isn't doing anything interesting. Tradefed's @@ -294,7 +294,7 @@ Hello, TF World! I have device 004ad9880810a548 05-16 21:07:07 I/XmlResultReporter: Saved device_logcat log to /tmp/0/inv_2991649128735283633/device_logcat_6999997036887173857.txt 05-16 21:07:07 I/XmlResultReporter: Saved host_log log to /tmp/0/inv_2991649128735283633/host_log_6307746032218561704.txt 05-16 21:07:07 I/XmlResultReporter: XML test result file generated at /tmp/0/inv_2991649128735283633/test_result_536358148261684076.xml. Total tests 1, Failed 1, Error 0 -</code></pre> +</pre> <p>Notice the log message stating that an XML file has been generated; the generated file should look like this:</p> @@ -365,7 +365,7 @@ full class name of <code>FileLogger</code>:</p> <result_reporter class="com.android.tradefed.result.XmlResultReporter" /> <logger class="com.android.tradefed.log.FileLogger" /> </configuration> -</code></pre> +</pre> <p>Now, rebuild and run the helloworld example again:</p> <pre class="devsite-click-to-copy"> @@ -374,7 +374,7 @@ tf >run example/helloworld 05-16 21:38:21 I/XmlResultReporter: Saved device_logcat log to /tmp/0/inv_6390011618174565918/device_logcat_1302097394309452308.txt 05-16 21:38:21 I/XmlResultReporter: Saved host_log log to /tmp/0/inv_6390011618174565918/host_log_4255420317120216614.txt … -</code></pre> +</pre> <p>The log message indicates the path of the host log, which, when viewed, should contain your HelloWorldTest log message:</p> <pre class="devsite-terminal devsite-click-to-copy"> @@ -453,7 +453,7 @@ Printing help for only the important options. To see help for all options, use t 'file' logger options: --log-level-display the minimum log level to display on stdout. Must be one of verbose, debug, info, warn, error, assert. Default: error. -</code></pre> +</pre> <p>Note the message about "printing only the important options." To reduce option help clutter, TF uses the <code>Option#importance</code> attribute to @@ -500,7 +500,7 @@ stdout, in addition to being logged to a file:</p> tf> run example/helloworld --log-level-display info … 05-24 18:53:50 I/HelloWorldTest: Hello, TF World! I have device 004ad9880810a548 -</code></pre> +</pre> <h2 id="conclusion">That's all, folks!</h2> <p>As a reminder, if you're stuck on something, the diff --git a/en/devices/tv/hdmi-cec.html b/en/devices/tv/hdmi-cec.html index 6510901d..6532bf76 100644 --- a/en/devices/tv/hdmi-cec.html +++ b/en/devices/tv/hdmi-cec.html @@ -115,7 +115,6 @@ PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=<strong>4</strong> <pre class="devsite-click-to-copy"> PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=<strong>0</strong></pre> -</p> <ul> diff --git a/en/devices/tv/reference-tv-app.html b/en/devices/tv/reference-tv-app.html index db4b1763..7a35de56 100644 --- a/en/devices/tv/reference-tv-app.html +++ b/en/devices/tv/reference-tv-app.html @@ -98,7 +98,7 @@ different one listed in the table above.</p> <pre class="devsite-click-to-copy"> <code class="devsite-terminal">. build/envsetup.sh</code> -<code class="devsite-terminal">apas LiveTv x86</code> +<code class="devsite-terminal">tapas LiveTv x86</code> <code class="devsite-terminal">make LiveTv</code> </pre> @@ -151,7 +151,7 @@ adb shell am instrument \ <h3 id=functional_tests>Functional Tests</h3> <pre class="devsite-terminal devsite-click-to-copy"> -$ adb shell logcat -c +adb shell logcat -c m LiveTv TVTestInput TVFuncTests -j20 &&\ adb install -r -d $OUT/system/priv-app/LiveTv/LiveTv.apk &&\ adb install -r -d $OUT/system/app/TVTestInput/TVTestInput.apk && \ @@ -173,7 +173,7 @@ adb shell am instrument \ <p>The Jank tests look for dropped frames and delays in rendering.</p> <pre class="devsite-terminal devsite-click-to-copy"> -$ adb shell logcat -c +adb shell logcat -c m LiveTv TVTestInput TVJankTests -j20 &&\ adb install -r -d $OUT/system/priv-app/LiveTv/LiveTv.apk &&\ adb install -r -d $OUT/system/app/TVTestInput/TVTestInput.apk &&\ |