Lint Report: 38 warnings
Issue Types

Overview

Lint
1warning LintBaseline: Baseline Applied
1warning LintBaselineFixed: Baselined Issues Fixed
Correctness
1warning ScopedStorage: Affected by scoped storage
12warning DefaultLocale: Implied default locale in case conversion
4warning SdCardPath: Hardcoded reference to /sdcard
3warning AndroidGradlePluginVersion: Obsolete Android Gradle Plugin Version
12warning GradleDependency: Obsolete Gradle Dependency
2warning ConfigurationScreenWidthHeight: Using Configuration.screenWidthDp/screenHeightDp instead of LocalWindowInfo.current.containerSize
1warning ModifierParameter: Guidelines for Modifier parameters in a Composable function
Security
1warning SetWorldReadable: File.setReadable() used to make file world-readable
2warning TrustAllX509TrustManager: Insecure TLS/SSL trust manager
Included Additional Checks (73)
Disabled Checks (41)

Baseline Applied

../../lint-baseline.xml: 2 warnings were filtered out because they are listed in the baseline file, lint-baseline.xml
LintBaseline Information Priority 10/10

Baselined Issues Fixed

../../lint-baseline.xml: 20 errors/warnings were listed in the baseline file (lint-baseline.xml) but not found in the project; perhaps they have been fixed? Another possible explanation is that lint recently stopped analyzing (and including results from) dependent projects by default. You can turn this back on with android.lintOptions.checkDependencies=true. Unmatched issue types: AndroidGradlePluginVersion, ExportedReceiver, GradleDependency (6), ModifierParameter, SdCardPath (2), UnspecifiedRegisterReceiverFlag (2), UnusedResources (7)
LintBaselineFixed Information Priority 10/10

Affected by scoped storage

../../src/main/AndroidManifest.xml:19: The Google Play store has a policy that limits usage of MANAGE_EXTERNAL_STORAGE
  16     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  17     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  18     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  19     <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />                   
  20     <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"
  21         tools:ignore="QueryAllPackagesPermission" />
ScopedStorage Correctness Warning Priority 8/10

Implied default locale in case conversion

