Android adb安装apk时提示Invalid APK file的问题

今天在使用adb命令安装apk时,无法安装成功,进入到android sdk 下的platform_tools下也是无法安装成功:

先贴一下我的调用过程

xu:~ xiaokai$ adb devices
List of devices attached
0123456789ABCDEF device

xu:~ xiaokai$ adb shell
shell@T36DH_CM3:/ $ pm install /Users/xiaokai/Downloads/app-release.apk
 pkg: /Users/xiaokai/Downloads/app-release.apk
Failure [INSTALL_FAILED_INVALID_URI]
1|shell@T36DH_CM3:/ $ adb install /Users/xiaokai/Downloads/app-release.apk
Invalid APK file: /Users/xiaokai/Downloads/app-release.apk
255|shell@T36DH_CM3:/ $ exit
xu:~ xiaokai$ adb install /Users/xiaokai/Downloads/app-release.apk
[100%] /data/local/tmp/app-release.apk
 pkg: /data/local/tmp/app-release.apk
Success

adb devices

首先调用了adb devices,查看有没有可用的手机,`0123456789ABCDEF device`说明有可用的手机,

adb shell

然后进入手机,安装apk,

pm install /Users/xiaokai/Downloads/app-release.apk

发现出现问题,

exit

退出前手机 ,进入root目录

adb install /Users/xiaokai/Downloads/app-release.apk

进行安装,发现安装成功,网上查了一下,下面这篇文章介绍了一些这方面的问题

补充上面文章:adb安装apk报错Failure [INSTALL_FAILED_INVALID_URI]

今天在使用adb命令安装一个apk时,遇到一个问题,记录如下:

1、下载了一个demo.apk,放在D:\A_Download目录下。

2、手机连上电脑,开启USB调试权限。然后在电脑端启动cmd,输入以下命令:

C:\Users\leon>adb devices
List of devices attached
0123456789ABCDEF device

可以看出,手机已经成功连上。

3、输入adb shell命令,进入shell模式。然后使用install命令安装上述apk文件。但是提示失败:

C:\Users\leon>adb shell
shell@android:/ $ install D:\A_Download\demo.apk
BusyBox v1.20.2-jb bionic (2012-11-25 17:47 +0100) multi-call binary.

Usage: install [-cdDsp] [-o USER] [-g GRP] [-m MODE] [SOURCE]... DEST

Copy files and set attributes

 -c Just copy (default)
 -d Create directories
 -D Create leading target directories
 -s Strip symbol table
 -p Preserve date
 -o USER Set ownership
 -g GRP Set group ownership
 -m MODE Set permissions

分析了一下,原来是忘记使用pm前缀(关于install命令要加pm前缀的分析,请参见我的另一篇博客:安卓adb命令中pm工具的作用及用法详解)。于是修改命令:

shell@android:/ $ pm install D:\A_Download\demo.apk
 pkg: D:A_Downloaddemo.apk
Failure [INSTALL_FAILED_INVALID_URI]

仍然提示失败!

经过反复的分析,我认为应该是因为adb命令下,无法识别windows目录信息导致。也就是说,adb命令无法识别此处的“D:\A_Download\demo.apk”目录。也正是因为这样,所以它给出的失败原因是INVALID_URI。

为了解决这个问题,其实办法很简单,只要退出adb shell的环境就好。于是输入exit命令回退到windows的cmd环境下,然后使用adb install命令,果然就成功了。

shell@android:/ $ exit

C:\Users\leon>adb install D:\A_Download\demo.apk
[100%] /data/local/tmp/demo.apk
 pkg: /data/local/tmp/demo.apk
Success

当然,上述思路只是我自己想当然的,必须验证一下是否真是这么回事。怎么验证呢?

如上所述,根据我的猜测,上述安装方式之所以会失败,是因为adb环境无法识别windows系统的目录格式。所以,如果我们提前把文件拷贝到手机中,然后再进入adb shell环境并install,免去shell环境识别windows目录格式的步骤,应该就能成功。

