当前位置: 首页 > 知识库问答 >
问题:

生成的签名捆绑包/APK-Lint在组装发布目标时发现致命错误

封瑞
2023-03-14

我正在尝试生成签名的apk,但出现以下错误:

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\build\reports\命名为\lint结果发布致命。包含错误原因的html

Duplicate Platform Classes
../../build.gradle: commons-logging defines classes that conflict with classes now provided by Android. Solutions include finding newer versions or alternative libraries that don't have the same problem (for example, for httpclient use HttpUrlConnection or `okhttp` instead), or repackaging the library using something like jarjar.
../../build.gradle: `httpclient` defines classes that conflict with classes now provided by Android. Solutions include finding newer versions or alternative libraries that don't have the same problem (for example, for `httpclient` use HttpUrlConnection or `okhttp` instead), or repackaging the library using something like jarjar.

对不起,如果阅读可能会很无聊,但我试图一步一步地解释。。。

所以我一直在寻找,直到我被这个问题卡住了。基本上,建议是添加这两行代码来排除重复的类:

configurations {
    all {
        exclude module: 'httpclient'
        exclude module: 'commons-logging'
    }
}

不幸的是,有一个问题,当我再次编译应用程序时,我得到了一个无法解决的错误:

error: cannot access ContentType
class file for org.apache.http.entity.ContentType not found

我真的认为http客户端模块的排除和上面报告的错误是有联系的,但是我可能错了...

以下是一些有用的信息:

Android Studio 3.5.1
Build #AI-191.8026.42.35.5900203, built on September 25, 2019
JRE: 1.8.0_202-release-1483-b03 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 10 10.0

再次感谢您阅读到这里,如果您有解决方案或建议,欢迎!

14:54 05/11/19

添加其他信息,可以让您更好地了解情况

compileSdkVersion 28
defaultConfig {
    applicationId "com.example.app"
    minSdkVersion 22
    targetSdkVersion 28
    versionCode 2
    versionName "21.19.08.27"
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    multiDexEnabled true
}

16:35 05/11/2019

这里有依赖项

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'androidx.recyclerview:recyclerview:1.0.0'
    implementation 'androidx.recyclerview:recyclerview-selection:1.0.0'
    implementation 'androidx.cardview:cardview:1.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

    implementation 'com.google.android.material:material:1.1.0-alpha07'
    implementation 'com.google.code.gson:gson:2.8.5'

    implementation 'com.williamww:silky-signature:0.1.0'
    implementation 'com.afollestad.material-dialogs:core:0.9.1.0'
    implementation 'com.weiwangcn.betterspinner:library-material:1.1.0'
    implementation 'com.weiwangcn.betterspinner:library:1.1.0'

    implementation 'org.apache.httpcomponents:httpmime:4.3.6'

    implementation 'com.ajts.androidmads.sqliteimpex:library:1.0.0'

    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

10:14 08/11/2019

之前我没有提到useGallery'org.apache.http.legacy'的使用

10:22 11/11/2019

我已经创建了以下github项目中出现的错误的副本。

因此,我的目标是能够编译和使用以下类:

import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.InputStreamBody;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;

共有3个答案

汪高岑
2023-03-14

应用程序级别gradle中添加此

 buildTypes {
        lintOptions {
            checkReleaseBuilds false
        }
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

盖斌
2023-03-14

衷心感谢所有回答这个问题的人。

移除皮棉控制装置从来不是一个好的解决方案,多亏了Martin Zeitler,我才能够解决这个问题。

实际上,通过修改依赖关系,我成功地解决了这个问题:

org.apache.http.legacy代码

dependencies {

    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'androidx.recyclerview:recyclerview:1.0.0'
    implementation 'androidx.recyclerview:recyclerview-selection:1.0.0'
    implementation 'androidx.cardview:cardview:1.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

    implementation 'com.google.android.material:material:1.1.0-alpha07'
    implementation 'com.google.code.gson:gson:2.8.5'

    implementation 'com.williamww:silky-signature:0.1.0'
    implementation 'com.afollestad.material-dialogs:core:0.9.1.0'
    implementation 'com.weiwangcn.betterspinner:library-material:1.1.0'
    implementation 'com.weiwangcn.betterspinner:library:1.1.0'

    implementation 'org.apache.httpcomponents:httpclient-android:4.3.5'

    implementation('org.apache.httpcomponents:httpmime:4.3.6') {
        exclude module: 'httpclient'
    }

    implementation 'com.ajts.androidmads.sqliteimpex:library:1.0.0'

    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

问题和解决方案之间的区别如下:

implementation 'org.apache.httpcomponents:httpclient-android:4.3.5'

implementation('org.apache.httpcomponents:httpmime:4.3.6') {
    exclude module: 'httpclient'
}
爱琪
2023-03-14

禁用Lint不是一个解决方案;最好完全删除重复的依赖:

implementation "org.apache.httpcomponents:httpmime:4.3.6"

而是以预期的方式提供(“遗产”适用于Android应用编程接口级别

useLibrary "org.apache.http.legacy"

或者,只需使用HttpURLConnectionOkHttpRetromet

也可以使用org.apache.httpcomponents,但不能同时使用两个包。

快一点

implementation "org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2"
 类似资料:
  • 我的错误与这个问题中的错误相同,但lint结果中没有任何错误。答案是xml(或htlm)。怎么可能呢?Lint在组装发布目标时发现了致命错误。 若要继续,请修复lint确定的问题,或按以下方式修改构建脚本:

  • 我尝试获取应用程序的apk。我以前做得很好。但是,我今天尝试使用其他应用程序的get apk,但它没有给我发布apk。为什么? 我遵循这些步骤:在这里输入链接描述 通常,它需要2-3分钟,但现在它只持续3秒钟,而且不会产生apk 上面写着: 此版本中使用了已弃用的Gradle功能,使其与Gradle 6.0不兼容。使用“--warding-mode all”来显示单独的弃用警告。请参阅https:

  • 大约34小时前,我生成了一个签名的apk,但现在,我无法生成一个签名的apk,我不知道如何解决这个问题。请帮忙 这是我的输出消息 > 错误:任务“:app:LintVitalRelease”执行失败。 尝试:使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出。使用--scan运行以获得完整的见解。 这是我的Build.Gradle(应用程

  • 我在生成签名apk时遇到麻烦。屏幕上显示的Lint错误以下错误显示所有com.android.support库都必须使用完全相同的版本规范(混合版本可能导致运行时崩溃)。找到的版本28.0.0, 27.1.0。示例包括“com.android.support:动画-矢量-绘图:28.0.0”和“com.android.support:exif界面:27.1.0” 构建中的依赖关系。gradle文件

  • 问题内容: 我试图将我的apk上传到Google Play上,并遇到错误消息:“您上传了可调试的APK。出于安全原因,您需要先禁用调试,然后才能在Google Play中发布。了解有关可调试的APK的更多信息。” 然后我在清单中写信,然后再试一次。我遇到了相同的错误,因此我将模块的build变量设置为release,并尝试再次生成apk,但是这次生成了此错误: 问题答案: 我不建议您关闭皮棉检查,