+As of the second half of 2018, Google Play requires that new apps and app updates target API level 26 or higher.
+
+Configuring your app to target a recent API level ensures that users benefit from significant security and performance improvements, while still allowing your app to run on older Android versions (down to the minSdkVersion).
+
+To update your targetSdkVersion, follow the steps from "Meeting Google Play requirements for target API level",
+https://developer.android.com/distribute/best-practices/develop/target-sdk.html
+One or more 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.
+
+
AcceptsUserCertificates
+
+
Disabled By: Project lint.xml file
+
+Allowing user certificates could allow eavesdroppers to intercept data sent by your app, 'which could impact the privacy of your users. Consider nesting your app's trust-anchors inside a <debug-overrides> element to make sure they are only available when android:debuggable is set to "true".
To suppress this error, use the issue id "AcceptsUserCertificates" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
AccidentalOctal
+
+
Disabled By: Project lint.xml file
+
+In Groovy, an integer literal that starts with a leading 0 will be interpreted as an octal number. That is usually (always?) an accident and can lead to subtle bugs, for example when used in the versionCode of an app. To suppress this error, use the issue id "AccidentalOctal" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
AdapterViewChildren
+
+
Disabled By: Project lint.xml file
+
+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.
+
+
+
+
+
AddJavascriptInterface
+
+
Disabled By: Project lint.xml file
+
+For applications built for API levels below 17, WebView#addJavascriptInterface presents a security hazard as JavaScript on the target web page has the ability to use reflection to access the injected object's public fields and thus manipulate the host application in unintended ways.
To suppress this error, use the issue id "AddJavascriptInterface" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
AllCaps
+
+
Disabled By: Project lint.xml file
+
+The textAllCaps text transform will end up calling toString on the CharSequence, which has the net effect of removing any markup such as <b>. This check looks for usages of strings containing markup that also specify textAllCaps=true. To suppress this error, use the issue id "AllCaps" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
AllowAllHostnameVerifier
+
+
Disabled By: Project lint.xml file
+
+This check looks for use of HostnameVerifier implementations whose verify method always returns true (thus trusting any hostname) which could result in insecure network traffic caused by trusting arbitrary hostnames in TLS/SSL certificates presented by peers. To suppress this error, use the issue id "AllowAllHostnameVerifier" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
AllowBackup
+
+
Disabled By: Project lint.xml file
+
+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.html#allowBackup
+
+By default, this flag is set to true which means application data can be backed up and restored by the OS. Setting allowBackup="false" opts the application out of being backed up and so users can't restore data related to it when they go through the device setup wizard.
+
+Allowing backups may have security consequences for an application. Currently 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.
+
+To fix this warning, decide whether your application should support backup, and explicitly set android:allowBackup=(true|false)".
+
+If not set to false, and if targeting API 23 or later, lint will also warn that you should set android:fullBackupContent to configure auto backup.
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "AllowBackup" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
AlwaysShowAction
+
+
Disabled By: Project lint.xml file
+
+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.
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "AlwaysShowAction" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
AnimatorKeep
+
+
Disabled By: Project lint.xml file
+
+When you use property animators, properties can be accessed via reflection. Those methods should be annotated with @Keep to ensure that during release builds, the methods are not potentially treated as unused and removed, or treated as internal only and get renamed to something shorter.
+
+This check will also flag other potential reflection problems it encounters, such as a missing property, wrong argument types, etc. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "AnimatorKeep" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
AnnotationProcessorOnCompilePath
+
+
Disabled By: Project lint.xml file
+
+This dependency is identified as an annotation processor. Consider adding it to the processor path using annotationProcessor instead of including it to the
+compile path. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "AnnotationProcessorOnCompilePath" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
AppCompatCustomView
+
+
Disabled By: Project lint.xml file
+
+In order to support features such as tinting, the appcompat library will automatically load special appcompat replacements for the builtin widgets. However, this does not work for your own custom views.
+
+Instead of extending the android.widget classes directly, you should instead extend one of the delegate classes in
+androidx.appcompat.widget.AppCompatTextView. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "AppCompatCustomView" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
AppCompatMethod
+
+
Disabled By: Project lint.xml file
+
+When using the appcompat library, there are some methods you should be calling instead of the normal ones; for example, getSupportActionBar() instead of getActionBar(). This lint check looks for calls to the wrong method.
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "AppCompatMethod" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
AppCompatResource
+
+
Disabled By: Project lint.xml file
+
+When using the appcompat library, menu resources should refer to the showAsAction (or actionViewClass, or actionProviderClass) in the app: namespace, not the android: namespace.
+
+Similarly, when not using the appcompat library, you should be using the android:showAsAction (or actionViewClass, or actionProviderClass) attribute. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "AppCompatResource" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
AppIndexingService
+
+
Disabled By: Project lint.xml file
+
+Apps targeting Android 8.0 or higher can no longer rely on background services while listening for updates to the on-device index. Use a BroadcastReceiver for the UPDATE_INDEX intent to continue supporting indexing in your app.
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "AppLinkUrlError" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
AppLinksAutoVerifyError
+
+
Disabled By: Default
+
+Ensures that app links are correctly set and associated with website.
To suppress this error, use the issue id "AppLinksAutoVerifyWarning" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ApplySharedPref
+
+
Disabled By: Project lint.xml file
+
+Consider using apply() instead of commit on shared preferences. Whereas commit blocks and writes its data to persistent storage immediately, apply will handle it in the background. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "ApplySharedPref" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
Assert
+
+
Disabled By: Project lint.xml file
+
+Assertions will never be turned on in Android. (It was possible to enable it in Dalvik with adb shell setprop debug.assert 1, but it is not implemented in ART, the runtime for Android 5.0 and later.)
+
+This means that the assertion will never catch mistakes, and you should not use assertions from Java or Kotlin for debug build checking.
+
+Instead, perform conditional checking inside if (BuildConfig.DEBUG) { } blocks. That constant is a static final boolean which will be true only in debug builds, and false in release builds, and the compiler will completely remove all code inside the if-body from the app.
+
+For example, you can replace
+
+ if (BuildConfig.DEBUG && !(speed > 0)) {
+ throw new AssertionError("Message")
+ }
+
+(Note: This lint check does not flag assertions purely asserting nullness or non-nullness in Java code; 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.
+
+
+
+
+
AuthLeak
+
+
Disabled By: Project lint.xml file
+
+Strings in java apps can be discovered by decompiling apps, this lint check looks for code which looks like it may contain an url with a username and password To suppress this error, use the issue id "AuthLeak" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
Autofill
+
+
Disabled By: Project lint.xml file
+
+Specify an autofillHints attribute when targeting SDK version 26 or higher or explicitly specify that the view is not important for autofill. Your app can help an autofill service classify the data correctly by providing the meaning of each view that could be autofillable, such as views representing usernames, passwords, credit card fields, email addresses, etc.
+
+The hints can have any value, but it is recommended to use predefined values like 'username' for a username or 'creditCardNumber' for a credit card number. For a list of all predefined autofill hint constants, see the AUTOFILL_HINT_ constants in the View reference at https://developer.android.com/reference/android/view/View.html.
+
+You can mark a view unimportant for autofill by specifying an importantForAutofill attribute on that view or a parent view. See https://developer.android.com/reference/android/view/View.html#setImportantForAutofill(int).
+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.
+This check looks for implementations of HostnameVerifier whose verify method always returns true (thus trusting any hostname) which could result in insecure network traffic caused by trusting arbitrary hostnames in TLS/SSL certificates presented by peers. To suppress this error, use the issue id "BadHostnameVerifier" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
BatteryLife
+
+
Disabled By: Project lint.xml file
+
+This issue flags code that either
+* negatively affects battery life, or
+* uses APIs that have recently changed behavior to prevent background tasks from consuming memory and battery excessively.
+
+Generally, you should be using WorkManager instead.
+
+For more details on how to update your code, please see http://developer.android.com/preview/features/background-optimization.html
+The BottomAppBar widget must be placed within a CoordinatorLayout. To suppress this error, use the issue id "BottomAppBar" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
BrokenIterator
+
+
Disabled By: Project lint.xml file
+
+For LinkedHashMap:
+
+The spliterators returned by LinkedHashMap in Android Nougat (API levels 24 and 25) use the wrong order (inconsistent with the iterators, which use the correct order), despite reporting Spliterator.ORDERED. You may use the following code fragments to obtain a correctly ordered Spliterator on API level 24 and 25:
+
+For a Collection view c = lhm.entrySet(), c = lhm.keySet() or c = lhm.values(), use java.util.Spliterators.spliterator(c, c.spliterator().characteristics()) instead of c.spliterator().
+
+Instead of c.stream() or c.parallelStream(), use java.util.stream.StreamSupport.stream(spliterator, false) to construct a
+(nonparallel) Stream from such a Spliterator.
+
+For Vector:
+
+The listIterator() returned for a Vector has a broken add() implementation on Android N (API level 24). Consider switching to ArrayList and if necessary adding synchronization.
+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. To suppress this error, use the issue id "ButtonCase" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ButtonOrder
+
+
Disabled By: Project lint.xml file
+
+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.
+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
+Lint will flag any byte-order-mark (BOM) characters it finds in the middle of a file. Since we expect files to be encoded with UTF-8 (see the EnforceUTF8 issue), the BOM characters are not necessary, and they are not handled correctly by all tools. For example, if you have a BOM as part of a resource name in one particular translation, that name will not be considered identical to the base resource's name and the translation will not be used.
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "ByteOrderMark" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
CanvasSize
+
+
Disabled By: Project lint.xml file
+
+In a custom view's draw implementation, you should normally call getWidth and getHeight on the custom view itself, not on the canvas instance.
+
+Canvas width and height are the width and height of the Canvas, which is not always the same as size of the view.
+
+In the hardware accelerated path the width and height of the canvas typically always match that of the View because every view goes to its own recorded DisplayList. But in software rendering there's just one canvas that is clipped and transformed as it makes its way through the View tree, and otherwise remains the same Canvas object for every View's draw method.
+
+You should only use Canvas state to adjust how much you draw, such as a quick-reject for early work avoidance if it's going to be clipped away, but not what you draw. To suppress this error, use the issue id "CanvasSize" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
CheckResult
+
+
Disabled By: Project lint.xml file
+
+Some methods have no side effects, and calling them without doing something without the result is suspicious. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "CheckResult" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ClickableViewAccessibility
+
+
Disabled By: Project lint.xml file
+
+If a View that overrides onTouchEvent or uses an OnTouchListener does not also implement performClick and call it when clicks are detected, the View may not handle accessibility actions properly. Logic handling the click actions should ideally be placed in View#performClick as some accessibility services invoke performClick when a click action should occur. To suppress this error, use the issue id "ClickableViewAccessibility" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
CommitPrefEdits
+
+
Disabled By: Project lint.xml file
+
+After calling edit() on a SharedPreference, you must call commit() or apply() on the editor to save the results. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "CommitPrefEdits" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
CommitTransaction
+
+
Disabled By: Project lint.xml file
+
+After creating a FragmentTransaction, you typically need to commit it as well To suppress this error, use the issue id "CommitTransaction" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ConstantLocale
+
+
Disabled By: Project lint.xml file
+
+Assigning Locale.getDefault() to a constant is suspicious, because the locale can change while the app is running. To suppress this error, use the issue id "ConstantLocale" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ContentDescription
+
+
Disabled By: Project lint.xml file
+
+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.html#special-cases. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "ContentDescription" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ConvertToWebp
+
+
Disabled By: Default
+
+The WebP format is typically more compact than PNG and JPEG. As of Android 4.2.1 it supports transparency and lossless conversion as well. Note that there is a quickfix in the IDE which lets you perform conversion.
+
+Launcher icons must be in the PNG format. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "ConvertToWebp" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
CustomViewStyleable
+
+
Disabled By: Project lint.xml file
+
+The convention for custom views is to use a declare-styleable whose name matches the custom view class name. The IDE relies on this convention such that for example code completion can be offered for attributes in a custom view in layout XML resource files.
+
+(Similarly, layout parameter classes should use the suffix _Layout.) To suppress this error, use the issue id "CustomViewStyleable" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
CutPasteId
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "CutPasteId" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
DalvikOverride
+
+
Disabled By: Default
+
+The Dalvik 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.
+
+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.
+
+Note that this check is disabled be default, because ART (the successor to Dalvik) no longer has this behavior. To suppress this error, use the issue id "DalvikOverride" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
DataBindingWithoutKapt
+
+
Disabled By: Project lint.xml file
+
+Apps that use Kotlin and data binding should also apply the kotlin-kapt plugin.
To suppress this error, use the issue id "DataBindingWithoutKapt" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
DefaultLocale
+
+
Disabled By: Project lint.xml file
+
+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 notI.
+
+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.
+The Crypto provider has been completely removed in Android P (and was deprecated in an earlier release). This means that the code will throw a NoSuchProviderException and the app will crash. Even if the code catches that exception at a higher level, this is not secure and should not be used.
+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. To suppress this error, use the issue id "Deprecated" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
DeprecatedProvider
+
+
Disabled By: Project lint.xml file
+
+The BC provider has been deprecated and will not be provided when targetSdkVersion is P or higher.
To suppress this error, use the issue id "DeprecatedProvider" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
DevModeObsolete
+
+
Disabled By: Project lint.xml file
+
+In the past, our documentation recommended creating a dev product flavor with has a minSdkVersion of 21, in order to enable multidexing to speed up builds significantly during development.
+
+That workaround is no longer necessary, and it has some serious downsides, such as breaking API access checking (since the true minSdkVersion is no longer known).
+
+In recent versions of the IDE and the Gradle plugin, the IDE automatically passes the API level of the connected device used for deployment, and if that device is at least API 21, then multidexing is automatically turned on, meaning that you get the same speed benefits as the dev product flavor but without the downsides. To suppress this error, use the issue id "DevModeObsolete" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
DeviceAdmin
+
+
Disabled By: Project lint.xml file
+
+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
+
+to your <receiver>. To suppress this error, use the issue id "DeviceAdmin" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
DiffUtilEquals
+
+
Disabled By: Project lint.xml file
+
+areContentsTheSame is used by DiffUtil to produce diffs. If the method is implemented incorrectly, such as using identity equals instead of equals, or calling equals on a class that has not implemented it, weird visual artifacts can occur.
+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. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "DisableBaselineAlignment" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
DiscouragedPrivateApi
+
+
Disabled By: Project lint.xml file
+
+Usage of restricted non-SDK interface may throw an exception at runtime. Accessing non-SDK methods or fields through reflection has a high likelihood to break your app between versions, and is being restricted to facilitate future app compatibility.
To suppress this error, use the issue id "DiscouragedPrivateApi" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
DrawAllocation
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "DrawAllocation" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
DuplicateDefinition
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "DuplicateDefinition" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
DuplicateDivider
+
+
Disabled By: Project lint.xml file
+
+Older versions of the RecyclerView library did not include a divider decorator, but one was provided as a sample in the support demos. This divider class has been widely copy/pasted into various projects.
+
+In recent versions of the support library, the divider decorator is now included, so you can replace custom copies with the "built-in" version, android.support.v7.widget.DividerItemDecoration. To suppress this error, use the issue id "DuplicateDivider" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
DuplicateIncludedIds
+
+
Disabled By: Project lint.xml file
+
+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 view. To suppress this error, use the issue id "DuplicateIncludedIds" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
DuplicateStrings
+
+
Disabled By: Default
+
+Duplicate strings can make applications larger unnecessarily.
+
+This lint check looks for duplicate strings, including differences for strings where the only difference is in capitalization. Title casing and all uppercase can all be adjusted in the layout or in code.
+A given feature should only be declared once in the manifest. To suppress this error, use the issue id "DuplicateUsesFeature" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
EasterEgg
+
+
Disabled By: Default
+
+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. To suppress this error, use the issue id "EasterEgg" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
EllipsizeMaxLines
+
+
Disabled By: Project lint.xml file
+
+Combining ellipsize and maxLines=1 can lead to crashes on some devices. Earlier versions of lint recommended replacing singleLine=true with maxLines=1 but that should not be done when using ellipsize.
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "EllipsizeMaxLines" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
EnqueueWork
+
+
Disabled By: Project lint.xml file
+
+WorkContinuations cannot be enqueued automatically. You must call enqueue() on a WorkContinuation to have it and its parent continuations enqueued inside WorkManager. To suppress this error, use the issue id "EnqueueWork" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ExifInterface
+
+
Disabled By: Project lint.xml file
+
+The android.media.ExifInterface implementation has some known security bugs in older versions of Android. There is a new implementation available of this library in the support library, which is preferable. To suppress this error, use the issue id "ExifInterface" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ExpensiveAssertion
+
+
Disabled By: Default
+
+In Kotlin, assertions are not handled the same way as from the Java programming language. In particular, they're just implemented as a library call, and inside the library call the error is only thrown if assertions are enabled.
+
+This means that the arguments to the assert call will always be evaluated. If you're doing any computation in the expression being asserted, that computation will unconditionally be performed whether or not assertions are turned on. This typically turns into wasted work in release builds.
+
+This check looks for cases where the assertion condition is nontrivial, e.g. it is performing method calls or doing more work than simple comparisons on local variables or fields.
+
+You can work around this by writing your own inline assert method instead:
+
+
+
+In Android, because assertions are not enforced at runtime, instead use this:
+
+
+inline fun assert(condition: () -> Boolean) {
+ if (BuildConfig.DEBUG && !condition()) {
+ throw AssertionError()
+ }
+}
+
+ To suppress this error, use the issue id "ExpensiveAssertion" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ExpiringTargetSdkVersion
+
+
Disabled By: Project lint.xml file
+
+In the second half of 2018, Google Play will require that new apps and app updates target API level 26 or higher. This will be required for new apps in August 2018, and for updates to existing apps in November 2018.
+
+Configuring your app to target a recent API level ensures that users benefit from significant security and performance improvements, while still allowing your app to run on older Android versions (down to the minSdkVersion).
+
+This lint check starts warning you some months before these changes go into effect if your targetSdkVersion is 25 or lower. This is intended to give you a heads up to update your app, since depending on your current targetSdkVersion the work can be nontrivial.
+
+To update your targetSdkVersion, follow the steps from "Meeting Google Play requirements for target API level",
+https://developer.android.com/distribute/best-practices/develop/target-sdk.html
To suppress this error, use the issue id "ExpiringTargetSdkVersion" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ExportedContentProvider
+
+
Disabled By: Project lint.xml file
+
+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. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "ExportedContentProvider" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ExportedPreferenceActivity
+
+
Disabled By: Project lint.xml file
+
+Fragment injection gives anyone who can send your PreferenceActivity an intent the ability to load any fragment, with any arguments, in your process.
To suppress this error, use the issue id "ExportedPreferenceActivity" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ExportedReceiver
+
+
Disabled By: Project lint.xml file
+
+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. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "ExportedReceiver" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ExportedService
+
+
Disabled By: Project lint.xml file
+
+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. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "ExportedService" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ExtraText
+
+
Disabled By: Project lint.xml file
+
+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) To suppress this error, use the issue id "ExtraText" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
FieldGetter
+
+
Disabled By: Default
+
+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.
+In Android O, the findViewById signature switched to using generics, which means that most of the time you can leave out explicit casts and just assign the result of the findViewById call to variables of specific view classes.
+
+However, due to language changes between Java 7 and 8, this change may cause code to not compile without explicit casts. This lint check looks for these scenarios and suggests casts to be added now such that the code will continue to compile if the language level is updated to 1.8. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "FindViewByIdCast" as explained in the Suppressing Warnings and Errors section.
+
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "FontValidationError" as explained in the Suppressing Warnings and Errors section.
+
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "FontValidationWarning" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
GetContentDescriptionOverride
+
+
Disabled By: Project lint.xml file
+
+Overriding getContentDescription() may prevent some accessibility services from properly navigating content exposed by your view. Instead, call setContentDescription() when the content description needs to be changed. To suppress this error, use the issue id "GetContentDescriptionOverride" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
GetInstance
+
+
Disabled By: Project lint.xml file
+
+Cipher#getInstance should not be called with ECB as the cipher mode or without setting the cipher mode because the default mode on android is ECB, which is insecure. To suppress this error, use the issue id "GetInstance" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
GetLocales
+
+
Disabled By: Project lint.xml file
+
+This check looks for usage of Lollipop-style locale folders (e.g. 3 letter language codes, or BCP 47 qualifiers) combined with an AssetManager#getLocales() call. This leads to crashes To suppress this error, use the issue id "GetLocales" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
GifUsage
+
+
Disabled By: Project lint.xml file
+
+The .gif file format is discouraged. Consider using .png (preferred) or .jpg (acceptable) instead.
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "GoogleAppIndexingApiWarning" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
GoogleAppIndexingWarning
+
+
Disabled By: Default
+
+Adds URLs to get your app into the Google index, to get installs and traffic to your app from Google Search.
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "GoogleAppIndexingWarning" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
GradleDependency
+
+
Disabled By: Project lint.xml file
+
+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. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "GradleDependency" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
GradleDeprecated
+
+
Disabled By: Project lint.xml file
+
+This detector looks for deprecated Gradle constructs which currently work but will likely stop working in a future update. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "GradleDeprecated" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
GradleDeprecatedConfiguration
+
+
Disabled By: Project lint.xml file
+
+Some Gradle configurations have been deprecated since Android Gradle Plugin 3.0.0 and will be removed in a future version of the Android Gradle Plugin.
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "GradleDeprecatedConfiguration" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
GradleDynamicVersion
+
+
Disabled By: Project lint.xml file
+
+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.) Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "GradleDynamicVersion" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
GradleGetter
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "GradleGetter" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
GradleIdeError
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "GradleIdeError" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
GradleOverrides
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "GradleOverrides" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
GradlePath
+
+
Disabled By: Project lint.xml file
+
+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 To suppress this error, use the issue id "GradlePath" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
GradlePluginVersion
+
+
Disabled By: Project lint.xml file
+
+Not all versions of the Android Gradle plugin are compatible with all versions of the SDK. If you update your tools, or if you are trying to open a project that was built with an old version of the tools, you may need to update your plugin version number. To suppress this error, use the issue id "GradlePluginVersion" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
GrantAllUris
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "GrantAllUris" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
HalfFloat
+
+
Disabled By: Project lint.xml file
+
+Half-precision floating point are stored in a short data type, and should be manipulated using the android.util.Half class. This check flags usages where it appears that these values are used incorrectly. To suppress this error, use the issue id "HalfFloat" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
HandlerLeak
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "HandlerLeak" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
HardcodedText
+
+
Disabled By: Project lint.xml file
+
+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.
+
+There are quickfixes to automatically extract this hardcoded string into a resource lookup. To suppress this error, use the issue id "HardcodedText" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
HardwareIds
+
+
Disabled By: Project lint.xml file
+
+Using these device identifiers is not recommended other than for high value fraud prevention and advanced telephony use-cases. For advertising use-cases, use AdvertisingIdClient$Info#getId and for analytics, use InstanceId#getId.
+The declared versionCode is an Integer. Ensure that the version number is not close to the limit. It is recommended to monotonically increase this number each minor or major release of the app. Note that updating an app with a versionCode over Integer.MAX_VALUE is not possible.
To suppress this error, use the issue id "HighAppVersionCode" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
IconColors
+
+
Disabled By: Project lint.xml file
+
+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.html
+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.html
+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. To suppress this error, use the issue id "IconDipSize" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
IconDuplicates
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "IconDuplicates" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
IconDuplicatesConfig
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "IconDuplicatesConfig" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
IconExpectedSize
+
+
Disabled By: Default
+
+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.
+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). To suppress this error, use the issue id "IconExtension" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
IconLauncherShape
+
+
Disabled By: Project lint.xml file
+
+According to the Android Design Guide (http://developer.android.com/design/style/iconography.html) your launcher icons should "use a distinct silhouette", a "three-dimensional, front view, with a slight perspective as if viewed from above, so that users perceive some depth."
+
+The unique silhouette implies that your launcher icon should not be a filled square.
+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.
+Icons will look best if a custom version is provided for each of the major screen density classes (low, medium, high, extra-high, extra-extra-high). This lint check identifies folders which are missing, such as 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.html
To suppress this error, use the issue id "IconMissingDensityFolder" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
IconMixedNinePatch
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "IconMixedNinePatch" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
IconNoDpi
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "IconNoDpi" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
IconXmlAndPng
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "IconXmlAndPng" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
IgnoreWithoutReason
+
+
Disabled By: Project lint.xml file
+
+Ignoring a test without a reason makes it difficult to figure out the problem later.
+Please define an explicit reason why it is ignored, and when it can be resolved. To suppress this error, use the issue id "IgnoreWithoutReason" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
IllegalResourceRef
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "IllegalResourceRef" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ImplicitSamInstance
+
+
Disabled By: Default
+
+Kotlin's support for SAM (single accessor method) interfaces lets you pass a lambda to the interface. This will create a new instance on the fly even though there is no explicit constructor call. If you pass one of these lambdas or method references into a method which (for example) stores or compares the object identity, unexpected results may happen. To suppress this error, use the issue id "ImplicitSamInstance" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ImpliedQuantity
+
+
Disabled By: Project lint.xml file
+
+Plural strings should generally include a %s or %d formatting argument. In locales like English, the one quantity only applies to a single value, 1, but that's not true everywhere. For example, in Slovene, the one quantity will apply to 1, 101, 201, 301, and so on. Similarly, there are locales where multiple values match the zero and two quantities.
+
+In these locales, it is usually an error to have a message which does not include a formatting argument (such as '%d'), since it will not be clear from the grammar what quantity the quantity string is describing.
+Apps require the android.hardware.touchscreen feature by default. If you want your app to be available on TV, you must also explicitly declare that a touchscreen is not required as follows:
+<uses-feature android:name="android.hardware.touchscreen" android:required="false"/>
To suppress this error, use the issue id "ImpliedTouchscreenHardware" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
InOrMmUsage
+
+
Disabled By: Project lint.xml file
+
+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). To suppress this error, use the issue id "InOrMmUsage" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
IncludeLayoutParam
+
+
Disabled By: Project lint.xml file
+
+Layout parameters specified on an <include> tag will only be used if you also override layout_width and layout_height on the <include> tag; otherwise they will be ignored.
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "IncludeLayoutParam" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
IncompatibleMediaBrowserServiceCompatVersion
+
+
Disabled By: Project lint.xml file
+
+MediaBrowserServiceCompat from version 23.2.0 to 23.4.0 of the Support v4 Library used private APIs and will not be compatible with future versions of Android beyond Android N. Please upgrade to version 24.0.0 or higher of the Support Library. To suppress this error, use the issue id "IncompatibleMediaBrowserServiceCompatVersion" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
InconsistentArrays
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "InconsistentArrays" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
InconsistentLayout
+
+
Disabled By: Project lint.xml file
+
+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 To suppress this error, use the issue id "InconsistentLayout" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
InefficientWeight
+
+
Disabled By: Project lint.xml file
+
+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. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "InefficientWeight" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
InflateParams
+
+
Disabled By: Project lint.xml file
+
+When inflating a layout, avoid passing in null as the parent view, since otherwise any layout parameters on the root of the inflated layout will be ignored.
+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 decide whether it's safe and can be suppressed or whether the code needs to be guarded.
+
+If you really want to use this API and don't need to support older devices just set the minSdkVersion in your build.gradle or AndroidManifest.xml files.
+
+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. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "InlinedApi" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
InnerclassSeparator
+
+
Disabled By: Project lint.xml file
+
+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.) Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "InnerclassSeparator" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
InsecureBaseConfiguration
+
+
Disabled By: Project lint.xml file
+
+Permitting cleartext traffic could allow eavesdroppers to intercept data sent by your app, which impacts the privacy of your users. Consider only allowing encrypted traffic by setting the cleartextTrafficPermitted tag to "false".
To suppress this error, use the issue id "InsecureBaseConfiguration" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
InstantApps
+
+
Disabled By: Project lint.xml file
+
+This issue flags code that will not work correctly in Instant Apps To suppress this error, use the issue id "InstantApps" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
IntentReset
+
+
Disabled By: Project lint.xml file
+
+Intent provides the following APIs: setData(Uri) and setType(String). Unfortunately, setting one clears the other. If you want to set both, you should call setDataAndType(Uri, String) instead. To suppress this error, use the issue id "IntentReset" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
InvalidAnalyticsName
+
+
Disabled By: Project lint.xml file
+
+Event names and parameters must follow the naming conventions defined in the`FirebaseAnalytics#logEvent()` documentation.
To suppress this error, use the issue id "InvalidAnalyticsName" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
InvalidImeActionId
+
+
Disabled By: Project lint.xml file
+
+android:imeActionId should not be a resourceId such as @+id/resName. It must be an integer constant, or an integer resource reference, as defined in EditorInfo.
To suppress this error, use the issue id "InvalidImeActionId" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
InvalidNavigation
+
+
Disabled By: Project lint.xml file
+
+All <navigation> elements must have a start destination specified, and it must be a direct child of that <navigation>. To suppress this error, use the issue id "InvalidNavigation" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
InvalidPackage
+
+
Disabled By: Default
+
+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. To suppress this error, use the issue id "InvalidPackage" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
InvalidPermission
+
+
Disabled By: Project lint.xml file
+
+Not all elements support the permission attribute. If a permission is set on an invalid element, it is a no-op and ignored. Ensure that this permission attribute was set on the correct element to protect the correct component. To suppress this error, use the issue id "InvalidPermission" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
InvalidResourceFolder
+
+
Disabled By: Project lint.xml file
+
+This lint check looks for a folder name that is not a valid resource folder name; these will be ignored and not packaged by the Android Gradle build plugin.
+
+Note that the order of resources is very important; for example, you can't specify a language before a network code.
+
+Similarly, note that to use 3 letter region codes, you have to use a special BCP 47 syntax: the prefix b+ followed by the BCP 47 language tag but with + as the individual separators instead of -. Therefore, for the BCP 47 language tag nl-ABW you have to use b+nl+ABW.
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "InvalidUsesTagAttribute" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
InvalidVectorPath
+
+
Disabled By: Project lint.xml file
+
+This check ensures that vector paths are valid. For example, it makes sure that the numbers are not using scientific notation (such as 1.0e3) which can lead to runtime crashes on older devices. As another example, it flags numbers like .5 which should be written as 0.5 instead to avoid crashes on some pre-Marshmallow devices.
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "InvalidVectorPath" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
InvalidWakeLockTag
+
+
Disabled By: Project lint.xml file
+
+Wake Lock tags must follow the naming conventions defined in the`PowerManager` documentation.
To suppress this error, use the issue id "InvalidWakeLockTag" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
InvalidWearFeatureAttribute
+
+
Disabled By: Project lint.xml file
+
+For the android.hardware.type.watch uses-feature, android:required="false" is disallowed. A single APK for Wear and non-Wear devices is not supported.
To suppress this error, use the issue id "JavascriptInterface" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
JobSchedulerService
+
+
Disabled By: Project lint.xml file
+
+This check looks for various common mistakes in using the JobScheduler API: the service class must extend JobService, the service must be registered in the manifest and the registration must require the permission android.permission.BIND_JOB_SERVICE.
To suppress this error, use the issue id "JobSchedulerService" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
KeyboardInaccessibleWidget
+
+
Disabled By: Project lint.xml file
+
+A widget that is declared to be clickable but not declared to be focusable is not accessible via the keyboard. Please add the focusable attribute as well. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "KeyboardInaccessibleWidget" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
KotlinPropertyAccess
+
+
Disabled By: Default
+
+For a method to be represented as a property in Kotlin, strict “bean”-style prefixing must be used.
+
+Accessor methods require a ‘get’ prefix or for boolean-returning methods an ‘is’ prefix can be used.
To suppress this error, use the issue id "KotlinPropertyAccess" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
LabelFor
+
+
Disabled By: Project lint.xml file
+
+Editable text fields should provide an android:hint or, provided your minSdkVersion is at least 17, they may be referenced by a view with a android:labelFor attribute.
+
+When using android:labelFor, be sure to provide an android:text or an android:contentDescription.
+
+If your view is labeled but by a label in a different layout which includes this one, just suppress this warning from lint. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "LabelFor" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
LambdaLast
+
+
Disabled By: Default
+
+To improve calling this code from Kotlin,
+parameter types eligible for SAM conversion should be last.
To suppress this error, use the issue id "LifecycleAnnotationProcessorWithJava8" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
LocalSuppress
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "LocalSuppress" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
LocaleFolder
+
+
Disabled By: Project lint.xml file
+
+From the java.util.Locale documentation:
+"Note that Java uses several deprecated two-letter codes. The Hebrew ("he") language code is rewritten as "iw", Indonesian ("id") as "in", and Yiddish ("yi") as "ji". This rewriting happens even if you construct your own Locale object, not just for instances returned by the various lookup methods.
+
+Because of this, if you add your localized resources in for example values-he they will not be used, since the system will look for values-iw instead.
+
+To work around this, place your resources in a values folder using the deprecated language code instead.
+The <activity> element should not be locked to any orientation so that users can take advantage of the multi-window environments and larger screens on Chrome OS. To fix the issue, consider declaring the corresponding activity element with `screenOrientation="unspecified"or "fullSensor"` attribute.
To suppress this error, use the issue id "LockedOrientationActivity" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
LogConditional
+
+
Disabled By: Default
+
+The BuildConfig class (available in Tools 17) provides a constant, "DEBUG", which indicates whether the code is being built in release mode or in debug mode. In release mode, you typically want to strip out all the logging calls. Since the compiler will automatically remove all code which is inside a "if (false)" check, surrounding your logging calls with a check for BuildConfig.DEBUG is a good idea.
+
+If you really intend for the logging to be present in release mode, you can suppress this warning with a @SuppressLint annotation for the intentional logging calls. To suppress this error, use the issue id "LogConditional" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
LogTagMismatch
+
+
Disabled By: Project lint.xml file
+
+When guarding a Log.v(tag, ...) call with Log.isLoggable(tag), the tag passed to both calls should be the same. Similarly, the level passed in to Log.isLoggable should typically match the type of Log call, e.g. if checking level Log.DEBUG, the corresponding Log call should be Log.d, not Log.i. To suppress this error, use the issue id "LogTagMismatch" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
LongLogTag
+
+
Disabled By: Project lint.xml file
+
+Log tags are only allowed to be at most 23 tag characters long. To suppress this error, use the issue id "LongLogTag" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
MangledCRLF
+
+
Disabled By: Default
+
+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.
+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. To suppress this error, use the issue id "ManifestOrder" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
MenuTitle
+
+
Disabled By: Project lint.xml file
+
+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.
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "MenuTitle" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
MergeMarker
+
+
Disabled By: Project lint.xml file
+
+Many version control systems leave unmerged files with markers such as <<< in the source code. This check looks for these markers, which are sometimes accidentally left in, particularly in resource files where they don't break compilation. To suppress this error, use the issue id "MergeMarker" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
MergeRootFrame
+
+
Disabled By: Project lint.xml file
+
+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.
+The value of the minSdkVersion property is too low and can be incremented without noticeably reducing the number of supported devices. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "MinSdkTooLow" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
MipmapIcons
+
+
Disabled By: Project lint.xml file
+
+Launcher icons should be provided in the mipmap resource directory. This is the same as the drawable resource directory, except resources in the mipmap directory will not get stripped out when creating density-specific APKs.
+
+In certain cases, the Launcher app may use a higher resolution asset (than would normally be computed for the device) to display large app shortcuts. If drawables for densities other than the device's resolution have been stripped out, then the app shortcut could appear blurry.
+
+To fix this, move your launcher icons from `drawable-`dpi to `mipmap-`dpi and change references from @drawable/ and R.drawable to @mipmap/ and R.mipmap.
+In Android Studio this lint warning has a quickfix to perform this automatically. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "MipmapIcons" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
MissingApplicationIcon
+
+
Disabled By: Project lint.xml file
+
+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).
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "MissingApplicationIcon" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
MissingBackupPin
+
+
Disabled By: Project lint.xml file
+
+It is highly recommended to declare a backup <pin> element. Not having a second pin defined can cause connection failures when the particular site certificate is rotated and the app has not yet been updated.
+If a class is referenced in the manifest or in a layout file, 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 XML references
+properly.
+The layout editor allows you to place widgets anywhere on the canvas, and it records the current position with designtime attributes (such as layout_editor_absoluteX). These attributes are not applied at runtime, so if you push your layout on a device, the widgets may appear in a different location than shown in the editor. To fix this, make sure a widget has both horizontal and vertical constraints by dragging from the edge connections. To suppress this error, use the issue id "MissingConstraints" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
MissingFirebaseInstanceTokenRefresh
+
+
Disabled By: Project lint.xml file
+
+Apps that use Firebase Cloud Messaging should implement the FirebaseMessagingService#onNewToken() callback in order to observe token changes.
To suppress this error, use the issue id "MissingFirebaseInstanceTokenRefresh" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
MissingId
+
+
Disabled By: Project lint.xml file
+
+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 view.
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "MissingId" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
MissingIntentFilterForMediaSearch
+
+
Disabled By: Project lint.xml file
+
+To support voice searches on Android Auto, you should also register an intent-filter for the action android.media.action.MEDIA_PLAY_FROM_SEARCH.
+To do this, add
+
To suppress this error, use the issue id "MissingIntentFilterForMediaSearch" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
MissingLeanbackLauncher
+
+
Disabled By: Project lint.xml file
+
+An application intended to run on TV devices must declare a launcher activity for TV in its manifest using a android.intent.category.LEANBACK_LAUNCHER intent filter.
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "MissingLeanbackSupport" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
MissingMediaBrowserServiceIntentFilter
+
+
Disabled By: Project lint.xml file
+
+An Automotive Media App requires an exported service that extends android.service.media.MediaBrowserService with an intent-filter for the action android.media.browse.MediaBrowserService to be able to browse and play media.
+To do this, add
+
To suppress this error, use the issue id "MissingMediaBrowserServiceIntentFilter" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
MissingOnPlayFromSearch
+
+
Disabled By: Project lint.xml file
+
+To support voice searches on Android Auto, in addition to adding an intent-filter for the action onPlayFromSearch, you also need to override and implement onPlayFromSearch(String query, Bundle bundle)
To suppress this error, use the issue id "MissingOnPlayFromSearch" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
MissingPermission
+
+
Disabled By: Project lint.xml file
+
+This check scans through your code and libraries and looks at the APIs being used, and checks this against the set of permissions required to access those APIs. If the code using those APIs is called at runtime, then the program will crash.
+
+Furthermore, for permissions that are revocable (with targetSdkVersion 23), client code must also be prepared to handle the calls throwing an exception if the user rejects the request for permission at runtime. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "MissingPermission" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
MissingPrefix
+
+
Disabled By: Project lint.xml file
+
+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. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "MissingPrefix" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
MissingQuantity
+
+
Disabled By: Project lint.xml file
+
+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".
+Some methods, such as View#onDetachedFromWindow, require that you also call the super implementation as part of your method. To suppress this error, use the issue id "MissingSuperCall" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
MissingTranslation
+
+
Disabled By: Project lint.xml file
+
+If an application has more than one locale, then all the strings declared in one language should also be translated in all other languages.
+
+If the string should not be translated, you can add the attribute translatable="false" on the <string> element, or you can define all your non-translatable strings in a resource file called donottranslate.xml. Or, you can ignore the issue with a tools:ignore="MissingTranslation" attribute.
+
+You can tell lint (and other tools) which language is the default language in your res/values/ folder by specifying tools:locale="languageCode" for the root <resources> element in your resource file. (The tools prefix refers to the namespace declaration http://schemas.android.com/tools.) To suppress this error, use the issue id "MissingTranslation" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
MissingTvBanner
+
+
Disabled By: Project lint.xml file
+
+A TV application must provide a home screen banner for each localization if it includes a Leanback launcher intent filter. The banner is the app launch point that appears on the home screen in the apps and games rows.
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "MissingTvBanner" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
MissingVersion
+
+
Disabled By: Project lint.xml file
+
+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.
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "MissingVersion" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
MotionLayoutInvalidSceneFileReference
+
+
Disabled By: Project lint.xml file
+
+A motion scene file specifies the animations used in a MotionLayout.
+The layoutDescription is required to specify a valid motion scene file. To suppress this error, use the issue id "MotionLayoutInvalidSceneFileReference" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
MotionSceneFileValidationError
+
+
Disabled By: Project lint.xml file
+
+A motion scene file specifies the animations used in a MotionLayout.
+This check performs various serious correctness checks in a motion scene file. To suppress this error, use the issue id "MotionSceneFileValidationError" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
NegativeMargin
+
+
Disabled By: Default
+
+Margin values should be positive. Negative values are generally a sign that you are making assumptions about views surrounding the current one, or may be tempted to turn off child clipping to allow a view to escape its parent. Turning off child clipping to do this not only leads to poor graphical performance, it also results in wrong touch event handling since touch events are based strictly on a chain of parent-rect hit tests. Finally, making assumptions about the size of strings can lead to localization problems. To suppress this error, use the issue id "NegativeMargin" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
NestedScrolling
+
+
Disabled By: Project lint.xml file
+
+A scrolling widget such as a ScrollView should not contain any nested scrolling widgets since this has various usability issues To suppress this error, use the issue id "NestedScrolling" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
NestedWeights
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "NestedWeights" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
NewApi
+
+
Disabled By: Project lint.xml file
+
+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 build.gradle or AndroidManifest.xml files.
+
+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-vNN 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. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "NewApi" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
NewerVersionAvailable
+
+
Disabled By: Default
+
+This detector checks with a central repository to see if there are newer versions available for the dependencies used by this project. This is similar to the GradleDependency check, which checks for newer versions available in the Android SDK tools and libraries, but this works with any MavenCentral dependency, and connects to the library every time, which makes it more flexible but also much slower. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "NewerVersionAvailable" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
NoHardKeywords
+
+
Disabled By: Default
+
+Do not use Kotlin’s hard keywords as the name of methods or fields.
+These require the use of backticks to escape when calling from Kotlin.
+Soft keywords, modifier keywords, and special identifiers are allowed.
+
+For example, Mockito’s when function requires backticks when used from Kotlin:
+
+ val callable = Mockito.mock(Callable::class.java)
+ Mockito.`when`(callable.call()).thenReturn(/* … */)
+The <activity> element should be allowed to be resized to allow users to take advantage of the multi-window environment on Chrome OS To fix the issue, consider declaring the corresponding activity element with resizableActivity="true" attribute.
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "NotInterpolated" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
NotificationIconCompatibility
+
+
Disabled By: Project lint.xml file
+
+Notification icons should define a raster image to support Android versions below 5.0 (API 21). Note that the way Lint decides whether an icon is a notification icon is based on the filename prefix ic_stat_. This corresponds to the naming convention documented in http://developer.android.com/guide/practices/ui_guidelines/icon_design.html To suppress this error, use the issue id "NotificationIconCompatibility" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ObjectAnimatorBinding
+
+
Disabled By: Project lint.xml file
+
+This check cross references properties referenced by String from ObjectAnimator and PropertyValuesHolder method calls and ensures that the corresponding setter methods exist and have the right signatures. To suppress this error, use the issue id "ObjectAnimatorBinding" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ObsoleteLayoutParam
+
+
Disabled By: Project lint.xml file
+
+The given layout_param is not defined for the given layout, meaning it has no effect. This usually happens when you change the parent layout or move view code around without updating the layout params. This will cause useless attribute processing at runtime, and is misleading for others reading the layout so the parameter should be removed. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "ObsoleteLayoutParam" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ObsoleteSdkInt
+
+
Disabled By: Project lint.xml file
+
+This check flags version checks that are not necessary, because the minSdkVersion (or surrounding known API level) is already at least as high as the version checked for.
+
+Similarly, it also looks for resources in -vNN folders, such as values-v14 where the version qualifier is less than or equal to the minSdkVersion, where the contents should be merged into the best folder. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "ObsoleteSdkInt" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
OldTargetApi
+
+
Disabled By: Project lint.xml file
+
+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.html as well as follow this guide:
+https://developer.android.com/distribute/best-practices/develop/target-sdk.html
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "OldTargetApi" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
OnClick
+
+
Disabled By: Project lint.xml file
+
+The onClick attribute value should be the name of a method in this View's context to invoke when the view is clicked. This name must correspond to a public method that takes exactly one parameter of type View.
+
+Must be a string value, using '\;' to escape characters such as '\n' or '\uxxxx' for a unicode character. To suppress this error, use the issue id "OnClick" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
Orientation
+
+
Disabled By: Project lint.xml file
+
+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. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "Orientation" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
OutdatedLibrary
+
+
Disabled By: Project lint.xml file
+
+Your app is using an outdated version of a library. This may cause violations of Google Play policies (see https://play.google.com/about/monetization-ads/ads/) and/or may affect your app’s visibility on the Play Store.
+
+Please try updating your app with an updated version of this library, or remove it from your app. To suppress this error, use the issue id "OutdatedLibrary" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
Overdraw
+
+
Disabled By: Project lint.xml file
+
+If you set a background drawable on a root view, then you should use a custom theme where the theme background is null. Otherwise, the theme background will be painted first, only to have your custom background completely cover it; this is called "overdraw".
+
+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. To suppress this error, use the issue id "Overdraw" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
Override
+
+
Disabled By: Project lint.xml file
+
+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. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "Override" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
OverrideAbstract
+
+
Disabled By: Project lint.xml file
+
+To improve the usability of some APIs, some methods that used to be abstract have been made concrete by adding default implementations. This means that when compiling with new versions of the SDK, your code does not have to override these methods.
+
+However, if your code is also targeting older versions of the platform where these methods were still abstract, the code will crash. You must override all methods that used to be abstract in any versions targeted by your application's minSdkVersion. To suppress this error, use the issue id "OverrideAbstract" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
PackageManagerGetSignatures
+
+
Disabled By: Project lint.xml file
+
+Improper validation of app signatures could lead to issues where a malicious app submits itself to the Play Store with both its real certificate and a fake certificate and gains access to functionality or information it shouldn't have due to another application only checking for the fake certificate and ignoring the rest. Please make sure to validate all signatures returned by this method.
To suppress this error, use the issue id "PackageManagerGetSignatures" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ParcelClassLoader
+
+
Disabled By: Project lint.xml file
+
+The documentation for Parcel#readParcelable(ClassLoader) (and its variations) says that you can pass in null to pick up the default class loader. However, that ClassLoader is a system class loader and is not able to find classes in your own application.
+
+If you are writing your own classes into the Parcel (not just SDK classes like String and so on), then you should supply a ClassLoader for your application instead; a simple way to obtain one is to just call getClass().getClassLoader() from your own class.
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "ParcelClassLoader" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ParcelCreator
+
+
Disabled By: Project lint.xml file
+
+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."
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "ParcelCreator" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
PendingBindings
+
+
Disabled By: Project lint.xml file
+
+When using a ViewDataBinding in a onBindViewHolder method, you must call executePendingBindings() before the method exits; otherwise the data binding runtime will update the UI in the next animation frame causing a delayed update and potential jumps if the item resizes. To suppress this error, use the issue id "PendingBindings" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
PermissionImpliesUnsupportedChromeOsHardware
+
+
Disabled By: Default
+
+The <uses-permission> element should not require a permission that implies an unsupported Chrome OS hardware feature. Google Play assumes that certain hardware related permissions indicate that the underlying hardware features are required by default. To fix the issue, consider declaring the corresponding uses-feature element with required="false" attribute.
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "PermissionImpliesUnsupportedChromeOsHardware" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
PermissionImpliesUnsupportedHardware
+
+
Disabled By: Project lint.xml file
+
+The <uses-permission> element should not require a permission that implies an unsupported TV hardware feature. Google Play assumes that certain hardware related permissions indicate that the underlying hardware features are required by default. To fix the issue, consider declaring the corresponding uses-feature element with required="false" attribute.
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "PermissionImpliesUnsupportedHardware" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
PinSetExpiry
+
+
Disabled By: Project lint.xml file
+
+Ensures that the expiration attribute of the <pin-set> element is valid and has not already expired or is expiring soon
+This lint check looks for potential errors in internationalization where you have translated a message which involves a quantity and it looks like other parts of the string may need grammatical changes.
+
+For example, rather than something like this:
+
+ <string name="try_again">Try again in %d seconds.</string>
+
+you should be using a plural:
+
+ <plurals name="try_again">
+ <item quantity="one">Try again in %d second</item>
+ <item quantity="other">Try again in %d seconds</item>
+ </plurals>
+
+This will ensure that in other languages the right set of translations are provided for the different quantity classes.
+
+(This check depends on some heuristics, so it may not accurately determine whether a string really should be a quantity. You can use tools:ignore to filter out false positives.
+Using reflection to access hidden/private Android APIs is not safe; it will often not work on devices from other vendors, and it may suddenly stop working (if the API is removed) or crash spectacularly (if the API behavior changes, since there are no guarantees for compatibility).
+Private resources should not be referenced; the may not be present everywhere, and even where they are they may disappear without notice.
+
+To fix this, copy the resource into your own project instead. To suppress this error, use the issue id "PrivateResource" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ProguardSplit
+
+
Disabled By: Project lint.xml file
+
+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 To suppress this error, use the issue id "ProguardSplit" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
PropertyEscape
+
+
Disabled By: Project lint.xml file
+
+All backslashes and colons in .property files must be escaped with a backslash (). This means that when writing a Windows path, you must escape the file separators, so the path MyFiles should be written as key=\\My\\Files. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "PropertyEscape" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ProtectedPermissions
+
+
Disabled By: Project lint.xml file
+
+Permissions with the protection level signature, privileged 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. To suppress this error, use the issue id "ProtectedPermissions" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ProxyPassword
+
+
Disabled By: Project lint.xml file
+
+Storing proxy server passwords in clear text is dangerous if this file is shared via version control. If this is deliberate or this is a truly private project, suppress this warning. To suppress this error, use the issue id "ProxyPassword" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
PxUsage
+
+
Disabled By: Project lint.xml file
+
+For performance reasons and to keep the code simpler, the Android system uses pixels as the standard unit for expressing dimension or coordinate values. That means that the dimensions of a view are always expressed in the code using pixels, but always based on the current screen density. For instance, if myView.getWidth() returns 10, the view is 10 pixels wide on the current screen, but on a device with a higher density screen, the value returned might be 15. If you use pixel values in your application code to work with bitmaps that are not pre-scaled for the current screen density, you might need to scale the pixel values that you use in your code to match the un-scaled bitmap source.
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "PxUsage" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
Range
+
+
Disabled By: Project lint.xml file
+
+Some parameters are required to in a particular numerical range; this check makes sure that arguments passed fall within the range. For arrays, Strings and collections this refers to the size or length. To suppress this error, use the issue id "Range" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
Recycle
+
+
Disabled By: Project lint.xml file
+
+Many resources, such as TypedArrays, VelocityTrackers, etc., should be recycled (with a recycle() call) after use. This lint check looks for missing recycle() calls. To suppress this error, use the issue id "Recycle" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
RecyclerView
+
+
Disabled By: Project lint.xml file
+
+RecyclerView will not call onBindViewHolder again when the position of the item changes in the data set unless the item itself is invalidated or the new position cannot be determined.
+
+For this reason, you should only use the position parameter while acquiring the related data item inside this method, and should not keep a copy of it.
+
+If you need the position of an item later on (e.g. in a click listener), use getAdapterPosition() which will have the updated adapter position. To suppress this error, use the issue id "RecyclerView" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
RedundantNamespace
+
+
Disabled By: Project lint.xml file
+
+In Android XML documents, only specify the namespace on the root/document element. Namespace declarations elsewhere in the document are typically accidental leftovers from copy/pasting XML from other files or documentation. To suppress this error, use the issue id "RedundantNamespace" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
Registered
+
+
Disabled By: Default
+
+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.
+If relative layout has text or button items aligned to left and right sides they can overlap each other due to localized text expansion unless they have mutual constraints like toEndOf/toStartOf. To suppress this error, use the issue id "RelativeOverlap" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
RequiredSize
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "RequiredSize" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
RequiresFeature
+
+
Disabled By: Project lint.xml file
+
+Some APIs require optional features to be present. This check makes sure that calls to these APIs are surrounded by a check which enforces this. To suppress this error, use the issue id "RequiresFeature" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ResourceAsColor
+
+
Disabled By: Project lint.xml file
+
+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.
+
+Similarly, methods that take a dimension integer should be passed an actual dimension (call getResources().getDimension(resource) To suppress this error, use the issue id "ResourceAsColor" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ResourceType
+
+
Disabled By: Project lint.xml file
+
+Ensures that resource id's passed to APIs are of the right type; for example, calling Resources.getColor(R.string.name) is wrong. To suppress this error, use the issue id "ResourceType" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
RestrictedApi
+
+
Disabled By: Project lint.xml file
+
+This API has been flagged with a restriction that has not been met.
+
+Examples of API restrictions:
+* Method can only be invoked by a subclass
+* Method can only be accessed from within the same library (defined by the Gradle library group id)
+* Method can only be accessed from tests.
+
+You can add your own API restrictions with the @RestrictTo annotation. To suppress this error, use the issue id "RestrictedApi" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
RiskyLibrary
+
+
Disabled By: Project lint.xml file
+
+Your app is using a version of a library that has been identified by the library developer as a potential source of privacy and/or security risks. This may be a violation of Google Play policies (see https://play.google.com/about/monetization-ads/ads/) and/or affect your app’s visibility on the Play Store.
+
+When available, the individual error messages from lint will include details about the reasons for this advisory.
+
+Please try updating your app with an updated version of this library, or remove it from your app. To suppress this error, use the issue id "RiskyLibrary" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
RtlCompat
+
+
Disabled By: Project lint.xml file
+
+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. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "RtlCompat" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
RtlEnabled
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "RtlEnabled" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
RtlHardcoded
+
+
Disabled By: Project lint.xml file
+
+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/end attributes. On older platforms, where RTL is not supported and the start/end 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".) Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "RtlHardcoded" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
RtlSymmetry
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "RtlSymmetry" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
SQLiteString
+
+
Disabled By: Project lint.xml file
+
+In SQLite, any column can store any data type; the declared type for a column is more of a hint as to what the data should be cast to when stored.
+
+There are many ways to store a string. TEXT, VARCHAR, CHARACTER and CLOB are string types, but `STRING` is not. Columns defined as STRING are actually numeric.
+
+If you try to store a value in a numeric column, SQLite will try to cast it to a float or an integer before storing. If it can't, it will just store it as a string.
+
+This can lead to some subtle bugs. For example, when SQLite encounters a string like 1234567e1234, it will parse it as a float, but the result will be out of range for floating point numbers, so Inf will be stored! Similarly, strings that look like integers will lose leading zeroes.
+
+To fix this, you can change your schema to use a TEXT type instead.
+When SSLCertificateSocketFactory.createSocket() is called with an InetAddress as the first parameter, TLS/SSL hostname verification is not performed, which could result in insecure network traffic caused by trusting arbitrary hostnames in TLS/SSL certificates presented by peers. In this case, developers must ensure that the InetAddress is explicitly verified against the certificate through other means, such as by calling `SSLCertificateSocketFactory.getDefaultHostnameVerifier() to get a HostnameVerifier and calling HostnameVerifier.verify(). To suppress this error, use the issue id "SSLCertificateSocketFactoryCreateSocket" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
SSLCertificateSocketFactoryGetInsecure
+
+
Disabled By: Project lint.xml file
+
+The SSLCertificateSocketFactory.getInsecure() method returns an SSLSocketFactory with all TLS/SSL security checks disabled, which could result in insecure network traffic caused by trusting arbitrary TLS/SSL certificates presented by peers. This method should be avoided unless needed for a special circumstance such as debugging. Instead, SSLCertificateSocketFactory.getDefault() should be used. To suppress this error, use the issue id "SSLCertificateSocketFactoryGetInsecure" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ScrollViewCount
+
+
Disabled By: Project lint.xml file
+
+ScrollViews can only have one child widget. If you want more children, wrap them in a container layout. To suppress this error, use the issue id "ScrollViewCount" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ScrollViewSize
+
+
Disabled By: Project lint.xml file
+
+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 Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "ScrollViewSize" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
SdCardPath
+
+
Disabled By: Project lint.xml file
+
+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().
+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.
+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. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "SelectableText" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ServiceCast
+
+
Disabled By: Project lint.xml file
+
+When you call Context#getSystemService(), the result is typically cast to a specific interface. This lint check ensures that the cast is compatible with the expected type of the return value. To suppress this error, use the issue id "ServiceCast" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
SetJavaScriptEnabled
+
+
Disabled By: Project lint.xml file
+
+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.
+
+
+
+
+
SetTextI18n
+
+
Disabled By: Project lint.xml file
+
+When calling TextView#setText
+* Never call Number#toString() to format numbers; it will not handle fraction separators and locale-specific digits properly. Consider using String#format with proper format specifications (%d or %f) instead.
+* Do not pass a string literal (e.g. "Hello") to display text. Hardcoded text can not be properly translated to other languages. Consider using Android resource strings instead.
+* Do not build messages by concatenating text chunks. Such messages can not be properly translated.
+Setting files world-readable is very dangerous, and likely to cause security holes in applications. It is strongly discouraged; instead, applications should use more formal mechanisms for interactions such as ContentProvider, BroadcastReceiver, and Service. To suppress this error, use the issue id "SetWorldReadable" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
SetWorldWritable
+
+
Disabled By: Project lint.xml file
+
+Setting files world-writable is very dangerous, and likely to cause security holes in applications. It is strongly discouraged; instead, applications should use more formal mechanisms for interactions such as ContentProvider, BroadcastReceiver, and Service. To suppress this error, use the issue id "SetWorldWritable" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ShiftFlags
+
+
Disabled By: Project lint.xml file
+
+When defining multiple constants for use in flags, the recommended style is to use the form 1 << 2, 1 << 3, 1 << 4 and so on to ensure that the constants are unique and non-overlapping. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "ShiftFlags" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ShortAlarm
+
+
Disabled By: Project lint.xml file
+
+Frequent alarms are bad for battery life. As of API 22, the AlarmManager will override near-future and high-frequency alarm requests, delaying the alarm at least 5 seconds into the future and ensuring that the repeat interval is at least 60 seconds.
+
+If you really need to do work sooner than 5 seconds, post a delayed message or runnable to a Handler. To suppress this error, use the issue id "ShortAlarm" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ShowToast
+
+
Disabled By: Project lint.xml file
+
+Toast.makeText() creates a Toast but does not show it. You must call show() on the resulting object to actually make the Toast appear. To suppress this error, use the issue id "ShowToast" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
SignatureOrSystemPermissions
+
+
Disabled By: Project lint.xml file
+
+The signature protection level should probably be sufficient for most needs and works regardless of where applications are installed. The signatureOrSystem level is used for certain situations where multiple vendors have applications built into a system image and need to share specific features explicitly because they are being built together. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "SignatureOrSystemPermissions" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
SimpleDateFormat
+
+
Disabled By: Project lint.xml file
+
+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.
+This check analyzes usages of the Slices API and offers suggestions based
+on best practices. To suppress this error, use the issue id "Slices" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
SmallSp
+
+
Disabled By: Project lint.xml file
+
+Avoid using sizes smaller than 12sp. To suppress this error, use the issue id "SmallSp" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
SoonBlockedPrivateApi
+
+
Disabled By: Project lint.xml file
+
+Usage of restricted non-SDK interface will throw an exception at runtime. Accessing non-SDK methods or fields through reflection has a high likelihood to break your app between versions, and is being restricted to facilitate future app compatibility.
To suppress this error, use the issue id "SoonBlockedPrivateApi" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
SourceLockedOrientationActivity
+
+
Disabled By: Default
+
+The Activity should not be locked to any orientation so that users
+can take advantage of the multi-window environments and larger screens
+available on Chrome OS. To fix the issue, consider calling setRequestedOrientation
+with the ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR or
+ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED options or removing the call
+all together. To suppress this error, use the issue id "SourceLockedOrientationActivity" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
SpUsage
+
+
Disabled By: Project lint.xml file
+
+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.
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "SpUsage" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
StateListReachable
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "StateListReachable" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
StaticFieldLeak
+
+
Disabled By: Project lint.xml file
+
+A static field will leak contexts.
+
+Non-static inner classes have an implicit reference to their outer class. If that outer class is for example a Fragment or Activity, then this reference means that the long-running handler/loader/task will hold a reference to the activity which prevents it from getting garbage collected.
+
+Similarly, direct field references to activities and fragments from these longer running instances can cause leaks.
+
+ViewModel classes should never point to Views or non-application Contexts. To suppress this error, use the issue id "StaticFieldLeak" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
StopShip
+
+
Disabled By: Default
+
+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. In Gradle projects, this is only checked for non-debug (release) builds. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "StopShip" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
StringEscaping
+
+
Disabled By: Project lint.xml file
+
+Apostrophes (') must always be escaped (with a \), unless they appear in a string which is itself escaped in double quotes ("). Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "StringEscaping" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
StringFormatCount
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "StringFormatCount" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
StringFormatInvalid
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "StringFormatInvalid" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
StringFormatMatches
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "StringFormatMatches" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
StringShouldBeInt
+
+
Disabled By: Project lint.xml file
+
+The properties compileSdkVersion, minSdkVersion and targetSdkVersion are usually numbers, but can be strings when you are using an add-on (in the case of compileSdkVersion) or a preview platform (for the other two properties).
+
+However, you can not use a number as a string (e.g. "19" instead of 19); that will result in a platform not found error message at build/sync time. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "StringShouldBeInt" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
SupportAnnotationUsage
+
+
Disabled By: Project lint.xml file
+
+This lint check makes sure that the support annotations (such as @IntDef and @ColorInt) are used correctly. For example, it's an error to specify an @IntRange where the from value is higher than the to value. To suppress this error, use the issue id "SupportAnnotationUsage" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
Suspicious0dp
+
+
Disabled By: Project lint.xml file
+
+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 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. To suppress this error, use the issue id "Suspicious0dp" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
SuspiciousImport
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "SuspiciousImport" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
SwitchIntDef
+
+
Disabled By: Project lint.xml file
+
+This check warns if a switch statement does not explicitly include all the values declared by the typedef @IntDef declaration. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "SwitchIntDef" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
SyntheticAccessor
+
+
Disabled By: Default
+
+A private inner class which is accessed from the outer class will force the compiler to insert a synthetic accessor; this means that you are causing extra overhead. This is not important in small projects, but is important for large apps running up against the 64K method handle limit, and especially for libraries where you want to make sure your library is as small as possible for the cases where your library is used in an app running up against the 64K limit. To suppress this error, use the issue id "SyntheticAccessor" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
TextFields
+
+
Disabled By: Project lint.xml file
+
+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).
+
+The lint detector also looks at the id of the 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". Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "TextFields" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
TextViewEdits
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "TextViewEdits" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
TooDeepLayout
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "TooDeepLayout" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
TooManyViews
+
+
Disabled By: Project lint.xml file
+
+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 view count defaults to 80 but can be configured with the environment variable ANDROID_LINT_MAX_VIEW_COUNT. To suppress this error, use the issue id "TooManyViews" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
TranslucentOrientation
+
+
Disabled By: Project lint.xml file
+
+Specifying a fixed screen orientation with a translucent theme isn't supported on apps with targetSdkVersion O or greater since there can be an another activity visible behind your activity with a conflicting request.
+
+For example, your activity requests landscape and the visible activity behind your translucent activity request portrait. In this case the system can only honor one of the requests and currently prefers to honor the request from non-translucent activities since there is nothing visible behind them.
+
+Devices running platform version O or greater will throw an exception in your app if this state is detected. To suppress this error, use the issue id "TranslucentOrientation" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
TrulyRandom
+
+
Disabled By: Project lint.xml file
+
+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.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.
+This check looks for X509TrustManager implementations whose checkServerTrusted or checkClientTrusted methods do nothing (thus trusting any certificate chain) which could result in insecure network traffic caused by trusting arbitrary TLS/SSL certificates presented by peers. To suppress this error, use the issue id "TrustAllX509TrustManager" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
TypographyDashes
+
+
Disabled By: Project lint.xml file
+
+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.
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "TypographyDashes" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
TypographyEllipsis
+
+
Disabled By: Project lint.xml file
+
+You can replace the string "..." with a dedicated ellipsis character, ellipsis character (…, …). This can help make the text more readable.
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "TypographyEllipsis" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
TypographyFractions
+
+
Disabled By: Project lint.xml file
+
+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.
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "TypographyFractions" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
TypographyOther
+
+
Disabled By: Project lint.xml file
+
+This check looks for miscellaneous typographical problems and offers replacement sequences that will make the text easier to read and your application more polished. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "TypographyOther" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
TypographyQuotes
+
+
Disabled By: Default
+
+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.)
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "TypographyQuotes" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
Typos
+
+
Disabled By: Project lint.xml file
+
+This check looks through the string definitions, and if it finds any words that look like likely misspellings, they are flagged. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "Typos" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
UniqueConstants
+
+
Disabled By: Project lint.xml file
+
+The @IntDef annotation allows you to create a light-weight "enum" or type definition. However, it's possible to accidentally specify the same value for two or more of the values, which can lead to hard-to-detect bugs. This check looks for this scenario and flags any repeated constants.
+
+In some cases, the repeated constant is intentional (for example, renaming a constant to a more intuitive name, and leaving the old name in place for compatibility purposes). In that case, simply suppress this check by adding a @SuppressLint("UniqueConstants") annotation. To suppress this error, use the issue id "UniqueConstants" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
UnknownIdInLayout
+
+
Disabled By: Project lint.xml file
+
+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 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 view which is provided in a different layout via an include. However, it is usually an accident where you have a typo or you have renamed a view without updating all the references to it. To suppress this error, use the issue id "UnknownIdInLayout" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
UnknownNullness
+
+
Disabled By: Default
+
+To improve referencing this code from Kotlin, consider adding
+explicit nullness information here with either @NonNull or @Nullable.
+
+You can set the environment variable
+ ANDROID_LINT_NULLNESS_IGNORE_DEPRECATED=true
+if you want lint to ignore classes and members that have been annotated with
+@Deprecated.
+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. To suppress this error, use the issue id "UnlocalizedSms" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
UnpackedNativeCode
+
+
Disabled By: Default
+
+This app loads native libraries using System.loadLibrary().
+
+Consider adding android:extractNativeLibs="false" to the <application> tag in AndroidManifest.xml. Starting with Android 6.0, this will make installation faster, the app will take up less space on the device and updates will have smaller download sizes. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "UnpackedNativeCode" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
UnprotectedSMSBroadcastReceiver
+
+
Disabled By: Project lint.xml file
+
+BroadcastReceivers that declare an intent-filter for SMS_DELIVER or SMS_RECEIVED must ensure that the caller has the BROADCAST_SMS permission, otherwise it is possible for malicious actors to spoof intents. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "UnprotectedSMSBroadcastReceiver" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
UnsafeDynamicallyLoadedCode
+
+
Disabled By: Project lint.xml file
+
+Dynamically loading code from locations other than the application's library directory or the Android platform's built-in library directories is dangerous, as there is an increased risk that the code could have been tampered with. Applications should use loadLibrary when possible, which provides increased assurance that libraries are loaded from one of these safer locations. Application developers should use the features of their development environment to place application native libraries into the lib directory of their compiled APKs. To suppress this error, use the issue id "UnsafeDynamicallyLoadedCode" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
UnsafeNativeCodeLocation
+
+
Disabled By: Project lint.xml file
+
+In general, application native code should only be placed in the application's library directory, not in other locations such as the res or assets directories. Placing the code in the library directory provides increased assurance that the code will not be tampered with after application installation. Application developers should use the features of their development environment to place application native libraries into the lib directory of their compiled APKs. Embedding non-shared library native executables into applications should be avoided when possible. To suppress this error, use the issue id "UnsafeNativeCodeLocation" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
UnsafeProtectedBroadcastReceiver
+
+
Disabled By: Project lint.xml file
+
+BroadcastReceivers that declare an intent-filter for a protected-broadcast action string must check that the received intent's action string matches the expected value, otherwise it is possible for malicious actors to spoof intents. To suppress this error, use the issue id "UnsafeProtectedBroadcastReceiver" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
UnsupportedChromeOsCameraSystemFeature
+
+
Disabled By: Default
+
+You should look for the FEATURE_CAMERA_ANY features to include all
+possible cameras that may be on the device. Looking for FEATURE_CAMERA
+only looks for a rear facing camera, which certain tablets or Chrome OS
+devices don't have. To fix the issue, look for FEATURE_CAMERA_ANY instead. To suppress this error, use the issue id "UnsupportedChromeOsCameraSystemFeature" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
UnsupportedChromeOsHardware
+
+
Disabled By: Default
+
+The <uses-feature> element should not require this unsupported Chrome OS hardware feature. Any uses-feature not explicitly marked with required="false" is necessary on the device to be installed on. Ensure that any features that might prevent it from being installed on a Chrome OS device are reviewed and marked as not required in the manifest.
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "UnsupportedChromeOsHardware" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
UnsupportedTvHardware
+
+
Disabled By: Project lint.xml file
+
+The <uses-feature> element should not require this unsupported TV hardware feature. Any uses-feature not explicitly marked with required="false" is necessary on the device to be installed on. Ensure that any features that might prevent it from being installed on a TV device are reviewed and marked as not required in the manifest.
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "UnsupportedTvHardware" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
Untranslatable
+
+
Disabled By: Project lint.xml file
+
+Strings can be marked with translatable=false to indicate that they are not intended to be translated, but are present in the resource file for other purposes (for example for non-display strings that should vary by some other configuration qualifier such as screen size or API level).
+
+There are cases where translators accidentally translate these strings anyway, and lint will flag these occurrences with this lint check. To suppress this error, use the issue id "Untranslatable" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
UnusedAttribute
+
+
Disabled By: Project lint.xml file
+
+This check finds attributes set in XML files that were introduced in a version newer than the oldest version targeted by your application (with the minSdkVersion attribute).
+
+This is not an error; the application will simply ignore the attribute. However, if the attribute is important to the appearance or functionality of your application, you should consider finding an alternative way to achieve the same result with only available attributes, and then you can optionally create a copy of the layout in a layout-vNN folder which will be used on API NN or higher where you can take advantage of the newer attribute.
+
+Note: This check does not only apply to attributes. For example, some tags can be unused too, such as the new <tag> element in layouts introduced in API 21. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "UnusedAttribute" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
UnusedIds
+
+
Disabled By: Default
+
+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.
+
+The unused resource check can ignore tests. If you want to include resources that are only referenced from tests, consider packaging them in a test source set instead.
+
+You can include test sources in the unused resource check by setting the system property lint.unused-resources.include-tests=true, and to exclude them (usually for performance reasons), use lint.unused-resources.exclude-tests=true. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "UnusedIds" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
UnusedNamespace
+
+
Disabled By: Project lint.xml file
+
+Unused namespace declarations take up space and require processing that is not necessary To suppress this error, use the issue id "UnusedNamespace" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
UnusedNavigation
+
+
Disabled By: Project lint.xml file
+
+Navigation resource files must be referenced from a NavHostFragment in a layout in order to be relevant.
+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.
+Unused resources make applications larger and slow down builds.
+
+The unused resource check can ignore tests. If you want to include resources that are only referenced from tests, consider packaging them in a test source set instead.
+
+You can include test sources in the unused resource check by setting the system property lint.unused-resources.include-tests=true, and to exclude them (usually for performance reasons), use lint.unused-resources.exclude-tests=true. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "UnusedResources" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
UsableSpace
+
+
Disabled By: Project lint.xml file
+
+When you need to allocate disk space for large files, consider using the new allocateBytes(FileDescriptor, long) API, which will automatically clear cached files belonging to other apps (as needed) to meet your request.
+
+When deciding if the device has enough disk space to hold your new data, call getAllocatableBytes(UUID) instead of using getUsableSpace(), since the former will consider any cached data that the system is willing to clear on your behalf.
+
+Note that these methods require API level 26. If your app is running on older devices, you will probably need to use both APIs, conditionally switching on Build.VERSION.SDK_INT. Lint only looks in the same compilation unit to see if you are already using both APIs, so if it warns even though you are already using the new API, consider moving the calls to the same file or suppressing the warning. To suppress this error, use the issue id "UsableSpace" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
UseAlpha2
+
+
Disabled By: Project lint.xml file
+
+For compatibility with earlier devices, you should only use 3-letter language and region codes when there is no corresponding 2 letter code.
+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. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "UseCheckPermission" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
UseCompoundDrawables
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "UseCompoundDrawables" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
UseOfBundledGooglePlayServices
+
+
Disabled By: Project lint.xml file
+
+Google Play services SDK's can be selectively included, which enables a smaller APK size. Consider declaring dependencies on individual Google Play services SDK's. If you are using Firebase API's (http://firebase.google.com/docs/android/setup), Android Studio's Tools → Firebase assistant window can automatically add just the dependencies needed for each feature.
To suppress this error, use the issue id "UseOfBundledGooglePlayServices" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
UseSparseArrays
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "UseSparseArrays" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
UseValueOf
+
+
Disabled By: Project lint.xml file
+
+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. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "UseValueOf" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
UselessLeaf
+
+
Disabled By: Project lint.xml file
+
+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. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "UselessLeaf" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
UselessParent
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "UselessParent" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
UsesMinSdkAttributes
+
+
Disabled By: Project lint.xml file
+
+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).
+The Gradle Wrapper is available both via HTTP and HTTPS. HTTPS is more secure since it protects against man-in-the-middle attacks etc. Older projects created in Android Studio used HTTP but we now default to HTTPS and recommend upgrading existing projects. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "UsingHttp" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ValidActionsXml
+
+
Disabled By: Default
+
+Ensures that an actions XML file is properly formed To suppress this error, use the issue id "ValidActionsXml" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ValidFragment
+
+
Disabled By: Project lint.xml file
+
+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().
+
+Note that this is no longer true when you are using androidx.fragment.app.Fragment; with the FragmentFactory you can supply any arguments you want (as of version androidx version 1.1).
+To use VectorDrawableCompat, you need to make two modifications to your project. First, set android.defaultConfig.vectorDrawables.useSupportLibrary = true in your build.gradle file, and second, use app:srcCompat instead of android:src to refer to vector drawables.
To suppress this error, use the issue id "VectorDrawableCompat" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
VectorPath
+
+
Disabled By: Project lint.xml file
+
+Using long vector paths is bad for performance. There are several ways to make the pathData shorter:
+* Using less precision
+* Removing some minor details
+* Using the Android Studio vector conversion tool
+* Rasterizing the image (converting to PNG) To suppress this error, use the issue id "VectorPath" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
VectorRaster
+
+
Disabled By: Project lint.xml file
+
+Vector icons require API 21 or API 24 depending on used features, but when minSdkVersion is less than 21 or 24 and Android Gradle plugin 1.4 or higher is used, a vector drawable placed in the drawable folder is automatically moved to drawable-anydpi-v21 or drawable-anydpi-v24 and bitmap images are generated for different screen resolutions for backwards compatibility.
+
+However, there are some limitations to this raster image generation, and this lint check flags elements and attributes that are not fully supported. You should manually check whether the generated output is acceptable for those older devices. To suppress this error, use the issue id "VectorRaster" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ViewConstructor
+
+
Disabled By: Project lint.xml file
+
+Some layout tools (such as the Android layout editor) need 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 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. To suppress this error, use the issue id "ViewConstructor" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
ViewHolder
+
+
Disabled By: Project lint.xml file
+
+When implementing a view Adapter, you should avoid unconditionally inflating a new layout; if an available item is passed in for reuse, you should try to use that one instead. This helps make for example ListView scrolling much smoother.
+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 view, the view provides a reference to the context that created it. Similarly, view holders typically contain a view, and cursors are sometimes also associated with views. To suppress this error, use the issue id "ViewTag" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
VisibleForTests
+
+
Disabled By: Project lint.xml file
+
+With the @VisibleForTesting annotation you can specify an otherwise= attribute which specifies the intended visibility if the method had not been made more widely visible for the tests.
+
+This check looks for accesses from production code (e.g. not tests) where the access would not have been allowed with the intended production visibility. To suppress this error, use the issue id "VisibleForTests" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
VulnerableCordovaVersion
+
+
Disabled By: Project lint.xml file
+
+The version of Cordova used in the app is vulnerable to security issues. Please update to the latest Apache Cordova version.
To suppress this error, use the issue id "VulnerableCordovaVersion" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
Wakelock
+
+
Disabled By: Project lint.xml file
+
+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/view/WindowManager.LayoutParams.html#FLAG_KEEP_SCREEN_ON. To suppress this error, use the issue id "Wakelock" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
WakelockTimeout
+
+
Disabled By: Project lint.xml file
+
+Wakelocks have two acquire methods: one with a timeout, and one without. You should generally always use the one with a timeout. A typical timeout is 10 minutes. If the task takes longer than it is critical that it happens (i.e. can't use JobScheduler) then maybe they should consider a foreground service instead (which is a stronger run guarantee and lets the user know something long/important is happening). Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "WakelockTimeout" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
WearStandaloneAppFlag
+
+
Disabled By: Project lint.xml file
+
+Wearable apps should specify whether they can work standalone, without a phone app. Add a valid meta-data entry for com.google.android.wearable.standalone to your application element and set the value to true or false.
+
Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "WearStandaloneAppFlag" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
WebViewApiAvailability
+
+
Disabled By: Project lint.xml file
+
+The androidx.webkit library is a static library you can add to your Android application allowing you to use new APIs on older platform versions, targeting more devices.
To suppress this error, use the issue id "WebViewApiAvailability" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
WebViewLayout
+
+
Disabled By: Project lint.xml file
+
+The WebView implementation has certain performance optimizations which will not work correctly if the parent view is using wrap_content rather than match_parent. This can lead to subtle UI bugs. To suppress this error, use the issue id "WebViewLayout" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
WebpUnsupported
+
+
Disabled By: Project lint.xml file
+
+The WebP format requires Android 4.0 (API 15). Certain features, such as lossless encoding and transparency, requires Android 4.2.1 (API 18; API 17 is 4.2.0.) Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "WebpUnsupported" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
WeekBasedYear
+
+
Disabled By: Default
+
+The DateTimeFormatter pattern YYYY returns the week based year, not the era-based year. This means that 12/29/2019 will format to 2019, but 12/30/2019 will format to 2020!
+
+If you expected this to format as 2019, you should use the pattern yyyy instead.
+On versions prior to Android N (24), initializing the WifiManager via Context#getSystemService can cause a memory leak if the context is not the application context. Change context.getSystemService(...) to context.getApplicationContext().getSystemService(...). Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "WifiManagerLeak" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
WifiManagerPotentialLeak
+
+
Disabled By: Project lint.xml file
+
+On versions prior to Android N (24), initializing the WifiManager via Context#getSystemService can cause a memory leak if the context is not the application context.
+
+In many cases, it's not obvious from the code where the Context is coming from (e.g. it might be a parameter to a method, or a field initialized from various method calls). It's possible that the context being passed in is the application context, but to be on the safe side, you should consider changing context.getSystemService(...) to context.getApplicationContext().getSystemService(...). Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "WifiManagerPotentialLeak" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
WorldReadableFiles
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "WorldReadableFiles" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
WorldWriteableFiles
+
+
Disabled By: Project lint.xml file
+
+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. To suppress this error, use the issue id "WorldWriteableFiles" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
WrongCall
+
+
Disabled By: Project lint.xml file
+
+Custom views typically need to call measure() on their children, not onMeasure. Ditto for onDraw, onLayout, etc. Note: This issue has an associated quickfix operation in Android Studio and IntelliJ IDEA.
+To suppress this error, use the issue id "WrongCall" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
WrongConstant
+
+
Disabled By: Project lint.xml file
+
+Ensures that when parameter in a method only allows a specific set of constants, calls obey those rules. To suppress this error, use the issue id "WrongConstant" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
WrongRegion
+
+
Disabled By: Project lint.xml file
+
+Android uses the letter codes ISO 639-1 for languages, and the letter codes ISO 3166-1 for the region codes. In many cases, the language code and the country where the language is spoken is the same, but it is also often not the case. For example, while 'se' refers to Sweden, where Swedish is spoken, the language code for Swedish is notse (which refers to the Northern Sami language), the language code is sv. And similarly the region code for sv is El Salvador.
+
+This lint check looks for suspicious language and region combinations, to help catch cases where you've accidentally used the wrong language or region code. Lint knows about the most common regions where a language is spoken, and if a folder combination is not one of these, it is flagged as suspicious.
+
+Note however that it may not be an error: you can theoretically have speakers of any language in any region and want to target that with your resources, so this check is aimed at tracking down likely mistakes, not to enforce a specific set of region and language combinations. To suppress this error, use the issue id "WrongRegion" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
WrongThread
+
+
Disabled By: Project lint.xml file
+
+Ensures that a method which expects to be called on a specific thread, is actually called from that thread. For example, calls on methods in widgets should always be made on the UI thread.
+Searches for interprocedural call paths that violate thread annotations in the program. Tracks the flow of instantiated types and lambda expressions to increase accuracy across method boundaries.
To suppress this error, use the issue id "WrongThreadInterprocedural" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
WrongViewCast
+
+
Disabled By: Project lint.xml file
+
+Keeps track of the view types associated with ids and if it finds a usage of the id in the Java code it ensures that it is treated as the same type. To suppress this error, use the issue id "WrongViewCast" as explained in the Suppressing Warnings and Errors section.
+
+
+
+
+
XmlEscapeNeeded
+
+
Disabled By: Project lint.xml file
+
+When a string contains characters that have special usage in XML, you must escape the characters. To suppress this error, use the issue id "XmlEscapeNeeded" 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 //noinspection comment in the source code
+4. With ignore flags specified in the build.gradle file, as explained below
+5. With a lint.xml configuration file in the project
+6. With a lint.xml configuration file passed to lint via the --config flag
+7. 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 with a comment, add a //noinspection id comment on the line before the statement with the error.
+
+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 a lint warning in a build.gradle file, add a section like this:
+
+
+
+Here we specify a comma separated list of issue id's after the disable command. You can also use warning or error instead of disable to change the severity of issues.
+
+To suppress lint warnings with a configuration XML file, create a file named lint.xml and place it at the root directory of the module in which it applies.
+
+The format of the lint.xml file is something like the following:
+
+
+<?xml version="1.0" encoding="UTF-8"?>
+<lint>
+ <!-- Ignore everything in the test source set -->
+ <issue id="all">
+ <ignore path="\*/test/\*" />
+ </issue>
+
+ <!-- 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" />
+ <ignore regexp="(foo|bar)\.java" />
+ </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
+
+For more information, see http://g.co/androidstudio/suppressing-lint-warnings
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Notes-master/app/build/reports/lint-results-release-fatal.xml b/src/Notes-master/app/build/reports/lint-results-release-fatal.xml
new file mode 100644
index 0000000..52ff024
--- /dev/null
+++ b/src/Notes-master/app/build/reports/lint-results-release-fatal.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
diff --git a/src/Notes-master/app/build/tmp/compileDebugAndroidTestJavaWithJavac/source-classes-mapping.txt b/src/Notes-master/app/build/tmp/compileDebugAndroidTestJavaWithJavac/source-classes-mapping.txt
new file mode 100644
index 0000000..44ac566
--- /dev/null
+++ b/src/Notes-master/app/build/tmp/compileDebugAndroidTestJavaWithJavac/source-classes-mapping.txt
@@ -0,0 +1,2 @@
+net/micode/notes/test/BuildConfig.java
+ net.micode.notes.test.BuildConfig
diff --git a/src/Notes-master/app/build/tmp/compileDebugJavaWithJavac/source-classes-mapping.txt b/src/Notes-master/app/build/tmp/compileDebugJavaWithJavac/source-classes-mapping.txt
new file mode 100644
index 0000000..903013b
--- /dev/null
+++ b/src/Notes-master/app/build/tmp/compileDebugJavaWithJavac/source-classes-mapping.txt
@@ -0,0 +1,138 @@
+net/micode/notes/gtask/remote/GTaskManager.java
+ net.micode.notes.gtask.remote.GTaskManager
+net/micode/notes/gtask/remote/GTaskClient.java
+ net.micode.notes.gtask.remote.GTaskClient
+net/micode/notes/gtask/data/Task.java
+ net.micode.notes.gtask.data.Task
+net/micode/notes/model/WorkingNote.java
+ net.micode.notes.model.WorkingNote
+ net.micode.notes.model.WorkingNote$NoteSettingChangedListener
+net/micode/notes/tool/GTaskStringUtils.java
+ net.micode.notes.tool.GTaskStringUtils
+net/micode/notes/tool/BackupUtils.java
+ net.micode.notes.tool.BackupUtils
+ net.micode.notes.tool.BackupUtils$TextExport
+net/micode/notes/gtask/data/MetaData.java
+ net.micode.notes.gtask.data.MetaData
+net/micode/notes/gtask/remote/GTaskASyncTask.java
+ net.micode.notes.gtask.remote.GTaskASyncTask
+ net.micode.notes.gtask.remote.GTaskASyncTask$1
+ net.micode.notes.gtask.remote.GTaskASyncTask$OnCompleteListener
+net/micode/notes/ui/DateTimePicker.java
+ net.micode.notes.ui.DateTimePicker
+ net.micode.notes.ui.DateTimePicker$1
+ net.micode.notes.ui.DateTimePicker$2
+ net.micode.notes.ui.DateTimePicker$3
+ net.micode.notes.ui.DateTimePicker$4
+ net.micode.notes.ui.DateTimePicker$OnDateTimeChangedListener
+net/micode/notes/ui/DateTimePickerDialog.java
+ net.micode.notes.ui.DateTimePickerDialog
+ net.micode.notes.ui.DateTimePickerDialog$1
+ net.micode.notes.ui.DateTimePickerDialog$OnDateTimeSetListener
+net/micode/notes/data/Notes.java
+ net.micode.notes.data.Notes
+ net.micode.notes.data.Notes$CallNote
+ net.micode.notes.data.Notes$DataColumns
+ net.micode.notes.data.Notes$DataConstants
+ net.micode.notes.data.Notes$NoteColumns
+ net.micode.notes.data.Notes$TextNote
+net/micode/notes/gtask/data/TaskList.java
+ net.micode.notes.gtask.data.TaskList
+net/micode/notes/model/Note.java
+ net.micode.notes.model.Note
+ net.micode.notes.model.Note$NoteData
+net/micode/notes/ui/AlarmReceiver.java
+ net.micode.notes.ui.AlarmReceiver
+net/micode/notes/tool/ResourceParser.java
+ net.micode.notes.tool.ResourceParser
+ net.micode.notes.tool.ResourceParser$NoteBgResources
+ net.micode.notes.tool.ResourceParser$NoteItemBgResources
+ net.micode.notes.tool.ResourceParser$TextAppearanceResources
+ net.micode.notes.tool.ResourceParser$WidgetBgResources
+net/micode/notes/widget/NoteWidgetProvider_4x.java
+ net.micode.notes.widget.NoteWidgetProvider_4x
+net/micode/notes/ui/NotesPreferenceActivity.java
+ net.micode.notes.ui.NotesPreferenceActivity
+ net.micode.notes.ui.NotesPreferenceActivity$1
+ net.micode.notes.ui.NotesPreferenceActivity$2
+ net.micode.notes.ui.NotesPreferenceActivity$3
+ net.micode.notes.ui.NotesPreferenceActivity$4
+ net.micode.notes.ui.NotesPreferenceActivity$5
+ net.micode.notes.ui.NotesPreferenceActivity$6
+ net.micode.notes.ui.NotesPreferenceActivity$7
+ net.micode.notes.ui.NotesPreferenceActivity$8
+ net.micode.notes.ui.NotesPreferenceActivity$GTaskReceiver
+net/micode/notes/gtask/exception/NetworkFailureException.java
+ net.micode.notes.gtask.exception.NetworkFailureException
+net/micode/notes/ui/AlarmInitReceiver.java
+ net.micode.notes.ui.AlarmInitReceiver
+net/micode/notes/ui/FoldersListAdapter.java
+ net.micode.notes.ui.FoldersListAdapter
+ net.micode.notes.ui.FoldersListAdapter$FolderListItem
+net/micode/notes/data/NotesDatabaseHelper.java
+ net.micode.notes.data.NotesDatabaseHelper
+ net.micode.notes.data.NotesDatabaseHelper$TABLE
+net/micode/notes/ui/NotesListItem.java
+ net.micode.notes.ui.NotesListItem
+net/micode/notes/ui/NoteEditText.java
+ net.micode.notes.ui.NoteEditText
+ net.micode.notes.ui.NoteEditText$1
+ net.micode.notes.ui.NoteEditText$OnTextViewChangeListener
+net/micode/notes/gtask/data/SqlNote.java
+ net.micode.notes.gtask.data.SqlNote
+net/micode/notes/tool/DataUtils.java
+ net.micode.notes.tool.DataUtils
+net/micode/notes/widget/NoteWidgetProvider_2x.java
+ net.micode.notes.widget.NoteWidgetProvider_2x
+net/micode/notes/BuildConfig.java
+ net.micode.notes.BuildConfig
+net/micode/notes/gtask/remote/GTaskSyncService.java
+ net.micode.notes.gtask.remote.GTaskSyncService
+ net.micode.notes.gtask.remote.GTaskSyncService$1
+net/micode/notes/ui/DropdownMenu.java
+ net.micode.notes.ui.DropdownMenu
+ net.micode.notes.ui.DropdownMenu$1
+net/micode/notes/ui/NotesListAdapter.java
+ net.micode.notes.ui.NotesListAdapter
+ net.micode.notes.ui.NotesListAdapter$AppWidgetAttribute
+net/micode/notes/gtask/data/Node.java
+ net.micode.notes.gtask.data.Node
+net/micode/notes/gtask/data/SqlData.java
+ net.micode.notes.gtask.data.SqlData
+net/micode/notes/gtask/exception/ActionFailureException.java
+ net.micode.notes.gtask.exception.ActionFailureException
+net/micode/notes/data/NotesProvider.java
+ net.micode.notes.data.NotesProvider
+net/micode/notes/data/Contact.java
+ net.micode.notes.data.Contact
+net/micode/notes/ui/AlarmAlertActivity.java
+ net.micode.notes.ui.AlarmAlertActivity
+net/micode/notes/ui/NoteItemData.java
+ net.micode.notes.ui.NoteItemData
+net/micode/notes/widget/NoteWidgetProvider.java
+ net.micode.notes.widget.NoteWidgetProvider
+net/micode/notes/ui/NoteEditActivity.java
+ net.micode.notes.ui.NoteEditActivity
+ net.micode.notes.ui.NoteEditActivity$1
+ net.micode.notes.ui.NoteEditActivity$2
+ net.micode.notes.ui.NoteEditActivity$3
+ net.micode.notes.ui.NoteEditActivity$4
+ net.micode.notes.ui.NoteEditActivity$HeadViewHolder
+net/micode/notes/ui/NotesListActivity.java
+ net.micode.notes.ui.NotesListActivity
+ net.micode.notes.ui.NotesListActivity$1
+ net.micode.notes.ui.NotesListActivity$2
+ net.micode.notes.ui.NotesListActivity$3
+ net.micode.notes.ui.NotesListActivity$4
+ net.micode.notes.ui.NotesListActivity$5
+ net.micode.notes.ui.NotesListActivity$6
+ net.micode.notes.ui.NotesListActivity$7
+ net.micode.notes.ui.NotesListActivity$8
+ net.micode.notes.ui.NotesListActivity$9
+ net.micode.notes.ui.NotesListActivity$BackgroundQueryHandler
+ net.micode.notes.ui.NotesListActivity$ListEditState
+ net.micode.notes.ui.NotesListActivity$ModeCallback
+ net.micode.notes.ui.NotesListActivity$ModeCallback$1
+ net.micode.notes.ui.NotesListActivity$ModeCallback$2
+ net.micode.notes.ui.NotesListActivity$NewNoteOnTouchListener
+ net.micode.notes.ui.NotesListActivity$OnListItemClickListener
diff --git a/src/Notes-master/app/src/main/AndroidManifest.xml b/src/Notes-master/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..f6103e2
--- /dev/null
+++ b/src/Notes-master/app/src/main/AndroidManifest.xml
@@ -0,0 +1,160 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Notes-master/src/net/micode/notes/data/Contact.java b/src/Notes-master/app/src/main/java/net/micode/notes/data/Contact.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/data/Contact.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/data/Contact.java
diff --git a/src/Notes-master/src/net/micode/notes/data/Notes.java b/src/Notes-master/app/src/main/java/net/micode/notes/data/Notes.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/data/Notes.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/data/Notes.java
diff --git a/src/Notes-master/src/net/micode/notes/data/NotesDatabaseHelper.java b/src/Notes-master/app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/data/NotesDatabaseHelper.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java
diff --git a/src/Notes-master/src/net/micode/notes/data/NotesProvider.java b/src/Notes-master/app/src/main/java/net/micode/notes/data/NotesProvider.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/data/NotesProvider.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/data/NotesProvider.java
diff --git a/src/Notes-master/src/net/micode/notes/gtask/data/MetaData.java b/src/Notes-master/app/src/main/java/net/micode/notes/gtask/data/MetaData.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/gtask/data/MetaData.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/gtask/data/MetaData.java
diff --git a/src/Notes-master/src/net/micode/notes/gtask/data/Node.java b/src/Notes-master/app/src/main/java/net/micode/notes/gtask/data/Node.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/gtask/data/Node.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/gtask/data/Node.java
diff --git a/src/Notes-master/src/net/micode/notes/gtask/data/SqlData.java b/src/Notes-master/app/src/main/java/net/micode/notes/gtask/data/SqlData.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/gtask/data/SqlData.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/gtask/data/SqlData.java
diff --git a/src/Notes-master/src/net/micode/notes/gtask/data/SqlNote.java b/src/Notes-master/app/src/main/java/net/micode/notes/gtask/data/SqlNote.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/gtask/data/SqlNote.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/gtask/data/SqlNote.java
diff --git a/src/Notes-master/src/net/micode/notes/gtask/data/Task.java b/src/Notes-master/app/src/main/java/net/micode/notes/gtask/data/Task.java
similarity index 93%
rename from src/Notes-master/src/net/micode/notes/gtask/data/Task.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/gtask/data/Task.java
index 6a19454..1c42e99 100644
--- a/src/Notes-master/src/net/micode/notes/gtask/data/Task.java
+++ b/src/Notes-master/app/src/main/java/net/micode/notes/gtask/data/Task.java
@@ -180,27 +180,27 @@ public class Task extends Node {
|| !js.has(GTaskStringUtils.META_HEAD_DATA)) {
Log.w(TAG, "setContentByLocalJSON: nothing is avaiable");
}
+ else {
+ try {
+ JSONObject note = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE);
+ JSONArray dataArray = js.getJSONArray(GTaskStringUtils.META_HEAD_DATA);
- try {
- JSONObject note = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE);
- JSONArray dataArray = js.getJSONArray(GTaskStringUtils.META_HEAD_DATA);
-
- if (note.getInt(NoteColumns.TYPE) != Notes.TYPE_NOTE) {
- Log.e(TAG, "invalid type");
- return;
- }
+ if (note.getInt(NoteColumns.TYPE) != Notes.TYPE_NOTE) {
+ Log.e(TAG, "invalid type");
+ return;
+ }
- for (int i = 0; i < dataArray.length(); i++) {
- JSONObject data = dataArray.getJSONObject(i);
- if (TextUtils.equals(data.getString(DataColumns.MIME_TYPE), DataConstants.NOTE)) {
- setName(data.getString(DataColumns.CONTENT));
- break;
+ for (int i = 0; i < dataArray.length(); i++) {
+ JSONObject data = dataArray.getJSONObject(i);
+ if (TextUtils.equals(data.getString(DataColumns.MIME_TYPE), DataConstants.NOTE)) {
+ setName(data.getString(DataColumns.CONTENT));
+ break;
+ }
}
+ } catch (JSONException e) {
+ Log.e(TAG, e.toString());
+ e.printStackTrace();
}
-
- } catch (JSONException e) {
- Log.e(TAG, e.toString());
- e.printStackTrace();
}
}
diff --git a/src/Notes-master/src/net/micode/notes/gtask/data/TaskList.java b/src/Notes-master/app/src/main/java/net/micode/notes/gtask/data/TaskList.java
similarity index 98%
rename from src/Notes-master/src/net/micode/notes/gtask/data/TaskList.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/gtask/data/TaskList.java
index 4ea21c5..6444a4e 100644
--- a/src/Notes-master/src/net/micode/notes/gtask/data/TaskList.java
+++ b/src/Notes-master/app/src/main/java/net/micode/notes/gtask/data/TaskList.java
@@ -135,7 +135,10 @@ public class TaskList extends Node {
}
try {
- JSONObject folder = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE);
+ JSONObject folder = new JSONObject();
+ if (js != null) {
+ folder = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE);
+ }
if (folder.getInt(NoteColumns.TYPE) == Notes.TYPE_FOLDER) {
String name = folder.getString(NoteColumns.SNIPPET);
diff --git a/src/Notes-master/src/net/micode/notes/gtask/exception/ActionFailureException.java b/src/Notes-master/app/src/main/java/net/micode/notes/gtask/exception/ActionFailureException.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/gtask/exception/ActionFailureException.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/gtask/exception/ActionFailureException.java
diff --git a/src/Notes-master/src/net/micode/notes/gtask/exception/NetworkFailureException.java b/src/Notes-master/app/src/main/java/net/micode/notes/gtask/exception/NetworkFailureException.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/gtask/exception/NetworkFailureException.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/gtask/exception/NetworkFailureException.java
diff --git a/src/Notes-master/src/net/micode/notes/gtask/remote/GTaskASyncTask.java b/src/Notes-master/app/src/main/java/net/micode/notes/gtask/remote/GTaskASyncTask.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/gtask/remote/GTaskASyncTask.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/gtask/remote/GTaskASyncTask.java
diff --git a/src/Notes-master/src/net/micode/notes/gtask/remote/GTaskClient.java b/src/Notes-master/app/src/main/java/net/micode/notes/gtask/remote/GTaskClient.java
similarity index 99%
rename from src/Notes-master/src/net/micode/notes/gtask/remote/GTaskClient.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/gtask/remote/GTaskClient.java
index c67dfdf..c2ac22f 100644
--- a/src/Notes-master/src/net/micode/notes/gtask/remote/GTaskClient.java
+++ b/src/Notes-master/app/src/main/java/net/micode/notes/gtask/remote/GTaskClient.java
@@ -112,7 +112,7 @@ public class GTaskClient {
public boolean login(Activity activity) {
// we suppose that the cookie would expire after 5 minutes
// then we need to re-login
- final long interval = 1000 * 60 * 5;
+ final long interval = (long) 1000 * 60 * 5;
if (mLastLoginTime + interval < System.currentTimeMillis()) {
mLoggedin = false;
}
diff --git a/src/Notes-master/src/net/micode/notes/gtask/remote/GTaskManager.java b/src/Notes-master/app/src/main/java/net/micode/notes/gtask/remote/GTaskManager.java
similarity index 94%
rename from src/Notes-master/src/net/micode/notes/gtask/remote/GTaskManager.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/gtask/remote/GTaskManager.java
index d2b4082..613f659 100644
--- a/src/Notes-master/src/net/micode/notes/gtask/remote/GTaskManager.java
+++ b/src/Notes-master/app/src/main/java/net/micode/notes/gtask/remote/GTaskManager.java
@@ -482,43 +482,45 @@ public class GTaskManager {
}
MetaData meta;
- switch (syncType) {
- case Node.SYNC_ACTION_ADD_LOCAL:
- addLocalNode(node);
- break;
- case Node.SYNC_ACTION_ADD_REMOTE:
- addRemoteNode(node, c);
- break;
- case Node.SYNC_ACTION_DEL_LOCAL:
- meta = mMetaHashMap.get(c.getString(SqlNote.GTASK_ID_COLUMN));
- if (meta != null) {
- GTaskClient.getInstance().deleteNode(meta);
- }
- mLocalDeleteIdMap.add(c.getLong(SqlNote.ID_COLUMN));
- break;
- case Node.SYNC_ACTION_DEL_REMOTE:
- meta = mMetaHashMap.get(node.getGid());
- if (meta != null) {
- GTaskClient.getInstance().deleteNode(meta);
- }
- GTaskClient.getInstance().deleteNode(node);
- break;
- case Node.SYNC_ACTION_UPDATE_LOCAL:
- updateLocalNode(node, c);
- break;
- case Node.SYNC_ACTION_UPDATE_REMOTE:
- updateRemoteNode(node, c);
- break;
- case Node.SYNC_ACTION_UPDATE_CONFLICT:
- // merging both modifications maybe a good idea
- // right now just use local update simply
- updateRemoteNode(node, c);
- break;
- case Node.SYNC_ACTION_NONE:
- break;
- case Node.SYNC_ACTION_ERROR:
- default:
- throw new ActionFailureException("unkown sync action type");
+ if (c != null) {
+ switch (syncType) {
+ case Node.SYNC_ACTION_ADD_LOCAL:
+ addLocalNode(node);
+ break;
+ case Node.SYNC_ACTION_ADD_REMOTE:
+ addRemoteNode(node, c);
+ break;
+ case Node.SYNC_ACTION_DEL_LOCAL:
+ meta = mMetaHashMap.get(c.getString(SqlNote.GTASK_ID_COLUMN));
+ if (meta != null) {
+ GTaskClient.getInstance().deleteNode(meta);
+ }
+ mLocalDeleteIdMap.add(c.getLong(SqlNote.ID_COLUMN));
+ break;
+ case Node.SYNC_ACTION_DEL_REMOTE:
+ meta = mMetaHashMap.get(node.getGid());
+ if (meta != null) {
+ GTaskClient.getInstance().deleteNode(meta);
+ }
+ GTaskClient.getInstance().deleteNode(node);
+ break;
+ case Node.SYNC_ACTION_UPDATE_LOCAL:
+ updateLocalNode(node, c);
+ break;
+ case Node.SYNC_ACTION_UPDATE_REMOTE:
+ updateRemoteNode(node, c);
+ break;
+ case Node.SYNC_ACTION_UPDATE_CONFLICT:
+ // merging both modifications maybe a good idea
+ // right now just use local update simply
+ updateRemoteNode(node, c);
+ break;
+ case Node.SYNC_ACTION_NONE:
+ break;
+ case Node.SYNC_ACTION_ERROR:
+ default:
+ throw new ActionFailureException("unkown sync action type");
+ }
}
}
diff --git a/src/Notes-master/src/net/micode/notes/gtask/remote/GTaskSyncService.java b/src/Notes-master/app/src/main/java/net/micode/notes/gtask/remote/GTaskSyncService.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/gtask/remote/GTaskSyncService.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/gtask/remote/GTaskSyncService.java
diff --git a/src/Notes-master/src/net/micode/notes/model/Note.java b/src/Notes-master/app/src/main/java/net/micode/notes/model/Note.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/model/Note.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/model/Note.java
diff --git a/src/Notes-master/src/net/micode/notes/model/WorkingNote.java b/src/Notes-master/app/src/main/java/net/micode/notes/model/WorkingNote.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/model/WorkingNote.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/model/WorkingNote.java
diff --git a/src/Notes-master/src/net/micode/notes/tool/BackupUtils.java b/src/Notes-master/app/src/main/java/net/micode/notes/tool/BackupUtils.java
similarity index 95%
rename from src/Notes-master/src/net/micode/notes/tool/BackupUtils.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/tool/BackupUtils.java
index 39f6ec4..9ee6df3 100644
--- a/src/Notes-master/src/net/micode/notes/tool/BackupUtils.java
+++ b/src/Notes-master/app/src/main/java/net/micode/notes/tool/BackupUtils.java
@@ -294,9 +294,10 @@ public class BackupUtils {
}
mFileName = file.getName();
mFileDirectory = mContext.getString(R.string.file_path);
+ FileOutputStream fos = null;
PrintStream ps = null;
try {
- FileOutputStream fos = new FileOutputStream(file);
+ fos = new FileOutputStream(file);
ps = new PrintStream(fos);
} catch (FileNotFoundException e) {
e.printStackTrace();
@@ -304,6 +305,22 @@ public class BackupUtils {
} catch (NullPointerException e) {
e.printStackTrace();
return null;
+ } finally {
+ if (fos != null){
+ try {
+ fos.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ if (ps != null){
+ try {
+ ps.close();
+ } catch (NullPointerException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ }
}
return ps;
}
diff --git a/src/Notes-master/src/net/micode/notes/tool/DataUtils.java b/src/Notes-master/app/src/main/java/net/micode/notes/tool/DataUtils.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/tool/DataUtils.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/tool/DataUtils.java
diff --git a/src/Notes-master/src/net/micode/notes/tool/GTaskStringUtils.java b/src/Notes-master/app/src/main/java/net/micode/notes/tool/GTaskStringUtils.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/tool/GTaskStringUtils.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/tool/GTaskStringUtils.java
diff --git a/src/Notes-master/src/net/micode/notes/tool/ResourceParser.java b/src/Notes-master/app/src/main/java/net/micode/notes/tool/ResourceParser.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/tool/ResourceParser.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/tool/ResourceParser.java
diff --git a/src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java b/src/Notes-master/app/src/main/java/net/micode/notes/ui/AlarmAlertActivity.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/ui/AlarmAlertActivity.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/ui/AlarmAlertActivity.java
diff --git a/src/Notes-master/src/net/micode/notes/ui/AlarmInitReceiver.java b/src/Notes-master/app/src/main/java/net/micode/notes/ui/AlarmInitReceiver.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/ui/AlarmInitReceiver.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/ui/AlarmInitReceiver.java
diff --git a/src/Notes-master/src/net/micode/notes/ui/AlarmReceiver.java b/src/Notes-master/app/src/main/java/net/micode/notes/ui/AlarmReceiver.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/ui/AlarmReceiver.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/ui/AlarmReceiver.java
diff --git a/src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java b/src/Notes-master/app/src/main/java/net/micode/notes/ui/DateTimePicker.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/ui/DateTimePicker.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/ui/DateTimePicker.java
diff --git a/src/Notes-master/src/net/micode/notes/ui/DateTimePickerDialog.java b/src/Notes-master/app/src/main/java/net/micode/notes/ui/DateTimePickerDialog.java
similarity index 97%
rename from src/Notes-master/src/net/micode/notes/ui/DateTimePickerDialog.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/ui/DateTimePickerDialog.java
index 2c47ba4..77b9cfc 100644
--- a/src/Notes-master/src/net/micode/notes/ui/DateTimePickerDialog.java
+++ b/src/Notes-master/app/src/main/java/net/micode/notes/ui/DateTimePickerDialog.java
@@ -77,7 +77,7 @@ public class DateTimePickerDialog extends AlertDialog implements OnClickListener
DateUtils.FORMAT_SHOW_YEAR |
DateUtils.FORMAT_SHOW_DATE |
DateUtils.FORMAT_SHOW_TIME;
- flag |= mIs24HourView ? DateUtils.FORMAT_24HOUR : DateUtils.FORMAT_24HOUR;
+ flag |=DateUtils.FORMAT_24HOUR;
setTitle(DateUtils.formatDateTime(this.getContext(), date, flag));
}
diff --git a/src/Notes-master/src/net/micode/notes/ui/DropdownMenu.java b/src/Notes-master/app/src/main/java/net/micode/notes/ui/DropdownMenu.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/ui/DropdownMenu.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/ui/DropdownMenu.java
diff --git a/src/Notes-master/src/net/micode/notes/ui/FoldersListAdapter.java b/src/Notes-master/app/src/main/java/net/micode/notes/ui/FoldersListAdapter.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/ui/FoldersListAdapter.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/ui/FoldersListAdapter.java
diff --git a/src/Notes-master/src/net/micode/notes/ui/NoteEditActivity.java b/src/Notes-master/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java
similarity index 94%
rename from src/Notes-master/src/net/micode/notes/ui/NoteEditActivity.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java
index 96a9ff8..3d373ef 100644
--- a/src/Notes-master/src/net/micode/notes/ui/NoteEditActivity.java
+++ b/src/Notes-master/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java
@@ -30,9 +30,11 @@ import android.content.SharedPreferences;
import android.graphics.Paint;
import android.os.Bundle;
import android.preference.PreferenceManager;
+import android.text.Editable;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.TextUtils;
+import android.text.TextWatcher;
import android.text.format.DateUtils;
import android.text.style.BackgroundColorSpan;
import android.util.Log;
@@ -137,6 +139,8 @@ public class NoteEditActivity extends Activity implements OnClickListener,
private SharedPreferences mSharedPrefs;
private int mFontSizeId;
+ private TextView textView;//
+
private static final String PREFERENCE_FONT_SIZE = "pref_font_size";
private static final int SHORTCUT_ICON_TITLE_MAX_LEN = 10;
@@ -159,6 +163,57 @@ public class NoteEditActivity extends Activity implements OnClickListener,
return;
}
initResources();
+ count();
+ }
+
+ private String Textchange(String oriText){
+ StringBuffer stringBuffer = new StringBuffer(oriText);
+ int Flag1 = -1;
+ int Flag2 = -1;
+ do {//不计入表示图片的字符
+ Flag1 = stringBuffer.indexOf("");
+ if (Flag1 != -1 && Flag2 != -1) {
+ stringBuffer = stringBuffer.replace(Flag1, Flag2+1, "");
+ }
+ } while (Flag1 != -1 && Flag2 != -1);
+
+ do {//不计入换行字符
+ Flag1 = stringBuffer.indexOf("\n");
+
+ if (Flag1 != -1){
+ stringBuffer = stringBuffer.replace(Flag1, Flag1+1, "");
+ }
+ } while (Flag1 != -1);
+ do {//不计入空格字符
+ Flag1 = stringBuffer.indexOf(" ");
+
+ if (Flag1 != -1) {
+ stringBuffer = stringBuffer.replace(Flag1, Flag1+1, "");
+ }
+ } while (Flag1 != -1);
+ return stringBuffer.toString();
+ }
+
+ private void count() {
+ textView = (TextView) findViewById(R.id.text_num);
+ mNoteEditor.addTextChangedListener(new TextWatcher() {
+ int currentLength = 0;
+ @Override
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+ textView.setText("字符数:" + currentLength);
+ }
+
+ @Override
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+ currentLength = Textchange(mNoteEditor.getText().toString()).length();
+ }
+
+ @Override
+ public void afterTextChanged(Editable s) {
+ textView.setText("字符数:" + currentLength);
+ }
+ });
}
/**
diff --git a/src/Notes-master/src/net/micode/notes/ui/NoteEditText.java b/src/Notes-master/app/src/main/java/net/micode/notes/ui/NoteEditText.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/ui/NoteEditText.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/ui/NoteEditText.java
diff --git a/src/Notes-master/src/net/micode/notes/ui/NoteItemData.java b/src/Notes-master/app/src/main/java/net/micode/notes/ui/NoteItemData.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/ui/NoteItemData.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/ui/NoteItemData.java
diff --git a/src/Notes-master/src/net/micode/notes/ui/NotesListActivity.java b/src/Notes-master/app/src/main/java/net/micode/notes/ui/NotesListActivity.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/ui/NotesListActivity.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/ui/NotesListActivity.java
diff --git a/src/Notes-master/src/net/micode/notes/ui/NotesListAdapter.java b/src/Notes-master/app/src/main/java/net/micode/notes/ui/NotesListAdapter.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/ui/NotesListAdapter.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/ui/NotesListAdapter.java
diff --git a/src/Notes-master/src/net/micode/notes/ui/NotesListItem.java b/src/Notes-master/app/src/main/java/net/micode/notes/ui/NotesListItem.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/ui/NotesListItem.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/ui/NotesListItem.java
diff --git a/src/Notes-master/src/net/micode/notes/ui/NotesPreferenceActivity.java b/src/Notes-master/app/src/main/java/net/micode/notes/ui/NotesPreferenceActivity.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/ui/NotesPreferenceActivity.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/ui/NotesPreferenceActivity.java
diff --git a/src/Notes-master/src/net/micode/notes/widget/NoteWidgetProvider.java b/src/Notes-master/app/src/main/java/net/micode/notes/widget/NoteWidgetProvider.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/widget/NoteWidgetProvider.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/widget/NoteWidgetProvider.java
diff --git a/src/Notes-master/src/net/micode/notes/widget/NoteWidgetProvider_2x.java b/src/Notes-master/app/src/main/java/net/micode/notes/widget/NoteWidgetProvider_2x.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/widget/NoteWidgetProvider_2x.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/widget/NoteWidgetProvider_2x.java
diff --git a/src/Notes-master/src/net/micode/notes/widget/NoteWidgetProvider_4x.java b/src/Notes-master/app/src/main/java/net/micode/notes/widget/NoteWidgetProvider_4x.java
similarity index 100%
rename from src/Notes-master/src/net/micode/notes/widget/NoteWidgetProvider_4x.java
rename to src/Notes-master/app/src/main/java/net/micode/notes/widget/NoteWidgetProvider_4x.java
diff --git a/src/Notes-master/res/color/primary_text_dark.xml b/src/Notes-master/app/src/main/res/color/primary_text_dark.xml
similarity index 94%
rename from src/Notes-master/res/color/primary_text_dark.xml
rename to src/Notes-master/app/src/main/res/color/primary_text_dark.xml
index 7c85459..8ad98e3 100644
--- a/src/Notes-master/res/color/primary_text_dark.xml
+++ b/src/Notes-master/app/src/main/res/color/primary_text_dark.xml
@@ -1,4 +1,4 @@
-
+
+ visible
\ No newline at end of file
diff --git a/src/Notes-master/res/xml/preferences.xml b/src/Notes-master/app/src/main/res/xml/preferences.xml
similarity index 100%
rename from src/Notes-master/res/xml/preferences.xml
rename to src/Notes-master/app/src/main/res/xml/preferences.xml
diff --git a/src/Notes-master/res/xml/searchable.xml b/src/Notes-master/app/src/main/res/xml/searchable.xml
similarity index 100%
rename from src/Notes-master/res/xml/searchable.xml
rename to src/Notes-master/app/src/main/res/xml/searchable.xml
diff --git a/src/Notes-master/res/xml/widget_2x_info.xml b/src/Notes-master/app/src/main/res/xml/widget_2x_info.xml
similarity index 100%
rename from src/Notes-master/res/xml/widget_2x_info.xml
rename to src/Notes-master/app/src/main/res/xml/widget_2x_info.xml
diff --git a/src/Notes-master/res/xml/widget_4x_info.xml b/src/Notes-master/app/src/main/res/xml/widget_4x_info.xml
similarity index 100%
rename from src/Notes-master/res/xml/widget_4x_info.xml
rename to src/Notes-master/app/src/main/res/xml/widget_4x_info.xml
diff --git a/src/Notes-master/build.gradle b/src/Notes-master/build.gradle
new file mode 100644
index 0000000..86b76ce
--- /dev/null
+++ b/src/Notes-master/build.gradle
@@ -0,0 +1,45 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+buildscript {
+ repositories {
+ google()
+ jcenter()
+ }
+ dependencies {
+ classpath 'com.android.tools.build:gradle:4.1.0'
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ jcenter()
+ }
+}
+
+tasks.withType(JavaCompile) {
+ options.encoding = "UTF-8"
+}
+
+buildscript {
+ repositories {
+ maven {
+ url "https://plugins.gradle.org/m2/"
+ }
+ google()
+ //mavenCentral()
+ jcenter()
+
+ }
+ dependencies {
+ classpath 'com.android.tools.build:gradle:4.0.1'
+ classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.7"
+ }
+}
+apply plugin: "org.sonarqube"
+allprojects {
+ repositories {
+ google()
+ //mavenCentral()
+ jcenter()
+ }
+}
\ No newline at end of file
diff --git a/src/Notes-master/build/sonar/.sonar_lock b/src/Notes-master/build/sonar/.sonar_lock
new file mode 100644
index 0000000..e69de29
diff --git a/src/Notes-master/build/sonar/report-task.txt b/src/Notes-master/build/sonar/report-task.txt
new file mode 100644
index 0000000..b7b28d5
--- /dev/null
+++ b/src/Notes-master/build/sonar/report-task.txt
@@ -0,0 +1,6 @@
+projectKey=Notes-master-BugFix
+serverUrl=http://localhost:9000
+serverVersion=8.5.0.37579
+dashboardUrl=http://localhost:9000/dashboard?id=Notes-master-BugFix
+ceTaskId=AXVwFvpWVoWJ9Ppj2EZe
+ceTaskUrl=http://localhost:9000/api/ce/task?id=AXVwFvpWVoWJ9Ppj2EZe
diff --git a/src/Notes-master/gradle/wrapper/gradle-wrapper.jar b/src/Notes-master/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..f6b961f
Binary files /dev/null and b/src/Notes-master/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/src/Notes-master/gradle/wrapper/gradle-wrapper.properties b/src/Notes-master/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..ffa97f1
--- /dev/null
+++ b/src/Notes-master/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Sat Oct 24 10:20:14 CST 2020
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip
diff --git a/src/Notes-master/gradlew b/src/Notes-master/gradlew
new file mode 100644
index 0000000..cccdd3d
--- /dev/null
+++ b/src/Notes-master/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/src/Notes-master/gradlew.bat b/src/Notes-master/gradlew.bat
new file mode 100644
index 0000000..f955316
--- /dev/null
+++ b/src/Notes-master/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/src/Notes-master/httpcomponents-client-4.5.12/LICENSE.txt b/src/Notes-master/httpcomponents-client-4.5.12/LICENSE.txt
new file mode 100644
index 0000000..32f01ed
--- /dev/null
+++ b/src/Notes-master/httpcomponents-client-4.5.12/LICENSE.txt
@@ -0,0 +1,558 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+=========================================================================
+
+This project includes Public Suffix List copied from
+
+licensed under the terms of the Mozilla Public License, v. 2.0
+
+Full license text:
+
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+ means each individual or legal entity that creates, contributes to
+ the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+ means the combination of the Contributions of others (if any) used
+ by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+ means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+ means Source Code Form to which the initial Contributor has attached
+ the notice in Exhibit A, the Executable Form of such Source Code
+ Form, and Modifications of such Source Code Form, in each case
+ including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+ means
+
+ (a) that the initial Contributor has attached the notice described
+ in Exhibit B to the Covered Software; or
+
+ (b) that the Covered Software was made available under the terms of
+ version 1.1 or earlier of the License, but not also under the
+ terms of a Secondary License.
+
+1.6. "Executable Form"
+ means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+ means a work that combines Covered Software with other material, in
+ a separate file or files, that is not Covered Software.
+
+1.8. "License"
+ means this document.
+
+1.9. "Licensable"
+ means having the right to grant, to the maximum extent possible,
+ whether at the time of the initial grant or subsequently, any and
+ all of the rights conveyed by this License.
+
+1.10. "Modifications"
+ means any of the following:
+
+ (a) any file in Source Code Form that results from an addition to,
+ deletion from, or modification of the contents of Covered
+ Software; or
+
+ (b) any new file in Source Code Form that contains any Covered
+ Software.
+
+1.11. "Patent Claims" of a Contributor
+ means any patent claim(s), including without limitation, method,
+ process, and apparatus claims, in any patent Licensable by such
+ Contributor that would be infringed, but for the grant of the
+ License, by the making, using, selling, offering for sale, having
+ made, import, or transfer of either its Contributions or its
+ Contributor Version.
+
+1.12. "Secondary License"
+ means either the GNU General Public License, Version 2.0, the GNU
+ Lesser General Public License, Version 2.1, the GNU Affero General
+ Public License, Version 3.0, or any later versions of those
+ licenses.
+
+1.13. "Source Code Form"
+ means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+ means an individual or a legal entity exercising rights under this
+ License. For legal entities, "You" includes any entity that
+ controls, is controlled by, or is under common control with You. For
+ purposes of this definition, "control" means (a) the power, direct
+ or indirect, to cause the direction or management of such entity,
+ whether by contract or otherwise, or (b) ownership of more than
+ fifty percent (50%) of the outstanding shares or beneficial
+ ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+ Licensable by such Contributor to use, reproduce, make available,
+ modify, display, perform, distribute, and otherwise exploit its
+ Contributions, either on an unmodified basis, with Modifications, or
+ as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+ for sale, have made, import, and otherwise transfer either its
+ Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+ or
+
+(b) for infringements caused by: (i) Your and any other third party's
+ modifications of Covered Software, or (ii) the combination of its
+ Contributions with other software (except as part of its Contributor
+ Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+ its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+ Form, as described in Section 3.1, and You must inform recipients of
+ the Executable Form how they can obtain a copy of such Source Code
+ Form by reasonable means in a timely manner, at a charge no more
+ than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+ License, or sublicense it under different terms, provided that the
+ license for the Executable Form does not attempt to limit or alter
+ the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+* *
+* 6. Disclaimer of Warranty *
+* ------------------------- *
+* *
+* Covered Software is provided under this License on an "as is" *
+* basis, without warranty of any kind, either expressed, implied, or *
+* statutory, including, without limitation, warranties that the *
+* Covered Software is free of defects, merchantable, fit for a *
+* particular purpose or non-infringing. The entire risk as to the *
+* quality and performance of the Covered Software is with You. *
+* Should any Covered Software prove defective in any respect, You *
+* (not any Contributor) assume the cost of any necessary servicing, *
+* repair, or correction. This disclaimer of warranty constitutes an *
+* essential part of this License. No use of any Covered Software is *
+* authorized under this License except under this disclaimer. *
+* *
+************************************************************************
+
+************************************************************************
+* *
+* 7. Limitation of Liability *
+* -------------------------- *
+* *
+* Under no circumstances and under no legal theory, whether tort *
+* (including negligence), contract, or otherwise, shall any *
+* Contributor, or anyone who distributes Covered Software as *
+* permitted above, be liable to You for any direct, indirect, *
+* special, incidental, or consequential damages of any character *
+* including, without limitation, damages for lost profits, loss of *
+* goodwill, work stoppage, computer failure or malfunction, or any *
+* and all other commercial damages or losses, even if such party *
+* shall have been informed of the possibility of such damages. This *
+* limitation of liability shall not apply to liability for death or *
+* personal injury resulting from such party's negligence to the *
+* extent applicable law prohibits such limitation. Some *
+* jurisdictions do not allow the exclusion or limitation of *
+* incidental or consequential damages, so this exclusion and *
+* limitation may not apply to You. *
+* *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+ This Source Code Form is subject to the terms of the Mozilla Public
+ License, v. 2.0. If a copy of the MPL was not distributed with this
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+---------------------------------------------------------
+
+ This Source Code Form is "Incompatible With Secondary Licenses", as
+ defined by the Mozilla Public License, v. 2.0.
diff --git a/src/Notes-master/httpcomponents-client-4.5.12/NOTICE.txt b/src/Notes-master/httpcomponents-client-4.5.12/NOTICE.txt
new file mode 100644
index 0000000..ac26553
--- /dev/null
+++ b/src/Notes-master/httpcomponents-client-4.5.12/NOTICE.txt
@@ -0,0 +1,6 @@
+Apache HttpComponents Client
+Copyright 1999-2020 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
diff --git a/src/Notes-master/httpcomponents-client-4.5.12/README.txt b/src/Notes-master/httpcomponents-client-4.5.12/README.txt
new file mode 100644
index 0000000..eb7212a
--- /dev/null
+++ b/src/Notes-master/httpcomponents-client-4.5.12/README.txt
@@ -0,0 +1,77 @@
+Apache HttpComponents Client
+============================
+
+Welcome to the HttpClient component of the Apache HttpComponents project.
+
+Building Instructions
+---------------------
+
+For building from source instructions please refer to BUILDING.txt.
+
+Dependencies
+------------
+
+HttpClient main module requires Java 6 compatible runtime and
+depends on the following external libraries:
+
+* Apache HttpComponents HttpCore
+* Apache Commons Logging
+* Apache Commons Codec
+
+(for detailed information on external dependencies please see pom.xml)
+
+HttpMime module is optional and requires Java 6 compatible runtime
+and depends on the following external libraries:
+
+* Apache HttpComponents HttpCore
+* Apache Commons Logging
+
+(for detailed information on external dependencies please see pom.xml)
+
+Licensing
+---------
+
+Apache HttpComponents Client is licensed under the Apache License 2.0.
+See the files called LICENSE.txt and NOTICE.txt for more information.
+
+Cryptographic Software Notice
+-----------------------------
+
+This distribution may include software that has been designed for use
+with cryptographic software. The country in which you currently reside
+may have restrictions on the import, possession, use, and/or re-export
+to another country, of encryption software. BEFORE using any encryption
+software, please check your country's laws, regulations and policies
+concerning the import, possession, or use, and re-export of encryption
+software, to see if this is permitted. See
+for more information.
+
+The U.S. Government Department of Commerce, Bureau of Industry and
+Security (BIS), has classified this software as Export Commodity
+Control Number (ECCN) 5D002.C.1, which includes information security
+software using or performing cryptographic functions with asymmetric
+algorithms. The form and manner of this Apache Software Foundation
+distribution makes it eligible for export under the License Exception
+ENC Technology Software Unrestricted (TSU) exception (see the BIS
+Export Administration Regulations, Section 740.13) for both object
+code and source code.
+
+The following provides more details on the included software that
+may be subject to export controls on cryptographic software:
+
+ Apache HttpComponents Client interfaces with the
+ Java Secure Socket Extension (JSSE) API to provide
+
+ - HTTPS support
+
+ Apache HttpComponents Client does not include any
+ implementation of JSSE.
+
+Contact
+-------
+
+ o For general information visit the main project site at
+ http://hc.apache.org/
+
+ o For current status information visit the status page at
+ http://hc.apache.org/status.html
diff --git a/src/Notes-master/httpcomponents-client-4.5.12/RELEASE_NOTES.txt b/src/Notes-master/httpcomponents-client-4.5.12/RELEASE_NOTES.txt
new file mode 100644
index 0000000..93a8d15
--- /dev/null
+++ b/src/Notes-master/httpcomponents-client-4.5.12/RELEASE_NOTES.txt
@@ -0,0 +1,2551 @@
+Release 4.5.12
+-------------------
+
+This is a maintenance release that fixes a regression introduced by the previous release
+that caused rejection of ceritificates with non-standard domains.
+
+Changelog:
+-------------------
+
+* HTTPCLIENT-2053: Add SC_PERMANENT_REDIRECT (408) to DefaultRedirectStrategy
+ Contributed by Michael Osipov
+
+* HTTPCLIENT-2052: Fixed redirection of entity enclosing requests with non-repeatable entities
+ Contributed by Oleg Kalnichevski
+
+* HTTPCLIENT-2047: Fixed regression in DefaultHostnameVerifier causing rejection of certificates
+ with non-standard domains.
+ Contributed by Oleg Kalnichevski
+
+* Bug fix: Fixed handling of private domains by PublicSuffixMatcher
+ Contributed by Oleg Kalnichevski
+
+
+
+Release 4.5.11
+-------------------
+
+This is a maintenance release that fixes a number defects discovered since 4.5.10
+and upgrades HttpCore dependency to version 4.4.13.
+
+
+Changelog:
+-------------------
+
+* Improved domain name normalization by DefaultHostnameVerifier.
+ Contributed by Oleg Kalnichevski
+
+* HTTPCLIENT-2033: Connection managers to immediately shut down all leased connection upon shutdown.
+ Contributed by Oleg Kalnichevski
+
+* HTTPCLIENT-2020: DefaultBackoffStrategy to support TOO_MANY_REQUESTS (429).
+ Contributed by Michael Osipov
+
+* HTTPCLIENT-2030: Fixed PublicSuffixMatcher#getDomainRoot behavior with invalid hostnames.
+ Contributed by Niels Basjes
+
+* HTTPCLIENT-2029: URIBuilder to support parsing of non-UTF8 URIs.
+ Contributed by Oleg Kalnichevski
+
+* HTTPCLIENT-2026: Fixed URIBuilder#isOpaque() logic.
+ Contributed by Oleg Kalnichevski
+
+* Updated text in pool stats description
+ Contributed by chao chang
+
+* HTTPCLIENT-2023: Allow nested arrays and all primitive types in DefaultHttpCacheEntrySerializer.
+ Contributed by Olof Larsson
+
+* Fixed fallback PublicSuffixMatcher instance.
+ Contributed by Ryan Schmitt
+
+* Added family property #145.
+ Contributed by behrangsa
+
+
+Release 4.5.10
+-------------------
+
+This is a maintenance release that fixes a number defects discovered since 4.5.9
+and upgrades HttpCore dependency to version 4.4.12.
+
+
+Changelog:
+-------------------
+
+* Refactor DefaultRedirectStrategy for subclassing.
+ Contributed by Gary Gregory
+
+* Improved handling of request cancellation.
+ Contributed by Oleg Kalnichevski
+
+* Fixed concurrent use of threading unsafe HttpUriRequest messages.
+ Contributed by Oleg Kalnichevski
+
+* HTTPCLIENT-1997: Return the last domain segment instead of normalized domain name
+ from PublicSuffixMatcher#getDomainRoot in case there is no match.
+ Contributed by jeromedemangel
+
+* Preserve original encoding of the URI path component if the URI is valid.
+ Contributed by Oleg Kalnichevski
+
+
+Release 4.5.9
+-------------------
+
+This is a maintenance release that fixes a number defects discovered since 4.5.8.
+
+
+Changelog:
+-------------------
+
+* HTTPCLIENT-1991: incorrect handling of non-standard DNS entries by PublicSuffixMatcher
+ Contributed by Oleg Kalnichevski
+
+* Fix bug in URIBuilder#isPathEmpty method to verify if encodedPath is an empty string
+ Contributed by Varun Nandi
+
+* HTTPCLIENT-1984: Add normalize URI to RequestConfig copy constructor
+ Contributed by Matt Nelson
+
+* HTTPCLIENT-1976: Unsafe deserialization in DefaultHttpCacheEntrySerializer
+ Contributed by Artem Smotrakov
+
+
+
+Release 4.5.8
+-------------------
+
+This is a maintenance release that makes request URI normalization configurable on per request basis
+and also ports several improvements in URI handling from HttpCore master.
+
+
+Changelog:
+-------------------
+
+* HTTPCLIENT-1969: Filter out weak cipher suites.
+ Contributed by Artem Smotrakov
+
+* HTTPCLIENT-1968: Preserve escaped PATHSAFE characters when normalizing URI path segments.
+ Contributed by Oleg Kalnichevski
+
+* HTTPCLIENT-1968: URIBuilder to split path component into path segments when digesting a URI
+ (ported from HttpCore master).
+ Contributed by Oleg Kalnichevski
+
+* Improved cache key generation (ported from HttpCore master).
+ Contributed by Oleg Kalnichevski
+
+* HTTPCLIENT-1968: added utility methods to parse and format URI path segments (ported
+ from HttpCore master).
+ Contributed by Oleg Kalnichevski
+
+* HTTPCLIENT-1968: Make normalization of URI paths optional.
+ Contributed by Tamas Cservenak
+
+* Some well known proxies respond with Content-Length=0, when returning 304. For robustness, always use the
+ cached entity's content length, as modern browsers do.
+ Contributed by Author: Jayson Raymond
+
+
+
+Release 4.5.7
+-------------------
+
+This is a maintenance release that corrects Automatic-Module-Name definitions added in the previous
+release and fixes a number of minor defects discovered since 4.5.6.
+
+Please note that as of 4.4, HttpClient requires Java 1.6 or newer.
+
+Changelog:
+-------------------
+
+* Upgraded HttpCore to version 4.4.11
+ Contributed by Oleg Kalnichevski
+
+* HTTPCLIENT-1960: URIBuilder incorrect handling of multiple leading slashes in path component
+ Contributed by Oleg Kalnichevski
+
+* HTTPCLIENT-1958: PoolingHttpClientConnectionManager to throw ExecutionException in case of a lease operation
+ cancellation instead of InterruptedException.
+ Contributed by Oleg Kalnichevski
+
+* HTTPCLIENT-1952: Allow default User Agent to be disabled.
+ Contributed by Michael Osipov
+
+* HTTPCLIENT-1956: CONNECT overwrites the main request object in the HTTP context when requests are executed
+ via a proxy tunnel.
+ Contributed by Oleg Kalnichevski
+
+* HTTPCLIENT-1940: deprecated SSLSocketFactory made to rethrow SocketTimeoutException as
+ ConnectTimeoutException for consistency with non-deprecated code.
+ Contributed by Oleg Kalnichevski
+
+* Fixed regression in BasicCookieStore serialization.
+ Contributed by Author: Mark Mielke
+
+* HTTPCLIENT-1929: Corrected Automatic-Module-Name entries for HttpClient Fluent, HttpClient Windows
+ and HttpClient Cache.
+ Contributed by Oleg Kalnichevski
+
+* HTTPCLIENT-1927: URLEncodedUtils#parse breaks at double quotes when parsing unquoted values.
+ Contributed by Oleg Kalnichevski
+
+* HTTPCLIENT-1939: Update Apache Commons Codec from 1.10 to 1.11
+ Contributed by Gary Gregory
+
+
+Release 4.5.6
+-------------------
+
+This is a maintenance release that adds Automatic-Module-Name to the manifest for compatibility
+with Java 9 Platform Module System and fixes a number of issues discovered since 4.5.5
+
+Please note that as of 4.4, HttpClient requires Java 1.6 or newer.
+
+Changelog:
+-------------------
+
+* [HTTPCLIENT-1882=: reset authentication state on I/O or runtime error for connection based
+ authentication schemes (such as NTLM)
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1924]: HttpClient to shut down the connection manager if a fatal error occurs
+ in the course of a request execution.
+ Contributed by Oleg Kalnichevski
+
+* Add Automatic-Module-Name in manifest so Java9 modular applications can depend on this library
+ Contributed by Varun Nandi
+
+* [HTTPCLIENT-1923]: fixed incorrect connection close on shutdown + fixed corresponding test
+ Contributed by Aleksei Arsenev
+
+* [HTTPCLIENT-1906]: certificates containing alternative subject names other than DNS and IP
+ (such as RFC822) get rejected as invalid
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1904]: check cookie domain for null
+ Contributed by Hans-Peter Keck
+
+* [HTTPCLIENT-1900]: proxy protocol processor does not post-process CONNECT response messages
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1911]: Failing tests on Fedora 28 due to weak encryption algorithms in test
+ keystore.
+ Contributed by Gary Gregory and Michael Simacek
+
+
+Release 4.5.5
+-------------------
+
+HttpClient 4.5.5 (GA) is a maintenance release that fixes a regression introduced
+by the previous release causing a NPE in SystemDefaultCredentialsProvider.
+
+Please note that as of 4.4, HttpClient requires Java 1.6 or newer.
+
+Changelog:
+-------------------
+
+* [HTTPCLIENT-1690] Avoid merging Content-Encoding headers coming with 304 status to cache entry.
+ Contributed by Sudheera Palihakkara
+
+* [HTTPCLIENT-1888] Regression in SystemDefaultCredentialsProvider#getCredentials causing NPE.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1886] Update HttpClient 4.5.x from HttpCore 4.4.7 to 4.4.9
+ Contributed by Gary Gregory
+
+* [HTTPCLIENT-1889] org.apache.http.client.utils.URLEncodedUtils.parse()
+ should return a new ArrayList when there are no query parameters.
+ Contributed by Gary Gregory
+
+
+Release 4.5.4
+-------------------
+
+HttpClient 4.5.4 (GA) is a maintenance release that fixes a number of defects found since 4.5.3.
+
+Please note that as of 4.4, HttpClient requires Java 1.6 or newer.
+
+Changelog:
+-------------------
+
+* [HTTPCLIENT-1883] SystemDefaultCredentialsProvider to use https.proxy* system properties
+ for origins with port 443.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1881] Allow truncated NTLM packets to work with this client.
+ Contributed by Karl Wright
+
+* [HTTPCLIENT-1855] Disabled caching of DIGEST auth scheme instances due to unreliability of nonce counter
+ when the auth cache is shared by multiple sessions.
+ Contributed by Oleg Kalnichevski
+
+* BasicCookieStore uses a ReentrantReadWriteLock to avoid synchronization on #getCookies/#toString
+ while maintaining thread safety.
+ Contributed by Carter Kozak
+
+* [HTTPCLIENT-1865] DefaultServiceUnavailableRetryStrategy does not respect HttpEntity#isRepeatable.
+ Contributed by Tomas Celaya
+
+* [HTTPCLIENT-1859] Encode Content-Disposition name and filename elements appropriately.
+ Contributed by Karl Wright
+
+* Avoid fetching the cached entity twice on cache hit.
+ Contributed by Leandro Nunes
+
+* [HTTPCLIENT-1835] #evictExpiredConnections no longer causes the #evictIdleConnections behaviour
+ to be implicitly enabled.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1831= URIBuilder should not prepend a leading slash to relative URIs.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1833] Fix Windows Negotiate-NTLM handling of proxies.
+ Contributed by Roman Stoffel
+
+* [HTTPCLIENT-1817] Add a "Trust All" TrustStrategy implementation.
+ Contributed by Gary Gregory
+
+* [HTTPCLIENT-1816] Update Apache Commons Codec 1.9 to 1.10.
+ Contributed by Gary Gregory
+
+* [HTTPCLIENT-1836] DefaultHostnameVerifier#getSubjectAltNames(X509Certificate) throws java.lang.ClassCastException.
+ Contributed by Gary Gregory , Ilian Iliev
+
+* [HTTPCLIENT-1845]: Extract InputStreamFactory classes out of GzipDecompressingEntity and
+ DeflateDecompressingEntity for reuse and to create less garbage.
+ Contributed by Gary Gregory
+
+* [HTTPCLIENT-1847] Update Ehcache from 2.6.9 to 2.6.11.
+ Contributed by Gary Gregory
+
+* [HTTPCLIENT-1848] Update spymemcached from 2.11.4 to 2.12.3.
+ Contributed by Gary Gregory
+
+* [HTTPCLIENT-1849] Update JNA from 4.1.0 to 4.4.0.
+ Contributed by Gary Gregory
+
+* [HTTPCLIENT-1850] Update SLF4J from 1.7.6 to 1.7.25.
+ Contributed by Gary Gregory
+
+
+Release 4.5.3
+-------------------
+
+HttpClient 4.5.3 (GA) is a maintenance release that fixes a number of defects found since 4.5.2.
+
+Please note that as of 4.4, HttpClient requires Java 1.6 or newer.
+
+Changelog:
+-------------------
+
+* [HTTPCLIENT-1803] Improved handling of malformed paths by URIBuilder.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1802] Do not attempt to match SSL host to subject CN if subject alternative name of any type are given.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1788] RFC 6265 policy must not reject cookies with paths that are no prefix of the uri path.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1792] SSLConnectionSocketFactory to throw SSLPeerUnverifiedException with a better error message
+ when hostname verification fails.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1779] [OSGi] support NTLM proxy authentication.
+ Contributed by Julian Sedding
+
+* [HTTPCLIENT-1773] [OSGi] HttpProxyConfigurationActivator does not unregister HttpClientBuilderFactory.
+ Contributed by Julian Sedding
+
+* [HTTPCLIENT-1771] improve OSGi webconsole display for org.apache.http.proxyconfigurator.
+ Contributed by Julian Sedding
+
+* [HTTPCLIENT-1770] OSGi metatype for org.apache.http.proxyconfigurator missing factoryPid.
+ Contributed by Julian Sedding
+
+* [HTTPCLIENT-1767] Null pointer dereference in EofSensorInputStream and ResponseEntityProxy.
+ Contributed by Peter Ansell
+
+* Support changing system default ProxySelector.
+ Contributed by Robin Stevens
+
+* All services registered in the OSGi service registry provide the whole bundle header dictionary as vendor
+ property value.
+ Contributed by Christoph Fiehe
+
+* [HTTPCLIENT-1750] OSGi support for CachingHttpClientBuilder.
+ Contributed by Justin Edelson
+
+* [HTTPCLIENT-1749] OSGi client builder to use weak references to track HttpClient instances.
+ Contributed by Justin Edelson
+
+* [HTTPCLIENT-1747] apply RequestConfig defaults when using HttpParams values in backward compatibility mode.
+ Contributed by Oleg Kalnichevski
+
+* Override LaxRedirectStrategy's INSTANCE field.
+ Contributed by Eric Wu
+
+* [HTTPCLIENT-1736] do not request cred delegation by default when using Kerberos auth.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1744] normalize hostname and certificate CN when matching to CN.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1732] SystemDefaultCredentialsProvider to take http.proxyHost and http.proxyPort system
+ properties into account.
+ Contributed by Oleg Kalnichevski
+
+* Revert "HTTPCLIENT-1712: SPNego schemes to take service scheme into account when generating auth token".
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1727] AbstractHttpClient#createClientConnectionManager does not account for context class loader.
+ Contributed by Charles Allen
+
+* [HTTPCLIENT-1726:] Copy the SNI fix from SSLConnectionSocketFactory to the deprecated SSLSocketFactory class.
+ Contributed by David Black
+
+
+Release 4.5.2
+-------------------
+
+HttpClient 4.5.2 (GA) is a maintenance release that fixes a number of minor defects found since 4.5.1.
+
+Please note that as of 4.4, HttpClient requires Java 1.6 or newer.
+
+Changelog:
+-------------------
+
+* [HTTPCLIENT-1710, HTTPCLIENT-1718, HTTPCLEINT-1719] OSGi container compatibility improvements.
+ Contributed by 212427891
+
+* [HTTPCLIENT-1717] Make fluent API Content#Content(byte[], ContentType) public.
+ Contributed by Cash Costello
+
+* [HTTPCLIENT-1715] NTLMEngineImpl#Type1Message not thread safe but declared as a constant.
+ Contributed by Olivier Lafontaine , Gary Gregory
+
+* [HTTPCLIENT-1714] Add HttpClientBuilder#setDnsResolver(DnsResolver).
+ Contributed by Alexis Thaveau
+
+* [HTTPCLIENT-1712] SPNego schemes to take service scheme into account when generating auth token.
+ Contributed by Georg Romstorfer
+
+* [HTTPCLIENT-1700] Netscape draft, browser compatibility, RFC 2109, RFC 2965 and default cookie
+ specs to ignore cookies with empty name for consistency with RFC 6265 specs.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1704] IgnoreSpec#match to always return false.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1550] Fixed 'deflate' zlib header check.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1698] Fixed matching of IPv6 addresses by DefaultHostnameVerifier
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1695] RFC 6265 compliant cookie spec to ignore cookies with empty name / missing
+ value.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1216] Removed ThreadLocal subclass from DateUtils.
+ Contributed by Jochen Kemnade
+
+* [HTTPCLIENT-1685] PublicSuffixDomainFilter to ignore local hosts and local domains.
+ Contributed by Oleg Kalnichevski
+
+
+
+Release 4.5.1
+-------------------
+
+HttpClient 4.5.1 (GA) is a maintenance release that fixes a number of minor defects found since 4.5.
+
+Please note that as of 4.4, HttpClient requires Java 1.6 or newer.
+
+Changelog:
+-------------------
+
+* [HTTPCLIENT-1680] redirect of a POST request causes ClientProtocolException.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1673] org.apache.http.entity.mime.content.* missing from OSGi exports.
+ Contributed by Benson Margulies
+
+* [HTTPCLIENT-1668] Fluent request incorrectly handles connect timeout setting.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1667] RequestBuilder does not take charset into account when creating
+ UrlEncodedFormEntity.
+ Contributed by Sergey Smith
+
+* [HTTPCLIENT-1655] HttpClient sends RST instead of FIN ACK sequence when using non-persistant
+ connections.
+ Contributed by Oleg Kalnichevski
+
+
+
+Release 4.5
+-------------------
+
+HttpClient 4.5 (GA) is a minor feature release that includes several incremental enhancements
+to the exisitng functionality such as support for private domains in the Mozilla Public Suffix List.
+
+Changelog:
+-------------------
+
+* Reduced default validate after inactivity setting from 5 sec to 2 sec
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1649] Fixed serialization of auth schemes
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1645]: Fluent requests to inherit config parameters of the executor.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1640]: RFC6265 lax cookie policy fails to parse 'max-age' attribute.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1633]: RFC6265CookieSpecProvider compatibility level setting has no effect.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1613]: Support for private domains in Mozilla Public Suffix List.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1651]: Add ability to disable content compression on a request basis
+ Contributed by Michael Osipov
+
+* [HTTPCLIENT-1654]: Deprecate/remove RequestConfig#decompressionEnabled in favor of #contentCompressionEnabled
+ Contributed by Michael Osipov
+
+
+
+Release 4.4.1
+-------------------
+
+HttpClient 4.4.1 (GA) is a maintenance release that fixes a number of defects in new functionality
+introduced in version 4.4.
+
+Users of HttpClient 4.4 are encouraged to upgrade.
+
+Please note that as of 4.4, HttpClient requires Java 1.6 or newer.
+
+Changelog:
+-------------------
+
+* Marked RFC 2109, RFC 2965, Netscape draft cookie specs as obsolete
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1633] RFC6265CookieSpecProvider compatibility level setting has no effect.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1628]: Auth cache can fail when domain name contains uppercase characters.
+ Contributed by Dennis Ju
+
+* [HTTPCLIENT-1609] Stale connection check in PoolingHttpClientConnectionManager has no effect.
+ Internal connection pool does not correctly implement connection validation.
+ Contributed by Charles Lip
+
+
+
+Release 4.4 Final
+-------------------
+
+This is the first stable (GA) release of HttpClient 4.4. Notable features and enhancements included
+in 4.4 series are:
+
+* Support for the latest HTTP state management specification (RFC 6265). Please note that the old
+cookie policy is still used by default for compatibility reasons. RFC 6265 compliant cookie
+policies need to be explicitly configured by the user. Please also note that as of next feature
+release support for Netscape draft, RFC 2109 and RFC 2965 cookie policies will be deprecated
+and disabled by default. It is recommended to use RFC 6265 compliant policies for new applications
+unless compatibility with RFC 2109 and RFC 2965 is required and to migrate existing applications
+to the default cookie policy.
+
+* Enhanced, redesigned and rewritten default SSL hostname verifier with improved RFC 2818
+compliance
+
+* Default SSL hostname verifier and default cookie policy now validate certificate identity
+and cookie domain of origin against the public suffix list maintained by Mozilla.org
+
+
+* More efficient stale connection checking: indiscriminate connection checking which results
+in approximately 20 to 50 ms overhead per request has been deprecated in favor of conditional
+connection state validation (persistent connections are to be re-validated only if a specified
+period inactivity has elapsed)
+
+* Authentication cache thread-safety: authentication cache used by HttpClient is now thread-safe
+and can be shared by multiple threads in order to re-use authentication state for subsequent
+requests
+
+* Native Windows Negotiate and NTLM via SSPI through JNA: when running on Windows OS HttpClient
+configured to use native NTLM or SPNEGO authentication schemes can make use of platform specific
+functionality via JNA and current user credentials. This functionality is still considered
+experimental, known to have compatibility issues and subject to change without prior notice.
+Use at your discretion.
+
+This release also includes all fixes from the stable 4.3.x release branch.
+
+Please note that as of 4.4, HttpClient requires Java 1.6 or newer.
+
+
+Changelog:
+-------------------
+
+* Support for the latest HTTP state management specification (RFC 6265).
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1515] Caching of responses to HEAD requests
+ Contributed by Tyrone Cutajar and
+ Francois-Xavier Bonnet
+
+* [HTTPCLIENT-1560] Native Windows auth improvements
+ Contributed by Michael Osipov
+
+* Update Apache Commons Logging version from 1.1.3 to 1.2.
+ Contributed by Gary Gregory
+
+* Update Apache Commons Codec version from 1.6 to 1.9.
+ Contributed by Gary Gregory
+
+* Update Ehcache version from 2.2.0 to 2.6.9.
+ Contributed by Gary Gregory
+
+* Update Ehcache version from 2.2.0 to 2.6.9.
+ Contributed by Gary Gregory
+
+* Update Spymemcached version from 2.6 to 2.11.4.
+ Contributed by Gary Gregory
+
+* Update SLF4J version from 1.5.11 to 1.7.7.
+ Contributed by Gary Gregory
+
+
+
+
+
+Release 4.4 BETA1
+-------------------
+
+This is the first BETA release of HttpClient 4.4. Notable features and enhancements included
+in 4.4 series are:
+
+* Enhanced redesigned and rewritten default SSL hostname verifier with improved RFC 2818
+compliance
+
+* Default SSL hostname verifier and default cookie policy now validate certificate identity
+and cookie domain of origin against the public suffix list maintained by Mozilla.org
+
+
+* Native windows Negotiate/NTLM via JNA: when running on Windows OS HttpClient configured to use
+native NTLM or SPNEGO authentication schemes can make use of platform specific functionality
+via JNA and current user system credentials
+
+* More efficient stale connection checking: indiscriminate connection checking which results
+in approximately 20 to 50 ms overhead per request has been deprecated in favor of conditional
+connection state validation (persistent connections are to be re-validated only if a specified
+period inactivity has elapsed)
+
+* Authentication cache thread-safety: authentication caches used by HttpClient is now thread-safe
+and can be shared by multiple threads in order to re-use authentication state for subsequent
+requests
+
+This release also includes all fixes from the stable 4.3.x release branch.
+
+Please note that as of 4.4, HttpClient requires Java 1.6 or newer.
+
+
+Changelog:
+-------------------
+
+* [HTTPCLIENT-1547] HttpClient OSGi bundle doesn't import the package "javax.naming".
+ Contributed by Willem Jiang
+
+* [HTTPCLIENT-1541] Use correct (HTTP/hostname) service principal name for Windows native
+ Negotiate/NTLM auth schemes.
+ Contributed by Ka-Lok Fung
+
+* Improved compliance with RFC 2818: default hostname verifier to ignore the common name of the
+ certificate subject if alternative subject names (dNSName or iPAddress) are present.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1540] Support delegated credentials (ISC_REQ_DELEGATE) by Native windows
+ native Negotiate/NTLM auth schemes.
+ Contributed by Ka-Lok Fung
+
+
+
+Release 4.4 ALPHA1
+-------------------
+
+This is the first ALPHA release of HttpClient 4.4. Notable features and enhancements included
+in the 4.4 branch are:
+
+* More efficient stale connection checking: indiscriminate connection checking which results
+in approximately 20 to 50 ms overhead per request has been deprecated in favor of conditional
+connection state validation (persistent connections are to be re-validated only if a specified
+period inactivity has elapsed)
+
+* Native windows Negotiate/NTLM via JNA: when running on Windows OS HttpClient configured to use
+native NTLM or SPNEGO authentication schemes can make use of platform specific functionality
+via JNA and current user system credentials
+
+* Authentication cache thread-safety: authentication caches used by HttpClient is now thread-safe
+and can be shared by multiple threads in order to re-use authentication state for subsequent
+requests
+
+This release also includes all fixes from the stable 4.3.x release branch.
+
+Please note that as of 4.4, HttpClient requires Java 1.6 or newer.
+
+Please note that new features included in this release are still considered experimental and
+their API may change in the future 4.4 alpha and beta releases.
+
+
+Changelog:
+-------------------
+
+* [HTTPCLIENT-1493] Indiscriminate connection checking has been deprecated in favor of conditional
+ connection state validation. Persistent connections are to be re-validated only after a defined
+ period inactivity prior to being leased to the consumer.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1519] Use the original HttpHost instance passed as a parameter to
+ HttpClient#execute when generating 'Host' request header.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1491] Enable provision of Service Principal Name in Windows native
+ auth scheme.
+ Contributed by Malcolm Smith
+
+* [HTTPCLIENT-1403] Pluggable content decoders.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1466] FileBodyPart#generateContentType() ignores custom ContentType values.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1461] fixed performance degradation in gzip encoded content processing
+ introduced by HTTPCLIENT-1432.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1457] Incorrect handling of Windows (NT) credentials by
+ SystemDefaultCredentialsProvider.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1456] Request retrial after status 503 causes ClientProtocolException.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1454] Make connection operator APIs public.
+ Contributed by Tamas Cservenak
+
+* Update JUnit to version 4.11 from 4.9
+ Contributed by Gary Gregory
+
+
+
+Release 4.3.4
+-------------------
+
+HttpClient 4.3.4 (GA) is a maintenance release that improves performance in high concurrency
+scenarios. This version replaces dynamic proxies with custom proxy classes and eliminates thread
+contention in java.reflect.Proxy.newInstance() when leasing connections from the connection pool
+and processing response messages.
+
+
+Changelog:
+-------------------
+
+* Replaced dynamic proxies with custom proxy classes to reduce thread contention.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1484] GzipCompressingEntity should not close the underlying output stream
+ if the entity has not been fully written out due to an exception.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1474] Fixed broken entity enclosing requests in HC Fluent.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1470] CachingExec(ClientExecChain, HttpCache, CacheConfig, AsynchronousValidator)
+ throws NPE if config is null
+
+
+
+
+Release 4.3.3
+-------------------
+
+HttpClient 4.3.3 (GA) is a bug fix release that fixes a regression introduced by the previous
+release causing a significant performance degradation in compressed content processing.
+
+Users of HttpClient 4.3 are encouraged to upgrade.
+
+Changelog:
+-------------------
+
+* [HTTPCLIENT-1466] FileBodyPart#generateContentType() ignores custom ContentType values.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1453] Thread safety regression in PoolingHttpClientConnectionManager
+ #closeExpiredConnections that can lead to ConcurrentModificationException.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1461] fixed performance degradation in compressed content processing
+ introduced by HTTPCLIENT-1432.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1457] Incorrect handling of Windows (NT) credentials by
+ SystemDefaultCredentialsProvider.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1456] Request retrial after status 503 causes ClientProtocolException.
+ Contributed by Oleg Kalnichevski
+
+
+Release 4.3.2
+-------------------
+
+HttpClient 4.3.2 (GA) is a maintenance release that delivers a number of improvements
+as well as bug fixes for issues reported since 4.3.1 release. SNI support for
+Oracle JRE 1.7+ is being among the most notable improvements.
+
+Users of HttpClient 4.3 are encouraged to upgrade.
+
+Changelog:
+-------------------
+
+* [HTTPCLIENT-1447] Clients created with HttpClients.createMinimal do not work with absolute URIs
+ Contributed by Joseph Walton
+
+* [HTTPCLIENT-1446] NTLM proxy + BASIC target auth fails with 'Unexpected state:
+ MSG_TYPE3_GENERATED'.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1443] HttpCache uses the physical host instead of the virtual host as a cache key.
+ Contributed by Francois-Xavier Bonnet
+
+* [HTTPCLIENT-1442] Authentication header set by the user gets removed in case
+ of proxy authentication (affects plan HTTP requests only).
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1441] Caching AsynchronousValidationRequest leaks connections.
+ Contributed by Dominic Tootell
+
+* [HTTPCLIENT-1440] 'file' scheme in redirect location URI causes NPE.
+ Contributed by James Leigh
+
+* [HTTPCLIENT-1437] Made Executor#execute thread safe.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1119] SNI support (Oracle Java 1.7+ only).
+ Contributed by Bruno Harbulot
+
+* [HTTPCLIENT-1435] Fluent Executor ignores custom request properties.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1432] Lazy decompressing of HttpEntity#getContent() to avoid EOFException
+ in case of an empty response with 'Content-Encoding: gzip' header.
+ Contributed by Yihua Huang
+
+* [HTTPCLIENT-1431] (Regression) deprecated connection manager cannot be used with
+ a custom LayeredSchemeSocketFactory.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1425] Fixed socket closed exception thrown by caching HttpClient when the origin
+ server sends a long chunked response.
+ Contributed by James Leigh
+
+* [HTTPCLIENT-1417] Fixed NPE in BrowserCompatSpec#formatCookies caused by version 1
+ cookies with null cookie value.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1416] Fixed NPE in CachingHttpClientBuilder#build().
+ Contributed by Oleg Kalnichevski
+
+
+
+Release 4.3.1
+-------------------
+
+HttpClient 4.3.1 (GA) is a bug fix release that addresses a number of issues reported since
+release 4.3.
+
+Users of HttpClient 4.3 are strongly encouraged to upgrade.
+
+Changelog
+-------------------
+
+* [HTTPCLIENT-1410] Browser compatible hostname verifier no longer rejects
+ *.co., *.gov., *.info., etc as invalid.
+ Contributed by Oleg Kalnichevski
+
+* Ensure X509HostnameVerifier is never null.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1405] CONNECT HTTP/1.1 requests lack mandatory 'Host' header.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1402] Cache default User-Agent value.
+ Contributed by yuexiaojun
+
+* [HTTPCLIENT-1398] Fixed invalid OSGi metadata caused by corrupted Maven bundle plugin metadata.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1399] Fixed NPE in RequestBuilder.
+ Contributed by Oleg Kalnichevski
+
+
+
+
+Release 4.3 Final
+-------------------
+
+This is the first stable (GA) release of HttpClient 4.3. The most notable enhancements included
+in this release are:
+
+* Support for Java 7 try-with-resources for resource management (connection release.)
+
+* Added fluent Builder classes for HttpEntity, HttpRequest, HttpClient and SSLContext instances.
+
+* Deprecation of preference and configuration API based on HttpParams interface in favor of
+constructor injection and plain configuration objects.
+
+* Reliance on object immutability instead of access synchronization for thread safety.
+Several old classes whose instances can be shared by multiple request exchanges have
+been replaced by immutable equivalents.
+
+* DefaultHttpClient, DecompressingHttpClient, CachingHttpClient and similar classes are
+deprecated in favor of builder classes that produce immutable HttpClient instances.
+
+* HttpClient builders now dynamically construct a request execution pipeline tailored
+specifically to the user configuration by physically excluding unnecessary protocol components.
+
+* There is now an option to construct a minimal HttpClient implementation that can only execute
+basic HTTP message exchanges without redirects, authentication, state management or proxy support.
+This feature might be of particular use in web crawler development.
+
+* There is now option to avoid strict URI syntax for request URIs by executing HTTP requests
+with an explicitly specified target host. HttpClient will no longer attempt to parse the request
+URI if it does not need to extract the target host from it.
+
+This release also includes all fixes from the stable 4.2.x release branch.
+
+
+Changelog
+-------------------
+* [HTTPCLIENT-1371] Weak ETag Validation is Useful On PUT With If-Match
+ Contributed by James Leigh
+
+* [HTTPCLIENT-1394] Support for Native windows Negotiate/NTLM via JNA
+ Contributed by Ryan McKinley
+
+* [HTTPCLIENT-1384] Expose CacheInvalidator interface.
+ Contributed by Nicolas Richeton
+
+* [HTTPCLIENT-1385] Fixed path normalization in CacheKeyGenerator
+ Contributed by James Leigh
+
+* [HTTPCLIENT-1370] Response to non-GET requests should never be cached with the default
+ ResponseCachingPolicy
+ Contributed by James Leigh
+
+* [HTTPCLIENT-1373] OPTIONS and TRACE should not invalidate cache
+ Contributed by James Leigh
+
+* [HTTPCLIENT-1383] HttpClient enters an infinite loop during NTLM authentication if the opposite
+ endpoint keeps responding with a type 2 NTLM response after type 3 MTLM message has already been
+ sent by the client.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1372] Refactor HttpMultipart, and add RFC6532 mode, so that headers in post
+ are no longer constrained to ASCII values.
+ Contributed by Karl Wright
+
+* [HTTPCLIENT-1377] User principal for non-NTLM authentication is incorrectly generated when using
+ user credentials are specified as NTCredentials
+ Contributed by Gary Gregory
+
+
+
+Release 4.3 BETA2
+-------------------
+
+This is the second BETA release of HttpClient 4.3. The most notable features and improvements
+in the 4.3 branch are: Support for Java 7 try-with-resources for resource management (connection
+release); fluent Builder classes for HttpEntity, HttpRequest and HttpClient instances, deprecation
+of preference and configuration API based on HttpParams interface in favor of constructor injection
+and plain configuration objects, reliance on object immutability instead of access synchronization
+for thread safety.
+
+This release also includes all fixes from the stable 4.2.x release branch.
+
+Changelog
+-------------------
+
+
+* [HTTPCLIENT-1366] org.apache.http.client.utils.URLEncodedUtils should parse the semicolon as a query parameter separator.
+ Contributed by Gary Gregory
+
+* [HTTPCLIENT-1365] NPE when ManagedHttpClientConnectionFactory.create(ConnectionConfig) is called with null.
+ Contributed by Gary Gregory
+
+* [HTTPCLIENT-1362] Better error messages for connect timed out and connection refused
+ exceptions.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1360] separate out DeflateInputStream as an independent class,
+ so it can be used by others.
+ Contributed by Karl Wright
+
+* [HTTPCLIENT-1359] repeated requests using the same context fail if they redirect.
+ Contributed by James Leigh
+
+* [HTTPCLIENT-1354] do not quote algorithm parameter in DIGEST auth response.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1351] Added utility method to resolve final location from original request,
+ target host and a list of redirects.
+ Contributed by James Leigh
+
+* [HTTPCLIENT-1344] Userinfo credentials in URI should not default to preemptive BASIC
+ authentication.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1345] Useinfo credentials ignored in redirect location header.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1294] HttpClient to rewrite host name of the redirect location URI in order
+ to avoid circular redirect exception due to host name case mismatch.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1264] Add support for multiple levels of browser compatibility
+ to BrowserCompatSpec and BrowserCompatSpecFactory. Include constructor
+ argument for IE medium-security compatibility.
+ Contributed by Karl Wright (kwright at apache.org)
+
+* [HTTPCLIENT-1349] SSLSocketFactory incorrectly identifies key passed with keystore as
+ the keystore password.
+ Contributed by David Graff
+
+* [HTTPCLIENT-1346] Ensure propagation of SSL handshake exceptions.
+ Contributed by Pasi Eronen
+
+* [HTTPCLIENT-1343] SSLSocketFactory optional parameters for supported SSL protocols and cipher
+ suites.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1238] Contribute Bundle Activator And Central Proxy Configuration.
+ Contributed by Simone Tripodi
+
+* [HTTPCLIENT-1299] (regression) cache incorrectly disposes of the underlying cache resource
+ when storing variant entry.
+ Contributed by James Leigh
+
+* [HTTPCLIENT-1342] Redirects with underscore character in the location hostname cause
+ "java.lang.IllegalArgumentException: Host name may not be null".
+ Contributed by Oleg Kalnichevski
+
+
+
+Release 4.3 BETA1
+-------------------
+
+This is the first BETA release of HttpClient 4.3. The 4.3 branch enhances HttpClient in several
+key areas and includes several notable features and improvements: Support for Java 7
+try-with-resources for resource management (connection release); fluent Builder classes for
+HttpEntity, HttpRequest and HttpClient instances, deprecation of preference and configuration API
+based on HttpParams interface in favor of constructor injection and plain configuration objects,
+reliance on object immutability instead of access synchronization for thread safety.
+
+This release also includes all fixes from the stable 4.2.x release branch.
+
+
+Changelog
+-------------------
+
+* [HTTPCLIENT-1317] InetAddressUtils should handle IPv6 Addresses with Embedded IPv4 Addresses
+ Contributed Sebastian Bazley .
+
+* [HTTPCLIENT-1320] Leverage javax.net.ssl.SSLSocketFactory#getDefault() to initialize SSL context
+ based on system defaults instead of using an internal custom routine.
+ Contributed by Abe Backus and Oleg Kalnichevski
+
+* [HTTPCLIENT-1316] Certificate verification rejects IPv6 addresses which are not String-equal.
+ Contributed Sebastian Bazley .
+
+* [HTTPCLIENT-1307] Future based asynchronous request execution.
+ Contributed by Jilles van Gurp
+
+* [HTTPCLIENT-1313] Fixed IllegalStateException in deprecated ThreadSafeClientConnManager.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1298] Add AsynchronousValidator in HttpClientBuilder's list of closeable objects.
+ Contributed by Martin Meinhold
+
+
+
+Release 4.3 ALPHA1
+-------------------
+
+This is the first ALPHA release of HttpClient 4.3. The 4.3 branch enhances HttpClient in several
+key areas and includes several notable features and improvements: Support for Java 7
+try-with-resources for resource management (connection release); fluent Builder classes for
+HttpEntity, HttpRequest and HttpClient instances, deprecation of preference and configuration API
+based on HttpParams interface in favor of constructor injection and plain configuration objects,
+reliance on object immutability instead of access synchronization for thread safety.
+
+We are kindly asking all upstream projects to review API changes and help us improve
+the APIs by providing feedback and sharing ideas on dev@hc.apache.org.
+
+This release also includes all fixes from the stable 4.2.x release branch.
+
+Please note that new features included in this release are still considered experimental and
+their API may change in the future 4.3 alpha and beta releases.
+
+
+Changelog
+-------------------
+
+* [HTTPCLIENT-1250] Allow query string to be ignored when determining cacheability for
+ HTTP 1.0 responses.
+ Contributed by Don Brown
+
+* [HTTPCLIENT-1261] Make SystemDefaultHttpClient honor http.agent system property.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-900] Don't enforce URI syntax for messages with an explicit target host.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1190] HttpClient cache does not support "Vary: Cookie"
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1259] Calling #abort() on requests executed with DecompressingHttpClient has no
+ effect.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1253] URIBuilder setParameter() method could exceed the HTTP header size.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1216] Added method to force clean thread-local used by DateUtils.
+ Contributed by Oleg Kalnichevski
+
+
+Release 4.2.3
+-------------------
+
+HttpClient 4.2.3 (GA) is a bug fix release that addresses a number of issues reported since
+release 4.2.2. This release also includes a thoroughly reworked NTLM authentication engine
+which should result in a better compatibility with the newest Microsoft products.
+
+Users of HttpClient 4.x are advised to upgrade.
+
+Changelog
+-------------------
+
+* [HTTPCLIENT-1296] NPE gets thrown if you combine a default host with a virtual host
+ that has a -1 value for the port.
+ Contributed by Karl Wright
+
+* [HTTPCLIENT-1290] 304 cached response never reused with If-modified-since conditional
+ requests.
+ Contributed by Francois-Xavier Bonnet
+
+* [HTTPCLIENT-1291] Absolute request URIs without an explicitly specified path are rewritten
+ to have "/" path).
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1286] Request URI rewriting is inconsistent - URI fragments are not removed
+ from absolute request URIs.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1284] HttpClient incorrectly generates Host header when physical connection
+ route differs from the host name specified in the request URI.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1293] Kerberos and SPNego auth schemes use incorrect authorization header name
+ when authenticating with a proxy.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1283] NTLM needs to use Locale-independent form of
+ toUpperCase().
+ Contributed by Karl Wright
+
+* [HTTPCLIENT-1279] Target host responding with status 407 (proxy authentication required)
+ causes an NPE.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1281] GzipDecompressingEntity does not release InputStream when an IOException
+ occurs while reading the Gzip header
+ Contributed by Francois-Xavier Bonnet
+
+* [HTTPCLIENT-1277] Caching client sends a 304 to an unconditional request.
+ Contributed by Francois-Xavier Bonnet
+
+* [HTTPCLIENT-1278] Update NTLM documentation.
+ Contributed by Karl Wright
+
+* SystemDefaultHttpClient misinterprets 'http.keepAlive' default value and disables
+ connection persistence if the system property is not set. This causes connection
+ based authentication schemes such as NTLM to fail.
+
+* [HTTPCLIENT-1276] cache update on a 304 response causes NPE.
+ Contributed by Francois-Xavier Bonnet
+
+* [HTTPCLIENT-1273] DecompressingHttpClient does not automatically consume response
+ content in case of an i/o, HTTP or runtime exception thrown by the decompressing
+ protocol interceptor leading to a potential connection leak.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1268] NTLM engine refactor fix, to correct a buffer overrun, and get NTLMv2
+ flags right.
+ Contributed by Karl Wright
+
+* [HTTPCLIENT-1266] NTLM engine refactoring and compatibility improvements.
+ Contributed by Karl Wright
+
+* [HTTPCLIENT-1263] BrowserCompatSpec: attribute values containing spaces or special characters
+ should be enclosed with quotes marks for version 1 cookies.
+ Contributed by Francois-Xavier Bonnet
+
+* [HTTPCLIENT-1263] CachingHttpClient fails to release connections back to the connection
+ manager for some type of HTTP response messages when used together with DecompressingHttpClient.
+ Contributed by Francois-Xavier Bonnet
+
+* [HTTPCLIENT-1258] Fixed NullPointerException in NTLMEngineImpl caused by null NT domain
+ attribute.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1254] Redirect with underscore in hostname causes ProtocolException.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1255] AbstractVerifier incorrectly parses certificate CN containing wildcard.
+ Contributed by Oleg Kalnichevski
+
+
+
+Release 4.2.2
+-------------------
+
+HttpClient 4.2.2 (GA) is a bug fix release that addresses a number of issues reported since
+release 4.2.1.
+
+Users of HttpClient 4.2 are advised to upgrade.
+
+Changelog
+-------------------
+
+* [HTTPCLIENT-1248] Default and lax redirect strategies should not convert requests redirected
+ with 307 status to GET method.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1215] BasicAuthCache does not take default ports into consideration when
+ looking up cached authentication details by HttpHost key.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1241] (regression) Preemptive BASIC authentication failure should be considered
+ final and no further attempts to re-authenticate using the same credentials should be made.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1229] Fixed NPE in BasicClientConnectionManager that can be triggered by releasing
+ connection after the connection manager has already been shut down.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1227] Date parsing in DateUtils made more efficient.
+ Contributed by Patrick Linskey
+
+* [HTTPCLIENT-1224] (regression) NTLM auth not retried after a redirect over a non-persistent
+ connection.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1223] Cache could be more aggressive on cache invalidations
+ from Content-Location. Contributed by Jon Moore .
+ Contributed by Jon Moore
+
+* [HTTPCLIENT-1217] AutoRetryHttpClient does not release connection used by the previous response
+ when request is retried
+ Contributed by Oleg Kalnichevski
+
+
+
+Release 4.2.1
+-------------------
+
+HttpClient 4.2.1 (GA) is a bug fix release that addresses a number of issues reported since
+release 4.2.
+
+Users of HttpClient 4.2 are advised to upgrade.
+
+Changelog
+-------------------
+
+* [HTTPCLIENT-1209] Redirect URIs are now normalized.
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1202] ResponseCachingPolicy should honor explicit cache-control
+ directives for other status codes
+ Contributed by Jon Moore
+
+* [HTTPCLIENT-1199] DecompressingHttpClient strips content from entity enclosing requests
+ Contributed by Oleg Kalnichevski
+
+* [HTTPCLIENT-1198] HttpHost is not set in HttpContext in CachingHttpClient.
+ Contributed by Jon Moore
+
+* [HTTPCLIENT-1200] DecompressingHttpClient fails to generate correct HttpHost context attribute.
+ Contributed by Guillaume Castagnino
+
+* [HTTPCLIENT-1192] URIBuilder encodes query parameters twice.
+ Contributed by Oleg Kalnichevski and Sebastian Bazley .
+
+* [HTTPCLIENT-1196] Fixed NPE in UrlEncodedFormEntity constructor thrown if charset is null.
+ Contributed by Oleg Kalnichevski