于是,我直接在cmd环境下把apk文件push到手机中,然后进入adb shell环境,运行pm install命令,果然成功了!

C:\Users\leon>adb push D:\A_Download\demo.apk sdcard/demo.apk
[100%] sdcard/demo.apk

C:\Users\leon>adb shell
shell@android:/ $ cd sdcard/
shell@android:/sdcard $ pm install demo.apk
 pkg: demo.apk
Success

所以,总之一句话,adb shell环境下,系统无法识别windows的目录格式,要么就退回到cmd环境下,要么就提前把windows的文件拷贝到手机中。类似的问题就不会再出现了!

搞定,收工!

以上这篇Android adb安装apk时提示Invalid APK file的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Android List(集合)中的对象以某一个字段排序案例

    在Android开发中,有时我们需要对一个对象的集合按照某一个字段进行排序, Bean public class Student { private int studentId; private String studentName; private int age; public Student(int studentId , String studentName, int age){ this.studentId=studentId; this.studentName=studentName

  • android 日志文件LogUtils实例

    背景 这是好久之前在网上找的一个常用类,已经忘记原文链接了,但是觉得很好用一直都在用,可以将日志写到file里面也可以定位你是在哪个类哪一行打印的日志,保存到文件的路径就是android/data/你的包名/files/目录下,然后我们就可以愉快的找问题了 import android.text.TextUtils; import android.util.Log; import com.smartlink.suixing.App; import com.smartlink.suixing.Bu

  • Android模拟器安装APP出现INSTALL_FAILED_NO_MATCHING_ABIS错误解决方案

     Android模拟器安装APP出现INSTALL_FAILED_NO_MATCHING_ABIS错误解决方案 当我们想在电脑的Android模拟器中安装APP的时候,会报INSTALL_FAILED_NO_MATCHING_ABIS错误[如图1],导致APP无法在模拟器中运行.下面给出我的解决方案,希望能对你有所帮助! Android模拟器下安装APP报INSTALL_FAILED_NO_MATCHING_ABIS错误解决方案 [图1]adb install 命令安装APP 原因分析: 由于安

  • Android Button按钮点击背景和文字变化操作

    Android 原生的按钮点击状态是有变化的,但是如果是自己加了一个.png格式的图片为背景色,按钮点击就不会有任何效果,为了达到点击按钮有一闪的效果,我们就需要准备两张图进行切换, 而且文字也要变色,老规矩废话不多说直接上代码: 按钮背景图片放在 drawable/background_button.xml <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="h

  • Android adb安装apk时提示Invalid APK file的问题

    今天在使用adb命令安装apk时,无法安装成功,进入到android sdk 下的platform_tools下也是无法安装成功: 先贴一下我的调用过程 xu:~ xiaokai$ adb devices List of devices attached 0123456789ABCDEF device xu:~ xiaokai$ adb shell shell@T36DH_CM3:/ $ pm install /Users/xiaokai/Downloads/app-release.apk pk

  • 解决Mysql5.7.17在windows下安装启动时提示不成功问题

    在机器上首次安装MySQL, 操作系统是win7 mysql 的安装文件是 zip 格式的,版本是5.7.17 解压之后,安装步骤是 1.首先找个文件存放这些安装程序以及 数据 假设是E:\\mysql 2.把解压的文件放在E:\\mysql下,并且新建个data文件夹 3.创建环境变量mysql  路径是E:\\mysql 添加到path 中  %MYSQL%\bin; 4.在解压的文件夹下有个my-default.ini 的文件,首先拷贝一份,重命名为my.ini 修改文件内容 只修改两行就

  • 解决安装WampServer时提示缺少msvcr110.dll文件的问题

    今天开始学习PHP,对于初学者来说,我们一定希望从简单的开始,所以,从集成环境非常好的WampServer的安装开始. 1.下载WampServer安装程序,安装完毕后会出现一个错误.如下: 2.这是因为你的电脑缺少c++环境.你可以直接在bing里搜索"Visual C++ Redistributable for Visual Studio 2012 Update 4",找到文件后自己下载就可以了. 3.如图所示,找到文件后选择"中文(简体)",单击"下

  • linux安装软件时提示软件包不存在的解决方法

    软件包不存在时可能是被安装软件的软件源没有安装,我的是cent os,安装w3m时,出现这个问题,解决办法:先安装软件源(epel-release),然后更新系统包,最后执行安装软件操作,就可以成功了. 以安装w3m为例: 1.安装w3m的软件源:epel-release yum install epel-release //如果不是系统管理员需要前面加入sudo命令,因为安装需要管理员权限 2.安装成功后,更新系统包 (如果不是系统管理员需要前面加入sudo命令,因为安装需要管理员权限) yu

  • Mac安装软件时提示已损坏的完美解决方法

    目录 Mac安装软件时提示已损坏的解决方法 原因 解决方法 Mac安装软件时提示已损坏的解决方法 从网上下载的SecureCRT.Principle等设计软件,以及输入法等常用软件,安装时可能会提示“已损坏,移至废纸篓”这类信息,根本无法打开.如下图:这不是文件的问题,是系统限制的原因. 原因 新系统(macOS Sierra 10.12.X以上)加强了安全机制默认不允许用户自行下载安装应用程序,只能从Mac App Store里安装应用. 解决方法 步骤一:打开终端 步骤二:输入代码 sudo

  • MySQL安装服务时提示:Install/Remove of the Service Denied解决

    目录 1. 概述 1.1 问题 1.2 没有 MySQL 服务的时候 2. 解决方法 总结 1. 概述 1.1 问题 在安装 MySQL-8.0.25-winx64 的 MySQL 服务时遇到了以下提示: 安装 MySQL 服务时提示:. Install/Remove of the Service Denied! 即,安装/删除服务被拒绝!: 1.2 没有 MySQL 服务的时候 MySQL 服务没有加载到电脑上时,以下功能都将无法使用: 启动 MySQL 服务是就会提示 服务名无效: 无法登录

  • Android实现加载时提示“正在加载,请稍后”的方法

    前言 这篇文章主要介绍的是,如何实现点击按钮,弹出"正在加载数据,请稍候-"对话框,加载完了之后,对话框自动消失呢? 其实也是很简单的看下面代码: import com.farsunset.ichat.example.R; import android.os.Bundle; import android.app.Activity; import android.app.ProgressDialog; public class DateReportActivity extends Act

  • Linux执行.sh文件时提示No such file or directory该怎么办(三种解决办法)

    先给大家看下问题描述,下图是我在运行时出现错误截图: 解决方法 分析原因,可能因为我平台迁移碰到权限问题我们来进行权限转换 1)在Windows下转换: 利用一些编辑器如UltraEdit或EditPlus等工具先将脚本编码转换,再放到Linux中执行.转换方式如下(UltraEdit):File-->Conversions-->DOS->UNIX即可. 2)方法 用vim打开该sh文件,输入: [plain] :set ff 回车,显示fileformat=dos,重新设置下文件格式:

  • node.js使用npm 安装插件时提示install Error: ENOENT报错的解决方法

    在使用npm install安装扩展插件时,系统提示"npm install Error: ENOENT, stat 'C:Users<用户名>AppDataRoamingnpm'". 以前都是很顺利的安装过程,没出现这种情况.我这里的解决办法是直接创建上面提示的目录就好了,应该是node.js权限不够,在此备注. 有时候就是这样,很可能一个很久都无法解决的问题,实际解决方法很简单,就是这么任性!!

  • pip安装py_zipkin时提示的SSL问题对应

    python的应用实践zipkin,需要py_zipkin,使用pip进行安装py_zipkin的时候出现问题, 根据stackoverflow的信息设定了pypi.org 和 files.pythonhosted.org解决了问题. 问题现象 [root@kong ~]# pip install py_zipkin Collecting py_zipkin Retrying (Retry(total=4, connect=None, read=None, redirect=None, stat

随机推荐