Lint Report
Check performed at Wed Sep 10 10:55:38 BRT 2014.
2 errors and 0 warnings found:
../src/main/java/erick.bandeco.view/ListDialogFragment.java:28:
This fragment should provide a default constructor (a public constructor with no arguments) (erick.bandeco.view.ListDialogFragment)
25 private OnDismissListener onDismissListener;
26 private LinearLayout listLinearLayout;
27
28 public ListDialogFragment(ArrayList<String> list){
29 super();
30
../src/main/java/erick.bandeco.view/ListDialogFragment.java:29:
Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(Bundle) instead
26 private LinearLayout listLinearLayout;
27
28 public ListDialogFragment(ArrayList<String> list){
29 super();
30
31 this.list = list;
Priority: 6 / 10
Category: Correctness
Severity:
Fatal
Explanation: Ensures that Fragment
subclasses can be instantiated.
From the Fragment documentation:
Every fragment must have an empty constructor, so it can be instantiated when restoring its activity's state. It is strongly recommended that subclasses do not have other constructors with parameters, since these constructors will not be called when the fragment is re-instantiated; instead, arguments can be supplied by the caller with setArguments(Bundle)
and later retrieved by the Fragment with getArguments()
.
To suppress this error, use the issue id "ValidFragment" as explained in the
Suppressing Warnings and Errors section.
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.
Disabled By: Project lint.xml file
Priority: 10 / 10
Category: Correctness
Severity:
Warning
Explanation: Checks that AdapterViews do not define their children in XML.
AdapterViews such as ListViews must be configured with data from Java code, such as a ListAdapter.
To suppress this error, use the issue id "AdapterViewChildren" as explained in the
Suppressing Warnings and Errors section.
Severity:
Warning
Explanation: Ensure that allowBackup is explicitly set in the application's manifest.
The allowBackup attribute determines if an application's data can be backed up and restored. It is documented at
http://developer.android.com/reference/android/R.attr.erick.bandeco.html#allowBackup
By default, this flag is set to
true
. When this flag is set to
true
, application data can be backed up and restored by the user using
adb backup
and
adb restore
.
This may have security consequences for an application.
adb backup
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.
adb restore
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.
Setting
allowBackup="false"
opts an application out of both backup and restore.
To fix this warning, decide whether your application should support backup, and explicitly set
android:allowBackup=(true|false)"
To suppress this error, use the issue id "AllowBackup" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 3 / 10
Category: Usability
Severity:
Warning
Explanation: Checks for uses of showAsAction="always"
and suggests showAsAction="ifRoom"
instead.
Using showAsAction="always"
in menu XML, or MenuItem.SHOW_AS_ACTION_ALWAYS
in Java code is usually a deviation from the user interface style guide.Use ifRoom
or the corresponding MenuItem.SHOW_AS_ACTION_IF_ROOM
instead.
If always
is used sparingly there are usually no problems and behavior is roughly equivalent to ifRoom
but with preference over other ifRoom
items. Using it more than twice in the same menu is a bad idea.
This check looks for menu XML files that contain more than two always
actions, or some always
actions and no ifRoom
actions. In Java code, it looks for projects that contain references to MenuItem.SHOW_AS_ACTION_ALWAYS
and no references to MenuItem.SHOW_AS_ACTION_IF_ROOM
.
To suppress this error, use the issue id "AlwaysShowAction" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 6 / 10
Category: Correctness
Severity:
Warning
Explanation: Looks for usages of the assert keyword.
Assertions are not checked at runtime. There are ways to request that they be used by Dalvik (adb shell setprop debug.assert 1
), but the property is ignored in many places and can not be relied upon. Instead, perform conditional checking inside if (BuildConfig.DEBUG) { }
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.
For example, you can replace assert speed > 0
with if (BuildConfig.DEBUG && !(speed > 0)) { throw new AssertionError() }
.
(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.)
To suppress this error, use the issue id "Assert" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Default
Priority: 6 / 10
Category: Usability
Severity:
Warning
Explanation: Looks for Back buttons, which are not common on the Android platform.
According to the Android Design Guide,
"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."
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.
To suppress this error, use the issue id "BackButton" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 2 / 10
Category: Usability
Severity:
Warning
Explanation: Ensures that Cancel/OK dialog buttons use the canonical capitalization.
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.
More info:
To suppress this error, use the issue id "ButtonCase" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 8 / 10
Category: Usability
Severity:
Warning
Explanation: Ensures the dismissive action of a dialog is on the left and affirmative on the right.
According to the Android Design Guide,
"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."
This check looks for button bars and buttons which look like cancel buttons, and makes sure that these are on the left.
To suppress this error, use the issue id "ButtonOrder" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 5 / 10
Category: Usability
Severity:
Warning
Explanation: Ensures that buttons in button bars are borderless.
Button bars typically use a borderless style for the buttons. Set the style="?android:attr/buttonBarButtonStyle"
attribute on each of the buttons, and set style="?android:attr/buttonBarStyle"
on the parent layout
To suppress this error, use the issue id "ButtonStyle" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 6 / 10
Category: Correctness
Severity:
Warning
Explanation: Looks for code editing a SharedPreference
but forgetting to call commit()
on it.
After calling edit()
on a SharedPreference
, you must call commit()
or apply()
on the editor to save the results.
More info:
To suppress this error, use the issue id "CommitPrefEdits" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 7 / 10
Category: Correctness
Severity:
Warning
Explanation: Looks for missing commit()
calls on FragmentTransactions
After creating a FragmentTransaction
, you typically need to commit it as well
More info:
To suppress this error, use the issue id "CommitTransaction" as explained in the
Suppressing Warnings and Errors section.
Severity:
Warning
Explanation: Ensures that image widgets provide a contentDescription.
Non-textual widgets like ImageViews and ImageButtons should use the
contentDescription
attribute to specify a textual description of the widget such that screen readers and other accessibility tools can adequately describe the user interface.
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.
Note that for text fields, you should not set both the
hint
and the
contentDescription
attributes since the hint will never be shown. Just set the
hint
. See
http://developer.android.com/guide/topics/ui/accessibility/checklist.erick.bandeco.html#special-cases.
More info:
To suppress this error, use the issue id "ContentDescription" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 6 / 10
Category: Correctness
Severity:
Warning
Explanation: Looks for code cut & paste mistakes in findViewById()
calls.
This lint check looks for cases where you have cut & pasted calls to findViewById
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 prev
and next
and you cut & pasted findViewById(R.id.prev)
and forgot to update the second initialization to R.id.next
.
More info:
To suppress this error, use the issue id "CutPasteId" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 7 / 10
Category: Correctness
Severity:
Error
Explanation: Looks for methods treated as overrides by Dalvik.
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).
If you really did intend for this method to override the other, make the method protected
instead.
If you did not intend the override, consider making the method private, or changing its name or signature.
More info:
To suppress this error, use the issue id "DalvikOverride" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 6 / 10
Category: Correctness
Severity:
Warning
Explanation: Finds calls to locale-ambiguous String
manipulation methods.
Calling String#toLowerCase()
or #toUpperCase()
without specifying an explicit locale 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 i
is not I
.
If you want the methods to just perform ASCII replacement, for example to convert an enum name, call String#toUpperCase(Locale.US)
instead. If you really want to use the current locale, call String#toUpperCase(Locale.getDefault())
instead.
To suppress this error, use the issue id "DefaultLocale" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 2 / 10
Category: Correctness
Severity:
Warning
Explanation: Looks for usages of deprecated layouts, attributes, and so on.
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.
More info:
To suppress this error, use the issue id "Deprecated" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 7 / 10
Category: Correctness
Severity:
Warning
Explanation: Ensures that device admins are properly registered.
If you register a broadcast receiver which acts as a device admin, you must also register an <intent-filter>
for the action android.app.action.DEVICE_ADMIN_ENABLED
, without any <data>
, such that the device admin can be activated/deactivated.
To do this, add
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
to your <receiver>
.
More info:
To suppress this error, use the issue id "DeviceAdmin" as explained in the
Suppressing Warnings and Errors section.
Severity:
Warning
Explanation: Looks for LinearLayouts which should set android:baselineAligned=false.
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.
More info:
To suppress this error, use the issue id "DisableBaselineAlignment" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 9 / 10
Category: Performance
Severity:
Warning
Explanation: Looks for memory allocations within drawing code.
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.
The way this is generally handled is to allocate the needed objects up front and to reuse them for each drawing operation.
Some methods allocate memory on your behalf (such as Bitmap.create
), and these should be handled in the same way.
More info:
To suppress this error, use the issue id "DrawAllocation" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 6 / 10
Category: Correctness
Severity:
Error
Explanation: Discovers duplicate definitions of resources.
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.
More info:
To suppress this error, use the issue id "DuplicateDefinition" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 6 / 10
Category: Correctness
Severity:
Warning
Explanation: Checks for duplicate ids across layouts that are combined with include tags.
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 Activity#findViewById()
can return an unexpected erick.bandeco.view.
More info:
To suppress this error, use the issue id "DuplicateIncludedIds" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 5 / 10
Category: Correctness
Severity:
Warning
Explanation: Ensures you declare each hardware or software feature only once in the manifest.
A given feature should only be declared once in the manifest.
More info:
To suppress this error, use the issue id "DuplicateUsesFeature" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Default
Priority: 6 / 10
Category: Security
Severity:
Warning
Explanation: Looks for hidden easter eggs.
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.
More info:
To suppress this error, use the issue id "EasterEgg" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 5 / 10
Category: Internationalization
Severity:
Warning
Explanation: Checks that all XML resource files are using UTF-8 as the file encoding.
XML supports encoding in a wide variety of character sets. However, not all tools handle the XML encoding attribute correctly, and nearly all Android apps use UTF-8, so by using UTF-8 you can protect yourself against subtle bugs when using non-ASCII characters.
More info:
To suppress this error, use the issue id "EnforceUTF8" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 5 / 10
Category: Security
Severity:
Warning
Explanation: Checks for exported content providers that do not require permissions.
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 export=false
in the manifest or by protecting it with a permission that can be granted to other applications.
More info:
To suppress this error, use the issue id "ExportedContentProvider" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 5 / 10
Category: Security
Severity:
Warning
Explanation: Checks for exported receivers that do not require permissions.
Exported receivers (receivers which either set exported=true
or contain an intent-filter and do not specify exported=false
) 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.
More info:
To suppress this error, use the issue id "ExportedReceiver" as explained in the
Suppressing Warnings and Errors section.
Severity:
Warning
Explanation: Checks for exported services that do not require permissions.
Exported services (services which either set exported=true
or contain an intent-filter and do not specify exported=false
) 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.
More info:
To suppress this error, use the issue id "ExportedService" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 3 / 10
Category: Correctness
Severity:
Warning
Explanation: Looks for extraneous text in resource files.
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)
More info:
To suppress this error, use the issue id "ExtraText" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Default
Priority: 4 / 10
Category: Performance
Severity:
Warning
Explanation: Suggests replacing uses of getters with direct field access within a class.
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.
NOTE: 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.
To suppress this error, use the issue id "FieldGetter" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 3 / 10
Category: Performance
Severity:
Warning
Explanation: Suggests replacing android.util.FloatMath
calls with java.lang.Math
In older versions of Android, using android.util.FloatMath
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, FloatMath
is actually slower than using java.lang.Math
due to the way the JIT optimizes java.lang.Math
. Therefore, you should use Math
instead of FloatMath
if you are only targeting Froyo and above.
To suppress this error, use the issue id "FloatMath" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 5 / 10
Category: Usability:Icons
Severity:
Warning
Explanation: Checks for images using the GIF file format which is discouraged.
The .gif
file format is discouraged. Consider using .png
(preferred) or .jpg
(acceptable) instead.
To suppress this error, use the issue id "GifUsage" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 8 / 10
Category: Correctness
Severity:
Error
Explanation: Ensures that tool and library versions are compatible.
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 targetSdkVersion
.)
More info:
To suppress this error, use the issue id "GradleCompatible" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 4 / 10
Category: Correctness
Severity:
Warning
Explanation: Looks for old or obsolete Gradle library dependencies.
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.
More info:
To suppress this error, use the issue id "GradleDependency" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Default
Priority: 4 / 10
Category: Correctness
Severity:
Warning
Explanation: Looks for dependencies using a dynamic version rather than a fixed version.
Using +
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.)
More info:
To suppress this error, use the issue id "GradleDynamicVersion" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 6 / 10
Category: Correctness
Severity:
Error
Explanation: Identifies accidental calls to implicit getters.
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.
When computing a version name, it's tempting to for example call the method to do that getVersionName
. However, when you put that method call inside the defaultConfig
block, you will actually be calling the Groovy getter for the versionName
property instead. Therefore, you need to name your method something which does not conflict with the existing implicit getters. Consider using compute
as a prefix instead of get
.
More info:
To suppress this error, use the issue id "GradleGetter" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 4 / 10
Category: Correctness
Severity:
Error
Explanation: Looks for constructs in Gradle files which affect IDE usage.
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.
More info:
To suppress this error, use the issue id "GradleIdeError" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 4 / 10
Category: Correctness
Severity:
Warning
Explanation: Looks for values specified in the manifest file which are overridden by values in Gradle.
The value of (for example) minSdkVersion
is only used if it is not specified in the build.gradle
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.
More info:
To suppress this error, use the issue id "GradleOverrides" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 4 / 10
Category: Correctness
Severity:
Warning
Explanation: Looks for Gradle path problems such as using platform specific path separators.
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
More info:
To suppress this error, use the issue id "GradlePath" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 7 / 10
Category: Security
Severity:
Warning
Explanation: Checks for <grant-uri-permission>
elements where everything is shared.
The <grant-uri-permission>
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.
More info:
To suppress this error, use the issue id "GrantAllUris" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 4 / 10
Category: Performance
Severity:
Warning
Explanation: Ensures that Handler classes do not hold on to a reference to an outer class.
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.
More info:
To suppress this error, use the issue id "HandlerLeak" as explained in the
Suppressing Warnings and Errors section.
Severity:
Warning
Explanation: Looks for hardcoded text attributes which should be converted to resource lookup.
Hardcoding text attributes directly in layout files is bad for several reasons:
* 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)
* The application cannot be translated to other languages by just adding new translations for existing string resources.
In Android Studio and Eclipse there are quickfixes to automatically extract this hardcoded string into a resource lookup.
More info:
To suppress this error, use the issue id "HardcodedText" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 6 / 10
Category: Usability:Icons
Severity:
Warning
Explanation: Checks that icons follow the recommended visual style.
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:
ic_menu_
for action bar icons,
ic_stat_
for notification icons etc. These correspond to the naming conventions documented in
http://developer.android.com/guide/practices/ui_guidelines/icon_design.erick.bandeco.html
To suppress this error, use the issue id "IconColors" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 4 / 10
Category: Usability:Icons
Severity:
Warning
Explanation: Ensures that icons provide custom versions for all supported densities.
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.
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
ANDROID_LINT_INCLUDE_LDPI=true
. For more information on current density usage, see
http://developer.android.com/resources/dashboard/screens.erick.bandeco.html
To suppress this error, use the issue id "IconDensities" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 5 / 10
Category: Usability:Icons
Severity:
Warning
Explanation: Ensures that icons across densities provide roughly the same density-independent size.
Checks the all icons which are provided in multiple densities, all compute to roughly the same density-independent pixel (dip
) 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.
More info:
To suppress this error, use the issue id "IconDipSize" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 3 / 10
Category: Usability:Icons
Severity:
Warning
Explanation: Finds duplicated icons under different names.
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.
More info:
To suppress this error, use the issue id "IconDuplicates" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 5 / 10
Category: Usability:Icons
Severity:
Warning
Explanation: Finds icons that have identical bitmaps across various configuration parameters.
If an icon is provided under different configuration parameters such as drawable-hdpi
or -v11
, they should typically be different. This detector catches cases where the same icon is provided in different configuration folder which is usually not intentional.
More info:
To suppress this error, use the issue id "IconDuplicatesConfig" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Default
Priority: 5 / 10
Category: Usability:Icons
Severity:
Warning
Explanation: Ensures that launcher icons, notification icons etc have the correct size.
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.
To suppress this error, use the issue id "IconExpectedSize" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 3 / 10
Category: Usability:Icons
Severity:
Warning
Explanation: Checks that the icon file extension matches the actual image format in the file.
Ensures that icons have the correct file extension (e.g. a .png
file is really in the PNG format and not for example a GIF file named .png
.)
More info:
To suppress this error, use the issue id "IconExtension" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 6 / 10
Category: Usability:Icons
Severity:
Warning
Explanation: Checks that launcher icons follow the recommended visual style.
According to the Android Design Guide (
http://developer.android.com/design/style/iconography.erick.bandeco.html) your launcher icons should "use a distinct silhouette", a "three-dimensional, front erick.bandeco.view, with a slight perspective as if viewed from above, so that users perceive some depth."
The unique silhouette implies that your launcher icon should not be a filled square.
To suppress this error, use the issue id "IconLauncherShape" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 5 / 10
Category: Usability:Icons
Severity:
Warning
Explanation: Ensures that images are not defined in the density-independent drawable folder.
The res/drawable folder is intended for density-independent graphics such as shapes defined in XML. For bitmaps, move it to drawable-mdpi
and consider providing higher and lower resolution versions in drawable-ldpi
, drawable-hdpi
and drawable-xhdpi
. If the icon really is density independent (for example a solid color) you can place it in drawable-nodpi
.
To suppress this error, use the issue id "IconLocation" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 3 / 10
Category: Usability:Icons
Severity:
Warning
Explanation: Ensures that all the density folders are present.
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 folders which are missing, such as
drawable-hdpi
.
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
ANDROID_LINT_INCLUDE_LDPI=true
. For more information on current density usage, see
http://developer.android.com/resources/dashboard/screens.erick.bandeco.html
To suppress this error, use the issue id "IconMissingDensityFolder" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 5 / 10
Category: Usability:Icons
Severity:
Warning
Explanation: Checks for filename clashes between .png files and nine patch (.9.png) files.
If you accidentally name two separate resources file.png
and file.9.png
, the image file and the nine patch file will both map to the same drawable resource, @drawable/file
, which is probably not what was intended.
More info:
To suppress this error, use the issue id "IconMixedNinePatch" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 7 / 10
Category: Usability:Icons
Severity:
Warning
Explanation: Finds icons that appear in both a -nodpi
folder and a dpi folder.
Bitmaps that appear in drawable-nodpi
folders will not be scaled by the Android framework. If a drawable resource of the same name appears both in a -nodpi
folder as well as a dpi folder such as drawable-hdpi
, then the behavior is ambiguous and probably not intentional. Delete one or the other, or use different names for the icons.
More info:
To suppress this error, use the issue id "IconNoDpi" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 7 / 10
Category: Usability:Icons
Severity:
Warning
Explanation: Finds icons that appear both as a drawable .xml
file and as bitmaps.
If a drawable resource appears as an .xml
file in the drawable/
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.
More info:
To suppress this error, use the issue id "IconXmlAndPng" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 8 / 10
Category: Correctness
Severity:
Warning
Explanation: Checks for resource references where only literals are allowed.
For the versionCode
attribute, you have to specify an actual integer literal; you cannot use an indirection with a @dimen/name
resource. Similarly, the versionName
attribute should be an actual string, not a string resource url.
More info:
To suppress this error, use the issue id "IllegalResourceRef" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 4 / 10
Category: Correctness
Severity:
Warning
Explanation: Looks for use of the mm
or in
dimensions.
Avoid using mm
(millimeters) or in
(inches) as the unit for dimensions.
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 dp
(and for font sizes, sp
.)
More info:
To suppress this error, use the issue id "InOrMmUsage" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 7 / 10
Category: Correctness
Severity:
Warning
Explanation: Checks for inconsistencies in the number of elements in arrays.
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.
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.
You can suppress this error type if it finds false errors in your project.
More info:
To suppress this error, use the issue id "InconsistentArrays" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 6 / 10
Category: Correctness
Severity:
Warning
Explanation: Checks that layout variations are consistent.
This check ensures that a layout resource which is defined in multiple resource folders, specifies the same set of widgets.
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 findViewById()
fails.
There are 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
More info:
To suppress this error, use the issue id "InconsistentLayout" as explained in the
Suppressing Warnings and Errors section.
Severity:
Warning
Explanation: Looks for inefficient weight declarations in LinearLayouts.
When only a single widget in a LinearLayout defines a weight, it is more efficient to assign a width/height of 0dp
to it since it will absorb all the remaining space anyway. With a declared width/height of 0dp
it does not have to measure its own size first.
More info:
To suppress this error, use the issue id "InefficientWeight" as explained in the
Suppressing Warnings and Errors section.
Severity:
Warning
Explanation: Finds inlined fields that may or may not work on older platforms.
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.
If you really want to use this API and don't need to support older devices just set the minSdkVersion
in your AndroidManifest.xml
file.
If your code is deliberately 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 @TargetApi
annotation specifying the local minimum SDK to apply, such as @TargetApi(11)
, such that this check considers 11 rather than your manifest file's minimum SDK as the required API level.
More info:
To suppress this error, use the issue id "InlinedApi" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 3 / 10
Category: Correctness
Severity:
Warning
Explanation: Ensures that inner classes are referenced using '$' instead of '.' in class names.
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.
(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.)
More info:
To suppress this error, use the issue id "InnerclassSeparator" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 6 / 10
Category: Correctness
Severity:
Error
Explanation: Finds API accesses to APIs that are not supported in Android.
This check scans through libraries looking for calls to APIs that are not included in Android.
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.
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.
More info:
To suppress this error, use the issue id "InvalidPackage" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 8 / 10
Category: Security
Severity:
Error
Explanation: Ensures that interfaces added with addJavascriptInterface are annotated with @JavascriptInterface.
As of API 17, you must annotate methods in objects registered with the addJavascriptInterface
method with a @JavascriptInterface
annotation.
To suppress this error, use the issue id "JavascriptInterface" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 2 / 10
Category: Accessibility
Severity:
Warning
Explanation: Ensures that text fields are marked with a labelFor
attribute.
Text fields should be labelled with a labelFor
attribute, provided your minSdkVersion
is at least 17.
If your erick.bandeco.view is labeled but by a label in a different layout which includes this one, just suppress this warning from lint.
More info:
To suppress this error, use the issue id "LabelFor" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 3 / 10
Category: Correctness
Severity:
Error
Explanation: Looks for @SuppressLint annotations in locations where it doesn't work for class based checks.
The @SuppressAnnotation
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 .class
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.
More info:
To suppress this error, use the issue id "LocalSuppress" as explained in the
Suppressing Warnings and Errors section.
Severity:
Error
Explanation: Checks that files with DOS line endings are consistent.
On Windows, line endings are typically recorded as carriage return plus newline: \r\n.
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.
To suppress this error, use the issue id "MangledCRLF" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 5 / 10
Category: Correctness
Severity:
Warning
Explanation: Checks for manifest problems like <uses-sdk>
after the <application>
tag.
The <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 <application>
tag appears before some of these other elements, so it's best to order your manifest in the logical dependency order.
More info:
To suppress this error, use the issue id "ManifestOrder" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 5 / 10
Category: Usability
Severity:
Warning
Explanation: Ensures that all menu items supply a title.
From the action bar documentation:
"It's important that you always define android:title for each menu item — even if you don't declare that the title appear with the action item — for three reasons:
* 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.
* Screen readers for sight-impaired users read the menu item's title.
* 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.
The android:icon is always optional, but recommended.
To suppress this error, use the issue id "MenuTitle" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 4 / 10
Category: Performance
Severity:
Warning
Explanation: Checks whether a root <FrameLayout> can be replaced with a <merge>
tag.
If a <FrameLayout>
is the root of a layout and does not provide background or padding etc, it can often be replaced with a <merge>
tag which is slightly more efficient. Note that this depends on context, so make sure you understand how the <merge>
tag works before proceeding.
To suppress this error, use the issue id "MergeRootFrame" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 5 / 10
Category: Usability:Icons
Severity:
Warning
Explanation: Checks that the application icon is set.
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 @drawable/icon
).
To suppress this error, use the issue id "MissingApplicationIcon" as explained in the
Suppressing Warnings and Errors section.
Severity:
Warning
Explanation: Ensures that XML tags like <fragment>
specify an id
or tag
attribute.
If you do not specify an android:id or an android:tag attribute on a <fragment> element, then if the activity is restarted (for example for an orientation rotation) you may lose state. From the fragment documentation:
"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). * Supply the android:id attribute with a unique ID.
* Supply the android:tag attribute with a unique string.
If you provide neither of the previous two, the system uses the ID of the container erick.bandeco.view.
To suppress this error, use the issue id "MissingId" as explained in the
Suppressing Warnings and Errors section.
Severity:
Error
Explanation: Detect XML attributes not using the Android namespace.
Most Android views have attributes in the Android namespace. When referencing these attributes you must include the namespace prefix, or your attribute will be interpreted by aapt
as just a custom attribute.
Similarly, in manifest files, nearly all attributes should be in the android:
namespace.
More info:
To suppress this error, use the issue id "MissingPrefix" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 8 / 10
Category: Correctness:Messages
Severity:
Error
Explanation: Checks for missing quantity strings relevant to each locale.
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.
This lint check looks at each translation of a <plural>
and makes sure that all the quantity strings considered by the given language are provided by this translation.
For example, an English translation must provide a string for quantity="one"
. Similarly, a Czech translation must provide a string for quantity="few"
.
To suppress this error, use the issue id "MissingQuantity" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 8 / 10
Category: Correctness
Severity:
Error
Explanation: Ensures that classes referenced in the manifest are present in the project or libraries.
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.
To suppress this error, use the issue id "MissingRegistered" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 9 / 10
Category: Correctness
Severity:
Warning
Explanation: Looks for overriding methods that should also invoke the parent method.
Some methods, such as View#onDetachedFromWindow
, require that you also call the super implementation as part of your method.
More info:
To suppress this error, use the issue id "MissingSuperCall" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 2 / 10
Category: Correctness
Severity:
Warning
Explanation: Checks that the application name and version are set.
You should define the version information for your application.
android:versionCode
: An integer value that represents the version of the application code, relative to other versions.
android:versionName
: A string value that represents the release version of the application code, as it should be shown to users.
To suppress this error, use the issue id "MissingVersion" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 7 / 10
Category: Correctness
Severity:
Warning
Explanation: Checks whether a scrolling widget has any nested scrolling widgets within.
A scrolling widget such as a ScrollView
should not contain any nested scrolling widgets since this has various usability issues
More info:
To suppress this error, use the issue id "NestedScrolling" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 3 / 10
Category: Performance
Severity:
Warning
Explanation: Looks for nested layout weights, which are costly.
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.
More info:
To suppress this error, use the issue id "NestedWeights" as explained in the
Suppressing Warnings and Errors section.
Severity:
Error
Explanation: Finds API accesses to APIs that are not supported in all targeted API versions.
This check scans through all the Android API calls in the application and warns about any calls that are not available on all versions targeted by this application (according to its minimum SDK attribute in the manifest).
If you really want to use this API and don't need to support older devices just set the minSdkVersion
in your AndroidManifest.xml
file.
If your code is deliberately 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 @TargetApi
annotation specifying the local minimum SDK to apply, such as @TargetApi(11)
, such that this check considers 11 rather than your manifest file's minimum SDK as the required API level.
If you are deliberately setting android:
attributes in style definitions, make sure you place this in a values-v11
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.
Similarly, you can use tools:targetApi="11" in an XML file to indicate that the element will only be inflated in an adequate context.
More info:
To suppress this error, use the issue id "NewApi" as explained in the
Suppressing Warnings and Errors section.
Severity:
Warning
Explanation: Looks for layout params that are not valid for the given parent layout.
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 erick.bandeco.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.
More info:
To suppress this error, use the issue id "ObsoleteLayoutParam" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 6 / 10
Category: Correctness
Severity:
Warning
Explanation: Checks that the manifest specifies a targetSdkVersion that is recent.
When your application runs on a version of Android that is more recent than your
targetSdkVersion
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
targetSdkVersion
is less than 14, your app may get an option button in the UI.
To fix this issue, set the
targetSdkVersion
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:
http://developer.android.com/reference/android/os/Build.VERSION_CODES.erick.bandeco.html
To suppress this error, use the issue id "OldTargetApi" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 10 / 10
Category: Correctness
Severity:
Error
Explanation: Ensures that onClick
attribute values refer to real methods.
The onClick
attribute value should be the name of a method in this View's context to invoke when the erick.bandeco.view is clicked. This name must correspond to a public method that takes exactly one parameter of type View
.
Must be a string value, using '\;' to escape characters such as '\n' or '\uxxxx' for a unicode character.
More info:
To suppress this error, use the issue id "OnClick" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 2 / 10
Category: Correctness
Severity:
Error
Explanation: Checks that LinearLayouts with multiple children set the orientation.
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.
It also checks for empty LinearLayouts without an orientation
attribute that also defines an id
attribute. This catches the scenarios where children will be added to the LinearLayout
dynamically.
More info:
To suppress this error, use the issue id "Orientation" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 3 / 10
Category: Performance
Severity:
Warning
Explanation: Looks for overdraw issues (where a erick.bandeco.view is painted only to be fully painted over)
If you set a background drawable on a root erick.bandeco.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".
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.
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.
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.
More info:
To suppress this error, use the issue id "Overdraw" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 6 / 10
Category: Correctness
Severity:
Error
Explanation: Finds method declarations that will accidentally override methods in later versions.
Suppose you are building against Android API 8, and you've subclassed Activity. In your subclass you add a new method called isDestroyed
(). 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 super.isDestroyed()
, since your compilation target doesn't know about the method.
The above scenario is what this lint detector looks for. The above example is real, since isDestroyed()
was added in API 17, but it will be true for any 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.
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 @Override
on your overriding method, and call super
if appropriate etc.
More info:
To suppress this error, use the issue id "Override" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 3 / 10
Category: Usability
Severity:
Warning
Explanation: Checks that classes implementing Parcelable
also provide a CREATOR
field.
According to the Parcelable
interface documentation, "Classes implementing the Parcelable interface must also have a static field called CREATOR
, which is an object implementing the Parcelable.Creator
interface.
To suppress this error, use the issue id "ParcelCreator" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 3 / 10
Category: Correctness
Severity:
Warning
Explanation: Checks for old proguard.cfg files that contain generic Android rules.
Earlier versions of the Android tools bundled a single proguard.cfg
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.
In the new version of the tools, we have split the ProGuard configuration into two halves:
* A simple configuration file containing only project-specific flags, in your project
* 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.
In order for this to work, the proguard.config property in the project.properties
file now refers to a path, so you can reference both the generic file as well as your own (and any additional files too).
To migrate your project to the new setup, create a new proguard-project.txt
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:
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
More info:
To suppress this error, use the issue id "ProguardSplit" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 5 / 10
Category: Correctness
Severity:
Error
Explanation: Looks for permissions that are only granted to system apps.
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.
More info:
To suppress this error, use the issue id "ProtectedPermissions" as explained in the
Suppressing Warnings and Errors section.
Severity:
Warning
Explanation: Looks for use of the px
dimension.
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 erick.bandeco.view are always expressed in the code using pixels, but always based on the current screen density. For instance, if myView.getWidth()
returns 10, the erick.bandeco.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.
To suppress this error, use the issue id "PxUsage" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 7 / 10
Category: Performance
Severity:
Warning
Explanation: Looks for missing recycle()
calls on resources.
Many resources, such as TypedArrays, VelocityTrackers, etc., should be recycled (with a recycle()
call) after use. This lint check looks for missing recycle()
calls.
More info:
To suppress this error, use the issue id "Recycle" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 6 / 10
Category: Correctness
Severity:
Warning
Explanation: Ensures that Activities, Services and Content Providers are registered in the manifest.
Activities, services and content providers should be registered in the AndroidManifest.xml
file using <activity>
, <service>
and <provider>
tags.
If your activity is simply a parent class intended to be subclassed by other "real" activities, make it an abstract class.
To suppress this error, use the issue id "Registered" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 4 / 10
Category: Correctness
Severity:
Error
Explanation: Ensures that the layout_width
and layout_height
are specified for all views.
All views must specify an explicit layout_width
and layout_height
attribute. There is a runtime check for this, so if you fail to specify a size, an exception is thrown at runtime.
It's possible to specify these widths via styles as well. GridLayout, as a special case, does not require you to specify a size.
More info:
To suppress this error, use the issue id "RequiredSize" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 7 / 10
Category: Correctness
Severity:
Error
Explanation: Looks for calls to setColor where a resource id is passed instead of a resolved color.
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 getResources().getColor(resource)
to resolve the actual color value first.
More info:
To suppress this error, use the issue id "ResourceAsColor" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Default
Priority: 6 / 10
Category: Bi-directional Text
Severity:
Error
Explanation: Looks for compatibility issues with RTL support.
API 17 adds a textAlignment
attribute to specify text alignment. However, if you are supporting older versions than API 17, you must also specify a gravity or layout_gravity attribute, since older platforms will ignore the textAlignment
attribute.
More info:
To suppress this error, use the issue id "RtlCompat" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Default
Priority: 3 / 10
Category: Bi-directional Text
Severity:
Warning
Explanation: Looks for usages of right-to-left text constants without enabling RTL support.
To enable right-to-left support, when running on API 17 and higher, you must set the android:supportsRtl
attribute in the manifest <application>
element.
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.
More info:
To suppress this error, use the issue id "RtlEnabled" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Default
Priority: 5 / 10
Category: Bi-directional Text
Severity:
Warning
Explanation: Looks for hardcoded left/right constants which could be start/end for bidirectional text.
Using Gravity#LEFT
and Gravity#RIGHT
can lead to problems when a layout is rendered in locales where text flows from right to left. Use Gravity#START
and Gravity#END
instead. Similarly, in XML gravity
and layout_gravity
attributes, use start
rather than left
.
For XML attributes such as paddingLeft and layout_marginLeft
, use paddingStart
and layout_marginStart
. NOTE: If your minSdkVersion
is less than 17, you should add both the older left/right attributes as well as 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.
(Note: For Gravity#LEFT
and Gravity#START
, you can use these constants even when targeting older platforms, because the start
bitmask is a superset of the left
bitmask. Therefore, you can use gravity="start"
rather than gravity="left|start"
.)
More info:
To suppress this error, use the issue id "RtlHardcoded" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Default
Priority: 6 / 10
Category: Bi-directional Text
Severity:
Error
Explanation: Ensures that specifying padding on one side is matched by padding on the other.
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.
More info:
To suppress this error, use the issue id "RtlSymmetry" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 8 / 10
Category: Correctness
Severity:
Warning
Explanation: Checks that ScrollViews have exactly one child widget.
ScrollViews can only have one child widget. If you want more children, wrap them in a container layout.
More info:
To suppress this error, use the issue id "ScrollViewCount" as explained in the
Suppressing Warnings and Errors section.
Severity:
Warning
Explanation: Checks that ScrollViews use wrap_content
in the scrolling dimension.
ScrollView children must set their layout_width
or layout_height
attributes to wrap_content
rather than fill_parent
or match_parent
in the scrolling dimension
More info:
To suppress this error, use the issue id "ScrollViewSize" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 6 / 10
Category: Correctness
Severity:
Warning
Explanation: Looks for hardcoded references to /sdcard
Your code should not reference the /sdcard
path directly; instead use Environment.getExternalStorageDirectory().getPath()
.
Similarly, do not reference the /data/data/
path directly; it can vary in multi-user scenarios. Instead, use Context.getFilesDir().getPath()
.
To suppress this error, use the issue id "SdCardPath" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 9 / 10
Category: Performance
Severity:
Warning
Explanation: Looks for suspicious usage of the SecureRandom class.
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.
To suppress this error, use the issue id "SecureRandom" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Default
Priority: 7 / 10
Category: Usability
Severity:
Warning
Explanation: Looks for TextViews which should probably allow their text to be selected.
If a <TextView>
is used to display data, the user might want to copy that data and paste it elsewhere. To allow this, the <TextView>
should specify android:textIsSelectable="true"
.
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 minSdkVersion
.
More info:
To suppress this error, use the issue id "SelectableText" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 6 / 10
Category: Security
Severity:
Warning
Explanation: Looks for invocations of android.webkit.WebSettings.setJavaScriptEnabled.
Your code should not invoke setJavaScriptEnabled
if you are not sure that your app really requires JavaScript support.
To suppress this error, use the issue id "SetJavaScriptEnabled" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 6 / 10
Category: Correctness
Severity:
Warning
Explanation: Looks for code creating a Toast
but forgetting to call show()
on it.
Toast.makeText()
creates a Toast
but does not show it. You must call show()
on the resulting object to actually make the Toast
appear.
More info:
To suppress this error, use the issue id "ShowToast" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 6 / 10
Category: Correctness
Severity:
Warning
Explanation: Using SimpleDateFormat
directly without an explicit locale.
Almost all callers should use getDateInstance()
, getDateTimeInstance()
, or getTimeInstance()
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).
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.
To suppress this error, use the issue id "SimpleDateFormat" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 4 / 10
Category: Usability
Severity:
Warning
Explanation: Looks for text sizes that are too small.
Avoid using sizes smaller than 12sp.
More info:
To suppress this error, use the issue id "SmallSp" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 3 / 10
Category: Correctness
Severity:
Warning
Explanation: Looks for uses of dp
instead of sp
dimensions for text sizes.
When setting text sizes, you should normally use sp
, or "scale-independent pixels". This is like the dp
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.
There are cases where you might need to use dp
; 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.
To suppress this error, use the issue id "SpUsage" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 5 / 10
Category: Correctness
Severity:
Warning
Explanation: Looks for unreachable states in a <selector>
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.
More info:
To suppress this error, use the issue id "StateListReachable" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Default
Priority: 10 / 10
Category: Correctness
Severity:
Warning
Explanation: Looks for comment markers of the form //STOPSHIP
which indicates that code should not be released yet.
Using the comment // STOPSHIP
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.
More info:
To suppress this error, use the issue id "StopShip" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 5 / 10
Category: Correctness:Messages
Severity:
Warning
Explanation: Ensures that all format strings are used and that the same number is defined across translations.
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.
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.
More info:
To suppress this error, use the issue id "StringFormatCount" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 9 / 10
Category: Correctness:Messages
Severity:
Error
Explanation: Checks that format strings are valid.
If a string contains a '%' character, then the string may be a formatting string which will be passed to String.format
from Java code to replace each '%' occurrence with specific values.
This lint warning checks for two related problems:
(1) Formatting strings that are invalid, meaning that String.format
will throw exceptions at runtime when attempting to use the format string.
(2) Strings containing '%' that are not formatting strings getting passed to a String.format
call. In this case the '%' will need to be escaped as '%%'.
NOTE: Not all Strings which look like formatting strings are intended for use by String.format
; for example, they may contain date formats intended for android.text.format.Time#format()
. 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.
More info:
To suppress this error, use the issue id "StringFormatInvalid" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 9 / 10
Category: Correctness:Messages
Severity:
Error
Explanation: Ensures that the format used in <string>
definitions is compatible with the String.format
call.
This lint check ensures the following:
(1) If there are multiple translations of the format string, then all translations use the same type for the same numbered arguments
(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.
More info:
To suppress this error, use the issue id "StringFormatMatches" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 6 / 10
Category: Correctness
Severity:
Error
Explanation: Looks for 0dp as the width in a vertical LinearLayout or as the height in a horizontal.
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.
However, if you use 0dp for the opposite dimension, the erick.bandeco.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.
More info:
To suppress this error, use the issue id "Suspicious0dp" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 9 / 10
Category: Correctness
Severity:
Warning
Explanation: Checks for 'import android.R' statements, which are usually accidental.
Importing android.R
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.
Once the import is there you might get a lot of "confusing" error messages because of course the fields available on android.R
are not the ones you'd expect from just looking at your own R
class.
More info:
To suppress this error, use the issue id "SuspiciousImport" as explained in the
Suppressing Warnings and Errors section.
Severity:
Warning
Explanation: Looks for text fields missing inputType
or hint
settings.
Providing an inputType
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.
The lint detector also looks at the id
of the erick.bandeco.view, and if the id offers a hint of the purpose of the field (for example, the id
contains the phrase phone
or email
), then lint will also ensure that the inputType
contains the corresponding type attributes.
If you really want to keep the text field generic, you can suppress this warning by setting inputType="text"
.
More info:
To suppress this error, use the issue id "TextFields" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 7 / 10
Category: Correctness
Severity:
Warning
Explanation: Looks for TextViews being used for input.
Using a <TextView>
to input text is generally an error, you should be using <EditText>
instead. EditText
is a subclass of TextView
, and some of the editing support is provided by TextView
, so it's possible to set some input-related properties on a TextView
. However, using a TextView
along with input attributes is usually a cut & paste error. To input text you should be using <EditText>
.
This check also checks subclasses of TextView
, such as Button
and CheckBox
, since these have the same issue: they should not be used with editable attributes.
More info:
To suppress this error, use the issue id "TextViewEdits" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 1 / 10
Category: Performance
Severity:
Warning
Explanation: Checks whether a layout hierarchy is too deep.
Layouts with too much nesting is bad for performance. Consider using a flatter layout (such as RelativeLayout
or GridLayout
).The default maximum depth is 10 but can be configured with the environment variable ANDROID_LINT_MAX_DEPTH
.
More info:
To suppress this error, use the issue id "TooDeepLayout" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 1 / 10
Category: Performance
Severity:
Warning
Explanation: Checks whether a layout has too many views.
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.
The maximum erick.bandeco.view count defaults to 80 but can be configured with the environment variable ANDROID_LINT_MAX_VIEW_COUNT
.
More info:
To suppress this error, use the issue id "TooManyViews" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 9 / 10
Category: Security
Severity:
Warning
Explanation: Looks for calls to JCA primitives that may be affected by SecureRandom vulnerability.
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.
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.erick.bandeco.html .
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.
To suppress this error, use the issue id "TrulyRandom" as explained in the
Suppressing Warnings and Errors section.
Severity:
Warning
Explanation: Looks for usages of hyphens which can be replaced by n dash and m dash characters.
The "n dash" (–, –) and the "m dash" (—, —) 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.
To suppress this error, use the issue id "TypographyDashes" as explained in the
Suppressing Warnings and Errors section.
Severity:
Warning
Explanation: Looks for ellipsis strings (...) which can be replaced with an ellipsis character.
You can replace the string "..." with a dedicated ellipsis character, ellipsis character (…, …). This can help make the text more readable.
To suppress this error, use the issue id "TypographyEllipsis" as explained in the
Suppressing Warnings and Errors section.
Severity:
Warning
Explanation: Looks for fraction strings which can be replaced with a fraction character.
You can replace certain strings, such as 1/2, and 1/4, with dedicated characters for these, such as ½ (½) and ¼ (¼). This can help make the text more readable.
To suppress this error, use the issue id "TypographyFractions" as explained in the
Suppressing Warnings and Errors section.
Severity:
Warning
Explanation: Looks for miscellaneous typographical problems like replacing (c) with ©
This check looks for miscellaneous typographical problems and offers replacement sequences that will make the text easier to read and your application more polished.
More info:
To suppress this error, use the issue id "TypographyOther" as explained in the
Suppressing Warnings and Errors section.
Severity:
Warning
Explanation: Looks for straight quotes which can be replaced by curvy quotes.
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.
Note that you should never use grave accents and apostrophes to quote, `like this'.
(Also note that you should not use curvy quotes for code fragments.)
To suppress this error, use the issue id "TypographyQuotes" as explained in the
Suppressing Warnings and Errors section.
Severity:
Warning
Explanation: Looks for typos in messages.
This check looks through the string definitions, and if it finds any words that look like likely misspellings, they are flagged.
More info:
To suppress this error, use the issue id "Typos" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 5 / 10
Category: Correctness
Severity:
Warning
Explanation: Makes sure that @+id references refer to views in the same layout.
The @+id/
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 erick.bandeco.view no longer exists, you do not get a warning since the id will be created on demand.
This is sometimes intentional, for example where you are referring to a erick.bandeco.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 erick.bandeco.view without updating all the references to it.
More info:
To suppress this error, use the issue id "UnknownIdInLayout" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 5 / 10
Category: Correctness
Severity:
Warning
Explanation: Looks for code sending text messages to unlocalized phone numbers.
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.
More info:
To suppress this error, use the issue id "UnlocalizedSms" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Default
Priority: 1 / 10
Category: Performance
Severity:
Warning
Explanation: Looks for unused id's.
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.
More info:
To suppress this error, use the issue id "UnusedIds" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 1 / 10
Category: Performance
Severity:
Warning
Explanation: Finds unused namespaces in XML documents.
Unused namespace declarations take up space and require processing that is not necessary
More info:
To suppress this error, use the issue id "UnusedNamespace" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 3 / 10
Category: Correctness:Messages
Severity:
Warning
Explanation: Checks for quantity string translations which are not used in this language.
Android defines a number of different quantity strings, such as zero
, one
, few
and many
. However, many languages do not distinguish grammatically between all these different quantities.
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.).
For example, in Chinese, only the other
quantity is used, so even if you provide translations for zero
and one
, these strings will not be returned when getQuantityString()
is called, even with 0
or 1
.
To suppress this error, use the issue id "UnusedQuantity" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 3 / 10
Category: Performance
Severity:
Warning
Explanation: Looks for unused resources.
Unused resources make applications larger and slow down builds.
More info:
To suppress this error, use the issue id "UnusedResources" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 6 / 10
Category: Security
Severity:
Warning
Explanation: Ensures that the return value of check permission calls are used.
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 Context#checkCallingPermission
it should call Context#enforceCallingPermission
.
More info:
To suppress this error, use the issue id "UseCheckPermission" as explained in the
Suppressing Warnings and Errors section.
Severity:
Warning
Explanation: Checks whether the current node can be replaced by a TextView
using compound drawables.
A LinearLayout
which contains an ImageView
and a TextView
can be more efficiently handled as a compound drawable (a single TextView, using the drawableTop
, drawableLeft
, drawableRight
and/or drawableBottom
attributes to draw one or more images adjacent to the text).
If the two widgets are offset from each other with margins, this can be replaced with a drawablePadding
attribute.
There's a lint quickfix to perform this conversion in the Eclipse plugin.
More info:
To suppress this error, use the issue id "UseCompoundDrawables" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 4 / 10
Category: Performance
Severity:
Warning
Explanation: Looks for opportunities to replace HashMaps with the more efficient SparseArray.
For maps where the keys are of type integer, it's typically more efficient to use the Android SparseArray
API. This check identifies scenarios where you might want to consider using SparseArray
instead of HashMap
for better performance.
This is particularly useful when the value types are primitives like ints, where you can use SparseIntArray
and avoid auto-boxing the values from int
to Integer
.
If you need to construct a HashMap
because you need to call an API outside of your control which requires a Map
, you can suppress this warning using for example the @SuppressLint
annotation.
More info:
To suppress this error, use the issue id "UseSparseArrays" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 4 / 10
Category: Performance
Severity:
Warning
Explanation: Looks for usages of new
for wrapper classes which should use valueOf
instead.
You should not call the constructor for wrapper classes directly, such as`new Integer(42)`. Instead, call the valueOf
factory method, such as Integer.valueOf(42)
. This will typically use less memory because common integers such as 0 and 1 will share a single instance.
More info:
To suppress this error, use the issue id "UseValueOf" as explained in the
Suppressing Warnings and Errors section.
Severity:
Warning
Explanation: Checks whether a leaf layout can be removed.
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.
More info:
To suppress this error, use the issue id "UselessLeaf" as explained in the
Suppressing Warnings and Errors section.
Severity:
Warning
Explanation: Checks whether a parent layout can be removed.
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.
More info:
To suppress this error, use the issue id "UselessParent" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 9 / 10
Category: Correctness
Severity:
Warning
Explanation: Checks that the minimum SDK and target SDK attributes are defined.
The manifest should contain a <uses-sdk>
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.)
To suppress this error, use the issue id "UsesMinSdkAttributes" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 3 / 10
Category: Usability
Severity:
Warning
Explanation: Checks that custom views define the expected constructors.
Some layout tools (such as the Android layout editor for Studio & Eclipse) needs to find a constructor with one of the following signatures:
* View(Context context)
* View(Context context, AttributeSet attrs)
* View(Context context, AttributeSet attrs, int defStyle)
If your custom erick.bandeco.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 View#isInEditMode()
is false, since that method will return false
at runtime but true within a user interface editor.
More info:
To suppress this error, use the issue id "ViewConstructor" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 6 / 10
Category: Performance
Severity:
Warning
Explanation: Finds potential leaks when using View.setTag
Prior to Android 4.0, the implementation of View.setTag(int, Object)
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 erick.bandeco.view, the erick.bandeco.view provides a reference to the context that created it. Similarly, erick.bandeco.view holders typically contain a erick.bandeco.view, and cursors are sometimes also associated with views.
More info:
To suppress this error, use the issue id "ViewTag" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 9 / 10
Category: Performance
Severity:
Warning
Explanation: Looks for problems with WakeLock
usage.
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
onDestroy()
instead of in
onPause()
, failing to call
release()
in all possible code paths after an
acquire()
, and so on.
NOTE: If you are using the lock just to keep the screen on, you should strongly consider using
FLAG_KEEP_SCREEN_ON
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
http://developer.android.com/reference/android/erick.bandeco.view/WindowManager.LayoutParams.erick.bandeco.html#FLAG_KEEP_SCREEN_ON.
More info:
To suppress this error, use the issue id "Wakelock" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 7 / 10
Category: Correctness
Severity:
Error
Explanation: Ensures that WebViews are not placed in parents with wrap_content layout.
The WebView implementation has certain performance optimizations which will not work correctly if the parent erick.bandeco.view is using wrap_content
rather than match_parent
. This can lead to subtle UI bugs.
More info:
To suppress this error, use the issue id "WebViewLayout" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 4 / 10
Category: Security
Severity:
Warning
Explanation: Checks for openFileOutput()
and getSharedPreferences()
calls passing MODE_WORLD_READABLE
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.
More info:
To suppress this error, use the issue id "WorldReadableFiles" as explained in the
Suppressing Warnings and Errors section.
Disabled By: Project lint.xml file
Priority: 4 / 10
Category: Security
Severity:
Warning
Explanation: Checks for openFileOutput()
and getSharedPreferences()
calls passing MODE_WORLD_WRITEABLE
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.
More info:
To suppress this error, use the issue id "WorldWriteableFiles" as explained in the
Suppressing Warnings and Errors section.
Suppressing Warnings and Errors
Lint errors can be suppressed in a variety of ways:
1. With a @SuppressLint annotation in the Java code
2. With a tools:ignore attribute in the XML file
3. With a lint.xml configuration file in the project
4. With a lint.xml configuration file passed to lint via the --config flag
5. With the --ignore flag passed to lint.
To suppress a lint warning with an annotation, add a @SuppressLint("id") 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 "UnusedResources" or {"UnusedResources","UnusedIds"}, or it can be "all" to suppress all lint warnings in the given scope.
To suppress a lint warning in an XML file, add a tools:ignore="id" 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 xmlns:android declaration:
* xmlns:tools="http://schemas.android.com/tools"
To suppress lint warnings with a configuration XML file, create a file named lint.xml and place it at the root directory of the project in which it applies. (If you use the Eclipse plugin's Lint erick.bandeco.view, you can suppress errors there via the toolbar and Eclipse will create the lint.xml file for you.).
The format of the lint.xml file is something like the following:
<?xml version="1.0" encoding="UTF-8"?>
<lint>
<!-- Disable this given check in this project -->
<issue id="IconMissingDensityFolder" severity="ignore" />
<!-- Ignore the ObsoleteLayoutParam issue in the given files -->
<issue id="ObsoleteLayoutParam">
<ignore path="res/layout/activation.xml" />
<ignore path="res/layout-xlarge/activation.xml" />
</issue>
<!-- Ignore the UselessLeaf issue in the given file -->
<issue id="UselessLeaf">
<ignore path="res/layout/main.xml" />
</issue>
<!-- Change the severity of hardcoded strings to "error" -->
<issue id="HardcodedText" severity="error" />
</lint>
To suppress lint checks from the command line, pass the --ignore flag with a comma separated list of ids to be suppressed, such as:
"lint --ignore UnusedResources,UselessLeaf /my/project/path"


{% extends "layouts/layout.html" %} {% block page_content %} {% from "security/_macros.html" import render_field_with_errors, render_field %} {% include "security/_messages.html" %}