| page.title=layoutopt |
| @jd:body |
| |
| <p><code>layoutopt</code> is a command-line tool that helps you optimize the |
| layouts and layout hierarchies of your applications. You can run it against your |
| layout files or resource directories to quickly check for inefficiencies or |
| other types of problems that could be affecting the performance of your |
| application. </p> |
| |
| <p>To run the tool, open a terminal and launch <code>layoutopt |
| <resources></code> from your SDK <code>tools/</code> directory. In the |
| command, supply a list of uncompiled resource xml files or directories that you |
| want to analyze. </p> |
| |
| <p>When run, the tool loads the specified XML files and analyzes their layout |
| structures and hierarchies according to a set of predefined rules. If it detects |
| issues, it outputs information about the issues, giving filename, line numbers, |
| description of issue, and for some types of issues a suggested resolution. </p> |
| |
| <p>Here's an example of the output:</p> |
| |
| <pre>$ layoutopt samples/ |
| samples/compound.xml |
| 7:23 The root-level <FrameLayout/> can be replaced with <merge/> |
| 11:21 This LinearLayout layout or its FrameLayout parent is useless |
| samples/simple.xml |
| 7:7 The root-level <FrameLayout/> can be replaced with <merge/> |
| samples/too_deep.xml |
| -1:-1 This layout has too many nested layouts: 13 levels, it should have <= 10! |
| 20:81 This LinearLayout layout or its LinearLayout parent is useless |
| 24:79 This LinearLayout layout or its LinearLayout parent is useless |
| 28:77 This LinearLayout layout or its LinearLayout parent is useless |
| 32:75 This LinearLayout layout or its LinearLayout parent is useless |
| 36:73 This LinearLayout layout or its LinearLayout parent is useless |
| 40:71 This LinearLayout layout or its LinearLayout parent is useless |
| 44:69 This LinearLayout layout or its LinearLayout parent is useless |
| 48:67 This LinearLayout layout or its LinearLayout parent is useless |
| 52:65 This LinearLayout layout or its LinearLayout parent is useless |
| 56:63 This LinearLayout layout or its LinearLayout parent is useless |
| samples/too_many.xml |
| 7:413 The root-level <FrameLayout/> can be replaced with <merge/> |
| -1:-1 This layout has too many views: 81 views, it should have <= 80! |
| samples/useless.xml |
| 7:19 The root-level <FrameLayout/> can be replaced with <merge/> |
| 11:17 This LinearLayout layout or its FrameLayout parent is useless</pre> |
| |
| <p>The <code>layoutopt</code> tool is available in SDK Tools, Revision 3 or |
| later. If you do not have SDK Tools 3 or later installed in your SDK, you can |
| download it from the Android SDK repository site using the Android SDK and AVD |
| Manager. For information, see <a |
| href="{@docRoot}sdk/adding-components.html">Adding SDK Components</a>.</p> |
| |
| <h3>Usage</h3> |
| |
| <p>To run <code>layoutopt</code> against a given list of layout resources:</p> |
| |
| <pre>layoutopt <list of xml files or directories></pre> |
| |
| <p>For example:</p> |
| |
| <pre>$ layoutopt res/layout-land</pre> |
| <pre>$ layoutopt res/layout/main.xml res/layout-land/main.xml</pre> |