1、下载安装android SDK,可通过浏览器或者相关手机软件下载软件下载需要安装的apk安装文件,把apk文件放到android-sdk-windows\platform-tools下

2、可通过adb相关的命令来启动或者在Eclipse下启动虚拟机,或者通过USB与真机连接

3、使用cmd进入android-sdk-windows\platform-tools目录

4、输入 adb install xxx.apk 如果有开启多个虚拟机或者连接了真机,可使用adb devices显示当前android的机器和abd -s emulator 555XX install xxx.apk进行安装

5、在CMD提示SUCEESS后,可在android虚拟机可找到安装成功的应用

我在安装的时候就遇过以中文名称的apk,安装时报错了Segmentation fault, pm install /data,把apk的文件名改为英文名称,就成正常安装了

把apk安装文件放到进入android-sdk-windows\platform-tools目录,能防止在CMD上安装显示成功,但在虚拟器上未能看到已经安装

附:

下面为网上收集的相关资料:

apk安装常见出错解决方法:

1. 无法识别设备

adb kill-server
然后再adb start-server

2. Segmentation fault, pm install /data…

直接使用adb向模拟器中安装app时报这个错误。

原因很简单,使用豌豆荚下载下来的app很多是用中文命名的,改成英文名重新adb install. 至于为什么,我想设计adb的工程师们根本没有考虑中文支持吧。

3.Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]

这个问题出现的背景要说明一下:下载了某app,往里面加了点东西,然后重新打包使用adb install安装。

这是由于Android应用程序的自签名机制导致的。

Android 系统不会安装运行任何一款未经数字签名的apk程序,无论是在模拟器上还是在实际的物理设备上。Android的开发工具(ADT插件和Ant)都可以协 助开发者给apk程序签名,它们都有两种模式:调试模式(debug mode)和发布模式(release mode)。
如果要正式发布 一个Android App,必须使用一个合适的私钥生成的数字证书来给程序签名 ,而不能使用adt插件 或者ant工具 生成的调试证书来发布。

签名的作用
1. 发送者的身份认证。由于开发商可能通过使用相同的 Package Name 来混淆替换已经安装的程序,以此保证签名不同的包不被替换
2. 保证信息传输的完整性。签名对于包中的每个文件进行处理,以此确保包中内容不被替换。

要解决这个错误,需要点专用工具,看雪上比较多,我就不再此贴出来了。

4.Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE]

在“卸载”app时,没有通过应用程序管理器卸载,而是直接通过adb删除了/data/app中的相应包。这中方式“卸载”是不彻底的,因为程序安装后还会在其他地方,比如/data/data中建立相关的目录和文件。

在设置-应用程序-管理应用程序里,找到要卸载的app,进行卸载。卸载后再次安装,就不会再出现这个错误了。

5. Failure [INSTALL_FAILED_DEXOPT]
在android4.0源码里面编译出来apk后,用adb install 安装时,报错[INSTALL_FAILED_DEXOPT]。

z:\ics-android\ics-src\out\target\product\generic\system\app>adb install NativeTimer.apk
28 KB/s (10166 bytes in 0.344s)
        pkg: /data/local/tmp/NativeTimer.apk

Failure [INSTALL_FAILED_DEXOPT]

原来在system\app下面的apk是经过优化的,而dex文件不会打包到apk中,dex文件会被优化后,生成odex文件。

z:\ics-android\ics-src\out\target\product\generic\system\app\NativeTimer.apk

z:\ics-android\ics-src\out\target\product\generic\system\app\NativeTimer.odex

这样安装apk时,就会缺少dex文件,导致报错[INSTALL_FAILED_DEXOPT]。

解决办法:

找到未优化过的apk,即
z:\ics-android\ics-src\out\target\product\generic\obj\APPS\NativeTimer_intermediates>adb install package.apk.unaligned
70 KB/s (138806 bytes in 1.912s)
        pkg: /data/local/tmp/package.apk.unaligned
SuccessFailure

6.adb push out of memory

最近做个东西,要修/system/etc/下的hosts文件,目的是通过域名访问内网的服务器,进行手机与内网的测试,这里要说的是如果是连接外网,并不需要如此做法,正因为我们要做测试,不可能用外网,是测成功了再连外网

做法是先在电脑上写好hosts文件内容,如下:

127.0.0.1      localhost
192.168.0.100      www.myhome.com
保存好文件后,通过如下命令进行上传(要有Root权限,即你曾刷过ROM):

adb remount

adb push d:\hosts   /system/etc

之后进入shell模式下 查看是否上传成功

adb shell

ping www.myhome.com

如果出现的IP地址是 192.168.0.100表示上传hosts文件成功了。

说到这里,大家可能很想骂我,与题目不符,现在就是出现问题的时候了,

这个文件是上传了,当我每次修改代码再装到手机上运行时,就连不上 www.myhome.com了,搞了半天,原来上传的hosts文件其实并没有持久化到手机系统上的,只是内容载到内存中,装新应用或者重启机子后,就没了。好!那我再次上传hosts文件,就报出:

out of memory 这样的错了,必须要重启手机,才能再次push,这真是太麻烦了,改一次代码就要重启,这算什么嘛

在网上找了几天了,解决办法都是针对模拟器的,真机上出的还是没找到,今天看了论坛上有人要删除系统下的文件,我就看看了,有收获,

解决办法是:
   在recovery状态下连接手机,并进入advance  -mount/system,在PC端CMD中输入以下命令:

adb remount

adb push d:\hosts   /system/etc

之后重新启动,

启动之后进入shell

adb shell

cd  /system/etc

cat hosts

OK,成功打出了修改过的内容,而不会再丢失了,是真得改到手机的Linux系统上了。

看了论坛的内容也贴出来 ,是讲删除系统文件

在recovery状态下连接手机,并进入advance  -mount/system,在PC端CMD中输入以下命令:
   adb shell
    cd /system/app
    ls
    查找到你要删除的文件(如Talk.apk)将其删除之:
   rm  Talk.apk(如果还有同名的只是后缀不同,也可以用Talk.*)
   重启手机就OK了

7. 系统文件删除无权限

mount -o remount,rw -t yaffs2 /dev/block/mtdblock0 /system
chmod 777/system/app

今天下午,我在打开whatsapp的时候,破玩意儿又提示我有新版本要不要更新,于是我选择了Yes。经过缓慢的安装之后,忽然提示我installed unsuccessful。我一下脑袋就大了,我是安装的没有修改的官方包,更新又是自动下载的,为什么还会出现这种情况?

于是我怀疑可能是官方更改了证书,所以需要卸载之后重新安装。于是我打开Drawer准备重新启动whatsapp。没想到虽然whatsapp的图标出现在drawer里面,但是启动的时候却提示我没有安装这个app!
我靠,这还了得,于是我将whatsapp卸载了,然后试图重新安装新版。还是提示我不能安装!
于是我使用adb再次尝试安装,提示我[INSTALL_FAILED_DEXOPT],Google之后发现dexopt根本就不是一个单词,应该是dex和optimize的合成缩写。那么有可能是apk文件包里面的dex文件损坏,于是我把它反编译了出来,尝试重新编译。但是不知道这个东西是用什么编译的,smali根本就不能重新编译回去……只能作罢。
所以假设问题还是出现在手机端。Google了一下,发现这个问题应该是出现在生成dex文件时候发生的错误,但是能搜索到的结果有许多是说由于G1机身空间太小导致的,显然同样的问题不可能出现在刚刚做完app2sd的milestone上面。但是我搜索到了一个如果强制完全卸载app的文章,里面介绍了安装app之后,相关文件分布的路径。
所以我的思路就很清晰了,首先完全卸载,再行安装。
经过试验,发现果然可行!那么提炼一下,可以得出这类问题的通用解决思路。

假设该app名为ketech,安装包名为ketech.apk。

查看/data/app里面是否有名称包含ketech的apk或zip包,有可能为类似com.android.ketech.apk或com.android.ketech.zip的形式,有则删掉。

查看/data/app-priviate里面是否有名称包含ketech的apk,名称形式同上,有则删掉。(做了app2sd的朋友可能还需要查看一下app2sd文件夹里面是否含有此apk包)

查看/data/data下面是否有名称包含ketech的文件夹,名称形式类似于com.android.ketech,有则删掉。

查看/data/system下面的package.xml文件,将包含ketech的项目删掉。

Wipe Dalvik缓存。(方式多样,有些openrecovery自带,就不进行详细解释了)

重新安装即可。

替代方案

单改单个模块下的Android.mk
加入
LOCAL_DEX_PREOPT := false
mm后
在out目录下找到相应apk
直接push到/system/app
当然之前要删除要替换的的*.apk *.odex

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/baiyi168/p/8297767.html

