You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Marshmallow设备安装APK遇解析错误,Nougat设备正常求助

APK解析错误仅在Android 6.0(Marshmallow)出现,7.0+正常运行

问题详情

用户反馈:自己的APK在Android 7.0及以上设备能正常安装运行,但在Android 6.0设备上安装时弹出解析错误。相关配置及报错信息如下:

项目Build配置:

android {
    compileSdkVersion 23
    buildToolsVersion "25.0.0"
    defaultConfig {
        applicationId "com.graymatic.gmind.mylook"
        minSdkVersion 15
        targetSdkVersion 21
        versionCode 1
        versionName "1.4"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }
}

系统报错日志:

/PackageManager: Failed collect during installPackageLI
android.content.pm.PackageParser$PackageParserException: Package /data/app/vmdl1108144592.tmp/base.apk has no certificates at entry AndroidManifest.xml
    at android.content.pm.PackageParser.collectCertificates(PackageParser.java:1176)
    at android.content.pm.PackageParser.collectCertificates(PackageParser.java:1130)
    at com.android.server.pm.PackageManagerService.installPackageLI(PackageManagerService.java:13205)
    at com.android.server.pm.PackageManagerService.access$3600(PackageManagerService.java:327)
    at com.android.server.pm.PackageManagerService$10.run(PackageManagerService.java:11017)
    at android.os.Handler.handleCallback(Handler.java:743)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:150)
    at android.os.HandlerThread.run(HandlerThread.java:61)
    at com.android.server.ServiceThread.run(ServiceThread.java:46)

解决方案

从报错信息has no certificates at entry AndroidManifest.xml可以看出,核心问题是Marshmallow系统对APK签名的校验未通过——这个版本的系统在签名验证逻辑上比Nougat及以后更严格,尤其是开启MultiDex的场景。下面是几个经过验证的解决办法:

  • 重新签名APK,确保签名完整
    先确认你使用的是有效的正式签名密钥(避免用临时debug密钥,或者签名过程被中断)。可以手动重新签名并对齐APK:

    # 执行签名操作
    jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore 你的密钥库路径.jks 待签名APK路径.apk 密钥别名
    # 签名后执行对齐(必须在签名之后操作,否则会破坏签名)
    zipalign -v 4 签名后的APK路径.apk 对齐后的APK路径.apk
    

    用重新处理后的APK在Marshmallow设备上测试,大概率能解决问题。

  • 调整Build配置的版本兼容性
    你的compileSdkVersion(23)和buildToolsVersion(25.0.0)版本不匹配,这可能导致构建出的APK在低版本系统上签名校验异常。建议:

    • 把compileSdkVersion升级到25,和buildToolsVersion保持一致;
    • 或者将buildToolsVersion降级到23.0.3(对应compileSdkVersion 23的稳定版本)。
      另外,开启multiDexEnabled true后,要确保Application类正确配置MultiDex:如果你的自定义Application没有继承MultiDexApplication,需要在attachBaseContext方法中添加MultiDex.install(this);。
  • 清理缓存后重新构建项目
    有时候Android Studio的缓存构建文件会导致签名异常,按以下步骤操作:

    1. 点击菜单栏Build > Clean Project;
    2. 再点击Build > Rebuild Project;
    3. 重新生成签名APK,不要使用之前的旧构建产物。
  • 避免APK被篡改
    确认APK生成后没有被压缩工具(如WinRAR、7-Zip)打开并修改过,哪怕只是打开后直接保存,都可能破坏APK的签名结构。直接使用Android Studio生成的签名包,或者通过Gradle命令./gradlew assembleRelease生成的包进行测试。

内容的提问来源于stack exchange,提问作者Uma Achanta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:23:15