ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

adb安装应用失败,错误码整理

2021-05-18 12:57:46  阅读:183  来源: 互联网

标签:int 错误码 final FAILED adb INSTALL static 安装 public


内容来自作者:帝龙至尊

链接:https://www.jianshu.com/p/65065b32bb50

来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


  • adb push XXX.apk 目录是将apk发送到手机指定的目录
    adb push test.apk /sdcard/test/test.apk

  • adb install 电脑中apk的路径是安装电脑中的apk到手机
    adb install /Users/test/test.apk

  • 强制安装有时候会出现Read-only的错误,我们可以使用强制安装命令来安装

    apkadb install -r /Users/test/test.apk


adb的安装过程分为传输与安装两步。
在出错后,adb会报告错误信息,但是信息可能只是一个代号,需要自己定位分析出错的原因

几种常见的错误及解决方法:

  • INSTALL_FAILED_INVALID_APK:无效的安装包,安装包已损坏
    请检查安装包是否完整。如果是xpk包,可以通过手动安装xpk来检测一下。如果是apk包,请重 新下载。

  • INSTALL_FAILED_OLDER_SDK:系统版本过低 当前程序不支持您的手机。

  • INSTALL_FAILED_INSUFFICIENT_STORAGE:没有足够的存储空间

  • INSTALL_FAILED_INVALID_INSTALL_LOCATION:无效的安装位置

  • INSTALL_CANCELED_BY_USER:系统禁止安装未知来源的应用
    这个要在Android系统设置里修改,勾选安全选项里的未知来源,允许安装。

  • INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES:安装包签名不一致
    这样的问题主要是签名冲突造成的,比如你使用了ADB的debug权限签名,但后来使用标准sign签名后再安装同一个文件会出现这样的错误提示,解决的方法除了只有先老老实实从手机上卸载原有版本再进行安装,而adb install -r参数也无法解决这个问题。

  • INSTALL_FAILED_INVALID_URI:应用为中文名, adb install
    中文.apk时出现此问题。修改为英文名就OK了。


错误基本是在 cmd 命令行安装时遇到的。

INSTALL_FAILED_ALREADY_EXISTS 程序已经存在
INSTALL_FAILED_INVALID_APK 无效的APK
INSTALL_FAILED_INVALID_URI 无效的链接
INSTALL_FAILED_INSUFFICIENT_STORAGE 没有足够的存储空间
INSTALL_FAILED_DUPLICATE_PACKAGE 已存在同名程序
INSTALL_FAILED_NO_SHARED_USER 要求的共享用户不存在
INSTALL_FAILED_UPDATE_INCOMPATIBLE 版本不能共存
INSTALL_FAILED_SHARED_USER_INCOMPATIBLE 需求的共享用户签名错误
INSTALL_FAILED_MISSING_SHARED_LIBRARY 需求的共享库已丢失
INSTALL_FAILED_REPLACE_COULDNT_DELETE 需求的共享库无效
INSTALL_FAILED_DEXOPT dex优化验证失败
INSTALL_FAILED_OLDER_SDK 系统版本过旧
INSTALL_FAILED_CONFLICTING_PROVIDER 存在同名的内容提供者
INSTALL_FAILED_NEWER_SDK 系统版本过新
INSTALL_FAILED_TEST_ONLY 调用者不被允许测试的测试程序
INSTALL_FAILED_CPU_ABI_INCOMPATIBLE 包含的本机代码不兼容
CPU_ABIINSTALL_FAILED_MISSING_FEATURE 使用了一个无效的特性
INSTALL_FAILED_CONTAINER_ERROR SD卡访问失败
INSTALL_FAILED_INVALID_INSTALL_LOCATION 无效的安装路径
INSTALL_FAILED_MEDIA_UNAVAILABLE SD卡不存在
INSTALL_FAILED_INTERNAL_ERROR 系统问题导致安装失败 DEFAULT
未知错误 INSTALL_FAILED_VERSION_DOWNGRADE
当前程序的版本低于已安装的程序CPU_ABIINSTALL_FAILED_MISSING_FEATURE 使用了一个无效的特性


