APK默认情况下是安装在ROM里面的,但由于ROM优先,当第三方APK安装过多、没有清理机器内的log缓存时,安装程序时会报如下异常:
[2014-04-11 20:27:04 - xxxx] Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE [2014-04-11 20:27:04 - xxx] Please check logcat output for more details. [2014-04-11 20:27:04 - xxx] Launch canceled!
通常有如下几种方式来解决这个问题:
在AndroidManifest.xml文件中增加如下属性,让APK优先安装在外置存储中:
android:installLocation=”preferExternal”
卸载掉无关的第三方应用;
清除logcat的缓存;
重启机器。
上面的四种方法只能暂时解决问题,所以我们需要将上述的操作自动化,这样在遇到这个问题时通过程序搞定,可以节省很多时间,面对这种需求我写的python脚本就应运而生了。
由于该脚本是通过操作DOS命令来完成的,所以在使用该脚本之前需要配置好ADB的环境变量,切确保你的设备ADB开着,并和电脑正常连接。
操作系统:Winows 7 64位
Python版本:Python 2.7
代码很简单,主要是通过DOS命令来操作,如果你想某些第三方应用不被卸载掉,可以通过字符串匹配相应的包名前缀,这个自己添加一下就OK:
# -*- coding: utf-8 -*- import os; def uninstall( ): print 'start uninstall...' os.popen('adb wait-for-device'); packages = os.popen('adb shell pm list packages -3'); for package in packages.readlines(): packageName = package.split(':')[-1].splitlines()[0]; os.popen('adb uninstall ' + packageName ); print packageName,'uninstall successed'; print 'uninstall all successed...' def clearlog( ): print 'start clear logcat buffer...' os.popen('adb wait-for-device'); os.popen('adb logcat -c'); print 'clear logcat buffer success...' clearlog(); uninstall();