../../src/main/java/com/eloview/sdk/testapp/common/Util.java:97: Implicitly using the default locale is a common source of bugs: Use toLowerCase(Locale) instead. For strings meant to be internal use Locale.ROOT, otherwise Locale.getDefault().
  94   }
  95 
  96   public static boolean isValueDevice() {
  97       return Build.DISPLAY.toLowerCase().contains("5.") && Build.DISPLAY.toLowerCase().contains("+v") ||
  98               (Build.DISPLAY.toLowerCase().contains("5.") && Build.DISPLAY.toLowerCase().contains("+av")) ||
  99               (Build.DISPLAY.toLowerCase().contains("6.") && Build.DISPLAY.toLowerCase().contains("+v")) ||
 100               (Build.DISPLAY.toLowerCase().contains("6.") && Build.DISPLAY.toLowerCase().contains("+av")) ||
../../src/main/java/com/eloview/sdk/testapp/common/Util.java:97: Implicitly using the default locale is a common source of bugs: Use toLowerCase(Locale) instead. For strings meant to be internal use Locale.ROOT, otherwise Locale.getDefault().
  94   }
  95 
  96   public static boolean isValueDevice() {
  97       return Build.DISPLAY.toLowerCase().contains("5.") && Build.DISPLAY.toLowerCase().contains("+v") ||
  98               (Build.DISPLAY.toLowerCase().contains("5.") && Build.DISPLAY.toLowerCase().contains("+av")) ||
  99               (Build.DISPLAY.toLowerCase().contains("6.") && Build.DISPLAY.toLowerCase().contains("+v")) ||
 100               (Build.DISPLAY.toLowerCase().contains("6.") && Build.DISPLAY.toLowerCase().contains("+av")) ||
../../src/main/java/com/eloview/sdk/testapp/common/Util.java:98: Implicitly using the default locale is a common source of bugs: Use toLowerCase(Locale) instead. For strings meant to be internal use Locale.ROOT, otherwise Locale.getDefault().
  95 
  96   public static boolean isValueDevice() {
  97       return Build.DISPLAY.toLowerCase().contains("5.") && Build.DISPLAY.toLowerCase().contains("+v") ||
  98               (Build.DISPLAY.toLowerCase().contains("5.") && Build.DISPLAY.toLowerCase().contains("+av")) ||
  99               (Build.DISPLAY.toLowerCase().contains("6.") && Build.DISPLAY.toLowerCase().contains("+v")) ||
 100               (Build.DISPLAY.toLowerCase().contains("6.") && Build.DISPLAY.toLowerCase().contains("+av")) ||
 101               (Build.DISPLAY.toLowerCase().contains("7.") && Build.DISPLAY.toLowerCase().contains("+v")) ||
../../src/main/java/com/eloview/sdk/testapp/common/Util.java:98: Implicitly using the default locale is a common source of bugs: Use toLowerCase(Locale) instead. For strings meant to be internal use Locale.ROOT, otherwise Locale.getDefault().
  95 
  96   public static boolean isValueDevice() {
  97       return Build.DISPLAY.toLowerCase().contains("5.") && Build.DISPLAY.toLowerCase().contains("+v") ||
  98               (Build.DISPLAY.toLowerCase().contains("5.") && Build.DISPLAY.toLowerCase().contains("+av")) ||
  99               (Build.DISPLAY.toLowerCase().contains("6.") && Build.DISPLAY.toLowerCase().contains("+v")) ||
 100               (Build.DISPLAY.toLowerCase().contains("6.") && Build.DISPLAY.toLowerCase().contains("+av")) ||
 101               (Build.DISPLAY.toLowerCase().contains("7.") && Build.DISPLAY.toLowerCase().contains("+v")) ||
../../src/main/java/com/eloview/sdk/testapp/common/Util.java:99: Implicitly using the default locale is a common source of bugs: Use toLowerCase(Locale) instead. For strings meant to be internal use Locale.ROOT, otherwise Locale.getDefault().
  96   public static boolean isValueDevice() {
  97       return Build.DISPLAY.toLowerCase().contains("5.") && Build.DISPLAY.toLowerCase().contains("+v") ||
  98               (Build.DISPLAY.toLowerCase().contains("5.") && Build.DISPLAY.toLowerCase().contains("+av")) ||
  99               (Build.DISPLAY.toLowerCase().contains("6.") && Build.DISPLAY.toLowerCase().contains("+v")) ||
 100               (Build.DISPLAY.toLowerCase().contains("6.") && Build.DISPLAY.toLowerCase().contains("+av")) ||
 101               (Build.DISPLAY.toLowerCase().contains("7.") && Build.DISPLAY.toLowerCase().contains("+v")) ||
 102               (Build.DISPLAY.toLowerCase().contains("7.") && Build.DISPLAY.toLowerCase().contains("+av"));
DefaultLocale Correctness Warning Priority 6/10

Hardcoded reference to /sdcard

../../src/main/java/com/eloview/sdk/testapp/networkActivity/ESTCertificateActivity.kt:296: Do not hardcode "/sdcard/"; use Environment.getExternalStorageDirectory().getPath() instead
 293           },
 294           modifier = Modifier.fillMaxWidth(),
 295           textStyle = getEloBoldStdSecondaryTextstart(),
 296           placeholder = { Text("/sdcard/cacert.pem", style = getEloSmallSecondaryText()) }
 297       )
 298 
 299   }
../../src/main/java/com/eloview/sdk/testapp/networkActivity/LocalCertificateActivity.kt:229: Do not hardcode "/sdcard/"; use Environment.getExternalStorageDirectory().getPath() instead
 226                             },
 227                             modifier = Modifier.fillMaxWidth()
 228                                 .padding(bottom = 24.dp),
 229                             placeholder = { Text("/sdcard/cacert.pem") }                            
 230                         )
 231                     },
 232                     center = true,
