1. adb安装应用的时候有时可能失败,报出如下失败信息:
[100%]/data/local/tmp/map-20160831.apkpkg:/data/local/tmp/map-20160831.apk
Failure[INSTALL_FAILED_ALREADY_EXISTS]
2. 常见安装失败输出代码、含义及可能的解决办法如下:
INSTALL_FAILED_ALREADY_EXISTS 应用已经存在,或卸载了但没卸载干净解决办法:adb install 时使用 -r参数,或者先 adb uninstall <packagename>再安装INSTALL_FAILED_INVALID_APK 无效的 APK文件INSTALL_FAILED_INVALID_URI 无效的 APK文件名解决办法:确保 APK文件名里无中文INSTALL_FAILED_INSUFFICIENT_STORAGE 空间不足解决办法:清理空间
INSTALL_FAILED_NO_SHARED_USER 请求的共享用户不存在INSTALL_FAILED_UPDATE_INCOMPATIBLE 以前安装过同名应用,但卸载时数据没有移除;或者已安装该应用,但签名不一致解决办法:先 adb uninstall <packagename>再安装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 设备里已经存在与应用里同名的 content providerINSTALL_FAILED_NEWER_SDK 设备系统版本高于应用要求INSTALL_FAILED_TEST_ONLY 应用是 test-only的,但安装时没有指定 -t 参数INSTALL_FAILED_CPU_ABI_INCOMPATIBLE 包含不兼容设备 CPU应用程序二进制接口的 native codeINSTALL_FAILED_MISSING_FEATURE 应用使用了设备不可用的功能INSTALL_FAILED_CONTAINER_ERROR sdcard访问失败; 应用签名与 ROM签名一致,被当作内置应用。解决办法:确认 sdcard可用,或者安装到内置存储; 打包时不与 ROM使用相同签名。INSTALL_FAILED_INVALID_INSTALL_LOCATION 不能安装到指定位置; 应用签名与 ROM签名一致,被当作内置应用。解决办法:切换安装位置,添加或删除 -s参数;打包时不与 ROM 使用相同签名INSTALL_FAILED_MEDIA_UNAVAILABLE 安装位置不可用解决办法:一般为 sdcard,确认sdcard 可用或安装到内置存储INSTALL_FAILED_VERIFICATION_TIMEOUT 验证安装包超时INSTALL_FAILED_VERIFICATION_FAILURE 验证安装包失败INSTALL_FAILED_PACKAGE_CHANGED 应用与调用程序期望的不一致INSTALL_FAILED_UID_CHANGED 以前安装过该应用,与本次分配的 UID不一致解决办法:清除以前安装过的残留文件INSTALL_FAILED_VERSION_DOWNGRADE 已经安装了该应用更高版本解决办法:使用 -d 参数INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE 已安装 target SDK支持运行时权限的同名应用,要安装的版本不支持运行时权限INSTALL_PARSE_FAILED_NOT_APK 指定路径不是文件,或不是以 .apk结尾INSTALL_PARSE_FAILED_BAD_MANIFEST 无法解析的 AndroidManifest.xml文件INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION 解析器遇到异常INSTALL_PARSE_FAILED_NO_CERTIFICATES 安装包没有签名INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES 已安装该应用,且签名与 APK文件不一致解决办法:先卸载设备上的该应用,再安装INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING 解析 APK文件时遇到CertificateEncodingExceptionINSTALL_PARSE_FAILED_BAD_PACKAGE_NAME manifest文件里没有或者使用了无效的包名INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID manifest文件里指定了无效的共享用户 IDINSTALL_PARSE_FAILED_MANIFEST_MALFORMED 解析 manifest文件时遇到结构性错误INSTALL_PARSE_FAILED_MANIFEST_EMPTY 在 manifest文件里找不到找可操作标签(instrumentation或 application)INSTALL_FAILED_INTERNAL_ERROR 因系统问题安装失败INSTALL_FAILED_USER_RESTRICTED 用户被限制安装应用INSTALL_FAILED_DUPLICATE_PERMISSION 应用尝试定义一个已经存在的权限名称INSTALL_FAILED_NO_MATCHING_ABIS 应用包含设备的应用程序二进制接口不支持的 native codeINSTALL_CANCELED_BY_USER 应用安装需要在设备上确认,但未操作设备或点了取消解决办法:在设备上同意安装INSTALL_FAILED_ACWF_INCOMPATIBLE 应用程序与设备不兼容does not contain AndroidManifest.xml 无效的 APK文件is not a valid zip file 无效的 APK文件解决办法:先将设备与 adb 连接成功unauthorized 设备未授权允许调试error: device not found 没有连接成功的设备解决办法:先将设备与 adb 连接成功protocol failure 设备已断开连接解决办法:先将设备与 adb 连接成功Unknown option: -s Android 2.2以下不支持安装到 sdcard解决办法:不使用 -s 参数No space left on device 空间不足解决办法:清理空间
Permission denied ... sdcard ... sdcard 不可用signatures do not match the previouslyinstalled version; ignoring! 已安装该应用且签名不一致 解决办法:先卸载设备上的该应用,再安装
3. adb install 实际是分三步完成:
(1) push apk 文件到/data/local/tmp。
(2) 调用 pm install 安装。
(3) 删除 /data/local/tmp 下的对应 apk 文件。