繁体   English   中英

生成签名的 apk 时出现“:app:lintVitalRelease”错误

[英]':app:lintVitalRelease' error when generating signed apk

我尝试在 google play 上上传我的 apk 并遇到错误消息:“您上传了一个可调试的 APK。出于安全原因,您需要先禁用调试,然后才能在 Google Play 中发布它。了解有关可调试 APK 的更多信息。”

然后我在清单中写了android:debuggable="false"并再次尝试。 我遇到了同样的错误,所以我将模块中的构建变体设置为 release 并尝试再次生成一个 apk,但这一次,生成了这个错误:

Error:Gradle: Execution failed for task ':app:lintVitalRelease'.
Lint found fatal errors while assembling a release target.
  To proceed, either fix the issues identified by lint, or modify your build script as follows:
  ...
  android {
      lintOptions {
          checkReleaseBuilds false
          // Or, if you prefer, you can continue to check for errors in release builds,
          // but continue the build even when errors are found:
          abortOnError false
      }
  }
  ...

我不建议关闭棉绒检查,它们在那里是有原因的。 相反,检查错误是什么并修复它。

错误报告保存到[app module]/build/reports/lint-results-yourBuildName-fatal.html 您可以在浏览器中打开此文件以了解错误。

如果 Gradle 可以更清楚地说明错误报告的生成位置,那就太好了。

我遇到了这个问题并通过添加解决了它:

lintOptions { 

    checkReleaseBuilds false

}

到我的android{ }部分中的build.gradle文件。

如果您想找出确切的错误,请转到项目中的以下路径:/app/build/reports/lint-results-release-fatal.html(或 .xml)。 最简单的方法是,如果您转到 xml 文件,它将准确地显示错误是什么,包括错误在您的 java 类或 xml 文件中的位置。 关闭 lint 检查不是一个好主意,它们的存在是有原因的。 相反,请转到:

    /app/build/reports/lint-results-release-fatal.html or 
    /app/build/reports/lint-results-release-fatal.xml

并修复它。

在 Kotlin 中是不同的。 首先,您需要在 app 文件夹的 build.gradel 的 Android 部分设置以下代码。

     android {
          :
          lintOptions {
            baseline(file("lint-baseline.xml"))
          }
      }

然后从 IDE(分析 > 检查代码)或从命令行运行 lint,如下所示。

      $ ./gradlew lintDebug

...

输出打印 lint-baseline.xml 文件在 app 文件夹中的位置,但有时在 app/src 文件夹中以及 /app/lint-baseline.xml

确保您在所有string.xml文件中定义了所有翻译

如果您可能试图找出问题所在,我在我的项目的以下路径中找到了我的: /app/build/reports/lint-results-release-fatal.html (或 .xml)。

希望这可以帮助!

从android studio创建签名apk时我遇到了同样的问题。 我只是在android {}中对build.gradle文件进行了一些更改

lintOptions {
        checkReleaseBuilds false
        abortOnError false
    }

如何查找错误详细信息

Anylyze -> 检查代码

在此处输入图像描述

然后在检查结果中,您将看到一个错误

在此处输入图像描述

在我的情况下,由于 Google IAP 中未解决的 javadoc 引用,构建失败😐

***Try this***

 buildTypes {
        release {
            lintOptions {
                disable 'MissingTranslation'
                checkReleaseBuilds false
                abortOnError false
            }
            minifyEnabled false
            signingConfig signingConfigs.release
        }
    }

您可以从 gradle build 选项卡中找到更多选择 assemble 的信息: 在此处输入图像描述

在你的 app.gradle 文件中尝试这 3 行。

android {
lintOptions {
    checkReleaseBuilds false
    // Or, if you prefer, you can continue to check for errors in release builds,
    // but continue the build even when errors are found:
    abortOnError false
}

这对我有用,我只是像这样修改了我的 BuildTypes:

buildTypes {
    release {
        android {
            lintOptions {
                checkReleaseBuilds false
                // Or, if you prefer, you can continue to check for errors in release builds,
                // but continue the build even when errors are found:
                abortOnError false
            }
        }
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

我的问题是缺少翻译。 我有一个未翻译的 settings.xml,因为它不需要,所以我必须在字符串中添加"translatable="false"

<string translatable="false" name="stringname">This string doesn't need translation</string>

只需在这里找到错误原因并修复它。

yourProject/app/build/reports/lint-results-release-fatal.xml

在此处输入图像描述

在 android {} build.gradle(Module:App) 中添加这个

lintOptions {
    checkReleaseBuilds false
    // Or, if you prefer, you can continue to check for errors in release builds,
    // but continue the build even when errors are found:
    abortOnError false
}

我的问题是缺少翻译。 我有一个未翻译的 settings.xml,因为它不需要,所以我必须在字符串中添加“translatable="false":

<string translatable="false" name="stringname">This string doesn't need translation</string>

解决这个问题 在 build.gradle (app) File Inside main Android { inside } 中使用这个

  buildTypes {
      //  crunchPngs false // or true   when png error
        release {
            lintOptions {
                checkReleaseBuilds false
                abortOnError false
            }
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

正如许多人所建议的那样,尝试从源头修复错误总是更好。 检查 lint 生成的文件

/app/build/reports/lint-results-release-fatal.html

阅读该文件,您将被引导到错误的来源。 看看我的:错误来自不正确的视图约束。

试试下面的代码

buildTypes {
    release {
        lintOptions {
            disable 'MissingTranslation'
            checkReleaseBuilds false
            abortOnError false
        }
        minifyEnabled false
        signingConfig signingConfigs.release
    }
}

Windows -> 参考 -> Android-> lint 错误检查。

取消勾选运行完全错误......

在此处输入图像描述

转到 build.gradle(Module:app)

lintOptions {
    checkReleaseBuilds false
    // Or, if you prefer, you can continue to check for errors in release builds,
    // but continue the build even when errors are found:
    abortOnError false
}

从清单中完全删除该语句,Eclipse 会即时为您处理。

就我而言,问题与 Google Play 所需的最低目标 API 级别有关。 它被设置为小于 26。

当我将最低目标 API 级别设置为 26 时,问题消失了。

不要禁用 lint 选项

检查 Lint 报告中的错误和警告

小路:

YourAppProjectFolder\app\build\reports

解决所有错误和警告:)

您应该在项目级 gradle 文件中添加代码以生成覆盖错误的 apk

    lintOptions {
      checkReleaseBuilds false
      abortOnError false
    }

上面的代码可以通过忽略它来解决问题,但它也可能导致应用程序崩溃。

好的答案在以下链接中:

生成签名的apk时出错

当我将Android Gradle Plugin Version更新为4.0.1并将Gradle version更新为6.1.1时,我遇到了这个问题。

如果有人赶时间,只需将Gradle Plugin Version降级为3.6.3 ,将Gradle version降级为5.6.4 它对我有用。

将 gradle 分发 url 升级为,

// android/gradle/wrapper/gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip

并将 buildscript -> 依赖项 -> 类路径升级到,

// android/build.gradle
classpath 'com.android.tools.build:gradle:7.0.0'

为我解决了这个问题

如果在 android{ 下添加 app.gradle

lintOptions {

    quiet true
    abortOnError false
}

}

它会得到工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM