android虚拟机emulator应⽤安装--使⽤adbinstall安装步骤和
邮政储蓄信用卡注意事项
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]
这是由于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
保存好⽂件后,通过如下命令进⾏上传(要有Root权限,即你曾刷过ROM):
adb remount
adb push d:\hosts /system/etc
之后进⼊shell模式下查看是否上传成功
adb shell
ping
如果出现的IP地址是 192.168.0.100表⽰上传hosts⽂件成功了。
说到这⾥,⼤家可能很想骂我,与题⽬不符,现在就是出现问题的时候了,
这个⽂件是上传了,当我每次修改代码再装到⼿机上运⾏时,就连不上了,搞了半天,原来上传的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之后,相关⽂件分布的路径。
所以我的思路就很清晰了,⾸先完全卸载,再⾏安装。
经过试验,发现果然可⾏!那么提炼⼀下,可以得出这类问题的通⽤解决思路。
1. 假设该app名为ketech,安装包名为ketech.apk。
2. 查看/data/app⾥⾯是否有名称包含ketech的apk或zip包,有可能为类似com.android.ketech.apk或
com.android.ketech.zip的形式,有则删掉。
3. 查看/data/app-priviate⾥⾯是否有名称包含ketech的apk,名称形式同上,有则删掉。(做了app2sd的朋友可能还需要
查看⼀下app2sd⽂件夹⾥⾯是否含有此apk包)
4. 查看/data/data下⾯是否有名称包含ketech的⽂件夹,名称形式类似于com.android.ketech,有则删掉。
5. 查看/data/system下⾯的l⽂件,将包含ketech的项⽬删掉。
社会主义和谐社会的基本特征6. Wipe Dalvik缓存。(⽅式多样,有些openrecovery⾃带,就不进⾏详细解释了)
7. 重新安装即可。
替代⽅案
单改单个模块下的Android.mk
加⼊
LOCAL_DEX_PREOPT := false
mm后
在out⽬录下到相应apk
直接push到/system/app
当然之前要删除要替换的的*.apk *.odex
哪种笔记本散热器好
发布评论