安装APK的错误码android源码
安装APK的错误码,定义在android源码中的这个文件中:
frameworks\base\core\java\android\content\pm\PackageManager.java
/**

  • if the package is already installed.
  • 程序已经存在
    /
    public static final int INSTALL_FAILED_ALREADY_EXISTS = -1;
    /
    *
  • if the package archive file is invalid.
  • 无效的APK
    /
    public static final int INSTALL_FAILED_INVALID_APK = -2;
    /
    *
  • if the URI passed in is invalid.
  • 无效的链接
    /
    public static final int INSTALL_FAILED_INVALID_URI = -3;
    /
    *
  • if the package manager service found that the device
  • didn’t have enough storage space to install the app.
  • 没有足够的存储空间
    /
    public static final int INSTALL_FAILED_INSUFFICIENT_STORAGE = -4;
    /
    *
  • if a package is already installed with the same name.
  • 已存在同名程序
    /
    public static final int INSTALL_FAILED_DUPLICATE_PACKAGE = -5;
    /
    *
  • if the requested shared user does not exist.
  • 共享用户不存在
    /
    public static final int INSTALL_FAILED_NO_SHARED_USER = -6;
    /
    *
  • if a previously installed package of the same name has a different signature
  • than the new package (and the old package’s data was not removed).
  • 更新不兼容
    /
    public static final int INSTALL_FAILED_UPDATE_INCOMPATIBLE = -7;
    /
    *
  • if the new package is requested a shared user which is already installed
  • on the device and does not have matching signature.
  • 共享用户不兼容
    /
    public static final int INSTALL_FAILED_SHARED_USER_INCOMPATIBLE = -8;
    /
    *
  • if the new package uses a shared library that is not available.
  • 共享库已丢失
    /
    public static final int INSTALL_FAILED_MISSING_SHARED_LIBRARY = -9;
    /
    *
  • if the new package uses a shared library that is not available.
  • 替换时无法删除
    /
    public static final int INSTALL_FAILED_REPLACE_COULDNT_DELETE = -10;
    /
    *
  • if the new package failed while optimizing and validating its dex files,
  • either because there was not enough storage or the validation failed.
  • 空间不足或验证失败
    /
    public static final int INSTALL_FAILED_DEXOPT = -11;
    /
    *
  • if the new package failed because the current SDK version is older than
  • that required by the package.
  • 系统版本过旧
    /
    public static final int INSTALL_FAILED_OLDER_SDK = -12;
    /
    *
  • if the new package failed because it contains a content provider with the
  • same authority as a provider already installed in the system.
  • 存在同名的内容提供者
    /
    public static final int INSTALL_FAILED_CONFLICTING_PROVIDER = -13;
    /
    *
  • if the new package failed because the current SDK version is newer than
  • that required by the package.
  • 系统版本过新
    /
    public static final int INSTALL_FAILED_NEWER_SDK = -14;
    /
    *
  • if the new package failed because it has specified that it is a test-only
  • package and the caller has not supplied the {@link #INSTALL_ALLOW_TEST}
  • flag.
  • 调用者不被允许测试的测试程序
    /
    public static final int INSTALL_FAILED_TEST_ONLY = -15;
    /
    *
  • if the package being installed contains native code, but none that is
  • compatible with the the device’s CPU_ABI.
  • 包含的本机代码不兼容CPU_ABI
    /
    public static final int INSTALL_FAILED_CPU_ABI_INCOMPATIBLE = -16;
    /
    *
  • if the new package uses a feature that is not available.
  • 使用了一个无效的特性
    /
    public static final int INSTALL_FAILED_MISSING_FEATURE = -17;
    // ------ Errors related to sdcard
    /
    *
  • if a secure container mount point couldn’t be accessed on external media.
  • SD卡访问失败
    /
    public static final int INSTALL_FAILED_CONTAINER_ERROR = -18;
    /
    *
  • if the new package couldn’t be installed in the specified install location.
  • 无效的安装路径
    /
    public static final int INSTALL_FAILED_INVALID_INSTALL_LOCATION = -19;
    /
    *
  • if the new package couldn’t be installed in the specified install
  • location because the media is not available.
  • SD卡不可用
    /
    public static final int INSTALL_FAILED_MEDIA_UNAVAILABLE = -20;
    /
    *
  • if the new package couldn’t be installed because the verification timed out.
  • 验证超时
    /
    public static final int INSTALL_FAILED_VERIFICATION_TIMEOUT = -21;
    /
    *
  • if the new package couldn’t be installed because the verification did not succeed.
  • 验证失败
    /
    public static final int INSTALL_FAILED_VERIFICATION_FAILURE = -22;
    /
    *
  • if the package changed from what the calling program expected.
  • 预期的应用被改变
    /
    public static final int INSTALL_FAILED_PACKAGE_CHANGED = -23;
    /
    *
  • if the parser was given a path that is not a file, or does not end
  • with the expected ‘.apk’ extension.
  • 解析失败,不是APK
    /
    public static final int INSTALL_PARSE_FAILED_NOT_APK = -100;
    /
    *
  • if the parser was unable to retrieve the AndroidManifest.xml file.
  • 解析失败,无法提取Manifest
    /
    public static final int INSTALL_PARSE_FAILED_BAD_MANIFEST = -101;
    /
    *
  • if the parser encountered an unexpected exception.
  • 解析失败,无法预期的异常
    /
    public static final int INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION = -102;
    /
    *
  • if the parser did not find any certificates in the .apk.
  • 解析失败,找不到证书
    /
    public static final int INSTALL_PARSE_FAILED_NO_CERTIFICATES = -103;
    /
    *
  • if the parser found inconsistent certificates on the files in the .apk.
  • 解析失败,证书不一致
    /
    public static final int INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES = -104;
    /
    *
  • if the parser encountered a CertificateEncodingException in one of the
  • files in the .apk.
  • 解析失败,证书编码异常
    /
    public static final int INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING = -105;
    /
    *
  • if the parser encountered a bad or missing package name in the manifest.
  • 解析失败,manifest中的包名错误或丢失
    /
    public static final int INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME = -106;
    /
    *
  • if the parser encountered a bad shared user id name in the manifest.
  • 解析失败,manifest中的共享用户错误
    /
    public static final int INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID = -107;
    /
    *
  • if the parser encountered some structural problem in the manifest.
  • 解析失败,manifest中出现结构性错误
    /
    public static final int INSTALL_PARSE_FAILED_MANIFEST_MALFORMED = -108;
    /
    *
  • if the parser did not find any actionable tags (instrumentation or application)
  • in the manifest.
  • 解析失败,manifest中没有actionable tags
    /
    public static final int INSTALL_PARSE_FAILED_MANIFEST_EMPTY = -109;
    /
    *
  • if the system failed to install the package because of system issues.
  • 系统问题导致安装失败
    */
    public static final int INSTALL_FAILED_INTERNAL_ERROR = -110;

作者:帝龙至尊
链接:https://www.jianshu.com/p/65065b32bb50
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

标签:int,错误码,final,FAILED,adb,INSTALL,static,安装,public
来源: https://blog.csdn.net/qq_37262698/article/details/116982993

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有