Wolle-Rosen-Kaufen/platforms/android/build/outputs/lint-results-release-fatal.html

3505 lines
234 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Lint Report</title>
<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto" />
<link rel="stylesheet" type="text/css" href="lint-results-release-fatal_files/hololike.css" />
<script language="javascript" type="text/javascript">
<!--
function reveal(id) {
if (document.getElementById) {
document.getElementById(id).style.display = 'block';
document.getElementById(id+'Link').style.display = 'none';
}
}
//-->
</script>
</head>
<body>
<h1>Lint Report</h1>
<div class="titleSeparator"></div>
Check performed at Thu Feb 04 23:28:03 CET 2016.<br/>
6 errors and 0 warnings found:<br/><br/>
<table class="overview">
<tr><td></td><td class="categoryColumn"><a href="#Correctness">Correctness</a>
</td></tr>
<tr>
<td class="countColumn">6</td><td class="issueColumn"><img border="0" align="top" src="lint-results-release-fatal_files/lint-error.png" alt="Error" />
<a href="#ResourceType">ResourceType: Wrong Resource Type</a>
</td></tr>
<tr><td></td><td class="categoryColumn"><a href="#MissingIssues">Disabled Checks (206)</a>
</td></tr></table>
<br/>
<a name="Correctness"></a>
<div class="category"><a href="#" title="Return to top">Correctness</a><div class="categorySeparator"></div>
</div>
<a name="ResourceType"></a>
<div class="issue">
<div class="id"><a href="#" title="Return to top">ResourceType: Wrong Resource Type</a><div class="issueSeparator"></div>
</div>
<div class="warningslist">
<span class="location"><a href="../../src/org/apache/cordova/inappbrowser/InAppBrowser.java">../../src/org/apache/cordova/inappbrowser/InAppBrowser.java</a>:547</span>: <span class="message">Expected resource of type id</span><br /><pre class="errorlines">
<span class="lineno"> 544</span> actionButtonContainer.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
<span class="lineno"> 545</span> actionButtonContainer.setHorizontalGravity(Gravity.LEFT);
<span class="lineno"> 546</span> actionButtonContainer.setVerticalGravity(Gravity.CENTER_VERTICAL);
<span class="lineno"> 547</span> actionButtonContainer.setId(<span class="errorspan">1);
</span>
<span class="lineno"> 548</span>
<span class="lineno"> 549</span> // Back button
</pre>
<span class="location"><a href="../../src/org/apache/cordova/inappbrowser/InAppBrowser.java">../../src/org/apache/cordova/inappbrowser/InAppBrowser.java</a>:555</span>: <span class="message">Expected resource of type id</span><br /><pre class="errorlines">
<span class="lineno"> 552</span> backLayoutParams.addRule(RelativeLayout.ALIGN_LEFT);
<span class="lineno"> 553</span> back.setLayoutParams(backLayoutParams);
<span class="lineno"> 554</span> back.setContentDescription("Back Button");
<span class="lineno"> 555</span> back.setId(<span class="errorspan">2);
</span>
<span class="lineno"> 556</span> Resources activityRes = cordova.getActivity().getResources();
<span class="lineno"> 557</span> int backResId = activityRes.getIdentifier("ic_action_previous_item", "drawable", cordova.getActivity().getPackageName());
</pre>
<span class="location"><a href="../../src/org/apache/cordova/inappbrowser/InAppBrowser.java">../../src/org/apache/cordova/inappbrowser/InAppBrowser.java</a>:579</span>: <span class="message">Expected resource of type id</span><br /><pre class="errorlines">
<span class="lineno"> 576</span> forwardLayoutParams.addRule(RelativeLayout.RIGHT_OF, 2);
<span class="lineno"> 577</span> forward.setLayoutParams(forwardLayoutParams);
<span class="lineno"> 578</span> forward.setContentDescription("Forward Button");
<span class="lineno"> 579</span> forward.setId(<span class="errorspan">3);
</span>
<span class="lineno"> 580</span> int fwdResId = activityRes.getIdentifier("ic_action_next_item", "drawable", cordova.getActivity().getPackageName());
<span class="lineno"> 581</span> Drawable fwdIcon = activityRes.getDrawable(fwdResId);
</pre>
<span class="location"><a href="../../src/org/apache/cordova/inappbrowser/InAppBrowser.java">../../src/org/apache/cordova/inappbrowser/InAppBrowser.java</a>:602</span>: <span class="message">Expected resource of type id</span><br /><pre class="errorlines">
<span class="lineno"> 599</span> textLayoutParams.addRule(RelativeLayout.RIGHT_OF, 1);
<span class="lineno"> 600</span> textLayoutParams.addRule(RelativeLayout.LEFT_OF, 5);
<span class="lineno"> 601</span> edittext.setLayoutParams(textLayoutParams);
<span class="lineno"> 602</span> edittext.setId(<span class="errorspan">4);
</span>
<span class="lineno"> 603</span> edittext.setSingleLine(true);
<span class="lineno"> 604</span> edittext.setText(url);
</pre>
<span class="location"><a href="../../src/org/apache/cordova/inappbrowser/InAppBrowser.java">../../src/org/apache/cordova/inappbrowser/InAppBrowser.java</a>:625</span>: <span class="message">Expected resource of type id</span><br /><pre class="errorlines">
<span class="lineno"> 622</span> closeLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
<span class="lineno"> 623</span> close.setLayoutParams(closeLayoutParams);
<span class="lineno"> 624</span> forward.setContentDescription("Close Button");
<span class="lineno"> 625</span> close.setId(<span class="errorspan">5);
</span>
<span class="lineno"> 626</span> int closeResId = activityRes.getIdentifier("ic_action_remove", "drawable", cordova.getActivity().getPackageName());
<span class="lineno"> 627</span> Drawable closeIcon = activityRes.getDrawable(closeResId);
</pre>
<span class="location"><a href="../../src/org/apache/cordova/inappbrowser/InAppBrowser.java">../../src/org/apache/cordova/inappbrowser/InAppBrowser.java</a>:671</span>: <span class="message">Expected resource of type id</span><br /><pre class="errorlines">
<span class="lineno"> 668</span> }
<span class="lineno"> 669</span>
<span class="lineno"> 670</span> inAppWebView.loadUrl(url);
<span class="lineno"> 671</span> inAppWebView.setId(<span class="errorspan">6);
</span>
<span class="lineno"> 672</span> inAppWebView.getSettings().setLoadWithOverviewMode(true);
<span class="lineno"> 673</span> inAppWebView.getSettings().setUseWideViewPort(true);
</pre>
</div>
<div class="metadata">Priority: 7 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Fatal</span><div class="summary">
Explanation: Wrong Resource Type.</div>
<div class="explanation">
Ensures that resource id's passed to APIs are of the right type; for example, calling <code>Resources.getColor(R.string.name)</code> is wrong.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "ResourceType" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="MissingIssues"></a>
<div class="category">Disabled Checks<div class="categorySeparator"></div>
</div>
The following issues were not run by lint, either because the check is not enabled by default, or because it was disabled with a command line flag or via one or more lint.xml configuration files in the project directories.
<br/><br/>
<a name="AccidentalOctal"></a>
<div class="issue">
<div class="id">AccidentalOctal<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 2 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Accidental Octal.</div>
<div class="explanation">
In Groovy, an integer literal that starts with a leading 0 will be interpreted as an octal number. That is usually (always?) an accident and can lead to subtle bugs, for example when used in the <code>versionCode</code> of an app.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "AccidentalOctal" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="AdapterViewChildren"></a>
<div class="issue">
<div class="id">AdapterViewChildren<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 10 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: AdapterViews cannot have children in XML.</div>
<div class="explanation">
AdapterViews such as ListViews must be configured with data from Java code, such as a ListAdapter.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/reference/android/widget/AdapterView.html">http://developer.android.com/reference/android/widget/AdapterView.html</a>
</div><br/>To suppress this error, use the issue id "AdapterViewChildren" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="AddJavascriptInterface"></a>
<div class="issue">
<div class="id">AddJavascriptInterface<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 9 / 10<br/>
Category: Security</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: addJavascriptInterface Called.</div>
<div class="explanation">
For applications built for API levels below 17, <code>WebView#addJavascriptInterface</code> presents a security hazard as JavaScript on the target web page has the ability to use reflection to access the injected object's public fields and thus manipulate the host application in unintended ways.
</div>
<br/><div class="moreinfo">More info: <a href="https://labs.mwrinfosecurity.com/blog/2013/09/24/webview-addjavascriptinterface-remote-code-execution/">https://labs.mwrinfosecurity.com/blog/2013/09/24/webview-addjavascriptinterface-remote-code-execution/</a>
</div><br/>To suppress this error, use the issue id "AddJavascriptInterface" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="AllowAllHostnameVerifier"></a>
<div class="issue">
<div class="id">AllowAllHostnameVerifier<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Security</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Insecure HostnameVerifier.</div>
<div class="explanation">
This check looks for declaration or use of HostnameVerifier implementations whose <code>verify</code> method always returns true (thus trusting any hostname) which could result in insecure network traffic caused by trusting arbitrary hostnames in TLS/SSL certificates presented by peers.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "AllowAllHostnameVerifier" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="AllowBackup"></a>
<div class="issue">
<div class="id">AllowBackup<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Eclipse/ADT & Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 3 / 10<br/>
Category: Security</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: AllowBackup/FullBackupContent Problems.</div>
<div class="explanation">
The <code>allowBackup</code> attribute determines if an application's data can be backed up and restored. It is documented at <a href="http://developer.android.com/reference/android/R.attr.html#allowBackup">http://developer.android.com/reference/android/R.attr.html#allowBackup</a><br/>
<br/>
By default, this flag is set to <code>true</code>. When this flag is set to <code>true</code>, application data can be backed up and restored by the user using <code>adb backup</code> and <code>adb restore</code>.<br/>
<br/>
This may have security consequences for an application. <code>adb backup</code> allows users who have enabled USB debugging to copy application data off of the device. Once backed up, all application data can be read by the user. <code>adb restore</code> allows creation of application data from a source specified by the user. Following a restore, applications should not assume that the data, file permissions, and directory permissions were created by the application itself.<br/>
<br/>
Setting <code>allowBackup="false"</code> opts an application out of both backup and restore.<br/>
<br/>
To fix this warning, decide whether your application should support backup, and explicitly set <code>android:allowBackup=(true|false)"</code>.<br/>
<br/>
If not set to false, and if targeting API 23 or later, lint will also warn that you should set <code>android:fullBackupContent</code> to configure auto backup.
</div>
<br/><div class="moreinfo">More info: <ul><li><a href="https://developer.android.com/preview/backup/index.html">https://developer.android.com/preview/backup/index.html</a>
<li><a href="http://developer.android.com/reference/android/R.attr.html#allowBackup">http://developer.android.com/reference/android/R.attr.html#allowBackup</a>
</ul></div><br/>To suppress this error, use the issue id "AllowBackup" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="AlwaysShowAction"></a>
<div class="issue">
<div class="id">AlwaysShowAction<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 3 / 10<br/>
Category: Usability</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Usage of <code>showAsAction=always</code></div>
<div class="explanation">
Using <code>showAsAction="always"</code> in menu XML, or <code>MenuItem.SHOW_AS_ACTION_ALWAYS</code> in Java code is usually a deviation from the user interface style guide.Use <code>ifRoom</code> or the corresponding <code>MenuItem.SHOW_AS_ACTION_IF_ROOM</code> instead.<br/>
<br/>
If <code>always</code> is used sparingly there are usually no problems and behavior is roughly equivalent to <code>ifRoom</code> but with preference over other <code>ifRoom</code> items. Using it more than twice in the same menu is a bad idea.<br/>
<br/>
This check looks for menu XML files that contain more than two <code>always</code> actions, or some <code>always</code> actions and no <code>ifRoom</code> actions. In Java code, it looks for projects that contain references to <code>MenuItem.SHOW_AS_ACTION_ALWAYS</code> and no references to <code>MenuItem.SHOW_AS_ACTION_IF_ROOM</code>.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/design/patterns/actionbar.html">http://developer.android.com/design/patterns/actionbar.html</a>
</div><br/>To suppress this error, use the issue id "AlwaysShowAction" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="AndroidGradlePluginVersion"></a>
<div class="issue">
<div class="id">AndroidGradlePluginVersion<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 8 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Incompatible Android Gradle Plugin.</div>
<div class="explanation">
Not all versions of the Android Gradle plugin are compatible with all versions of the SDK. If you update your tools, or if you are trying to open a project that was built with an old version of the tools, you may need to update your plugin version number.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "AndroidGradlePluginVersion" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="AppCompatMethod"></a>
<div class="issue">
<div class="id">AppCompatMethod<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Using Wrong AppCompat Method.</div>
<div class="explanation">
When using the appcompat library, there are some methods you should be calling instead of the normal ones; for example, <code>getSupportActionBar()</code> instead of <code>getActionBar()</code>. This lint check looks for calls to the wrong method.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/tools/support-library/index.html">http://developer.android.com/tools/support-library/index.html</a>
</div><br/>To suppress this error, use the issue id "AppCompatMethod" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="AppCompatResource"></a>
<div class="issue">
<div class="id">AppCompatResource<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Usability</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Menu namespace.</div>
<div class="explanation">
When using the appcompat library, menu resources should refer to the <code>showAsAction</code> in the <code>app:</code> namespace, not the <code>android:</code> namespace.<br/>
<br/>
Similarly, when <b>not</b> using the appcompat library, you should be using the <code>android:showAsAction</code> attribute.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "AppCompatResource" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="Assert"></a>
<div class="issue">
<div class="id">Assert<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Assertions.</div>
<div class="explanation">
Assertions are not checked at runtime. There are ways to request that they be used by Dalvik (<code>adb shell setprop debug.assert 1</code>), but the property is ignored in many places and can not be relied upon. Instead, perform conditional checking inside <code>if (BuildConfig.DEBUG) { }</code> blocks. That constant is a static final boolean which is true in debug builds and false in release builds, and the Java compiler completely removes all code inside the if-body from the app.<br/>
<br/>
For example, you can replace <code>assert speed > 0</code> with <code>if (BuildConfig.DEBUG &amp;&amp; !(speed > 0)) { throw new AssertionError() }</code>.<br/>
<br/>
(Note: This lint check does not flag assertions purely asserting nullness or non-nullness; these are typically more intended for tools usage than runtime checks.)
</div>
<br/><div class="moreinfo">More info: <a href="https://code.google.com/p/android/issues/detail?id=65183">https://code.google.com/p/android/issues/detail?id=65183</a>
</div><br/>To suppress this error, use the issue id "Assert" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="BackButton"></a>
<div class="issue">
<div class="id">BackButton<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Default<br/>
Priority: 6 / 10<br/>
Category: Usability</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Back button.</div>
<div class="explanation">
According to the Android Design Guide,<br/>
<br/>
"Other platforms use an explicit back button with label to allow the user to navigate up the application's hierarchy. Instead, Android uses the main action bar's app icon for hierarchical navigation and the navigation bar's back button for temporal navigation."<br/>
This check is not very sophisticated (it just looks for buttons with the label "Back"), so it is disabled by default to not trigger on common scenarios like pairs of Back/Next buttons to paginate through screens.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/design/patterns/pure-android.html">http://developer.android.com/design/patterns/pure-android.html</a>
</div><br/>To suppress this error, use the issue id "BackButton" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="ButtonCase"></a>
<div class="issue">
<div class="id">ButtonCase<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 2 / 10<br/>
Category: Usability</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Cancel/OK dialog button capitalization.</div>
<div class="explanation">
The standard capitalization for OK/Cancel dialogs is "OK" and "Cancel". To ensure that your dialogs use the standard strings, you can use the resource strings @android:string/ok and @android:string/cancel.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "ButtonCase" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="ButtonOrder"></a>
<div class="issue">
<div class="id">ButtonOrder<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 8 / 10<br/>
Category: Usability</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Button order.</div>
<div class="explanation">
According to the Android Design Guide,<br/>
<br/>
"Action buttons are typically Cancel and/or OK, with OK indicating the preferred or most likely action. However, if the options consist of specific actions such as Close or Wait rather than a confirmation or cancellation of the action described in the content, then all the buttons should be active verbs. As a rule, the dismissive action of a dialog is always on the left whereas the affirmative actions are on the right."<br/>
<br/>
This check looks for button bars and buttons which look like cancel buttons, and makes sure that these are on the left.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/design/building-blocks/dialogs.html">http://developer.android.com/design/building-blocks/dialogs.html</a>
</div><br/>To suppress this error, use the issue id "ButtonOrder" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="ButtonStyle"></a>
<div class="issue">
<div class="id">ButtonStyle<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Usability</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Button should be borderless.</div>
<div class="explanation">
Button bars typically use a borderless style for the buttons. Set the <code>style="?android:attr/buttonBarButtonStyle"</code> attribute on each of the buttons, and set <code>style="?android:attr/buttonBarStyle"</code> on the parent layout
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/design/building-blocks/buttons.html">http://developer.android.com/design/building-blocks/buttons.html</a>
</div><br/>To suppress this error, use the issue id "ButtonStyle" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="CheckResult"></a>
<div class="issue">
<div class="id">CheckResult<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Ignoring results.</div>
<div class="explanation">
Some methods have no side effects, an calling them without doing something without the result is suspicious.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "CheckResult" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="ClickableViewAccessibility"></a>
<div class="issue">
<div class="id">ClickableViewAccessibility<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Accessibility</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Accessibility in Custom Views.</div>
<div class="explanation">
If a <code>View</code> that overrides <code>onTouchEvent</code> or uses an <code>OnTouchListener</code> does not also implement <code>performClick</code> and call it when clicks are detected, the <code>View</code> may not handle accessibility actions properly. Logic handling the click actions should ideally be placed in <code>View#performClick</code> as some accessibility services invoke <code>performClick</code> when a click action should occur.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "ClickableViewAccessibility" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="CommitPrefEdits"></a>
<div class="issue">
<div class="id">CommitPrefEdits<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Missing <code>commit()</code> on <code>SharedPreference</code> editor.</div>
<div class="explanation">
After calling <code>edit()</code> on a <code>SharedPreference</code>, you must call <code>commit()</code> or <code>apply()</code> on the editor to save the results.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "CommitPrefEdits" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="CommitTransaction"></a>
<div class="issue">
<div class="id">CommitTransaction<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 7 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Missing <code>commit()</code> calls.</div>
<div class="explanation">
After creating a <code>FragmentTransaction</code>, you typically need to commit it as well
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "CommitTransaction" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="ContentDescription"></a>
<div class="issue">
<div class="id">ContentDescription<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Eclipse/ADT & Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 3 / 10<br/>
Category: Accessibility</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Image without <code>contentDescription</code></div>
<div class="explanation">
Non-textual widgets like ImageViews and ImageButtons should use the <code>contentDescription</code> attribute to specify a textual description of the widget such that screen readers and other accessibility tools can adequately describe the user interface.<br/>
<br/>
Note that elements in application screens that are purely decorative and do not provide any content or enable a user action should not have accessibility content descriptions. In this case, just suppress the lint warning with a tools:ignore="ContentDescription" attribute.<br/>
<br/>
Note that for text fields, you should not set both the <code>hint</code> and the <code>contentDescription</code> attributes since the hint will never be shown. Just set the <code>hint</code>. See <a href="http://developer.android.com/guide/topics/ui/accessibility/checklist.html#special-cases">http://developer.android.com/guide/topics/ui/accessibility/checklist.html#special-cases</a>.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "ContentDescription" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="CustomViewStyleable"></a>
<div class="issue">
<div class="id">CustomViewStyleable<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Mismatched Styleable/Custom View Name.</div>
<div class="explanation">
The convention for custom views is to use a <code>declare-styleable</code> whose name matches the custom view class name. The IDE relies on this convention such that for example code completion can be offered for attributes in a custom view in layout XML resource files.<br/>
<br/>
(Similarly, layout parameter classes should use the suffix <code>_Layout</code>.)
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "CustomViewStyleable" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="CutPasteId"></a>
<div class="issue">
<div class="id">CutPasteId<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Likely cut &amp; paste mistakes.</div>
<div class="explanation">
This lint check looks for cases where you have cut &amp; pasted calls to <code>findViewById</code> but have forgotten to update the R.id field. It's possible that your code is simply (redundantly) looking up the field repeatedly, but lint cannot distinguish that from a case where you for example want to initialize fields <code>prev</code> and <code>next</code> and you cut &amp; pasted <code>findViewById(R.id.prev)</code> and forgot to update the second initialization to <code>R.id.next</code>.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "CutPasteId" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="DalvikOverride"></a>
<div class="issue">
<div class="id">DalvikOverride<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 7 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Method considered overridden by Dalvik.</div>
<div class="explanation">
The Android virtual machine will treat a package private method in one class as overriding a package private method in its super class, even if they are in separate packages. This may be surprising, but for compatibility reasons the behavior has not been changed (yet).<br/>
<br/>
If you really did intend for this method to override the other, make the method <code>protected</code> instead.<br/>
<br/>
If you did <b>not</b> intend the override, consider making the method private, or changing its name or signature.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "DalvikOverride" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="DefaultLocale"></a>
<div class="issue">
<div class="id">DefaultLocale<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Implied default locale in case conversion.</div>
<div class="explanation">
Calling <code>String#toLowerCase()</code> or <code>#toUpperCase()</code> <b>without specifying an explicit locale</b> is a common source of bugs. The reason for that is that those methods will use the current locale on the user's device, and even though the code appears to work correctly when you are developing the app, it will fail in some locales. For example, in the Turkish locale, the uppercase replacement for <code>i</code> is <b>not</b> <code>I</code>.<br/>
<br/>
If you want the methods to just perform ASCII replacement, for example to convert an enum name, call <code>String#toUpperCase(Locale.US)</code> instead. If you really want to use the current locale, call <code>String#toUpperCase(Locale.getDefault())</code> instead.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/reference/java/util/Locale.html#default_locale">http://developer.android.com/reference/java/util/Locale.html#default_locale</a>
</div><br/>To suppress this error, use the issue id "DefaultLocale" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="Deprecated"></a>
<div class="issue">
<div class="id">Deprecated<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 2 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Using deprecated resources.</div>
<div class="explanation">
Deprecated views, attributes and so on are deprecated because there is a better way to do something. Do it that new way. You've been warned.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "Deprecated" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="DeviceAdmin"></a>
<div class="issue">
<div class="id">DeviceAdmin<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 7 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Malformed Device Admin.</div>
<div class="explanation">
If you register a broadcast receiver which acts as a device admin, you must also register an <code>&lt;intent-filter></code> for the action <code>android.app.action.DEVICE_ADMIN_ENABLED</code>, without any <code>&lt;data></code>, such that the device admin can be activated/deactivated.<br/>
<br/>
To do this, add<br/>
<code>&lt;intent-filter></code><br/>
<code>&lt;action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /></code><br/>
<code>&lt;/intent-filter></code><br/>
to your <code>&lt;receiver></code>.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "DeviceAdmin" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="DisableBaselineAlignment"></a>
<div class="issue">
<div class="id">DisableBaselineAlignment<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Eclipse/ADT & Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 3 / 10<br/>
Category: Performance</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Missing <code>baselineAligned</code> attribute.</div>
<div class="explanation">
When a LinearLayout is used to distribute the space proportionally between nested layouts, the baseline alignment property should be turned off to make the layout computation faster.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "DisableBaselineAlignment" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="DrawAllocation"></a>
<div class="issue">
<div class="id">DrawAllocation<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 9 / 10<br/>
Category: Performance</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Memory allocations within drawing code.</div>
<div class="explanation">
You should avoid allocating objects during a drawing or layout operation. These are called frequently, so a smooth UI can be interrupted by garbage collection pauses caused by the object allocations.<br/>
<br/>
The way this is generally handled is to allocate the needed objects up front and to reuse them for each drawing operation.<br/>
<br/>
Some methods allocate memory on your behalf (such as <code>Bitmap.create</code>), and these should be handled in the same way.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "DrawAllocation" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="DuplicateDefinition"></a>
<div class="issue">
<div class="id">DuplicateDefinition<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Duplicate definitions of resources.</div>
<div class="explanation">
You can define a resource multiple times in different resource folders; that's how string translations are done, for example. However, defining the same resource more than once in the same resource folder is likely an error, for example attempting to add a new resource without realizing that the name is already used, and so on.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "DuplicateDefinition" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="DuplicateIncludedIds"></a>
<div class="issue">
<div class="id">DuplicateIncludedIds<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Duplicate ids across layouts combined with include tags.</div>
<div class="explanation">
It's okay for two independent layouts to use the same ids. However, if layouts are combined with include tags, then the id's need to be unique within any chain of included layouts, or <code>Activity#findViewById()</code> can return an unexpected view.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "DuplicateIncludedIds" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="DuplicateUsesFeature"></a>
<div class="issue">
<div class="id">DuplicateUsesFeature<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Feature declared more than once.</div>
<div class="explanation">
A given feature should only be declared once in the manifest.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "DuplicateUsesFeature" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="EasterEgg"></a>
<div class="issue">
<div class="id">EasterEgg<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Default<br/>
Priority: 6 / 10<br/>
Category: Security</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Code contains easter egg.</div>
<div class="explanation">
An "easter egg" is code deliberately hidden in the code, both from potential users and even from other developers. This lint check looks for code which looks like it may be hidden from sight.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "EasterEgg" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="ExportedContentProvider"></a>
<div class="issue">
<div class="id">ExportedContentProvider<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Security</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Content provider does not require permission.</div>
<div class="explanation">
Content providers are exported by default and any application on the system can potentially use them to read and write data. If the content provider provides access to sensitive data, it should be protected by specifying <code>export=false</code> in the manifest or by protecting it with a permission that can be granted to other applications.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "ExportedContentProvider" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="ExportedPreferenceActivity"></a>
<div class="issue">
<div class="id">ExportedPreferenceActivity<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 8 / 10<br/>
Category: Security</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: PreferenceActivity should not be exported.</div>
<div class="explanation">
Fragment injection gives anyone who can send your PreferenceActivity an intent the ability to load any fragment, with any arguments, in your process.
</div>
<br/><div class="moreinfo">More info: <a href="http://securityintelligence.com/new-vulnerability-android-framework-fragment-injection">http://securityintelligence.com/new-vulnerability-android-framework-fragment-injection</a>
</div><br/>To suppress this error, use the issue id "ExportedPreferenceActivity" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="ExportedReceiver"></a>
<div class="issue">
<div class="id">ExportedReceiver<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Security</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Receiver does not require permission.</div>
<div class="explanation">
Exported receivers (receivers which either set <code>exported=true</code> or contain an intent-filter and do not specify <code>exported=false</code>) should define a permission that an entity must have in order to launch the receiver or bind to it. Without this, any application can use this receiver.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "ExportedReceiver" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="ExportedService"></a>
<div class="issue">
<div class="id">ExportedService<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Eclipse/ADT & Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Security</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Exported service does not require permission.</div>
<div class="explanation">
Exported services (services which either set <code>exported=true</code> or contain an intent-filter and do not specify <code>exported=false</code>) should define a permission that an entity must have in order to launch the service or bind to it. Without this, any application can use this service.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "ExportedService" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="ExtraText"></a>
<div class="issue">
<div class="id">ExtraText<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 3 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Extraneous text in resource files.</div>
<div class="explanation">
Layout resource files should only contain elements and attributes. Any XML text content found in the file is likely accidental (and potentially dangerous if the text resembles XML and the developer believes the text to be functional)
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "ExtraText" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="FieldGetter"></a>
<div class="issue">
<div class="id">FieldGetter<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Default<br/>
Priority: 4 / 10<br/>
Category: Performance</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Using getter instead of field.</div>
<div class="explanation">
Accessing a field within the class that defines a getter for that field is at least 3 times faster than calling the getter. For simple getters that do nothing other than return the field, you might want to just reference the local field directly instead.<br/>
<br/>
<b>NOTE</b>: As of Android 2.3 (Gingerbread), this optimization is performed automatically by Dalvik, so there is no need to change your code; this is only relevant if you are targeting older versions of Android.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/guide/practices/design/performance.html#internal_get_set">http://developer.android.com/guide/practices/design/performance.html#internal_get_set</a>
</div><br/>To suppress this error, use the issue id "FieldGetter" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="FloatMath"></a>
<div class="issue">
<div class="id">FloatMath<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 3 / 10<br/>
Category: Performance</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Using <code>FloatMath</code> instead of <code>Math</code></div>
<div class="explanation">
In older versions of Android, using <code>android.util.FloatMath</code> was recommended for performance reasons when operating on floats. However, on modern hardware doubles are just as fast as float (though they take more memory), and in recent versions of Android, <code>FloatMath</code> is actually slower than using <code>java.lang.Math</code> due to the way the JIT optimizes <code>java.lang.Math</code>. Therefore, you should use <code>Math</code> instead of <code>FloatMath</code> if you are only targeting Froyo and above.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/guide/practices/design/performance.html#avoidfloat">http://developer.android.com/guide/practices/design/performance.html#avoidfloat</a>
</div><br/>To suppress this error, use the issue id "FloatMath" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="GetInstance"></a>
<div class="issue">
<div class="id">GetInstance<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 9 / 10<br/>
Category: Security</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Cipher.getInstance with ECB.</div>
<div class="explanation">
<code>Cipher#getInstance</code> should not be called with ECB as the cipher mode or without setting the cipher mode because the default mode on android is ECB, which is insecure.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "GetInstance" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="GifUsage"></a>
<div class="issue">
<div class="id">GifUsage<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Usability:Icons</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Using <code>.gif</code> format for bitmaps is discouraged.</div>
<div class="explanation">
The <code>.gif</code> file format is discouraged. Consider using <code>.png</code> (preferred) or <code>.jpg</code> (acceptable) instead.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/guide/topics/resources/drawable-resource.html#Bitmap">http://developer.android.com/guide/topics/resources/drawable-resource.html#Bitmap</a>
</div><br/>To suppress this error, use the issue id "GifUsage" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="GoogleAppIndexingApiWarning"></a>
<div class="issue">
<div class="id">GoogleAppIndexingApiWarning<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Default<br/>
Priority: 5 / 10<br/>
Category: Usability</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Missing support for Google App Indexing Api.</div>
<div class="explanation">
Adds deep links to get your app into the Google index, to get installs and traffic to your app from Google Search.
</div>
<br/><div class="moreinfo">More info: <a href="https://g.co/AppIndexing/AndroidStudio">https://g.co/AppIndexing/AndroidStudio</a>
</div><br/>To suppress this error, use the issue id "GoogleAppIndexingApiWarning" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="GoogleAppIndexingDeepLinkError"></a>
<div class="issue">
<div class="id">GoogleAppIndexingDeepLinkError<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Usability</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Deep link not supported by app for Google App Indexing.</div>
<div class="explanation">
Ensure the deep link is supported by your app, to get installs and traffic to yourapp from Google Search.
</div>
<br/><div class="moreinfo">More info: <a href="https://g.co/AppIndexing/AndroidStudio">https://g.co/AppIndexing/AndroidStudio</a>
</div><br/>To suppress this error, use the issue id "GoogleAppIndexingDeepLinkError" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="GoogleAppIndexingWarning"></a>
<div class="issue">
<div class="id">GoogleAppIndexingWarning<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Usability</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Missing support for Google App Indexing.</div>
<div class="explanation">
Adds deep links to get your app into the Google index, to get installs and traffic to your app from Google Search.
</div>
<br/><div class="moreinfo">More info: <a href="https://g.co/AppIndexing/AndroidStudio">https://g.co/AppIndexing/AndroidStudio</a>
</div><br/>To suppress this error, use the issue id "GoogleAppIndexingWarning" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="GradleCompatible"></a>
<div class="issue">
<div class="id">GradleCompatible<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 8 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Incompatible Gradle Versions.</div>
<div class="explanation">
There are some combinations of libraries, or tools and libraries, that are incompatible, or can lead to bugs. One such incompatibility is compiling with a version of the Android support libraries that is not the latest version (or in particular, a version lower than your <code>targetSdkVersion</code>.)
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "GradleCompatible" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="GradleDependency"></a>
<div class="issue">
<div class="id">GradleDependency<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 4 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Obsolete Gradle Dependency.</div>
<div class="explanation">
This detector looks for usages of libraries where the version you are using is not the current stable release. Using older versions is fine, and there are cases where you deliberately want to stick with an older version. However, you may simply not be aware that a more recent version is available, and that is what this lint check helps find.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "GradleDependency" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="GradleDeprecated"></a>
<div class="issue">
<div class="id">GradleDeprecated<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Deprecated Gradle Construct.</div>
<div class="explanation">
This detector looks for deprecated Gradle constructs which currently work but will likely stop working in a future update.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "GradleDeprecated" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="GradleDynamicVersion"></a>
<div class="issue">
<div class="id">GradleDynamicVersion<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 4 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Gradle Dynamic Version.</div>
<div class="explanation">
Using <code>+</code> in dependencies lets you automatically pick up the latest available version rather than a specific, named version. However, this is not recommended; your builds are not repeatable; you may have tested with a slightly different version than what the build server used. (Using a dynamic version as the major version number is more problematic than using it in the minor version position.)
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "GradleDynamicVersion" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="GradleGetter"></a>
<div class="issue">
<div class="id">GradleGetter<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Gradle Implicit Getter Call.</div>
<div class="explanation">
Gradle will let you replace specific constants in your build scripts with method calls, so you can for example dynamically compute a version string based on your current version control revision number, rather than hardcoding a number.<br/>
<br/>
When computing a version name, it's tempting to for example call the method to do that <code>getVersionName</code>. However, when you put that method call inside the <code>defaultConfig</code> block, you will actually be calling the Groovy getter for the <code>versionName</code> property instead. Therefore, you need to name your method something which does not conflict with the existing implicit getters. Consider using <code>compute</code> as a prefix instead of <code>get</code>.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "GradleGetter" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="GradleIdeError"></a>
<div class="issue">
<div class="id">GradleIdeError<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 4 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Gradle IDE Support Issues.</div>
<div class="explanation">
Gradle is highly flexible, and there are things you can do in Gradle files which can make it hard or impossible for IDEs to properly handle the project. This lint check looks for constructs that potentially break IDE support.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "GradleIdeError" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="GradleOverrides"></a>
<div class="issue">
<div class="id">GradleOverrides<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 4 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Value overridden by Gradle build script.</div>
<div class="explanation">
The value of (for example) <code>minSdkVersion</code> is only used if it is not specified in the <code>build.gradle</code> build scripts. When specified in the Gradle build scripts, the manifest value is ignored and can be misleading, so should be removed to avoid ambiguity.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "GradleOverrides" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="GradlePath"></a>
<div class="issue">
<div class="id">GradlePath<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 4 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Gradle Path Issues.</div>
<div class="explanation">
Gradle build scripts are meant to be cross platform, so file paths use Unix-style path separators (a forward slash) rather than Windows path separators (a backslash). Similarly, to keep projects portable and repeatable, avoid using absolute paths on the system; keep files within the project instead. To share code between projects, consider creating an android-library and an AAR dependency
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "GradlePath" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="GrantAllUris"></a>
<div class="issue">
<div class="id">GrantAllUris<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 7 / 10<br/>
Category: Security</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Content provider shares everything.</div>
<div class="explanation">
The <code>&lt;grant-uri-permission></code> element allows specific paths to be shared. This detector checks for a path URL of just '/' (everything), which is probably not what you want; you should limit access to a subset.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "GrantAllUris" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="HandlerLeak"></a>
<div class="issue">
<div class="id">HandlerLeak<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 4 / 10<br/>
Category: Performance</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Handler reference leaks.</div>
<div class="explanation">
Since this Handler is declared as an inner class, it may prevent the outer class from being garbage collected. If the Handler is using a Looper or MessageQueue for a thread other than the main thread, then there is no issue. If the Handler is using the Looper or MessageQueue of the main thread, you need to fix your Handler declaration, as follows: Declare the Handler as a static class; In the outer class, instantiate a WeakReference to the outer class and pass this object to your Handler when you instantiate the Handler; Make all references to members of the outer class using the WeakReference object.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "HandlerLeak" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="HardcodedText"></a>
<div class="issue">
<div class="id">HardcodedText<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Eclipse/ADT&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Internationalization</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Hardcoded text.</div>
<div class="explanation">
Hardcoding text attributes directly in layout files is bad for several reasons:<br/>
<br/>
* When creating configuration variations (for example for landscape or portrait)you have to repeat the actual text (and keep it up to date when making changes)<br/>
<br/>
* The application cannot be translated to other languages by just adding new translations for existing string resources.<br/>
<br/>
In Android Studio and Eclipse there are quickfixes to automatically extract this hardcoded string into a resource lookup.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "HardcodedText" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="IconColors"></a>
<div class="issue">
<div class="id">IconColors<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Usability:Icons</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Icon colors do not follow the recommended visual style.</div>
<div class="explanation">
Notification icons and Action Bar icons should only white and shades of gray. See the Android Design Guide for more details. Note that the way Lint decides whether an icon is an action bar icon or a notification icon is based on the filename prefix: <code>ic_menu_</code> for action bar icons, <code>ic_stat_</code> for notification icons etc. These correspond to the naming conventions documented in <a href="http://developer.android.com/guide/practices/ui_guidelines/icon_design.html">http://developer.android.com/guide/practices/ui_guidelines/icon_design.html</a>
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/design/style/iconography.html">http://developer.android.com/design/style/iconography.html</a>
</div><br/>To suppress this error, use the issue id "IconColors" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="IconDensities"></a>
<div class="issue">
<div class="id">IconDensities<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 4 / 10<br/>
Category: Usability:Icons</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Icon densities validation.</div>
<div class="explanation">
Icons will look best if a custom version is provided for each of the major screen density classes (low, medium, high, extra high). This lint check identifies icons which do not have complete coverage across the densities.<br/>
<br/>
Low density is not really used much anymore, so this check ignores the ldpi density. To force lint to include it, set the environment variable <code>ANDROID_LINT_INCLUDE_LDPI=true</code>. For more information on current density usage, see <a href="http://developer.android.com/resources/dashboard/screens.html">http://developer.android.com/resources/dashboard/screens.html</a>
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/guide/practices/screens_support.html">http://developer.android.com/guide/practices/screens_support.html</a>
</div><br/>To suppress this error, use the issue id "IconDensities" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="IconDipSize"></a>
<div class="issue">
<div class="id">IconDipSize<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Usability:Icons</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Icon density-independent size validation.</div>
<div class="explanation">
Checks the all icons which are provided in multiple densities, all compute to roughly the same density-independent pixel (<code>dip</code>) size. This catches errors where images are either placed in the wrong folder, or icons are changed to new sizes but some folders are forgotten.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "IconDipSize" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="IconDuplicates"></a>
<div class="issue">
<div class="id">IconDuplicates<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 3 / 10<br/>
Category: Usability:Icons</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Duplicated icons under different names.</div>
<div class="explanation">
If an icon is repeated under different names, you can consolidate and just use one of the icons and delete the others to make your application smaller. However, duplicated icons usually are not intentional and can sometimes point to icons that were accidentally overwritten or accidentally not updated.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "IconDuplicates" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="IconDuplicatesConfig"></a>
<div class="issue">
<div class="id">IconDuplicatesConfig<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Usability:Icons</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Identical bitmaps across various configurations.</div>
<div class="explanation">
If an icon is provided under different configuration parameters such as <code>drawable-hdpi</code> or <code>-v11</code>, they should typically be different. This detector catches cases where the same icon is provided in different configuration folder which is usually not intentional.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "IconDuplicatesConfig" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="IconExpectedSize"></a>
<div class="issue">
<div class="id">IconExpectedSize<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Default<br/>
Priority: 5 / 10<br/>
Category: Usability:Icons</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Icon has incorrect size.</div>
<div class="explanation">
There are predefined sizes (for each density) for launcher icons. You should follow these conventions to make sure your icons fit in with the overall look of the platform.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/design/style/iconography.html">http://developer.android.com/design/style/iconography.html</a>
</div><br/>To suppress this error, use the issue id "IconExpectedSize" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="IconExtension"></a>
<div class="issue">
<div class="id">IconExtension<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 3 / 10<br/>
Category: Usability:Icons</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Icon format does not match the file extension.</div>
<div class="explanation">
Ensures that icons have the correct file extension (e.g. a <code>.png</code> file is really in the PNG format and not for example a GIF file named <code>.png</code>.)
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "IconExtension" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="IconLauncherShape"></a>
<div class="issue">
<div class="id">IconLauncherShape<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Usability:Icons</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: The launcher icon shape should use a distinct silhouette.</div>
<div class="explanation">
According to the Android Design Guide (<a href="http://developer.android.com/design/style/iconography.html">http://developer.android.com/design/style/iconography.html</a>) your launcher icons should "use a distinct silhouette", a "three-dimensional, front view, with a slight perspective as if viewed from above, so that users perceive some depth."<br/>
<br/>
The unique silhouette implies that your launcher icon should not be a filled square.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/design/style/iconography.html">http://developer.android.com/design/style/iconography.html</a>
</div><br/>To suppress this error, use the issue id "IconLauncherShape" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="IconLocation"></a>
<div class="issue">
<div class="id">IconLocation<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Usability:Icons</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Image defined in density-independent drawable folder.</div>
<div class="explanation">
The res/drawable folder is intended for density-independent graphics such as shapes defined in XML. For bitmaps, move it to <code>drawable-mdpi</code> and consider providing higher and lower resolution versions in <code>drawable-ldpi</code>, <code>drawable-hdpi</code> and <code>drawable-xhdpi</code>. If the icon <b>really</b> is density independent (for example a solid color) you can place it in <code>drawable-nodpi</code>.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/guide/practices/screens_support.html">http://developer.android.com/guide/practices/screens_support.html</a>
</div><br/>To suppress this error, use the issue id "IconLocation" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="IconMissingDensityFolder"></a>
<div class="issue">
<div class="id">IconMissingDensityFolder<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 3 / 10<br/>
Category: Usability:Icons</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Missing density folder.</div>
<div class="explanation">
Icons will look best if a custom version is provided for each of the major screen density classes (low, medium, high, extra-high, extra-extra-high). This lint check identifies folders which are missing, such as <code>drawable-hdpi</code>.<br/>
<br/>
Low density is not really used much anymore, so this check ignores the ldpi density. To force lint to include it, set the environment variable <code>ANDROID_LINT_INCLUDE_LDPI=true</code>. For more information on current density usage, see <a href="http://developer.android.com/resources/dashboard/screens.html">http://developer.android.com/resources/dashboard/screens.html</a>
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/guide/practices/screens_support.html">http://developer.android.com/guide/practices/screens_support.html</a>
</div><br/>To suppress this error, use the issue id "IconMissingDensityFolder" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="IconMixedNinePatch"></a>
<div class="issue">
<div class="id">IconMixedNinePatch<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Usability:Icons</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Clashing PNG and 9-PNG files.</div>
<div class="explanation">
If you accidentally name two separate resources <code>file.png</code> and <code>file.9.png</code>, the image file and the nine patch file will both map to the same drawable resource, <code>@drawable/file</code>, which is probably not what was intended.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "IconMixedNinePatch" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="IconNoDpi"></a>
<div class="issue">
<div class="id">IconNoDpi<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 7 / 10<br/>
Category: Usability:Icons</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Icon appears in both <code>-nodpi</code> and dpi folders.</div>
<div class="explanation">
Bitmaps that appear in <code>drawable-nodpi</code> folders will not be scaled by the Android framework. If a drawable resource of the same name appears <b>both</b> in a <code>-nodpi</code> folder as well as a dpi folder such as <code>drawable-hdpi</code>, then the behavior is ambiguous and probably not intentional. Delete one or the other, or use different names for the icons.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "IconNoDpi" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="IconXmlAndPng"></a>
<div class="issue">
<div class="id">IconXmlAndPng<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 7 / 10<br/>
Category: Usability:Icons</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Icon is specified both as <code>.xml</code> file and as a bitmap.</div>
<div class="explanation">
If a drawable resource appears as an <code>.xml</code> file in the <code>drawable/</code> folder, it's usually not intentional for it to also appear as a bitmap using the same name; generally you expect the drawable XML file to define states and each state has a corresponding drawable bitmap.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "IconXmlAndPng" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="IllegalResourceRef"></a>
<div class="issue">
<div class="id">IllegalResourceRef<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 8 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Name and version must be integer or string, not resource.</div>
<div class="explanation">
For the <code>versionCode</code> attribute, you have to specify an actual integer literal; you cannot use an indirection with a <code>@dimen/name</code> resource. Similarly, the <code>versionName</code> attribute should be an actual string, not a string resource url.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "IllegalResourceRef" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="ImpliedQuantity"></a>
<div class="issue">
<div class="id">ImpliedQuantity<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Correctness:Messages</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Implied Quantities.</div>
<div class="explanation">
Plural strings should generally include a <code>%s</code> or <code>%d</code> formatting argument. In locales like English, the <code>one</code> quantity only applies to a single value, 1, but that's not true everywhere. For example, in Slovene, the <code>one</code> quantity will apply to 1, 101, 201, 301, and so on. Similarly, there are locales where multiple values match the <code>zero</code> and <code>two</code> quantities.<br/>
<br/>
In these locales, it is usually an error to have a message which does not include a formatting argument (such as '%d'), since it will not be clear from the grammar what quantity the quantity string is describing.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/guide/topics/resources/string-resource.html#Plurals">http://developer.android.com/guide/topics/resources/string-resource.html#Plurals</a>
</div><br/>To suppress this error, use the issue id "ImpliedQuantity" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="InOrMmUsage"></a>
<div class="issue">
<div class="id">InOrMmUsage<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 4 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Using <code>mm</code> or <code>in</code> dimensions.</div>
<div class="explanation">
Avoid using <code>mm</code> (millimeters) or <code>in</code> (inches) as the unit for dimensions.<br/>
<br/>
While it should work in principle, unfortunately many devices do not report the correct true physical density, which means that the dimension calculations won't work correctly. You are better off using <code>dp</code> (and for font sizes, <code>sp</code>.)
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "InOrMmUsage" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="IncludeLayoutParam"></a>
<div class="issue">
<div class="id">IncludeLayoutParam<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Ignored layout params on include.</div>
<div class="explanation">
Layout parameters specified on an <code>&lt;include></code> tag will only be used if you also override <code>layout_width</code> and <code>layout_height</code> on the <code>&lt;include></code> tag; otherwise they will be ignored.
</div>
<br/><div class="moreinfo">More info: <a href="http://stackoverflow.com/questions/2631614/does-android-xml-layouts-include-tag-really-work">http://stackoverflow.com/questions/2631614/does-android-xml-layouts-include-tag-really-work</a>
</div><br/>To suppress this error, use the issue id "IncludeLayoutParam" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="InconsistentArrays"></a>
<div class="issue">
<div class="id">InconsistentArrays<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 7 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Inconsistencies in array element counts.</div>
<div class="explanation">
When an array is translated in a different locale, it should normally have the same number of elements as the original array. When adding or removing elements to an array, it is easy to forget to update all the locales, and this lint warning finds inconsistencies like these.<br/>
<br/>
Note however that there may be cases where you really want to declare a different number of array items in each configuration (for example where the array represents available options, and those options differ for different layout orientations and so on), so use your own judgement to decide if this is really an error.<br/>
<br/>
You can suppress this error type if it finds false errors in your project.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "InconsistentArrays" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="InconsistentLayout"></a>
<div class="issue">
<div class="id">InconsistentLayout<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Inconsistent Layouts.</div>
<div class="explanation">
This check ensures that a layout resource which is defined in multiple resource folders, specifies the same set of widgets.<br/>
<br/>
This finds cases where you have accidentally forgotten to add a widget to all variations of the layout, which could result in a runtime crash for some resource configurations when a <code>findViewById()</code> fails.<br/>
<br/>
There <b>are</b> cases where this is intentional. For example, you may have a dedicated large tablet layout which adds some extra widgets that are not present in the phone version of the layout. As long as the code accessing the layout resource is careful to handle this properly, it is valid. In that case, you can suppress this lint check for the given extra or missing views, or the whole layout
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "InconsistentLayout" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="InefficientWeight"></a>
<div class="issue">
<div class="id">InefficientWeight<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Eclipse/ADT & Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 3 / 10<br/>
Category: Performance</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Inefficient layout weight.</div>
<div class="explanation">
When only a single widget in a LinearLayout defines a weight, it is more efficient to assign a width/height of <code>0dp</code> to it since it will absorb all the remaining space anyway. With a declared width/height of <code>0dp</code> it does not have to measure its own size first.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "InefficientWeight" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="InflateParams"></a>
<div class="issue">
<div class="id">InflateParams<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Layout Inflation without a Parent.</div>
<div class="explanation">
When inflating a layout, avoid passing in null as the parent view, since otherwise any layout parameters on the root of the inflated layout will be ignored.
</div>
<br/><div class="moreinfo">More info: <a href="http://www.doubleencore.com/2013/05/layout-inflation-as-intended">http://www.doubleencore.com/2013/05/layout-inflation-as-intended</a>
</div><br/>To suppress this error, use the issue id "InflateParams" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="InlinedApi"></a>
<div class="issue">
<div class="id">InlinedApi<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Eclipse/ADT & Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Using inlined constants on older versions.</div>
<div class="explanation">
This check scans through all the Android API field references in the application and flags certain constants, such as static final integers and Strings, which were introduced in later versions. These will actually be copied into the class files rather than being referenced, which means that the value is available even when running on older devices. In some cases that's fine, and in other cases it can result in a runtime crash or incorrect behavior. It depends on the context, so consider the code carefully and device whether it's safe and can be suppressed or whether the code needs tbe guarded.<br/>
<br/>
If you really want to use this API and don't need to support older devices just set the <code>minSdkVersion</code> in your <code>build.gradle</code> or <code>AndroidManifest.xml</code> files.<br/>
If your code is <b>deliberately</b> accessing newer APIs, and you have ensured (e.g. with conditional execution) that this code will only ever be called on a supported platform, then you can annotate your class or method with the <code>@TargetApi</code> annotation specifying the local minimum SDK to apply, such as <code>@TargetApi(11)</code>, such that this check considers 11 rather than your manifest file's minimum SDK as the required API level.<br/>
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "InlinedApi" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="InnerclassSeparator"></a>
<div class="issue">
<div class="id">InnerclassSeparator<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 3 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Inner classes should use <code>$</code> rather than <code>.</code></div>
<div class="explanation">
When you reference an inner class in a manifest file, you must use '$' instead of '.' as the separator character, i.e. Outer$Inner instead of Outer.Inner.<br/>
<br/>
(If you get this warning for a class which is not actually an inner class, it's because you are using uppercase characters in your package name, which is not conventional.)
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "InnerclassSeparator" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="InvalidPackage"></a>
<div class="issue">
<div class="id">InvalidPackage<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Package not included in Android.</div>
<div class="explanation">
This check scans through libraries looking for calls to APIs that are not included in Android.<br/>
<br/>
When you create Android projects, the classpath is set up such that you can only access classes in the API packages that are included in Android. However, if you add other projects to your libs/ folder, there is no guarantee that those .jar files were built with an Android specific classpath, and in particular, they could be accessing unsupported APIs such as java.applet.<br/>
<br/>
This check scans through library jars and looks for references to API packages that are not included in Android and flags these. This is only an error if your code calls one of the library classes which wind up referencing the unsupported package.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "InvalidPackage" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="InvalidResourceFolder"></a>
<div class="issue">
<div class="id">InvalidResourceFolder<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Invalid Resource Folder.</div>
<div class="explanation">
This lint check looks for a folder name that is not a valid resource folder name; these will be ignored and not packaged by the Android Gradle build plugin.<br/>
<br/>
Note that the order of resources is very important; for example, you can't specify a language before a network code.<br/>
<br/>
Similarly, note that to use 3 letter region codes, you have to use a special BCP 47 syntax: the prefix b+ followed by the BCP 47 language tag but with <code>+</code> as the individual separators instead of <code>-</code>. Therefore, for the BCP 47 language tag <code>nl-ABW</code> you have to use <code>b+nl+ABW</code>.
</div>
<br/><div class="moreinfo">More info: <ul><li><a href="http://developer.android.com/guide/topics/resources/providing-resources.html">http://developer.android.com/guide/topics/resources/providing-resources.html</a>
<li><a href="https://tools.ietf.org/html/bcp47">https://tools.ietf.org/html/bcp47</a>
</ul></div><br/>To suppress this error, use the issue id "InvalidResourceFolder" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="InvalidUsesTagAttribute"></a>
<div class="issue">
<div class="id">InvalidUsesTagAttribute<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Invalid <code>name</code> attribute for <code>uses</code> element.</div>
<div class="explanation">
The &lt;uses> element in <code>&lt;automotiveApp></code> should contain a valid value for the <code>name</code> attribute.<br/>
Valid values are <code>media</code> or <code>notification</code>.
</div>
<br/><div class="moreinfo">More info: <a href="https://developer.android.com/training/auto/start/index.html#auto-metadata">https://developer.android.com/training/auto/start/index.html#auto-metadata</a>
</div><br/>To suppress this error, use the issue id "InvalidUsesTagAttribute" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="JavascriptInterface"></a>
<div class="issue">
<div class="id">JavascriptInterface<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 8 / 10<br/>
Category: Security</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Missing @JavascriptInterface on methods.</div>
<div class="explanation">
As of API 17, you must annotate methods in objects registered with the <code>addJavascriptInterface</code> method with a <code>@JavascriptInterface</code> annotation.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface(java.lang.Object, java.lang.String)">http://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface(java.lang.Object, java.lang.String)</a>
</div><br/>To suppress this error, use the issue id "JavascriptInterface" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="LabelFor"></a>
<div class="issue">
<div class="id">LabelFor<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 2 / 10<br/>
Category: Accessibility</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Missing <code>labelFor</code> attribute.</div>
<div class="explanation">
Text fields should be labelled with a <code>labelFor</code> attribute, provided your <code>minSdkVersion</code> is at least 17.<br/>
<br/>
If your view is labeled but by a label in a different layout which includes this one, just suppress this warning from lint.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "LabelFor" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="LocalSuppress"></a>
<div class="issue">
<div class="id">LocalSuppress<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 3 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: @SuppressLint on invalid element.</div>
<div class="explanation">
The <code>@SuppressAnnotation</code> is used to suppress Lint warnings in Java files. However, while many lint checks analyzes the Java source code, where they can find annotations on (for example) local variables, some checks are analyzing the <code>.class</code> files. And in class files, annotations only appear on classes, fields and methods. Annotations placed on local variables disappear. If you attempt to suppress a lint error for a class-file based lint check, the suppress annotation not work. You must move the annotation out to the surrounding method.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "LocalSuppress" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="LocaleFolder"></a>
<div class="issue">
<div class="id">LocaleFolder<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Wrong locale name.</div>
<div class="explanation">
From the <code>java.util.Locale</code> documentation:<br/>
"Note that Java uses several deprecated two-letter codes. The Hebrew ("he") language code is rewritten as "iw", Indonesian ("id") as "in", and Yiddish ("yi") as "ji". This rewriting happens even if you construct your own Locale object, not just for instances returned by the various lookup methods.<br/>
<br/>
Because of this, if you add your localized resources in for example <code>values-he</code> they will not be used, since the system will look for <code>values-iw</code> instead.<br/>
<br/>
To work around this, place your resources in a <code>values</code> folder using the deprecated language code instead.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/reference/java/util/Locale.html">http://developer.android.com/reference/java/util/Locale.html</a>
</div><br/>To suppress this error, use the issue id "LocaleFolder" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="LogConditional"></a>
<div class="issue">
<div class="id">LogConditional<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Default<br/>
Priority: 5 / 10<br/>
Category: Performance</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Unconditional Logging Calls.</div>
<div class="explanation">
The BuildConfig class (available in Tools 17) provides a constant, "DEBUG", which indicates whether the code is being built in release mode or in debug mode. In release mode, you typically want to strip out all the logging calls. Since the compiler will automatically remove all code which is inside a "if (false)" check, surrounding your logging calls with a check for BuildConfig.DEBUG is a good idea.<br/>
<br/>
If you <b>really</b> intend for the logging to be present in release mode, you can suppress this warning with a @SuppressLint annotation for the intentional logging calls.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "LogConditional" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="LogTagMismatch"></a>
<div class="issue">
<div class="id">LogTagMismatch<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Mismatched Log Tags.</div>
<div class="explanation">
When guarding a <code>Log.v(tag, ...)</code> call with <code>Log.isLoggable(tag)</code>, the tag passed to both calls should be the same. Similarly, the level passed in to <code>Log.isLoggable</code> should typically match the type of <code>Log</code> call, e.g. if checking level <code>Log.DEBUG</code>, the corresponding <code>Log</code> call should be <code>Log.d</code>, not <code>Log.i</code>.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "LogTagMismatch" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="LongLogTag"></a>
<div class="issue">
<div class="id">LongLogTag<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Too Long Log Tags.</div>
<div class="explanation">
Log tags are only allowed to be at most 23 tag characters long.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "LongLogTag" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="MangledCRLF"></a>
<div class="issue">
<div class="id">MangledCRLF<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Eclipse/ADT&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Default<br/>
Priority: 2 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Mangled file line endings.</div>
<div class="explanation">
On Windows, line endings are typically recorded as carriage return plus newline: \r\n.<br/>
<br/>
This detector looks for invalid line endings with repeated carriage return characters (without newlines). Previous versions of the ADT plugin could accidentally introduce these into the file, and when editing the file, the editor could produce confusing visual artifacts.
</div>
<br/><div class="moreinfo">More info: <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=375421">https://bugs.eclipse.org/bugs/show_bug.cgi?id=375421</a>
</div><br/>To suppress this error, use the issue id "MangledCRLF" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="ManifestOrder"></a>
<div class="issue">
<div class="id">ManifestOrder<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Incorrect order of elements in manifest.</div>
<div class="explanation">
The &lt;application> tag should appear after the elements which declare which version you need, which features you need, which libraries you need, and so on. In the past there have been subtle bugs (such as themes not getting applied correctly) when the <code>&lt;application></code> tag appears before some of these other elements, so it's best to order your manifest in the logical dependency order.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "ManifestOrder" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="MenuTitle"></a>
<div class="issue">
<div class="id">MenuTitle<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Usability</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Missing menu title.</div>
<div class="explanation">
From the action bar documentation:<br/>
"It's important that you always define android:title for each menu item &#8212; even if you don't declare that the title appear with the action item &#8212; for three reasons:<br/>
<br/>
* If there's not enough room in the action bar for the action item, the menu item appears in the overflow menu and only the title appears.<br/>
* Screen readers for sight-impaired users read the menu item's title.<br/>
* If the action item appears with only the icon, a user can long-press the item to reveal a tool-tip that displays the action item's title.<br/>
The android:icon is always optional, but recommended.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/guide/topics/ui/actionbar.html">http://developer.android.com/guide/topics/ui/actionbar.html</a>
</div><br/>To suppress this error, use the issue id "MenuTitle" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="MergeRootFrame"></a>
<div class="issue">
<div class="id">MergeRootFrame<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 4 / 10<br/>
Category: Performance</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: FrameLayout can be replaced with <code>&lt;merge></code> tag.</div>
<div class="explanation">
If a <code>&lt;FrameLayout></code> is the root of a layout and does not provide background or padding etc, it can often be replaced with a <code>&lt;merge></code> tag which is slightly more efficient. Note that this depends on context, so make sure you understand how the <code>&lt;merge></code> tag works before proceeding.
</div>
<br/><div class="moreinfo">More info: <a href="http://android-developers.blogspot.com/2009/03/android-layout-tricks-3-optimize-by.html">http://android-developers.blogspot.com/2009/03/android-layout-tricks-3-optimize-by.html</a>
</div><br/>To suppress this error, use the issue id "MergeRootFrame" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="MipmapIcons"></a>
<div class="issue">
<div class="id">MipmapIcons<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Usability:Icons</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Use Mipmap Launcher Icons.</div>
<div class="explanation">
Launcher icons should be provided in the <code>mipmap</code> resource directory. This is the same as the <code>drawable</code> resource directory, except resources in the <code>mipmap</code> directory will not get stripped out when creating density-specific APKs.<br/>
<br/>
In certain cases, the Launcher app may use a higher resolution asset (than would normally be computed for the device) to display large app shortcuts. If drawables for densities other than the device's resolution have been stripped out, then the app shortcut could appear blurry.<br/>
<br/>
To fix this, move your launcher icons from `drawable-`dpi to `mipmap-`dpi and change references from @drawable/ and R.drawable to @mipmap/ and R.mipmap.<br/>
In Android Studio this lint warning has a quickfix to perform this automatically.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "MipmapIcons" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="MissingApplicationIcon"></a>
<div class="issue">
<div class="id">MissingApplicationIcon<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Usability:Icons</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Missing application icon.</div>
<div class="explanation">
You should set an icon for the application as whole because there is no default. This attribute must be set as a reference to a drawable resource containing the image (for example <code>@drawable/icon</code>).
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/tools/publishing/preparing.html#publishing-configure">http://developer.android.com/tools/publishing/preparing.html#publishing-configure</a>
</div><br/>To suppress this error, use the issue id "MissingApplicationIcon" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="MissingId"></a>
<div class="issue">
<div class="id">MissingId<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Eclipse/ADT & Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Fragments should specify an <code>id</code> or <code>tag</code></div>
<div class="explanation">
If you do not specify an android:id or an android:tag attribute on a &lt;fragment> element, then if the activity is restarted (for example for an orientation rotation) you may lose state. From the fragment documentation:<br/>
<br/>
"Each fragment requires a unique identifier that the system can use to restore the fragment if the activity is restarted (and which you can use to capture the fragment to perform transactions, such as remove it).<br/>
<br/>
* Supply the android:id attribute with a unique ID.<br/>
* Supply the android:tag attribute with a unique string.<br/>
If you provide neither of the previous two, the system uses the ID of the container view.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/guide/components/fragments.html">http://developer.android.com/guide/components/fragments.html</a>
</div><br/>To suppress this error, use the issue id "MissingId" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="MissingIntentFilterForMediaSearch"></a>
<div class="issue">
<div class="id">MissingIntentFilterForMediaSearch<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Missing intent-filter with action <code>android.media.action.MEDIA_PLAY_FROM_SEARCH</code></div>
<div class="explanation">
To support voice searches on Android Auto, you should also register an <code>intent-filter</code> for the action <code>android.media.action.MEDIA_PLAY_FROM_SEARCH</code>.<br/>
To do this, add<br/>
<code>&lt;intent-filter></code><br/>
<code>&lt;action android:name="android.media.action.MEDIA_PLAY_FROM_SEARCH" /></code><br/>
<code>&lt;/intent-filter></code><br/>
to your <code>&lt;activity></code> or <code>&lt;service></code>.
</div>
<br/><div class="moreinfo">More info: <a href="https://developer.android.com/training/auto/audio/index.html#support_voice">https://developer.android.com/training/auto/audio/index.html#support_voice</a>
</div><br/>To suppress this error, use the issue id "MissingIntentFilterForMediaSearch" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="MissingLeanbackLauncher"></a>
<div class="issue">
<div class="id">MissingLeanbackLauncher<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 8 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Missing Leanback Launcher Intent Filter.</div>
<div class="explanation">
An application intended to run on TV devices must declare a launcher activity for TV in its manifest using a <code>android.intent.category.LEANBACK_LAUNCHER</code> intent filter.
</div>
<br/><div class="moreinfo">More info: <a href="https://developer.android.com/training/tv/start/start.html#tv-activity">https://developer.android.com/training/tv/start/start.html#tv-activity</a>
</div><br/>To suppress this error, use the issue id "MissingLeanbackLauncher" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="MissingLeanbackSupport"></a>
<div class="issue">
<div class="id">MissingLeanbackSupport<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Missing Leanback Support.</div>
<div class="explanation">
The manifest should declare the use of the Leanback user interface required by Android TV.<br/>
To fix this, add<br/>
<code>&lt;uses-feature android:name="android.software.leanback" android:required="false" /></code><br/>
to your manifest.
</div>
<br/><div class="moreinfo">More info: <a href="https://developer.android.com/training/tv/start/start.html#leanback-req">https://developer.android.com/training/tv/start/start.html#leanback-req</a>
</div><br/>To suppress this error, use the issue id "MissingLeanbackSupport" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="MissingMediaBrowserServiceIntentFilter"></a>
<div class="issue">
<div class="id">MissingMediaBrowserServiceIntentFilter<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Missing intent-filter with action <code>android.media.browse.MediaBrowserService</code>.</div>
<div class="explanation">
An Automotive Media App requires an exported service that extends <code>android.service.media.MediaBrowserService</code> with an <code>intent-filter</code> for the action <code>android.media.browse.MediaBrowserService</code> to be able to browse and play media.<br/>
To do this, add<br/>
<code>&lt;intent-filter></code><br/>
<code>&lt;action android:name="android.media.browse.MediaBrowserService" /></code><br/>
<code>&lt;/intent-filter></code><br/>
to the service that extends <code>android.service.media.MediaBrowserService</code>
</div>
<br/><div class="moreinfo">More info: <a href="https://developer.android.com/training/auto/audio/index.html#config_manifest">https://developer.android.com/training/auto/audio/index.html#config_manifest</a>
</div><br/>To suppress this error, use the issue id "MissingMediaBrowserServiceIntentFilter" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="MissingOnPlayFromSearch"></a>
<div class="issue">
<div class="id">MissingOnPlayFromSearch<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Missing <code>onPlayFromSearch</code>.</div>
<div class="explanation">
To support voice searches on Android Auto, in addition to adding an <code>intent-filter</code> for the action <code>onPlayFromSearch</code>, you also need to override and implement <code>onPlayFromSearch(String query, Bundle bundle)</code>
</div>
<br/><div class="moreinfo">More info: <a href="https://developer.android.com/training/auto/audio/index.html#support_voice">https://developer.android.com/training/auto/audio/index.html#support_voice</a>
</div><br/>To suppress this error, use the issue id "MissingOnPlayFromSearch" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="MissingPermission"></a>
<div class="issue">
<div class="id">MissingPermission<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 9 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Missing Permissions.</div>
<div class="explanation">
This check scans through your code and libraries and looks at the APIs being used, and checks this against the set of permissions required to access those APIs. If the code using those APIs is called at runtime, then the program will crash.<br/>
<br/>
Furthermore, for permissions that are revocable (with targetSdkVersion 23), client code must also be prepared to handle the calls throwing an exception if the user rejects the request for permission at runtime.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "MissingPermission" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="MissingPrefix"></a>
<div class="issue">
<div class="id">MissingPrefix<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Eclipse/ADT & Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Missing Android XML namespace.</div>
<div class="explanation">
Most Android views have attributes in the Android namespace. When referencing these attributes you <b>must</b> include the namespace prefix, or your attribute will be interpreted by <code>aapt</code> as just a custom attribute.<br/>
<br/>
Similarly, in manifest files, nearly all attributes should be in the <code>android:</code> namespace.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "MissingPrefix" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="MissingQuantity"></a>
<div class="issue">
<div class="id">MissingQuantity<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 8 / 10<br/>
Category: Correctness:Messages</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Missing quantity translation.</div>
<div class="explanation">
Different languages have different rules for grammatical agreement with quantity. In English, for example, the quantity 1 is a special case. We write "1 book", but for any other quantity we'd write "n books". This distinction between singular and plural is very common, but other languages make finer distinctions.<br/>
<br/>
This lint check looks at each translation of a <code>&lt;plural></code> and makes sure that all the quantity strings considered by the given language are provided by this translation.<br/>
<br/>
For example, an English translation must provide a string for <code>quantity="one"</code>. Similarly, a Czech translation must provide a string for <code>quantity="few"</code>.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/guide/topics/resources/string-resource.html#Plurals">http://developer.android.com/guide/topics/resources/string-resource.html#Plurals</a>
</div><br/>To suppress this error, use the issue id "MissingQuantity" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="MissingRegistered"></a>
<div class="issue">
<div class="id">MissingRegistered<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 8 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Missing registered class.</div>
<div class="explanation">
If a class is referenced in the manifest, it must also exist in the project (or in one of the libraries included by the project. This check helps uncover typos in registration names, or attempts to rename or move classes without updating the manifest file properly.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/guide/topics/manifest/manifest-intro.html">http://developer.android.com/guide/topics/manifest/manifest-intro.html</a>
</div><br/>To suppress this error, use the issue id "MissingRegistered" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="MissingSuperCall"></a>
<div class="issue">
<div class="id">MissingSuperCall<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 9 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Missing Super Call.</div>
<div class="explanation">
Some methods, such as <code>View#onDetachedFromWindow</code>, require that you also call the super implementation as part of your method.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "MissingSuperCall" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="MissingTvBanner"></a>
<div class="issue">
<div class="id">MissingTvBanner<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: TV Missing Banner.</div>
<div class="explanation">
A TV application must provide a home screen banner for each localization if it includes a Leanback launcher intent filter. The banner is the app launch point that appears on the home screen in the apps and games rows.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/training/tv/start/start.html#banner">http://developer.android.com/training/tv/start/start.html#banner</a>
</div><br/>To suppress this error, use the issue id "MissingTvBanner" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="MissingVersion"></a>
<div class="issue">
<div class="id">MissingVersion<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 2 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Missing application name/version.</div>
<div class="explanation">
You should define the version information for your application.<br/>
<code>android:versionCode</code>: An integer value that represents the version of the application code, relative to other versions.<br/>
<br/>
<code>android:versionName</code>: A string value that represents the release version of the application code, as it should be shown to users.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/tools/publishing/versioning.html#appversioning">http://developer.android.com/tools/publishing/versioning.html#appversioning</a>
</div><br/>To suppress this error, use the issue id "MissingVersion" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="NegativeMargin"></a>
<div class="issue">
<div class="id">NegativeMargin<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Default<br/>
Priority: 4 / 10<br/>
Category: Usability</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Negative Margins.</div>
<div class="explanation">
Margin values should be positive. Negative values are generally a sign that you are making assumptions about views surrounding the current one, or may be tempted to turn off child clipping to allow a view to escape its parent. Turning off child clipping to do this not only leads to poor graphical performance, it also results in wrong touch event handling since touch events are based strictly on a chain of parent-rect hit tests. Finally, making assumptions about the size of strings can lead to localization problems.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "NegativeMargin" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="NestedScrolling"></a>
<div class="issue">
<div class="id">NestedScrolling<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 7 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Nested scrolling widgets.</div>
<div class="explanation">
A scrolling widget such as a <code>ScrollView</code> should not contain any nested scrolling widgets since this has various usability issues
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "NestedScrolling" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="NestedWeights"></a>
<div class="issue">
<div class="id">NestedWeights<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 3 / 10<br/>
Category: Performance</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Nested layout weights.</div>
<div class="explanation">
Layout weights require a widget to be measured twice. When a LinearLayout with non-zero weights is nested inside another LinearLayout with non-zero weights, then the number of measurements increase exponentially.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "NestedWeights" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="NewApi"></a>
<div class="issue">
<div class="id">NewApi<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Eclipse/ADT & Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Calling new methods on older versions.</div>
<div class="explanation">
This check scans through all the Android API calls in the application and warns about any calls that are not available on <b>all</b> versions targeted by this application (according to its minimum SDK attribute in the manifest).<br/>
<br/>
If you really want to use this API and don't need to support older devices just set the <code>minSdkVersion</code> in your <code>build.gradle</code> or <code>AndroidManifest.xml</code> files.<br/>
<br/>
If your code is <b>deliberately</b> accessing newer APIs, and you have ensured (e.g. with conditional execution) that this code will only ever be called on a supported platform, then you can annotate your class or method with the <code>@TargetApi</code> annotation specifying the local minimum SDK to apply, such as <code>@TargetApi(11)</code>, such that this check considers 11 rather than your manifest file's minimum SDK as the required API level.<br/>
<br/>
If you are deliberately setting <code>android:</code> attributes in style definitions, make sure you place this in a <code>values-vNN</code> folder in order to avoid running into runtime conflicts on certain devices where manufacturers have added custom attributes whose ids conflict with the new ones on later platforms.<br/>
<br/>
Similarly, you can use tools:targetApi="11" in an XML file to indicate that the element will only be inflated in an adequate context.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "NewApi" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="NewerVersionAvailable"></a>
<div class="issue">
<div class="id">NewerVersionAvailable<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Default<br/>
Priority: 4 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Newer Library Versions Available.</div>
<div class="explanation">
This detector checks with a central repository to see if there are newer versions available for the dependencies used by this project. This is similar to the <code>GradleDependency</code> check, which checks for newer versions available in the Android SDK tools and libraries, but this works with any MavenCentral dependency, and connects to the library every time, which makes it more flexible but also <b>much</b> slower.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "NewerVersionAvailable" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="ObsoleteLayoutParam"></a>
<div class="issue">
<div class="id">ObsoleteLayoutParam<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Eclipse/ADT & Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Performance</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Obsolete layout params.</div>
<div class="explanation">
The given layout_param is not defined for the given layout, meaning it has no effect. This usually happens when you change the parent layout or move view code around without updating the layout params. This will cause useless attribute processing at runtime, and is misleading for others reading the layout so the parameter should be removed.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "ObsoleteLayoutParam" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="OldTargetApi"></a>
<div class="issue">
<div class="id">OldTargetApi<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Target SDK attribute is not targeting latest version.</div>
<div class="explanation">
When your application runs on a version of Android that is more recent than your <code>targetSdkVersion</code> specifies that it has been tested with, various compatibility modes kick in. This ensures that your application continues to work, but it may look out of place. For example, if the <code>targetSdkVersion</code> is less than 14, your app may get an option button in the UI.<br/>
<br/>
To fix this issue, set the <code>targetSdkVersion</code> to the highest available value. Then test your app to make sure everything works correctly. You may want to consult the compatibility notes to see what changes apply to each version you are adding support for: <a href="http://developer.android.com/reference/android/os/Build.VERSION_CODES.html">http://developer.android.com/reference/android/os/Build.VERSION_CODES.html</a>
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/reference/android/os/Build.VERSION_CODES.html">http://developer.android.com/reference/android/os/Build.VERSION_CODES.html</a>
</div><br/>To suppress this error, use the issue id "OldTargetApi" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="OnClick"></a>
<div class="issue">
<div class="id">OnClick<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 10 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: <code>onClick</code> method does not exist.</div>
<div class="explanation">
The <code>onClick</code> attribute value should be the name of a method in this View's context to invoke when the view is clicked. This name must correspond to a public method that takes exactly one parameter of type <code>View</code>.<br/>
<br/>
Must be a string value, using '\;' to escape characters such as '\n' or '\uxxxx' for a unicode character.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "OnClick" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="Orientation"></a>
<div class="issue">
<div class="id">Orientation<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 2 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Missing explicit orientation.</div>
<div class="explanation">
The default orientation of a LinearLayout is horizontal. It's pretty easy to believe that the layout is vertical, add multiple children to it, and wonder why only the first child is visible (when the subsequent children are off screen to the right). This lint rule helps pinpoint this issue by warning whenever a LinearLayout is used with an implicit orientation and multiple children.<br/>
<br/>
It also checks for empty LinearLayouts without an <code>orientation</code> attribute that also defines an <code>id</code> attribute. This catches the scenarios where children will be added to the <code>LinearLayout</code> dynamically.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "Orientation" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="Overdraw"></a>
<div class="issue">
<div class="id">Overdraw<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 3 / 10<br/>
Category: Performance</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Overdraw: Painting regions more than once.</div>
<div class="explanation">
If you set a background drawable on a root view, then you should use a custom theme where the theme background is null. Otherwise, the theme background will be painted first, only to have your custom background completely cover it; this is called "overdraw".<br/>
<br/>
NOTE: This detector relies on figuring out which layouts are associated with which activities based on scanning the Java code, and it's currently doing that using an inexact pattern matching algorithm. Therefore, it can incorrectly conclude which activity the layout is associated with and then wrongly complain that a background-theme is hidden.<br/>
<br/>
If you want your custom background on multiple pages, then you should consider making a custom theme with your custom background and just using that theme instead of a root element background.<br/>
<br/>
Of course it's possible that your custom drawable is translucent and you want it to be mixed with the background. However, you will get better performance if you pre-mix the background with your drawable and use that resulting image or color as a custom theme background instead.<br/>
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "Overdraw" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="Override"></a>
<div class="issue">
<div class="id">Override<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Method conflicts with new inherited method.</div>
<div class="explanation">
Suppose you are building against Android API 8, and you've subclassed Activity. In your subclass you add a new method called <code>isDestroyed</code>(). At some later point, a method of the same name and signature is added to Android. Your method will now override the Android method, and possibly break its contract. Your method is not calling <code>super.isDestroyed()</code>, since your compilation target doesn't know about the method.<br/>
<br/>
The above scenario is what this lint detector looks for. The above example is real, since <code>isDestroyed()</code> was added in API 17, but it will be true for <b>any</b> method you have added to a subclass of an Android class where your build target is lower than the version the method was introduced in.<br/>
<br/>
To fix this, either rename your method, or if you are really trying to augment the builtin method if available, switch to a higher build target where you can deliberately add <code>@Override</code> on your overriding method, and call <code>super</code> if appropriate etc.<br/>
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "Override" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="PackageManagerGetSignatures"></a>
<div class="issue">
<div class="id">PackageManagerGetSignatures<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 8 / 10<br/>
Category: Security</div>
Severity: <span>Information</span><div class="summary">
Explanation: Potential Multiple Certificate Exploit.</div>
<div class="explanation">
Improper validation of app signatures could lead to issues where a malicious app submits itself to the Play Store with both its real certificate and a fake certificate and gains access to functionality or information it shouldn't have due to another application only checking for the fake certificate and ignoring the rest. Please make sure to validate all signatures returned by this method.
</div>
<br/><div class="moreinfo">More info: <a href="https://bluebox.com/technical/android-fake-id-vulnerability/">https://bluebox.com/technical/android-fake-id-vulnerability/</a>
</div><br/>To suppress this error, use the issue id "PackageManagerGetSignatures" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="ParcelCreator"></a>
<div class="issue">
<div class="id">ParcelCreator<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 3 / 10<br/>
Category: Usability</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Missing Parcelable <code>CREATOR</code> field.</div>
<div class="explanation">
According to the <code>Parcelable</code> interface documentation, "Classes implementing the Parcelable interface must also have a static field called <code>CREATOR</code>, which is an object implementing the <code>Parcelable.Creator</code> interface."
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/reference/android/os/Parcelable.html">http://developer.android.com/reference/android/os/Parcelable.html</a>
</div><br/>To suppress this error, use the issue id "ParcelCreator" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="PermissionImpliesUnsupportedHardware"></a>
<div class="issue">
<div class="id">PermissionImpliesUnsupportedHardware<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 3 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Permission Implies Unsupported Hardware.</div>
<div class="explanation">
The &lt;uses-permission> element should not require a permission that implies an unsupported TV hardware feature. Google Play assumes that certain hardware related permissions indicate that the underlying hardware features are required by default. To fix the issue, consider declaring the corresponding uses-feature element with required="false" attribute.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/guide/topics/manifest/uses-feature-element.html#permissions">http://developer.android.com/guide/topics/manifest/uses-feature-element.html#permissions</a>
</div><br/>To suppress this error, use the issue id "PermissionImpliesUnsupportedHardware" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="PluralsCandidate"></a>
<div class="issue">
<div class="id">PluralsCandidate<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Correctness:Messages</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Potential Plurals.</div>
<div class="explanation">
This lint check looks for potential errors in internationalization where you have translated a message which involves a quantity and it looks like other parts of the string may need grammatical changes.<br/>
<br/>
For example, rather than something like this:<br/>
&lt;string name="try_again">Try again in %d seconds.&lt;/string><br/>
you should be using a plural:<br/>
&lt;plurals name="try_again"><br/>
&lt;item quantity="one">Try again in %d second&lt;/item><br/>
&lt;item quantity="other">Try again in %d seconds&lt;/item><br/>
&lt;/plurals><br/>
This will ensure that in other languages the right set of translations are provided for the different quantity classes.<br/>
<br/>
(This check depends on some heuristics, so it may not accurately determine whether a string really should be a quantity. You can use tools:ignore to filter out false positives.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/guide/topics/resources/string-resource.html#Plurals">http://developer.android.com/guide/topics/resources/string-resource.html#Plurals</a>
</div><br/>To suppress this error, use the issue id "PluralsCandidate" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="PrivateResource"></a>
<div class="issue">
<div class="id">PrivateResource<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 3 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Using private resources.</div>
<div class="explanation">
Private resources should not be referenced; the may not be present everywhere, and even where they are they may disappear without notice.<br/>
<br/>
To fix this, copy the resource into your own project instead.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "PrivateResource" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="ProguardSplit"></a>
<div class="issue">
<div class="id">ProguardSplit<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 3 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Proguard.cfg file contains generic Android rules.</div>
<div class="explanation">
Earlier versions of the Android tools bundled a single <code>proguard.cfg</code> file containing a ProGuard configuration file suitable for Android shrinking and obfuscation. However, that version was copied into new projects, which means that it does not continue to get updated as we improve the default ProGuard rules for Android.<br/>
<br/>
In the new version of the tools, we have split the ProGuard configuration into two halves:<br/>
* A simple configuration file containing only project-specific flags, in your project<br/>
* A generic configuration file containing the recommended set of ProGuard options for Android projects. This generic file lives in the SDK install directory which means that it gets updated along with the tools.<br/>
<br/>
In order for this to work, the proguard.config property in the <code>project.properties</code> file now refers to a path, so you can reference both the generic file as well as your own (and any additional files too).<br/>
<br/>
To migrate your project to the new setup, create a new <code>proguard-project.txt</code> file in your project containing any project specific ProGuard flags as well as any customizations you have made, then update your project.properties file to contain:<br/>
<code>proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt</code>
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "ProguardSplit" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="PropertyEscape"></a>
<div class="issue">
<div class="id">PropertyEscape<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Incorrect property escapes.</div>
<div class="explanation">
All backslashes and colons in .property files must be escaped with a backslash (\). This means that when writing a Windows path, you must escape the file separators, so the path \My\Files should be written as <code>key=\\My\\Files.</code>
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "PropertyEscape" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="ProtectedPermissions"></a>
<div class="issue">
<div class="id">ProtectedPermissions<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Using system app permission.</div>
<div class="explanation">
Permissions with the protection level signature or signatureOrSystem are only granted to system apps. If an app is a regular non-system app, it will never be able to use these permissions.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "ProtectedPermissions" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="PxUsage"></a>
<div class="issue">
<div class="id">PxUsage<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Eclipse/ADT & Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 2 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Using 'px' dimension.</div>
<div class="explanation">
For performance reasons and to keep the code simpler, the Android system uses pixels as the standard unit for expressing dimension or coordinate values. That means that the dimensions of a view are always expressed in the code using pixels, but always based on the current screen density. For instance, if <code>myView.getWidth()</code> returns 10, the view is 10 pixels wide on the current screen, but on a device with a higher density screen, the value returned might be 15. If you use pixel values in your application code to work with bitmaps that are not pre-scaled for the current screen density, you might need to scale the pixel values that you use in your code to match the un-scaled bitmap source.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/guide/practices/screens_support.html#screen-independence">http://developer.android.com/guide/practices/screens_support.html#screen-independence</a>
</div><br/>To suppress this error, use the issue id "PxUsage" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="Range"></a>
<div class="issue">
<div class="id">Range<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Outside Range.</div>
<div class="explanation">
Some parameters are required to in a particular numerical range; this check makes sure that arguments passed fall within the range. For arrays, Strings and collections this refers to the size or length.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "Range" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="Recycle"></a>
<div class="issue">
<div class="id">Recycle<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 7 / 10<br/>
Category: Performance</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Missing <code>recycle()</code> calls.</div>
<div class="explanation">
Many resources, such as TypedArrays, VelocityTrackers, etc., should be recycled (with a <code>recycle()</code> call) after use. This lint check looks for missing <code>recycle()</code> calls.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "Recycle" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="Registered"></a>
<div class="issue">
<div class="id">Registered<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Class is not registered in the manifest.</div>
<div class="explanation">
Activities, services and content providers should be registered in the <code>AndroidManifest.xml</code> file using <code>&lt;activity></code>, <code>&lt;service></code> and <code>&lt;provider></code> tags.<br/>
<br/>
If your activity is simply a parent class intended to be subclassed by other "real" activities, make it an abstract class.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/guide/topics/manifest/manifest-intro.html">http://developer.android.com/guide/topics/manifest/manifest-intro.html</a>
</div><br/>To suppress this error, use the issue id "Registered" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="RelativeOverlap"></a>
<div class="issue">
<div class="id">RelativeOverlap<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 3 / 10<br/>
Category: Internationalization</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Overlapping items in RelativeLayout.</div>
<div class="explanation">
If relative layout has text or button items aligned to left and right sides they can overlap each other due to localized text expansion unless they have mutual constraints like <code>toEndOf</code>/<code>toStartOf</code>.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "RelativeOverlap" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="RequiredSize"></a>
<div class="issue">
<div class="id">RequiredSize<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 4 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Missing <code>layout_width</code> or <code>layout_height</code> attributes.</div>
<div class="explanation">
All views must specify an explicit <code>layout_width</code> and <code>layout_height</code> attribute. There is a runtime check for this, so if you fail to specify a size, an exception is thrown at runtime.<br/>
<br/>
It's possible to specify these widths via styles as well. GridLayout, as a special case, does not require you to specify a size.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "RequiredSize" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="ResourceAsColor"></a>
<div class="issue">
<div class="id">ResourceAsColor<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 7 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Should pass resolved color instead of resource id.</div>
<div class="explanation">
Methods that take a color in the form of an integer should be passed an RGB triple, not the actual color resource id. You must call <code>getResources().getColor(resource)</code> to resolve the actual color value first.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "ResourceAsColor" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="RtlCompat"></a>
<div class="issue">
<div class="id">RtlCompat<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Bi-directional Text</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Right-to-left text compatibility issues.</div>
<div class="explanation">
API 17 adds a <code>textAlignment</code> attribute to specify text alignment. However, if you are supporting older versions than API 17, you must <b>also</b> specify a gravity or layout_gravity attribute, since older platforms will ignore the <code>textAlignment</code> attribute.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "RtlCompat" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="RtlEnabled"></a>
<div class="issue">
<div class="id">RtlEnabled<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 3 / 10<br/>
Category: Bi-directional Text</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Using RTL attributes without enabling RTL support.</div>
<div class="explanation">
To enable right-to-left support, when running on API 17 and higher, you must set the <code>android:supportsRtl</code> attribute in the manifest <code>&lt;application></code> element.<br/>
<br/>
If you have started adding RTL attributes, but have not yet finished the migration, you can set the attribute to false to satisfy this lint check.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "RtlEnabled" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="RtlHardcoded"></a>
<div class="issue">
<div class="id">RtlHardcoded<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Bi-directional Text</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Using left/right instead of start/end attributes.</div>
<div class="explanation">
Using <code>Gravity#LEFT</code> and <code>Gravity#RIGHT</code> can lead to problems when a layout is rendered in locales where text flows from right to left. Use <code>Gravity#START</code> and <code>Gravity#END</code> instead. Similarly, in XML <code>gravity</code> and <code>layout_gravity</code> attributes, use <code>start</code> rather than <code>left</code>.<br/>
<br/>
For XML attributes such as paddingLeft and <code>layout_marginLeft</code>, use <code>paddingStart</code> and <code>layout_marginStart</code>. <b>NOTE</b>: If your <code>minSdkVersion</code> is less than 17, you should add <b>both</b> the older left/right attributes <b>as well as</b> the new start/right attributes. On older platforms, where RTL is not supported and the start/right attributes are unknown and therefore ignored, you need the older left/right attributes. There is a separate lint check which catches that type of error.<br/>
<br/>
(Note: For <code>Gravity#LEFT</code> and <code>Gravity#START</code>, you can use these constants even when targeting older platforms, because the <code>start</code> bitmask is a superset of the <code>left</code> bitmask. Therefore, you can use <code>gravity="start"</code> rather than <code>gravity="left|start"</code>.)
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "RtlHardcoded" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="RtlSymmetry"></a>
<div class="issue">
<div class="id">RtlSymmetry<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Bi-directional Text</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Padding and margin symmetry.</div>
<div class="explanation">
If you specify padding or margin on the left side of a layout, you should probably also specify padding on the right side (and vice versa) for right-to-left layout symmetry.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "RtlSymmetry" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="SQLiteString"></a>
<div class="issue">
<div class="id">SQLiteString<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Using STRING instead of TEXT.</div>
<div class="explanation">
In SQLite, any column can store any data type; the declared type for a column is more of a hint as to what the data should be cast to when stored.<br/>
<br/>
There are many ways to store a string. <code>TEXT</code>, <code>VARCHAR</code>, <code>CHARACTER</code> and <code>CLOB</code> are string types, <b>but `STRING` is not</b>. Columns defined as STRING are actually numeric.<br/>
<br/>
If you try to store a value in a numeric column, SQLite will try to cast it to a float or an integer before storing. If it can't, it will just store it as a string.<br/>
<br/>
This can lead to some subtle bugs. For example, when SQLite encounters a string like <code>1234567e1234</code>, it will parse it as a float, but the result will be out of range for floating point numbers, so <code>Inf</code> will be stored! Similarly, strings that look like integers will lose leading zeroes.<br/>
<br/>
To fix this, you can change your schema to use a <code>TEXT</code> type instead.
</div>
<br/><div class="moreinfo">More info: <a href="https://www.sqlite.org/datatype3.html">https://www.sqlite.org/datatype3.html</a>
</div><br/>To suppress this error, use the issue id "SQLiteString" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="SSLCertificateSocketFactoryCreateSocket"></a>
<div class="issue">
<div class="id">SSLCertificateSocketFactoryCreateSocket<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Security</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Insecure call to <code>SSLCertificateSocketFactory.createSocket()</code></div>
<div class="explanation">
When <code>SSLCertificateSocketFactory.createSocket()</code> is called with an <code>InetAddress</code> as the first parameter, TLS/SSL hostname verification is not performed, which could result in insecure network traffic caused by trusting arbitrary hostnames in TLS/SSL certificates presented by peers. In this case, developers must ensure that the <code>InetAddress</code> is explicitly verified against the certificate through other means, such as by calling `SSLCertificateSocketFactory.getDefaultHostnameVerifier() to get a <code>HostnameVerifier</code> and calling <code>HostnameVerifier.verify()</code>.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "SSLCertificateSocketFactoryCreateSocket" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="SSLCertificateSocketFactoryGetInsecure"></a>
<div class="issue">
<div class="id">SSLCertificateSocketFactoryGetInsecure<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Security</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Call to <code>SSLCertificateSocketFactory.getInsecure()</code></div>
<div class="explanation">
The <code>SSLCertificateSocketFactory.getInsecure()</code> method returns an SSLSocketFactory with all TLS/SSL security checks disabled, which could result in insecure network traffic caused by trusting arbitrary TLS/SSL certificates presented by peers. This method should be avoided unless needed for a special circumstance such as debugging. Instead, <code>SSLCertificateSocketFactory.getDefault()</code> should be used.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "SSLCertificateSocketFactoryGetInsecure" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="ScrollViewCount"></a>
<div class="issue">
<div class="id">ScrollViewCount<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 8 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: ScrollViews can have only one child.</div>
<div class="explanation">
ScrollViews can only have one child widget. If you want more children, wrap them in a container layout.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "ScrollViewCount" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="ScrollViewSize"></a>
<div class="issue">
<div class="id">ScrollViewSize<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Eclipse/ADT & Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 7 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: ScrollView size validation.</div>
<div class="explanation">
ScrollView children must set their <code>layout_width</code> or <code>layout_height</code> attributes to <code>wrap_content</code> rather than <code>fill_parent</code> or <code>match_parent</code> in the scrolling dimension
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "ScrollViewSize" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="SdCardPath"></a>
<div class="issue">
<div class="id">SdCardPath<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Hardcoded reference to <code>/sdcard</code></div>
<div class="explanation">
Your code should not reference the <code>/sdcard</code> path directly; instead use <code>Environment.getExternalStorageDirectory().getPath()</code>.<br/>
<br/>
Similarly, do not reference the <code>/data/data/</code> path directly; it can vary in multi-user scenarios. Instead, use <code>Context.getFilesDir().getPath()</code>.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/guide/topics/data/data-storage.html#filesExternal">http://developer.android.com/guide/topics/data/data-storage.html#filesExternal</a>
</div><br/>To suppress this error, use the issue id "SdCardPath" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="SecureRandom"></a>
<div class="issue">
<div class="id">SecureRandom<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 9 / 10<br/>
Category: Security</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Using a fixed seed with <code>SecureRandom</code></div>
<div class="explanation">
Specifying a fixed seed will cause the instance to return a predictable sequence of numbers. This may be useful for testing but it is not appropriate for secure use.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/reference/java/security/SecureRandom.html">http://developer.android.com/reference/java/security/SecureRandom.html</a>
</div><br/>To suppress this error, use the issue id "SecureRandom" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="SelectableText"></a>
<div class="issue">
<div class="id">SelectableText<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Default<br/>
Priority: 7 / 10<br/>
Category: Usability</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Dynamic text should probably be selectable.</div>
<div class="explanation">
If a <code>&lt;TextView></code> is used to display data, the user might want to copy that data and paste it elsewhere. To allow this, the <code>&lt;TextView></code> should specify <code>android:textIsSelectable="true"</code>.<br/>
<br/>
This lint check looks for TextViews which are likely to be displaying data: views whose text is set dynamically. This value will be ignored on platforms older than API 11, so it is okay to set it regardless of your <code>minSdkVersion</code>.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "SelectableText" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="SetJavaScriptEnabled"></a>
<div class="issue">
<div class="id">SetJavaScriptEnabled<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Security</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Using <code>setJavaScriptEnabled</code></div>
<div class="explanation">
Your code should not invoke <code>setJavaScriptEnabled</code> if you are not sure that your app really requires JavaScript support.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/guide/practices/security.html">http://developer.android.com/guide/practices/security.html</a>
</div><br/>To suppress this error, use the issue id "SetJavaScriptEnabled" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="SetTextI18n"></a>
<div class="issue">
<div class="id">SetTextI18n<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Internationalization</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: TextView Internationalization.</div>
<div class="explanation">
When calling <code>TextView#setText</code><br/>
* Never call <code>Number#toString()</code> to format numbers; it will not handle fraction separators and locale-specific digits properly. Consider using <code>String#format</code> with proper format specifications (<code>%d</code> or <code>%f</code>) instead.<br/>
* Do not pass a string literal (e.g. "Hello") to display text. Hardcoded text can not be properly translated to other languages. Consider using Android resource strings instead.<br/>
* Do not build messages by concatenating text chunks. Such messages can not be properly translated.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/guide/topics/resources/localization.html">http://developer.android.com/guide/topics/resources/localization.html</a>
</div><br/>To suppress this error, use the issue id "SetTextI18n" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="SetWorldReadable"></a>
<div class="issue">
<div class="id">SetWorldReadable<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Security</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: <code>File.setReadable()</code> used to make file world-readable.</div>
<div class="explanation">
Setting files world-readable is very dangerous, and likely to cause security holes in applications. It is strongly discouraged; instead, applications should use more formal mechanisms for interactions such as <code>ContentProvider</code>, <code>BroadcastReceiver</code>, and <code>Service</code>.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "SetWorldReadable" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="SetWorldWritable"></a>
<div class="issue">
<div class="id">SetWorldWritable<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Security</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: <code>File.setWritable()</code> used to make file world-writable.</div>
<div class="explanation">
Setting files world-writable is very dangerous, and likely to cause security holes in applications. It is strongly discouraged; instead, applications should use more formal mechanisms for interactions such as <code>ContentProvider</code>, <code>BroadcastReceiver</code>, and <code>Service</code>.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "SetWorldWritable" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="ShiftFlags"></a>
<div class="issue">
<div class="id">ShiftFlags<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 3 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Dangerous Flag Constant Declaration.</div>
<div class="explanation">
When defining multiple constants for use in flags, the recommended style is to use the form <code>1 &lt;&lt; 2</code>, <code>1 &lt;&lt; 3</code>, <code>1 &lt;&lt; 4</code> and so on to ensure that the constants are unique and non-overlapping.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "ShiftFlags" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="ShortAlarm"></a>
<div class="issue">
<div class="id">ShortAlarm<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Short or Frequent Alarm.</div>
<div class="explanation">
Frequent alarms are bad for battery life. As of API 22, the <code>AlarmManager</code> will override near-future and high-frequency alarm requests, delaying the alarm at least 5 seconds into the future and ensuring that the repeat interval is at least 60 seconds.<br/>
<br/>
If you really need to do work sooner than 5 seconds, post a delayed message or runnable to a Handler.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "ShortAlarm" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="ShowToast"></a>
<div class="issue">
<div class="id">ShowToast<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Toast created but not shown.</div>
<div class="explanation">
<code>Toast.makeText()</code> creates a <code>Toast</code> but does <b>not</b> show it. You must call <code>show()</code> on the resulting object to actually make the <code>Toast</code> appear.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "ShowToast" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="SignatureOrSystemPermissions"></a>
<div class="issue">
<div class="id">SignatureOrSystemPermissions<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Security</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: signatureOrSystem permissions declared.</div>
<div class="explanation">
The <code>signature</code> protection level should probably be sufficient for most needs and works regardless of where applications are installed. The <code>signatureOrSystem</code> level is used for certain situations where multiple vendors have applications built into a system image and need to share specific features explicitly because they are being built together.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "SignatureOrSystemPermissions" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="SimpleDateFormat"></a>
<div class="issue">
<div class="id">SimpleDateFormat<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Implied locale in date format.</div>
<div class="explanation">
Almost all callers should use <code>getDateInstance()</code>, <code>getDateTimeInstance()</code>, or <code>getTimeInstance()</code> to get a ready-made instance of SimpleDateFormat suitable for the user's locale. The main reason you'd create an instance this class directly is because you need to format/parse a specific machine-readable format, in which case you almost certainly want to explicitly ask for US to ensure that you get ASCII digits (rather than, say, Arabic digits).<br/>
<br/>
Therefore, you should either use the form of the SimpleDateFormat constructor where you pass in an explicit locale, such as Locale.US, or use one of the get instance methods, or suppress this error if really know what you are doing.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/reference/java/text/SimpleDateFormat.html">http://developer.android.com/reference/java/text/SimpleDateFormat.html</a>
</div><br/>To suppress this error, use the issue id "SimpleDateFormat" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="SmallSp"></a>
<div class="issue">
<div class="id">SmallSp<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 4 / 10<br/>
Category: Usability</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Text size is too small.</div>
<div class="explanation">
Avoid using sizes smaller than 12sp.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "SmallSp" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="SpUsage"></a>
<div class="issue">
<div class="id">SpUsage<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 3 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Using <code>dp</code> instead of <code>sp</code> for text sizes.</div>
<div class="explanation">
When setting text sizes, you should normally use <code>sp</code>, or "scale-independent pixels". This is like the <code>dp</code> unit, but it is also scaled by the user's font size preference. It is recommend you use this unit when specifying font sizes, so they will be adjusted for both the screen density and the user's preference.<br/>
<br/>
There <b>are</b> cases where you might need to use <code>dp</code>; typically this happens when the text is in a container with a specific dp-size. This will prevent the text from spilling outside the container. Note however that this means that the user's font size settings are not respected, so consider adjusting the layout itself to be more flexible.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/training/multiscreen/screendensities.html">http://developer.android.com/training/multiscreen/screendensities.html</a>
</div><br/>To suppress this error, use the issue id "SpUsage" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="StateListReachable"></a>
<div class="issue">
<div class="id">StateListReachable<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Unreachable state in a <code>&lt;selector></code></div>
<div class="explanation">
In a selector, only the last child in the state list should omit a state qualifier. If not, all subsequent items in the list will be ignored since the given item will match all.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "StateListReachable" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="StopShip"></a>
<div class="issue">
<div class="id">StopShip<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Default<br/>
Priority: 10 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Code contains <code>STOPSHIP</code> marker.</div>
<div class="explanation">
Using the comment <code>// STOPSHIP</code> can be used to flag code that is incomplete but checked in. This comment marker can be used to indicate that the code should not be shipped until the issue is addressed, and lint will look for these.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "StopShip" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="StringFormatCount"></a>
<div class="issue">
<div class="id">StringFormatCount<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Correctness:Messages</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Formatting argument types incomplete or inconsistent.</div>
<div class="explanation">
When a formatted string takes arguments, it usually needs to reference the same arguments in all translations (or all arguments if there are no translations.<br/>
<br/>
There are cases where this is not the case, so this issue is a warning rather than an error by default. However, this usually happens when a language is not translated or updated correctly.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "StringFormatCount" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="StringFormatInvalid"></a>
<div class="issue">
<div class="id">StringFormatInvalid<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 9 / 10<br/>
Category: Correctness:Messages</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Invalid format string.</div>
<div class="explanation">
If a string contains a '%' character, then the string may be a formatting string which will be passed to <code>String.format</code> from Java code to replace each '%' occurrence with specific values.<br/>
<br/>
This lint warning checks for two related problems:<br/>
(1) Formatting strings that are invalid, meaning that <code>String.format</code> will throw exceptions at runtime when attempting to use the format string.<br/>
(2) Strings containing '%' that are not formatting strings getting passed to a <code>String.format</code> call. In this case the '%' will need to be escaped as '%%'.<br/>
<br/>
NOTE: Not all Strings which look like formatting strings are intended for use by <code>String.format</code>; for example, they may contain date formats intended for <code>android.text.format.Time#format()</code>. Lint cannot always figure out that a String is a date format, so you may get false warnings in those scenarios. See the suppress help topic for information on how to suppress errors in that case.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "StringFormatInvalid" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="StringFormatMatches"></a>
<div class="issue">
<div class="id">StringFormatMatches<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 9 / 10<br/>
Category: Correctness:Messages</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: <code>String.format</code> string doesn't match the XML format string.</div>
<div class="explanation">
This lint check ensures the following:<br/>
(1) If there are multiple translations of the format string, then all translations use the same type for the same numbered arguments<br/>
(2) The usage of the format string in Java is consistent with the format string, meaning that the parameter types passed to String.format matches those in the format string.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "StringFormatMatches" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="StringShouldBeInt"></a>
<div class="issue">
<div class="id">StringShouldBeInt<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 8 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: String should be int.</div>
<div class="explanation">
The properties <code>compileSdkVersion</code>, <code>minSdkVersion</code> and <code>targetSdkVersion</code> are usually numbers, but can be strings when you are using an add-on (in the case of <code>compileSdkVersion</code>) or a preview platform (for the other two properties).<br/>
<br/>
However, you can not use a number as a string (e.g. "19" instead of 19); that will result in a platform not found error message at build/sync time.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "StringShouldBeInt" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="Suspicious0dp"></a>
<div class="issue">
<div class="id">Suspicious0dp<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Suspicious 0dp dimension.</div>
<div class="explanation">
Using 0dp as the width in a horizontal LinearLayout with weights is a useful trick to ensure that only the weights (and not the intrinsic sizes) are used when sizing the children.<br/>
<br/>
However, if you use 0dp for the opposite dimension, the view will be invisible. This can happen if you change the orientation of a layout without also flipping the 0dp dimension in all the children.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "Suspicious0dp" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="SuspiciousImport"></a>
<div class="issue">
<div class="id">SuspiciousImport<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 9 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: '<code>import android.R</code>' statement.</div>
<div class="explanation">
Importing <code>android.R</code> is usually not intentional; it sometimes happens when you use an IDE and ask it to automatically add imports at a time when your project's R class it not present.<br/>
<br/>
Once the import is there you might get a lot of "confusing" error messages because of course the fields available on <code>android.R</code> are not the ones you'd expect from just looking at your own <code>R</code> class.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "SuspiciousImport" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="TextFields"></a>
<div class="issue">
<div class="id">TextFields<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Eclipse/ADT & Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Usability</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Missing <code>inputType</code> or <code>hint</code></div>
<div class="explanation">
Providing an <code>inputType</code> attribute on a text field improves usability because depending on the data to be input, optimized keyboards can be shown to the user (such as just digits and parentheses for a phone number). Similarly,a hint attribute displays a hint to the user for what is expected in the text field.<br/>
<br/>
The lint detector also looks at the <code>id</code> of the view, and if the id offers a hint of the purpose of the field (for example, the <code>id</code> contains the phrase <code>phone</code> or <code>email</code>), then lint will also ensure that the <code>inputType</code> contains the corresponding type attributes.<br/>
<br/>
If you really want to keep the text field generic, you can suppress this warning by setting <code>inputType="text"</code>.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "TextFields" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="TextViewEdits"></a>
<div class="issue">
<div class="id">TextViewEdits<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 7 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: TextView should probably be an EditText instead.</div>
<div class="explanation">
Using a <code>&lt;TextView></code> to input text is generally an error, you should be using <code>&lt;EditText></code> instead. <code>EditText</code> is a subclass of <code>TextView</code>, and some of the editing support is provided by <code>TextView</code>, so it's possible to set some input-related properties on a <code>TextView</code>. However, using a <code>TextView</code> along with input attributes is usually a cut &amp; paste error. To input text you should be using <code>&lt;EditText></code>.<br/>
<br/>
This check also checks subclasses of <code>TextView</code>, such as <code>Button</code> and <code>CheckBox</code>, since these have the same issue: they should not be used with editable attributes.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "TextViewEdits" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="TooDeepLayout"></a>
<div class="issue">
<div class="id">TooDeepLayout<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 1 / 10<br/>
Category: Performance</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Layout hierarchy is too deep.</div>
<div class="explanation">
Layouts with too much nesting is bad for performance. Consider using a flatter layout (such as <code>RelativeLayout</code> or <code>GridLayout</code>).The default maximum depth is 10 but can be configured with the environment variable <code>ANDROID_LINT_MAX_DEPTH</code>.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "TooDeepLayout" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="TooManyViews"></a>
<div class="issue">
<div class="id">TooManyViews<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 1 / 10<br/>
Category: Performance</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Layout has too many views.</div>
<div class="explanation">
Using too many views in a single layout is bad for performance. Consider using compound drawables or other tricks for reducing the number of views in this layout.<br/>
<br/>
The maximum view count defaults to 80 but can be configured with the environment variable <code>ANDROID_LINT_MAX_VIEW_COUNT</code>.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "TooManyViews" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="TrulyRandom"></a>
<div class="issue">
<div class="id">TrulyRandom<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 9 / 10<br/>
Category: Security</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Weak RNG.</div>
<div class="explanation">
Key generation, signing, encryption, and random number generation may not receive cryptographically strong values due to improper initialization of the underlying PRNG on Android 4.3 and below.<br/>
<br/>
If your application relies on cryptographically secure random number generation you should apply the workaround described in https://android-developers.blogspot.com/2013/08/some-securerandom-thoughts.html .<br/>
<br/>
This lint rule is mostly informational; it does not accurately detect whether cryptographically secure RNG is required, or whether the workaround has already been applied. After reading the blog entry and updating your code if necessary, you can disable this lint issue.
</div>
<br/><div class="moreinfo">More info: <a href="https://android-developers.blogspot.com/2013/08/some-securerandom-thoughts.html">https://android-developers.blogspot.com/2013/08/some-securerandom-thoughts.html</a>
</div><br/>To suppress this error, use the issue id "TrulyRandom" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="TrustAllX509TrustManager"></a>
<div class="issue">
<div class="id">TrustAllX509TrustManager<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Security</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Insecure TLS/SSL trust manager.</div>
<div class="explanation">
This check looks for X509TrustManager implementations whose <code>checkServerTrusted</code> or <code>checkClientTrusted</code> methods do nothing (thus trusting any certificate chain) which could result in insecure network traffic caused by trusting arbitrary TLS/SSL certificates presented by peers.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "TrustAllX509TrustManager" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="TypographyDashes"></a>
<div class="issue">
<div class="id">TypographyDashes<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Eclipse/ADT & Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Usability:Typography</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Hyphen can be replaced with dash.</div>
<div class="explanation">
The "n dash" (&#8211;, &amp;#8211;) and the "m dash" (&#8212;, &amp;#8212;) characters are used for ranges (n dash) and breaks (m dash). Using these instead of plain hyphens can make text easier to read and your application will look more polished.
</div>
<br/><div class="moreinfo">More info: <a href="http://en.wikipedia.org/wiki/Dash">http://en.wikipedia.org/wiki/Dash</a>
</div><br/>To suppress this error, use the issue id "TypographyDashes" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="TypographyEllipsis"></a>
<div class="issue">
<div class="id">TypographyEllipsis<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Eclipse/ADT & Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Usability:Typography</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Ellipsis string can be replaced with ellipsis character.</div>
<div class="explanation">
You can replace the string "..." with a dedicated ellipsis character, ellipsis character (&#8230;, &amp;#8230;). This can help make the text more readable.
</div>
<br/><div class="moreinfo">More info: <a href="http://en.wikipedia.org/wiki/Ellipsis">http://en.wikipedia.org/wiki/Ellipsis</a>
</div><br/>To suppress this error, use the issue id "TypographyEllipsis" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="TypographyFractions"></a>
<div class="issue">
<div class="id">TypographyFractions<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Eclipse/ADT & Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Usability:Typography</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Fraction string can be replaced with fraction character.</div>
<div class="explanation">
You can replace certain strings, such as 1/2, and 1/4, with dedicated characters for these, such as ½ (&amp;#189;) and ¼ (&amp;#188;). This can help make the text more readable.
</div>
<br/><div class="moreinfo">More info: <a href="http://en.wikipedia.org/wiki/Number_Forms">http://en.wikipedia.org/wiki/Number_Forms</a>
</div><br/>To suppress this error, use the issue id "TypographyFractions" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="TypographyOther"></a>
<div class="issue">
<div class="id">TypographyOther<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Eclipse/ADT & Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 3 / 10<br/>
Category: Usability:Typography</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Other typographical problems.</div>
<div class="explanation">
This check looks for miscellaneous typographical problems and offers replacement sequences that will make the text easier to read and your application more polished.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "TypographyOther" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="TypographyQuotes"></a>
<div class="issue">
<div class="id">TypographyQuotes<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Eclipse/ADT & Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Default<br/>
Priority: 5 / 10<br/>
Category: Usability:Typography</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Straight quotes can be replaced with curvy quotes.</div>
<div class="explanation">
Straight single quotes and double quotes, when used as a pair, can be replaced by "curvy quotes" (or directional quotes). This can make the text more readable.<br/>
<br/>
Note that you should never use grave accents and apostrophes to quote, `like this'.<br/>
<br/>
(Also note that you should not use curvy quotes for code fragments.)
</div>
<br/><div class="moreinfo">More info: <a href="http://en.wikipedia.org/wiki/Quotation_mark">http://en.wikipedia.org/wiki/Quotation_mark</a>
</div><br/>To suppress this error, use the issue id "TypographyQuotes" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="Typos"></a>
<div class="issue">
<div class="id">Typos<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Eclipse/ADT & Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 7 / 10<br/>
Category: Correctness:Messages</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Spelling error.</div>
<div class="explanation">
This check looks through the string definitions, and if it finds any words that look like likely misspellings, they are flagged.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "Typos" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="UniqueConstants"></a>
<div class="issue">
<div class="id">UniqueConstants<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 3 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Overlapping Enumeration Constants.</div>
<div class="explanation">
The <code>@IntDef</code> annotation allows you to create a light-weight "enum" or type definition. However, it's possible to accidentally specify the same value for two or more of the values, which can lead to hard-to-detect bugs. This check looks for this scenario and flags any repeated constants.<br/>
<br/>
In some cases, the repeated constant is intentional (for example, renaming a constant to a more intuitive name, and leaving the old name in place for compatibility purposes.) In that case, simply suppress this check by adding a <code>@SuppressLint("UniqueConstants")</code> annotation.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "UniqueConstants" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="UnknownIdInLayout"></a>
<div class="issue">
<div class="id">UnknownIdInLayout<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Reference to an id that is not in the current layout.</div>
<div class="explanation">
The <code>@+id/</code> syntax refers to an existing id, or creates a new one if it has not already been defined elsewhere. However, this means that if you have a typo in your reference, or if the referred view no longer exists, you do not get a warning since the id will be created on demand.<br/>
<br/>
This is sometimes intentional, for example where you are referring to a view which is provided in a different layout via an include. However, it is usually an accident where you have a typo or you have renamed a view without updating all the references to it.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "UnknownIdInLayout" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="UnlocalizedSms"></a>
<div class="issue">
<div class="id">UnlocalizedSms<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: SMS phone number missing country code.</div>
<div class="explanation">
SMS destination numbers must start with a country code or the application code must ensure that the SMS is only sent when the user is in the same country as the receiver.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "UnlocalizedSms" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="UnprotectedSMSBroadcastReceiver"></a>
<div class="issue">
<div class="id">UnprotectedSMSBroadcastReceiver<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Security</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Unprotected SMS BroadcastReceiver.</div>
<div class="explanation">
BroadcastReceivers that declare an intent-filter for SMS_DELIVER or SMS_RECEIVED must ensure that the caller has the BROADCAST_SMS permission, otherwise it is possible for malicious actors to spoof intents.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "UnprotectedSMSBroadcastReceiver" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="UnsafeProtectedBroadcastReceiver"></a>
<div class="issue">
<div class="id">UnsafeProtectedBroadcastReceiver<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Security</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Unsafe Protected BroadcastReceiver.</div>
<div class="explanation">
BroadcastReceivers that declare an intent-filter for a protected-broadcast action string must check that the received intent's action string matches the expected value, otherwise it is possible for malicious actors to spoof intents.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "UnsafeProtectedBroadcastReceiver" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="UnsupportedTvHardware"></a>
<div class="issue">
<div class="id">UnsupportedTvHardware<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Unsupported TV Hardware Feature.</div>
<div class="explanation">
The &lt;uses-feature> element should not require this unsupported TV hardware feature. Any uses-feature not explicitly marked with required="false" is necessary on the device to be installed on. Ensure that any features that might prevent it from being installed on a TV device are reviewed and marked as not required in the manifest.
</div>
<br/><div class="moreinfo">More info: <a href="https://developer.android.com/training/tv/start/hardware.html#unsupported-features">https://developer.android.com/training/tv/start/hardware.html#unsupported-features</a>
</div><br/>To suppress this error, use the issue id "UnsupportedTvHardware" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="UnusedAttribute"></a>
<div class="issue">
<div class="id">UnusedAttribute<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Attribute unused on older versions.</div>
<div class="explanation">
This check finds attributes set in XML files that were introduced in a version newer than the oldest version targeted by your application (with the <code>minSdkVersion</code> attribute).<br/>
<br/>
This is not an error; the application will simply ignore the attribute. However, if the attribute is important to the appearance of functionality of your application, you should consider finding an alternative way to achieve the same result with only available attributes, and then you can optionally create a copy of the layout in a layout-vNN folder which will be used on API NN or higher where you can take advantage of the newer attribute.<br/>
<br/>
Note: This check does not only apply to attributes. For example, some tags can be unused too, such as the new <code>&lt;tag></code> element in layouts introduced in API 21.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "UnusedAttribute" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="UnusedIds"></a>
<div class="issue">
<div class="id">UnusedIds<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Default<br/>
Priority: 1 / 10<br/>
Category: Performance</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Unused id.</div>
<div class="explanation">
This resource id definition appears not to be needed since it is not referenced from anywhere. Having id definitions, even if unused, is not necessarily a bad idea since they make working on layouts and menus easier, so there is not a strong reason to delete these.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "UnusedIds" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="UnusedNamespace"></a>
<div class="issue">
<div class="id">UnusedNamespace<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 1 / 10<br/>
Category: Performance</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Unused namespace.</div>
<div class="explanation">
Unused namespace declarations take up space and require processing that is not necessary
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "UnusedNamespace" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="UnusedQuantity"></a>
<div class="issue">
<div class="id">UnusedQuantity<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 3 / 10<br/>
Category: Correctness:Messages</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Unused quantity translations.</div>
<div class="explanation">
Android defines a number of different quantity strings, such as <code>zero</code>, <code>one</code>, <code>few</code> and <code>many</code>. However, many languages do not distinguish grammatically between all these different quantities.<br/>
<br/>
This lint check looks at the quantity strings defined for each translation and flags any quantity strings that are unused (because the language does not make that quantity distinction, and Android will therefore not look it up.).<br/>
<br/>
For example, in Chinese, only the <code>other</code> quantity is used, so even if you provide translations for <code>zero</code> and <code>one</code>, these strings will <b>not</b> be returned when <code>getQuantityString()</code> is called, even with <code>0</code> or <code>1</code>.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/guide/topics/resources/string-resource.html#Plurals">http://developer.android.com/guide/topics/resources/string-resource.html#Plurals</a>
</div><br/>To suppress this error, use the issue id "UnusedQuantity" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="UnusedResources"></a>
<div class="issue">
<div class="id">UnusedResources<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 3 / 10<br/>
Category: Performance</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Unused resources.</div>
<div class="explanation">
Unused resources make applications larger and slow down builds.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "UnusedResources" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="UseAlpha2"></a>
<div class="issue">
<div class="id">UseAlpha2<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Using 3-letter Codes.</div>
<div class="explanation">
For compatibility with earlier devices, you should only use 3-letter language and region codes when there is no corresponding 2 letter code.
</div>
<br/><div class="moreinfo">More info: <a href="https://tools.ietf.org/html/bcp47">https://tools.ietf.org/html/bcp47</a>
</div><br/>To suppress this error, use the issue id "UseAlpha2" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="UseCheckPermission"></a>
<div class="issue">
<div class="id">UseCheckPermission<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Security</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Using the result of check permission calls.</div>
<div class="explanation">
You normally want to use the result of checking a permission; these methods return whether the permission is held; they do not throw an error if the permission is not granted. Code which does not do anything with the return value probably meant to be calling the enforce methods instead, e.g. rather than <code>Context#checkCallingPermission</code> it should call <code>Context#enforceCallingPermission</code>.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "UseCheckPermission" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="UseCompoundDrawables"></a>
<div class="issue">
<div class="id">UseCompoundDrawables<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Eclipse/ADT&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Performance</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Node can be replaced by a <code>TextView</code> with compound drawables.</div>
<div class="explanation">
A <code>LinearLayout</code> which contains an <code>ImageView</code> and a <code>TextView</code> can be more efficiently handled as a compound drawable (a single TextView, using the <code>drawableTop</code>, <code>drawableLeft</code>, <code>drawableRight</code> and/or <code>drawableBottom</code> attributes to draw one or more images adjacent to the text).<br/>
<br/>
If the two widgets are offset from each other with margins, this can be replaced with a <code>drawablePadding</code> attribute.<br/>
<br/>
There's a lint quickfix to perform this conversion in the Eclipse plugin.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "UseCompoundDrawables" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="UseSparseArrays"></a>
<div class="issue">
<div class="id">UseSparseArrays<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 4 / 10<br/>
Category: Performance</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: HashMap can be replaced with SparseArray.</div>
<div class="explanation">
For maps where the keys are of type integer, it's typically more efficient to use the Android <code>SparseArray</code> API. This check identifies scenarios where you might want to consider using <code>SparseArray</code> instead of <code>HashMap</code> for better performance.<br/>
<br/>
This is <b>particularly</b> useful when the value types are primitives like ints, where you can use <code>SparseIntArray</code> and avoid auto-boxing the values from <code>int</code> to <code>Integer</code>.<br/>
<br/>
If you need to construct a <code>HashMap</code> because you need to call an API outside of your control which requires a <code>Map</code>, you can suppress this warning using for example the <code>@SuppressLint</code> annotation.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "UseSparseArrays" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="UseValueOf"></a>
<div class="issue">
<div class="id">UseValueOf<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 4 / 10<br/>
Category: Performance</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Should use <code>valueOf</code> instead of <code>new</code></div>
<div class="explanation">
You should not call the constructor for wrapper classes directly, such as`new Integer(42)`. Instead, call the <code>valueOf</code> factory method, such as <code>Integer.valueOf(42)</code>. This will typically use less memory because common integers such as 0 and 1 will share a single instance.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "UseValueOf" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="UselessLeaf"></a>
<div class="issue">
<div class="id">UselessLeaf<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Eclipse/ADT & Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 2 / 10<br/>
Category: Performance</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Useless leaf layout.</div>
<div class="explanation">
A layout that has no children or no background can often be removed (since it is invisible) for a flatter and more efficient layout hierarchy.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "UselessLeaf" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="UselessParent"></a>
<div class="issue">
<div class="id">UselessParent<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Eclipse/ADT&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 2 / 10<br/>
Category: Performance</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Useless parent layout.</div>
<div class="explanation">
A layout with children that has no siblings, is not a scrollview or a root layout, and does not have a background, can be removed and have its children moved directly into the parent for a flatter and more efficient layout hierarchy.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "UselessParent" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="UsesMinSdkAttributes"></a>
<div class="issue">
<div class="id">UsesMinSdkAttributes<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 9 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Minimum SDK and target SDK attributes not defined.</div>
<div class="explanation">
The manifest should contain a <code>&lt;uses-sdk></code> element which defines the minimum API Level required for the application to run, as well as the target version (the highest API level you have tested the version for.)
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/guide/topics/manifest/uses-sdk-element.html">http://developer.android.com/guide/topics/manifest/uses-sdk-element.html</a>
</div><br/>To suppress this error, use the issue id "UsesMinSdkAttributes" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="UsingHttp"></a>
<div class="issue">
<div class="id">UsingHttp<div class="issueSeparator"></div>
</div>
<div class="metadata">Note: This issue has an associated quickfix operation in Android Studio/IntelliJ&nbsp;<img alt="Fix" border="0" align="top" src="lint-results-release-fatal_files/lint-run.png" />
<br>
Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Security</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Using HTTP instead of HTTPS.</div>
<div class="explanation">
The Gradle Wrapper is available both via HTTP and HTTPS. HTTPS is more secure since it protects against man-in-the-middle attacks etc. Older projects created in Android Studio used HTTP but we now default to HTTPS and recommend upgrading existing projects.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "UsingHttp" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="VectorRaster"></a>
<div class="issue">
<div class="id">VectorRaster<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Vector Image Generation.</div>
<div class="explanation">
Vector icons require API 21, but when using Android Gradle plugin 1.4 or higher, vectors placed in the <code>drawable</code> folder are automatically moved to <code>drawable-*dpi-v21</code> and a bitmap image is generated each <code>drawable-*dpi</code> folder instead, for backwards compatibility (provided <code>minSdkVersion</code> is less than 21.).<br/>
<br/>
However, there are some limitations to this vector image generation, and this lint check flags elements and attributes that are not fully supported. You should manually check whether the generated output is acceptable for those older devices.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "VectorRaster" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="ViewConstructor"></a>
<div class="issue">
<div class="id">ViewConstructor<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 3 / 10<br/>
Category: Usability</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Missing View constructors for XML inflation.</div>
<div class="explanation">
Some layout tools (such as the Android layout editor for Studio &amp; Eclipse) needs to find a constructor with one of the following signatures:<br/>
* <code>View(Context context)</code><br/>
* <code>View(Context context, AttributeSet attrs)</code><br/>
* <code>View(Context context, AttributeSet attrs, int defStyle)</code><br/>
<br/>
If your custom view needs to perform initialization which does not apply when used in a layout editor, you can surround the given code with a check to see if <code>View#isInEditMode()</code> is false, since that method will return <code>false</code> at runtime but true within a user interface editor.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "ViewConstructor" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="ViewHolder"></a>
<div class="issue">
<div class="id">ViewHolder<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 5 / 10<br/>
Category: Performance</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: View Holder Candidates.</div>
<div class="explanation">
When implementing a view Adapter, you should avoid unconditionally inflating a new layout; if an available item is passed in for reuse, you should try to use that one instead. This helps make for example ListView scrolling much smoother.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/training/improving-layouts/smooth-scrolling.html#ViewHolder">http://developer.android.com/training/improving-layouts/smooth-scrolling.html#ViewHolder</a>
</div><br/>To suppress this error, use the issue id "ViewHolder" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="ViewTag"></a>
<div class="issue">
<div class="id">ViewTag<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Performance</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Tagged object leaks.</div>
<div class="explanation">
Prior to Android 4.0, the implementation of <code>View.setTag(int, Object)</code> would store the objects in a static map, where the values were strongly referenced. This means that if the object contains any references pointing back to the context, the context (which points to pretty much everything else) will leak. If you pass a view, the view provides a reference to the context that created it. Similarly, view holders typically contain a view, and cursors are sometimes also associated with views.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "ViewTag" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="Wakelock"></a>
<div class="issue">
<div class="id">Wakelock<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 9 / 10<br/>
Category: Performance</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Incorrect <code>WakeLock</code> usage.</div>
<div class="explanation">
Failing to release a wakelock properly can keep the Android device in a high power mode, which reduces battery life. There are several causes of this, such as releasing the wake lock in <code>onDestroy()</code> instead of in <code>onPause()</code>, failing to call <code>release()</code> in all possible code paths after an <code>acquire()</code>, and so on.<br/>
<br/>
NOTE: If you are using the lock just to keep the screen on, you should strongly consider using <code>FLAG_KEEP_SCREEN_ON</code> instead. This window flag will be correctly managed by the platform as the user moves between applications and doesn't require a special permission. See <a href="http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_KEEP_SCREEN_ON">http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_KEEP_SCREEN_ON</a>.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "Wakelock" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="WebViewLayout"></a>
<div class="issue">
<div class="id">WebViewLayout<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 7 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: WebViews in wrap_content parents.</div>
<div class="explanation">
The WebView implementation has certain performance optimizations which will not work correctly if the parent view is using <code>wrap_content</code> rather than <code>match_parent</code>. This can lead to subtle UI bugs.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "WebViewLayout" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="WorldReadableFiles"></a>
<div class="issue">
<div class="id">WorldReadableFiles<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 4 / 10<br/>
Category: Security</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: <code>openFileOutput()</code> or similar call passing <code>MODE_WORLD_READABLE</code></div>
<div class="explanation">
There are cases where it is appropriate for an application to write world readable files, but these should be reviewed carefully to ensure that they contain no private data that is leaked to other applications.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "WorldReadableFiles" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="WorldWriteableFiles"></a>
<div class="issue">
<div class="id">WorldWriteableFiles<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 4 / 10<br/>
Category: Security</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: <code>openFileOutput()</code> or similar call passing <code>MODE_WORLD_WRITEABLE</code></div>
<div class="explanation">
There are cases where it is appropriate for an application to write world writeable files, but these should be reviewed carefully to ensure that they contain no private data, and that if the file is modified by a malicious application it does not trick or compromise your application.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "WorldWriteableFiles" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="WrongConstant"></a>
<div class="issue">
<div class="id">WrongConstant<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Security</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Incorrect constant.</div>
<div class="explanation">
Ensures that when parameter in a method only allows a specific set of constants, calls obey those rules.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "WrongConstant" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="WrongRegion"></a>
<div class="issue">
<div class="id">WrongRegion<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="warning">Warning</span><div class="summary">
Explanation: Suspicious Language/Region Combination.</div>
<div class="explanation">
Android uses the letter codes ISO 639-1 for languages, and the letter codes ISO 3166-1 for the region codes. In many cases, the language code and the country where the language is spoken is the same, but it is also often not the case. For example, while 'se' refers to Sweden, where Swedish is spoken, the language code for Swedish is <b>not</b> <code>se</code> (which refers to the Northern Sami language), the language code is <code>sv</code>. And similarly the region code for <code>sv</code> is El Salvador.<br/>
<br/>
This lint check looks for suspicious language and region combinations, to help catch cases where you've accidentally used the wrong language or region code. Lint knows about the most common regions where a language is spoken, and if a folder combination is not one of these, it is flagged as suspicious.<br/>
<br/>
Note however that it may not be an error: you can theoretically have speakers of any language in any region and want to target that with your resources, so this check is aimed at tracking down likely mistakes, not to enforce a specific set of region and language combinations.
</div>
<br/><div class="moreinfo">More info: </div><br/>To suppress this error, use the issue id "WrongRegion" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="WrongThread"></a>
<div class="issue">
<div class="id">WrongThread<div class="issueSeparator"></div>
</div>
<div class="metadata">Disabled By: Project lint.xml file<br/>
Priority: 6 / 10<br/>
Category: Correctness</div>
Severity: <span class="error">Error</span><div class="summary">
Explanation: Wrong Thread.</div>
<div class="explanation">
Ensures that a method which expects to be called on a specific thread, is actually called from that thread. For example, calls on methods in widgets should always be made on the UI thread.
</div>
<br/><div class="moreinfo">More info: <a href="http://developer.android.com/guide/components/processes-and-threads.html#Threads">http://developer.android.com/guide/components/processes-and-threads.html#Threads</a>
</div><br/>To suppress this error, use the issue id "WrongThread" as explained in the <a href="#SuppressInfo">Suppressing Warnings and Errors</a> section.<br/>
</div>
<a name="SuppressInfo"></a>
<div class="category">Suppressing Warnings and Errors<div class="categorySeparator"></div>
</div>
Lint errors can be suppressed in a variety of ways:<br/>
<br/>
1. With a <code>@SuppressLint</code> annotation in the Java code<br/>
2. With a <code>tools:ignore</code> attribute in the XML file<br/>
3. With ignore flags specified in the <code>build.gradle</code> file, as explained below<br/>
4. With a <code>lint.xml</code> configuration file in the project<br/>
5. With a <code>lint.xml</code> configuration file passed to lint via the --config flag<br/>
6. With the --ignore flag passed to lint.<br/>
<br/>
To suppress a lint warning with an annotation, add a <code>@SuppressLint("id")</code> annotation on the class, method or variable declaration closest to the warning instance you want to disable. The id can be one or more issue id's, such as <code>"UnusedResources"</code> or <code>{"UnusedResources","UnusedIds"}</code>, or it can be <code>"all"</code> to suppress all lint warnings in the given scope.<br/>
<br/>
To suppress a lint warning in an XML file, add a <code>tools:ignore="id"</code> attribute on the element containing the error, or one of its surrounding elements. You also need to define the namespace for the tools prefix on the root element in your document, next to the <code>xmlns:android</code> declaration:<br/>
<code>xmlns:tools="http://schemas.android.com/tools"</code><br/>
<br/>
To suppress a lint warning in a <code>build.gradle</code> file, add a section like this:<br/>
<br/>
android {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;lintOptions {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disable 'TypographyFractions','TypographyQuotes'<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
}<br/>
<br/>
Here we specify a comma separated list of issue id's after the disable command. You can also use <code>warning</code> or <code>error</code> instead of <code>disable</code> to change the severity of issues.<br/>
<br/>
To suppress lint warnings with a configuration XML file, create a file named <code>lint.xml</code> and place it at the root directory of the project in which it applies.<br/>
<br/>
The format of the <code>lint.xml</code> file is something like the following:<br/>
<br/>
&lt;?xml version="1.0" encoding="UTF-8"?><br/>
&lt;lint><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;!-- Disable this given check in this project --><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;issue id="IconMissingDensityFolder" severity="ignore" /><br/>
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;!-- Ignore the ObsoleteLayoutParam issue in the given files --><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;issue id="ObsoleteLayoutParam"><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ignore path="res/layout/activation.xml" /><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ignore path="res/layout-xlarge/activation.xml" /><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/issue><br/>
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;!-- Ignore the UselessLeaf issue in the given file --><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;issue id="UselessLeaf"><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ignore path="res/layout/main.xml" /><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/issue><br/>
<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;!-- Change the severity of hardcoded strings to "error" --><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;issue id="HardcodedText" severity="error" /><br/>
&lt;/lint><br/>
<br/>
To suppress lint checks from the command line, pass the --ignore flag with a comma separated list of ids to be suppressed, such as:<br/>
<code>$ lint --ignore UnusedResources,UselessLeaf /my/project/path</code><br/>
<br/>
For more information, see <a href="http://g.co/androidstudio/suppressing-lint-warnings">http://g.co/androidstudio/suppressing-lint-warnings</a><br/>
</body>
</html>