android开发apk安装失败对应的错误码以及原因

android开发apk安装失败对应的错误码以及原因
代码在PackageManager.java系统类里
中文意思可参考:https://www.cnblogs.com/cwfsoft/p/11776094.html
/**
 * @hide	未知
 */
public static final int INSTALL_UNKNOWN = 0;

/**
 * Installation return code: this is passed in the {@link PackageInstaller#EXTRA_LEGACY_STATUS}
 * on success.
 *
 * @hide	成功
 */
@SystemApi
public static final int INSTALL_SUCCEEDED = 1;

/**
 * Installation return code: this is passed in the {@link PackageInstaller#EXTRA_LEGACY_STATUS}
 * if the package is already installed.
 *
 * @hide	已经存在
 */
@SystemApi
public static final int INSTALL_FAILED_ALREADY_EXISTS = -1;

/**
 * Installation return code: this is passed in the {@link PackageInstaller#EXTRA_LEGACY_STATUS}
 * if the package archive file is invalid.
 *
 * @hide	无效apk
 */
@SystemApi
public static final int INSTALL_FAILED_INVALID_APK = -2;

/**
 * Installation return code: this is passed in the {@link PackageInstaller#EXTRA_LEGACY_STATUS}
 * if the URI passed in is invalid.
 *
 * @hide	无效uri
 */
@SystemApi
public static final int INSTALL_FAILED_INVALID_URI = -3;

/**
 * Installation return code: this is passed in the {@link PackageInstaller#EXTRA_LEGACY_STATUS}
 * if the package manager service found that the device didn't have enough storage space to
 * install the app.
 *
 * @hide	空间不足
 */
@SystemApi
public static final int INSTALL_FAILED_INSUFFICIENT_STORAGE = -4;

/**
 * Installation return code: this is passed in the {@link PackageInstaller#EXTRA_LEGACY_STATUS}
 * if a package is already installed with the same name.
 *
 * @hide	同包名已存在
 */
@SystemApi
public static final int INSTALL_FAILED_DUPLICATE_PACKAGE = -5;

/**
 * Installation return code: this is passed in the {@link PackageInstaller#EXTRA_LEGACY_STATUS}
 * if the requested shared user does not exist.
 *
 * @hide	共享用户不存在
 */
@SystemApi
public static final int INSTALL_FAILED_NO_SHARED_USER = -6;

/**
 * Installation return code: this is passed in the {@link PackageInstaller#EXTRA_LEGACY_STATUS}
 * 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).
 *
 * @hide	更新不兼容
 */
@SystemApi
public static final int INSTALL_FAILED_UPDATE_INCOMPATIBLE = -7;

/**
 * Installation return code: this is passed in the {@link PackageInstaller#EXTRA_LEGACY_STATUS}
 * if the new package is requested a shared user which is already installed on the device and
 * does not have matching signature.
 *
 * @hide	签名不兼容
 */
@SystemApi
public static final int INSTALL_FAILED_SHARED_USER_INCOMPATIBLE = -8;

/**
 * Installation return code: this is passed in the {@link PackageInstaller#EXTRA_LEGACY_STATUS}
 * if the new package uses a shared library that is not available.
 *
 * @hide	共享库缺失
 */
@SystemApi
public static final int INSTALL_FAILED_MISSING_SHARED_LIBRARY = -9;

/**
 * Installation return code: this is passed in the {@link PackageInstaller#EXTRA_LEGACY_STATUS}
 * when the package being replaced is a system app and the caller didn't provide the
 * {@link #DELETE_SYSTEM_APP} flag.
 *
 * @hide	替换系统app但缺少DELETE_SYSTEM_APP
 */
@SystemApi
public static final int INSTALL_FAILED_REPLACE_COULDNT_DELETE = -10;

/**
 * Installation return code: this is passed in the {@link PackageInstaller#EXTRA_LEGACY_STATUS}
 * if the new package failed while optimizing and validating its dex files, either because there
 * was not enough storage or the validation failed.
 *
 * @hide	dexopt失败可能是空间不足或者校验失败
 */
@SystemApi
public static final int INSTALL_FAILED_DEXOPT = -11;

/**
 * Installation return code: this is passed in the {@link PackageInstaller#EXTRA_LEGACY_STATUS}
 * if the new package failed because the current SDK version is older than that required by the
 * package.
 *
 * @hide	更低sdk版本
 */
@SystemApi
public static final int INSTALL_FAILED_OLDER_SDK = -12;

