生成签名apk时出错

use*_*366 209 java android gradle

我试图在google play上传我的apk并遇到错误消息:"你上传了一个可调试的APK.出于安全考虑,你需要先禁用调试才能在Google Play上发布.了解有关debuggable APK的更多信息."

然后我android:debuggable="false"在我的清单中写道并再次尝试.我遇到了同样的错误,所以我从我的模块中选择了构建版本来释放并再次生成一个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
      }
  }
  ...
Run Code Online (Sandbox Code Playgroud)

Gra*_*ung 357

我不建议关掉皮棉检查,他们是有原因的.相反,检查错误是什么并修复它.

错误报告将保存到[app module]/build/reports/lint-results-yourBuildName-fatal.html.您可以在浏览器中打开此文件以阅读有关错误的信息.

如果Gradle可以更清楚地生成错误报告,那将是很好的.

  • 同意,纠正错误要好得多!也可以使用`gradlew lint`或通过IDE手动生成报告,请参阅https://developer.android.com/studio/write/lint (8认同)
  • 是的,当它说"解决由lint识别的问题"但实际上没有显示那些错误或报告路径时,它非常烦人... (6认同)
  • 这必须是公认的答案.禁用lint不是一个好的解决方案. (6认同)
  • 是的,正确的方向.此外,html中的错误报告得到了很好的描述,并且错误得到了解决,所以我只是轻松地纠正了它们! (3认同)
  • 谢谢我的布局文件中有错误 (2认同)

小智 178

我有这个问题并通过添加来解决它

lintOptions { 

    checkReleaseBuilds false

}
Run Code Online (Sandbox Code Playgroud)

到我build.grade在该android{ }部分的文件.

  • *警告:*这只是禁用lint检查.最好在禁用它们之前至少查看错误.就我而言,它们是针对特定语言的一些缺失字符串.点击"分析" - >"检查代码......" (13认同)
  • 不,脱掉棉绒不会对应用造成任何副作用.Lint是一个代码分析工具,可以在build/outputs文件夹的"lint-results-release-fatal.html"文件中详细查看由设置debuggable属性引起的错误. (9认同)
  • 我不建议这样做。以我为例,忽略这些警告会导致运行时由于缺少资源而导致崩溃。请查看lint-results-release-fatal.html并解决所有问题。 (2认同)

Jos*_*osi 67

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

    /app/build/reports/lint-results-release-fatal.html or 
    /app/build/reports/lint-results-release-fatal.xml
Run Code Online (Sandbox Code Playgroud)

并修复它.

  • 这比忽略错误并继续前进要好得多。而且这个HTML文件很容易理解这个问题。 (2认同)

Rob*_*rto 50

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


小智 38

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

希望这可以帮助!

  • 两个文件对我来说都是空的。 (3认同)

Dhr*_*val 34

从android studio创建签名的apk时我遇到了同样的问题.我只是在android {}内的build.gradle文件上稍微改变一下

lintOptions {
        checkReleaseBuilds false
        abortOnError false
    }
Run Code Online (Sandbox Code Playgroud)


小智 20

***Try this***

 buildTypes {
        release {
            lintOptions {
                disable 'MissingTranslation'
                checkReleaseBuilds false
                abortOnError false
            }
            minifyEnabled false
            signingConfig signingConfigs.release
        }
    }
Run Code Online (Sandbox Code Playgroud)


Mat*_*ski 16

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

  • 这是实际的答案,在应用程序中进行汇编,在gradle窗口中通过双击运行它,Android studio将告诉您它正在弹出的内容. (4认同)

Mik*_*ail 16

如何查找错误详细信息

Anylyze->检查代码

在此处输入图片说明

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

在此处输入图片说明

就我而言,由于Google IAP中未解析的Javadoc引用,构建失败

  • 这应该是公认的答案。对于所有建议禁用 lint 检查的人来说,这只是一种解决方法。修复错误总比跳过它好。跳过 lint 检查应该只在非常特殊的情况下进行,而不是一直进行。同样,这应该很少甚至根本不应该做。 (3认同)

小智 9

在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
}
Run Code Online (Sandbox Code Playgroud)


Ami*_*emi 8

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

yourProject/app/build/reports/lint-results-release-fatal.xml
Run Code Online (Sandbox Code Playgroud)


小智 7

我的问题是缺少翻译.我有一个由于不需要而没有翻译的settings.xml,所以我不得不在字符串中添加"translatable ="false":

此字符串不需要翻译


小智 7

在此处输入图片说明

在 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
}
Run Code Online (Sandbox Code Playgroud)


小智 6

大家好,这对我有用,我只是这样修改我的BuildType:

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'
        }
    }
Run Code Online (Sandbox Code Playgroud)


tom*_*Dev 5

我的问题是缺少翻译.我有一个由于不需要而没有翻译的settings.xml,所以我不得不在字符串中添加"translatable ="false":

<string translatable="false" name="stringname">This string doesn't need translation</string>
Run Code Online (Sandbox Code Playgroud)


Kes*_*era 5

解决这个问题 在 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'
        }
    }
Run Code Online (Sandbox Code Playgroud)