如何在调试时解决小米/红米/MIUI的INSTALL_PARSE_FAILED_NO_CERTIFICATES错误?

10

只有在使用小米红米Note 7(pie)时才出现此错误消息。我之前使用的手机是红米2,仍然可以正常工作。我尝试从Flutter或Android Studio项目进行调试,仍然得到相同的错误。当我想要尝试将调试切换到我的朋友的三星A50手机时,它完美地工作。

我尝试了这个答案中的任何方法,但对我都不起作用。

来自Flutter

Error: ADB exited with exit code 1
Performing Streamed Install

adb: failed to install D:\pks\flutter\delisia\build\app\outputs\apk\app.apk: Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES: Failed to collect certificates from /data/app/vmdl1357086466.tmp/base.apk using APK Signature Scheme v2: SHA-256 digest of contents did not verify]
Error launching application on Redmi Note 7.

来自Android Studio

11:12 AM    Session 'app': Installation did not succeed.
                    The application could not be installed: INSTALL_PARSE_FAILED_NO_CERTIFICATES
                    Retry

11:14 AM    Executing tasks: [:app:assembleDebug] in project D:\kuliah\Aplikasi\MoLearn

11:14 AM    Gradle build finished in 7 s 93 ms

11:14 AM    Failed to commit install session 652017913 with command cmd package install-commit 652017913. Error: INSTALL_PARSE_FAILED_NO_CERTIFICATES: Failed to collect certificates from /data/app/vmdl652017913.tmp/0_app-debug using APK Signature Scheme v2: SHA-256 digest of contents did not verify

11:14 AM    Session 'app': Installation did not succeed.
                    The application could not be installed: INSTALL_PARSE_FAILED_NO_CERTIFICATES
                    Retry

所以,我可以使用手机进行调试,但我只能从模拟器nox上进行调试,速度非常慢。 但是我不知道为什么有时候应用程序已经安装在我的红米Note 7手机上,当我尝试更新一些代码时,应用程序会自动卸载并再次显示错误。

我可以从Play商店下载我的应用,但这是一个发布的应用程序,我无法从中进行调试。


你是否正在使用多个用户或已经安装了一个应用程序。如果是这样,请卸载它。 - Dev
在应用商店中的那个程序正在使用多个用户。但是即使我创建一个只显示“hello world”的新项目,错误仍然存在。但是当我在模拟器或旧手机上运行它时一切正常;v. - Nanda R.M
切换到其他用户并从所有用户中卸载该应用。 - Dev
我也一样。我重新启动了我的小米手机,问题看起来解决了,但是再次运行时又出现了错误。如何解决这个问题? - H Zan
6个回答

17

前往手机开发者选项。

打开/关闭USB调试期间验证应用程序 输入图像描述


我在禁用应用程序后开始构建它。谢谢。 - Mohd Shahid
我在使用模拟器时遇到了这个问题,其中这个设置已经被禁用。 - Marian Klühspies

9
在我的情况下,当我尝试以发布模式运行Flutter(flutter run --release)时,出现了这个错误,因为我的应用程序级别的构建gradle(..android/app/build.gradle)没有设置正确。
您需要确保在“android”对象内部有“signingConfigs”对象,并且还设置了相应的“buildType”。
例如:
android {
    compileSdkVersion 30

    lintOptions {
        disable 'InvalidPackage'
    }

    signingConfigs {
        release {
            storeFile file('<path to key store file>')
            storePassword '<key store password>'
            keyAlias '<key alias>'
            keyPassword '<key password>'
        }
        debug {
            storeFile file('<path to key store file>')
            storePassword '<key store password>'
            keyAlias '<key alias>'
            keyPassword '<key password>'
        }
    }  

    defaultConfig {
        applicationId "XXXXXXXXXXX"
        minSdkVersion 21
        targetSdkVersion 30
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
    }

    buildTypes {
        release {
            signingConfig signingConfigs.release
        }
        debug {
            signingConfig signingConfigs.debug
        }
    }
}

4

在你的android/app/build.gradle文件中,在android部分的底部添加构建类型:

android{
  ...
   buildTypes {
    release {
        signingConfig signingConfigs.debug
    }
   }
}

如果要发布,您可能需要将 .debug 更改为 .release。这解决了我的问题 :D


0
在我的情况下,这是由于更新了Android Studio 4.0。升级Flutter和Pubs对我有用:
flutter upgrade
flutter pub upgrade

0
如果您使用Android Studio并使用Nox作为模拟器,请至少调整SDK版本! 如果NOX使用SDK版本22,请将gradle设置中的最小SDK更改为版本22! 希望能帮到您:D

0

只需前往手机开发者设置。

  1. 打开调试模式(您已经完成)
  2. 打开USB安装选项。
  3. 更改MIUI优化设置(开发者选项中的最后一项)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接