/**
 * Installation return code: this is passed in the {@link PackageInstaller#EXTRA_LEGACY_STATUS}
 * if the new package failed because it contains a content provider with the same authority as a
 * provider already installed in the system.
 *
 * @hide
 */
@SystemApi
public static final int INSTALL_FAILED_CONFLICTING_PROVIDER = -13;

/**
 * Installation return code: this is passed in the {@link PackageInstaller#EXTRA_LEGACY_STATUS}
 * if the new package failed because the current SDK version is newer than that required by the
 * package.
 *
 * @hide
 */
@SystemApi
public static final int INSTALL_FAILED_NEWER_SDK = -14;

/**
 * Installation return code: this is passed in the {@link PackageInstaller#EXTRA_LEGACY_STATUS}
 * 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.
 *
 * @hide	test-only,直接拖出来安装一般会出现,解决方法:对apk签名或者adb install -t
 */
@SystemApi
public static final int INSTALL_FAILED_TEST_ONLY = -15;

/**
 * Installation return code: this is passed in the {@link PackageInstaller#EXTRA_LEGACY_STATUS}
 * if the package being installed contains native code, but none that is compatible with the
 * device's CPU_ABI.
 *
 * @hide
 */
@SystemApi
public static final int INSTALL_FAILED_CPU_ABI_INCOMPATIBLE = -16;

/**
 * Installation return code: this is passed in the {@link PackageInstaller#EXTRA_LEGACY_STATUS}
 * if the new package uses a feature that is not available.
 *
 * @hide
 */
@SystemApi
public static final int INSTALL_FAILED_MISSING_FEATURE = -17;

// ------ Errors related to sdcard
/**
 * Installation return code: this is passed in the
 * {@link PackageInstaller#EXTRA_LEGACY_STATUS} if a secure container mount point couldn't be
 * accessed on external media.
 *
 * @hide
 */
@SystemApi
public static final int INSTALL_FAILED_CONTAINER_ERROR = -18;

/**
 * Installation return code: this is passed in the {@link PackageInstaller#EXTRA_LEGACY_STATUS}
 * if the new package couldn't be installed in the specified install location.
 *
 * @hide
 */
@SystemApi
public static final int INSTALL_FAILED_INVALID_INSTALL_LOCATION = -19;

/**
 * Installation return code: this is passed in the {@link PackageInstaller#EXTRA_LEGACY_STATUS}
 * if the new package couldn't be installed in the specified install location because the media
 * is not available.
 *
 * @hide
 */
@SystemApi
public static final int INSTALL_FAILED_MEDIA_UNAVAILABLE = -20;

/**
 * Installation return code: this is passed in the {@link PackageInstaller#EXTRA_LEGACY_STATUS}
 * if the new package couldn't be installed because the verification timed out.
 *
 * @hide
 */
@SystemApi
public static final int INSTALL_FAILED_VERIFICATION_TIMEOUT = -21;

/**
 * Installation return code: this is passed in the {@link PackageInstaller#EXTRA_LEGACY_STATUS}
 * if the new package couldn't be installed because the verification did not succeed.
 *
 * @hide
 */
@SystemApi
public static final int INSTALL_FAILED_VERIFICATION_FAILURE = -22;

/**
 * Installation return code: this is passed in the {@link PackageInstaller#EXTRA_LEGACY_STATUS}
 * if the package changed from what the calling program expected.
 *
 * @hide
 */
@SystemApi
public static final int INSTALL_FAILED_PACKAGE_CHANGED = -23;

/**
 * Installation return code: this is passed in the {@link PackageInstaller#EXTRA_LEGACY_STATUS}
 * if the new package is assigned a different UID than it previously held.
 *
 * @hide
 */
public static final int INSTALL_FAILED_UID_CHANGED = -24;

/**
 * Installation return code: this is passed in the {@link PackageInstaller#EXTRA_LEGACY_STATUS}
 * if the new package has an older version code than the currently installed package.
 *
 * @hide
 */
public static final int INSTALL_FAILED_VERSION_DOWNGRADE = -25;

/**
 * Installation return code: this is passed in the {@link PackageInstaller#EXTRA_LEGACY_STATUS}
 * if the old package has target SDK high enough to support runtime permission and the new
 * package has target SDK low enough to not support runtime permissions.
 *
 * @hide
 */
@SystemApi
public static final int INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE = -26;

/**
 * Installation return code: this is passed in the {@link PackageInstaller#EXTRA_LEGACY_STATUS}
 * if the new package attempts to downgrade the target sandbox version of the app.
 *
 * @hide
 */
