使用android的adb读取和修改模拟器或设备的文件
今天用新买的台电的P76Ti Android平板调试应用时, 发现apk无法安装到平板上,无论是用usb调试模式安装,还是
直接将apk拷贝到平板上再安装都无法成功。当使用usb调试安装时,在eclipse的的console窗口显示下面的错误信息:
AndroidSamples]Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY
怀疑可能平板上缺少一些android的lib, 去查看Logcat的信息, 果然在log提示com.google.android.maps.jar missing,
个人猜测台电P76Ti平板可能用的是标准的android2.3.3 系统,而没有使用包含google map的android系统,故没有安装google
api的jar包。在强大的google的帮助下,找到了一个解决方案:使用adb的pull和push工具,将模拟器中的com.google.android.maps.jar
导入到平板上。
主要步骤:
1. 创建一个包含google api的Android 2.3.3的模拟器
2. 启动模拟器,使用adb remount命令获取读取和修改模拟器内系统文件的权限,然后使用
adb pull /system/framework/com.google.android.maps.jar [local directory]
将jar包从模拟器中拷贝到电脑上
3. 关闭模拟器(通常adb貌似只能对一台模拟器或android设备进行操作), 然后用usb调试模式打开Android平板,同样使用adb remount
获取平板系统文件的读写权限。然后使用下面命令将jar导入到平板内:
adb push [local directory] /system/framework/com.google.android.maps.jar
4. 使用adb pull把真机中/etc/permissions/platform.xml文件取出来编辑:
<permissions>
...
<!-- This is a list of all the libraries available for application code to link against. -->
<library name="android.awt" file="/system/framework/android.awt.jar"/>
<library name="android.test.runner" file="/system/framework/android.test.runner.jar"/>
<library name="com.android.im.plugin" file="/system/framework/com.android.im.plugin.jar"/>
<library name="com.google.android.maps" file="/system/framework/com.google.android.maps.jar"/>
<library name="com.google.android.gtalkservice" file="/system/framework/com.google.android.gtalkservice.jar"/>
</permissions>
然后再把这个platform.xml文件push回真机的/etc/permissions文件夹中
最后重新启动平板,既可正常安装需要google api的app了。
Android sdk提供的工具其实很强大,使用adb pull和push还可以直接读写设备系统文件, 这样就可以对android设备进行简单的定制开发,当然可能有个问题就是需要获取android设备的root权限, 发现这块平板使用adb shell登陆之后就会获取root权限。 另外,还可以使用ddms代替adb对android设备进行pull或push操作,这个我没用过,但是图形化界面,应该很简单的。