../../src/main/java/com/eloview/sdk/testapp/systemActivity/SystemActivityDialogs.kt:1616: Do not hardcode "/sdcard/"; use Environment.getExternalStorageDirectory().getPath() instead
 1613             if (systemActivityDetails.showGetMD5ChecksumDialog) {
 1614                 SingleTextFieldTwoButtonDialog(
 1615                     title = "Get MD5 CheckSum",
 1616                     textFieldValueHint = "/sdcard/example/file.txt",                                
 1617                     textFieldValue = systemActivityDetails.getMD5ChecksumFilePath,
 1618                     onValueChange = {
 1619                         systemActivityViewModel.setGetMD5ChecksumFilePath(it)
../../src/main/java/com/eloview/sdk/testapp/viewmodel/SystemActivityViewModel.kt:1095: Do not hardcode "/sdcard/"; use Environment.getExternalStorageDirectory().getPath() instead
 1092         orgFileName: String,
 1093         eloConfFileName: String
 1094     ): String? {
 1095         val filePath = "/sdcard/elo/$eloConfFileName"                                               
 1096 
 1097         val fl = File(filePath)
 1098         if (fl.exists()) {
SdCardPath Correctness Warning Priority 6/10

Obsolete Android Gradle Plugin Version

../../../gradle/libs.versions.toml:2: A newer version of com.android.application than 8.7.3 is available: 8.11.1
  1 [versions]
  2 agp = "8.7.3"                                                                                       
  3 appauth = "0.10.0"
  4 kotlin = "1.9.10"
  5 coreKtx = "1.13.1"
../../../gradle/libs.versions.toml:2: A newer version of com.android.application than 8.7.3 is available: 8.11.1
  1 [versions]
  2 agp = "8.7.3"                                                                                       
  3 appauth = "0.10.0"
  4 kotlin = "1.9.10"
  5 coreKtx = "1.13.1"
../../../gradle/libs.versions.toml:2: A newer version of com.android.application than 8.7.3 is available: 8.11.1
  1 [versions]
  2 agp = "8.7.3"                                                                                       
  3 appauth = "0.10.0"
  4 kotlin = "1.9.10"
  5 coreKtx = "1.13.1"
AndroidGradlePluginVersion Correctness Warning Priority 4/10

Obsolete Gradle Dependency

../../../gradle/libs.versions.toml:5: A newer version of androidx.core:core-ktx than 1.13.1 is available: 1.16.0
  2 agp = "8.7.3"
  3 appauth = "0.10.0"
  4 kotlin = "1.9.10"
  5 coreKtx = "1.13.1"                                                                                  
  6 junit = "4.13.2"
  7 junitVersion = "1.2.1"
  8 espressoCore = "3.6.1"
../../../gradle/libs.versions.toml:5: A newer version of androidx.core:core-ktx than 1.13.1 is available: 1.16.0
  2 agp = "8.7.3"
  3 appauth = "0.10.0"
  4 kotlin = "1.9.10"
  5 coreKtx = "1.13.1"                                                                                  
  6 junit = "4.13.2"
  7 junitVersion = "1.2.1"
  8 espressoCore = "3.6.1"
../../../gradle/libs.versions.toml:5: A newer version of androidx.core:core-ktx than 1.13.1 is available: 1.16.0
  2 agp = "8.7.3"
  3 appauth = "0.10.0"
  4 kotlin = "1.9.10"
  5 coreKtx = "1.13.1"                                                                                  
  6 junit = "4.13.2"
  7 junitVersion = "1.2.1"
  8 espressoCore = "3.6.1"
../../../gradle/libs.versions.toml:9: A newer version of androidx.lifecycle:lifecycle-runtime-ktx than 2.8.2 is available: 2.9.2
  6 junit = "4.13.2"
  7 junitVersion = "1.2.1"
  8 espressoCore = "3.6.1"
  9 lifecycleRuntimeKtx = "2.8.2"                                                                       
 10 activityCompose = "1.10.1"
 11 composeBom = "2025.06.01"
 12 okio = "3.6.0"
../../../gradle/libs.versions.toml:9: A newer version of androidx.lifecycle:lifecycle-runtime-ktx than 2.8.2 is available: 2.9.2
  6 junit = "4.13.2"
  7 junitVersion = "1.2.1"
  8 espressoCore = "3.6.1"
  9 lifecycleRuntimeKtx = "2.8.2"                                                                       
 10 activityCompose = "1.10.1"
 11 composeBom = "2025.06.01"
 12 okio = "3.6.0"
GradleDependency Correctness Warning Priority 4/10

Using Configuration.screenWidthDp/screenHeightDp instead of LocalWindowInfo.current.containerSize

../../src/main/java/com/eloview/sdk/testapp/common/CommonDialogComposables.kt:1037: Using Configuration.screenHeightDp instead of LocalWindowInfo.current.containerSize
 1034         onDismiss: () -> Unit = {}
 1035     ) {
 1036         val configuration = LocalConfiguration.current
 1037         val screenHeight = configuration.screenHeightDp.dp                                      
 1038         val screenWidth = configuration.screenWidthDp.dp
 1039         val isLandscape = configuration.orientation == Configuration.ORIENTATION_LANDSCAPE
 1040         val scrollState = rememberScrollState()
../../src/main/java/com/eloview/sdk/testapp/common/CommonDialogComposables.kt:1038: Using Configuration.screenWidthDp instead of LocalWindowInfo.current.containerSize
 1035     ) {
 1036         val configuration = LocalConfiguration.current
 1037         val screenHeight = configuration.screenHeightDp.dp
 1038         val screenWidth = configuration.screenWidthDp.dp                                        
 1039         val isLandscape = configuration.orientation == Configuration.ORIENTATION_LANDSCAPE
 1040         val scrollState = rememberScrollState()
 1041         DatePickerDialog(
Vendor: Jetpack Compose
Identifier: androidx.compose.ui
Feedback: https://issuetracker.google.com/issues/new?component=612128
ConfigurationScreenWidthHeight Correctness Warning Priority 3/10

Guidelines for Modifier parameters in a Composable function

../../src/main/java/com/eloview/sdk/testapp/common/CommonDialogComposables.kt:950: Modifier parameter should be the first optional parameter
  947             timePickerState: TimePickerState = rememberTimePickerState(),
  948             onConfirm: (TimePickerState) -> Unit = {},
  949             onDismiss: () -> Unit = {},
  950             modifier: Modifier = Modifier                                                           
  951         ) {
  952             val configuration = LocalConfiguration.current
  953             val orientation = configuration.orientation
Vendor: Jetpack Compose
Identifier: androidx.compose.ui
Feedback: https://issuetracker.google.com/issues/new?component=612128
ModifierParameter Correctness Warning Priority 3/10

File.setReadable() used to make file world-readable

../../src/main/java/com/eloview/sdk/testapp/viewmodel/SystemActivityViewModel.kt:1122: Setting file permissions to world-readable can be risky, review carefully
 1119                 fos.write(buffer, 0, bytesRead) // Write bytes read to the output stream
 1120             }
 1121 
 1122             fl.setReadable(true, false)                                                             
 1123         } catch (e: java.lang.Exception) {
 1124             Log.w(SystemActivity.TAG, "saveAssetsFileToEloConf: " + e.message)
 1125         } finally {
SetWorldReadable Security Warning Priority 6/10

Insecure TLS/SSL trust manager

../../../../../../../../../../../../../../.gradle/caches/8.10/transforms/c75a759ecc3c60424367fa13dbac979d/transformed/eloviewhomeSDK2/jars/classes.jar: checkClientTrusted is empty, which could cause insecure network traffic due to trusting arbitrary TLS/SSL certificates presented by peers
../../../../../../../../../../../../../../.gradle/caches/8.10/transforms/c75a759ecc3c60424367fa13dbac979d/transformed/eloviewhomeSDK2/jars/classes.jar: checkServerTrusted is empty, which could cause insecure network traffic due to trusting arbitrary TLS/SSL certificates presented by peers
TrustAllX509TrustManager Security Warning Priority 6/10

Included Additional Checks

This card lists all the extra checks run by lint, provided from libraries, build configuration and extra flags. This is included to help you verify whether a particular check is included in analysis when configuring builds. (Note that the list does not include the hundreds of built-in checks into lint, only additional ones.)

Disabled Checks

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.

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:
android {
    lintOptions {
        disable 'TypographyFractions','TypographyQuotes'
    }
}

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 https://developer.android.com/studio/write/lint.html#config