@SystemApi
public static final int INSTALL_FAILED_SANDBOX_VERSION_DOWNGRADE = -27;

/**
 * Installation return code: this is passed in the {@link PackageInstaller#EXTRA_LEGACY_STATUS}
 * if the new package requires at least one split and it was not provided.
 *
 * @hide
 */
public static final int INSTALL_FAILED_MISSING_SPLIT = -28;

/**
 * Installation parse return code: this is passed in the
 * {@link PackageInstaller#EXTRA_LEGACY_STATUS} if the parser was given a path that is not a
 * file, or does not end with the expected '.apk' extension.
 *
 * @hide
 */
@SystemApi
public static final int INSTALL_PARSE_FAILED_NOT_APK = -100;

/**
 * Installation parse return code: this is passed in the
 * {@link PackageInstaller#EXTRA_LEGACY_STATUS} if the parser was unable to retrieve the
 * AndroidManifest.xml file.
 *
 * @hide
 */
@SystemApi
public static final int INSTALL_PARSE_FAILED_BAD_MANIFEST = -101;

/**
 * Installation parse return code: this is passed in the
 * {@link PackageInstaller#EXTRA_LEGACY_STATUS} if the parser encountered an unexpected
 * exception.
 *
 * @hide
 */
@SystemApi
public static final int INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION = -102;

/**
 * Installation parse return code: this is passed in the
 * {@link PackageInstaller#EXTRA_LEGACY_STATUS} if the parser did not find any certificates in
 * the .apk.
 *
 * @hide
 */
@SystemApi
public static final int INSTALL_PARSE_FAILED_NO_CERTIFICATES = -103;

/**
 * Installation parse return code: this is passed in the
 * {@link PackageInstaller#EXTRA_LEGACY_STATUS} if the parser found inconsistent certificates on
 * the files in the .apk.
 *
 * @hide
 */
@SystemApi
public static final int INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES = -104;

/**
 * Installation parse return code: this is passed in the
 * {@link PackageInstaller#EXTRA_LEGACY_STATUS} if the parser encountered a
 * CertificateEncodingException in one of the files in the .apk.
 *
 * @hide
 */
@SystemApi
public static final int INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING = -105;

/**
 * Installation parse return code: this is passed in the
 * {@link PackageInstaller#EXTRA_LEGACY_STATUS} if the parser encountered a bad or missing
 * package name in the manifest.
 *
 * @hide
 */
@SystemApi
public static final int INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME = -106;

/**
 * Installation parse return code: tthis is passed in the
 * {@link PackageInstaller#EXTRA_LEGACY_STATUS} if the parser encountered a bad shared user id
 * name in the manifest.
 *
 * @hide
 */
@SystemApi
public static final int INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID = -107;

/**
 * Installation parse return code: this is passed in the
 * {@link PackageInstaller#EXTRA_LEGACY_STATUS} if the parser encountered some structural
 * problem in the manifest.
 *
 * @hide
 */
@SystemApi
public static final int INSTALL_PARSE_FAILED_MANIFEST_MALFORMED = -108;

/**
 * Installation parse return code: this is passed in the
 * {@link PackageInstaller#EXTRA_LEGACY_STATUS} if the parser did not find any actionable tags
 * (instrumentation or application) in the manifest.
 *
 * @hide
 */
@SystemApi
public static final int INSTALL_PARSE_FAILED_MANIFEST_EMPTY = -109;

/**
 * Installation failed return code: this is passed in the
 * {@link PackageInstaller#EXTRA_LEGACY_STATUS} if the system failed to install the package
 * because of system issues.
 *
 * @hide
 */
@SystemApi
public static final int INSTALL_FAILED_INTERNAL_ERROR = -110;

/**
 * Installation failed return code: this is passed in the
 * {@link PackageInstaller#EXTRA_LEGACY_STATUS} if the system failed to install the package
 * because the user is restricted from installing apps.
 *
 * @hide
 */
public static final int INSTALL_FAILED_USER_RESTRICTED = -111;

/**
 * Installation failed return code: this is passed in the
 * {@link PackageInstaller#EXTRA_LEGACY_STATUS} if the system failed to install the package
 * because it is attempting to define a permission that is already defined by some existing
 * package.
 * <p>
 * The package name of the app which has already defined the permission is passed to a
 * {@link PackageInstallObserver}, if any, as the {@link #EXTRA_FAILURE_EXISTING_PACKAGE} string
 * extra; and the name of the permission being redefined is passed in the
 * {@link #EXTRA_FAILURE_EXISTING_PERMISSION} string extra.
 *
 * @hide
 */