使用adb安装遇到的一些坑相关推荐

  1. ADB安装及通过usb操作设备进行截图保存至pc端

    先介绍一下什么是ADB: adb的全称为Android Debug Bridge,就是起到调试桥的作用,是连接Android手机与PC端的桥梁,可以让用户在电脑上对手机进行全面的操作. 借助adb工具 ...

  2. osx php7 imagick,[PHP] MacOS 自带php环境安装imagick扩展踩坑记录 | 码农部落

    前言 最近学习yii2,在搭建环境后,发现在访问contact页面时报错,如下: "Either GD PHP extension with FreeType support or Imag ...

  3. mysql 5.7.6 5.7.19_MySQL数据库之Mysql 5.7.19 免安装版遇到的坑(收藏)

    本文主要向大家介绍MySQL数据库之Mysql 5.7.19 免安装版遇到的坑(收藏)了 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 1.从官网下载64位zip文件. 2.把 ...

  4. 安装docker遇到的坑 Could not resolve host: download.docker.com;

    我写的 1.编辑网卡 vim /etc/sysconfig/network-scripts/ifcfg-ens33 2.增加这三行 DNS1=8.8.8.8 DNS2=114.114.114.114 ...

  5. 细数sass安装中遇到的坑

    前言: 前两天打算清理电脑的时候,遇到了一点特殊的问题,打算重装一些东西,其中就有我一直用的顺手的SASS预编译工具. 但是在重装的时候,我发现我居然不会用了??? 靠,要不是我用了半年的Sass,我 ...

  6. MongoDB安装中断问题 - 踩坑篇

    中断了安装?再重新安装已经报错? 是不是会弹框报错:"An installation for MongoDB 3.6.9 2008R2Plus SSL is currently suspen ...

  7. 在安卓模拟器中,adb安装apk常见错误

     转自应用汇ADB安装错误常见列表:http://www.appchina.com/mini/help/error_descrition.html 应用汇常见错误列表 应用汇的安装功能是基于安卓系 ...

  8. 安装oracle12c之前,centos7安装oracle12c数据库的坑

    写下这篇文章时候,我刚刚看到这个页面: 除了心累,还叹了口气. 因为之前没有接触过oracle数据库,而且我linux其实也是比较菜的.尽管搜索了种种教程,但是踩坑不断.我现在可能细数不过来,有多少坑 ...

  9. WSA微软官方安装教程(ADB安装教程)

    WSA其实是Windows Subsystem for Android(适用于Windows的Android™️子系统)的缩写,让你可以在Win11上运行安卓软件.当然,也不止是Amazon应用商店里 ...

最新文章

  1. ubuntu修改IP
  2. 在Windows 2003 64位下ASP无法连接Access数据库的解决办法
  3. 《数学之美》第3章 统计语言模型
  4. 服务器e5系列和e5v4系列,“芯”力量:四款至强E5 v4双路服务器横评
  5. 编写图形界面程序,接受用户输入的5个浮点数据和一个文件目录名,将这五个数据保存在该文件中,再从文件中读取出来并且进行从大到小排序,然后再一次追加保存在该文件中。
  6. html文字图片同一行,CSS控制图片和文字在同一行显示且对齐的3种方法
  7. python中msg是什么意思_python下载.msg文件的附件
  8. 在系统中用etcd实现服务注册和发现
  9. debian 安装_如何在 Debian/Ubuntu 系统中检查程序包是否安装?
  10. 如何做WP的登录/注册功能
  11. -矩阵-创建矩阵-meshgrid函数
  12. html计算选定的金额,计算总金额
  13. chrome浏览器小恐龙自动跑
  14. 开心庄园html的代码,开心.html
  15. 库卡机器人坐标手势_库卡机器人为何要几种坐标系?
  16. Android手机刷机介绍
  17. Jquery----下拉菜单(利用滑动效果)
  18. 端口号,UDP,TCP
  19. 输出二叉查找树poj 2418 二叉查找树
  20. C语言 请编写函数CHG(char *S) 把字符数组左移后逆转

热门文章

  1. python下编译py成pyc和pyo
  2. 使用Python+Flask+OpenCV构建一个相机应用程序
  3. 条件判断语句之if语句
  4. 移动WiFi大比拼 谁会成为独角兽
  5. docker容器中修改时间
  6. typedef给类型起别名
  7. IDA Pro7学习笔记
  8. linux文件系统 var,Linux文件系统
  9. 数据结构——单链表(小白入门第二天)
  10. Python中三维数组位置详解