public static final int INSTALL_FAILED_DUPLICATE_PERMISSION = -112;

/**
 * Installation failed return code: this is passed in the
 * {@link PackageInstaller#EXTRA_LEGACY_STATUS} if the system failed to install the package
 * because its packaged native code did not match any of the ABIs supported by the system.
 *
 * @hide
 */
public static final int INSTALL_FAILED_NO_MATCHING_ABIS = -113;

/**
 * Internal return code for NativeLibraryHelper methods to indicate that the package
 * being processed did not contain any native code. This is placed here only so that
 * it can belong to the same value space as the other install failure codes.
 *
 * @hide
 */
@UnsupportedAppUsage
public static final int NO_NATIVE_LIBRARIES = -114;

/** {@hide} */
public static final int INSTALL_FAILED_ABORTED = -115;

/**
 * Installation failed return code: install type is incompatible with some other
 * installation flags supplied for the operation; or other circumstances such as trying
 * to upgrade a system app via an Incremental or instant app install.
 * @hide
 */
public static final int INSTALL_FAILED_SESSION_INVALID = -116;

/**
 * Installation parse return code: this is passed in the
 * {@link PackageInstaller#EXTRA_LEGACY_STATUS} if the dex metadata file is invalid or
 * if there was no matching apk file for a dex metadata file.
 *
 * @hide
 */
public static final int INSTALL_FAILED_BAD_DEX_METADATA = -117;

/**
 * Installation parse return code: this is passed in the
 * {@link PackageInstaller#EXTRA_LEGACY_STATUS} if there is any signature problem.
 *
 * @hide
 */
public static final int INSTALL_FAILED_BAD_SIGNATURE = -118;

/**
 * Installation failed return code: a new staged session was attempted to be committed while
 * there is already one in-progress or new session has package that is already staged.
 *
 * @hide
 */
public static final int INSTALL_FAILED_OTHER_STAGED_SESSION_IN_PROGRESS = -119;

/**
 * Installation failed return code: one of the child sessions does not match the parent session
 * in respect to staged or rollback enabled parameters.
 *
 * @hide
 */
public static final int INSTALL_FAILED_MULTIPACKAGE_INCONSISTENCY = -120;

/**
 * Installation failed return code: the required installed version code
 * does not match the currently installed package version code.
 *
 * @hide
 */
public static final int INSTALL_FAILED_WRONG_INSTALLED_VERSION = -121;

/**
 * Installation return code: this is passed in the {@link PackageInstaller#EXTRA_LEGACY_STATUS}
 * if the new package failed because it contains a request to use a process that was not
 * explicitly defined as part of its &lt;processes&gt; tag.
 *
 * @hide
 */
public static final int INSTALL_FAILED_PROCESS_NOT_DEFINED = -122;

/**
 * Installation parse return code: system is in a minimal boot state, and the parser only
 * allows the package with {@code coreApp} manifest attribute to be a valid application.
 *
 * @hide
 */
public static final int INSTALL_PARSE_FAILED_ONLY_COREAPP_ALLOWED = -123;

/**
 * Installation failed return code: the {@code resources.arsc} of one of the APKs being
 * installed is compressed or not aligned on a 4-byte boundary. Resource tables that cannot be
 * memory mapped exert excess memory pressure on the system and drastically slow down
 * construction of {@link Resources} objects.
 *
 * @hide
 */
public static final int INSTALL_PARSE_FAILED_RESOURCES_ARSC_COMPRESSED = -124;

/**
 * Installation failed return code: the package was skipped and should be ignored.
 *
 * The reason for the skip is undefined.
 * @hide
 */
public static final int INSTALL_PARSE_FAILED_SKIPPED = -125;

/**
 * Installation failed return code: this is passed in the
 * {@link PackageInstaller#EXTRA_LEGACY_STATUS} if the system failed to install the package
 * because it is attempting to define a permission group that is already defined by some
 * existing package.
 *
 * @hide
 */
public static final int INSTALL_FAILED_DUPLICATE_PERMISSION_GROUP = -126;

/**
 * Installation failed return code: this is passed in the
 * {@link PackageInstaller#EXTRA_LEGACY_STATUS} if the system failed to install the package
 * because it is attempting to define a permission in a group that does not exists or that is
 * defined by an packages with an incompatible certificate.
 *
 * @hide
 */
public static final int INSTALL_FAILED_BAD_PERMISSION_GROUP = -127;
posted @   yongfengnice  阅读(4112)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!
点击右上角即可分享
微信分享提示