[Android]编程注意事项
1. 向Sdcard 写入数据时,必须在manifest中添加 sdcard 写入权限:
在AndroidManifest.xml中加入访问SDCard的权限如下:
<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
2.开启读写权限
adb shell mount -o remount rw /
注意,/表示的是根目录,因此这个不仅仅是对sdcard,其他文件也可以读写。rw表示读写权限,mount重挂载文件系统
3.读写命令
文件传输:pc机与模拟机之间的文件传输可以使用adb pull 和adb push
adb pull是把文件从模拟机上复制到pc机上,使用方法如下
- adb pull < remote> < local>
其中remote代表模拟机文件路径,local为pc机文件路径。
如:adb pull /system/app/test.apk /home/myname/test.apk
adb push则相返,是把文件从pc机上复制到模拟机上,push可以把任务文件都复制到模拟机上,如果是把一个apk文件上传到/system/app/下则和adb install作用一样。使用方法
- adb push < local> < remote>
4.性能跟踪工具traceview使用
在MainActivity中加入以下代码:
///////////////////
//开始追踪方法
Debug.startMethodTracing("test");
//要跟踪的方法
........
//停止跟踪方法
Debug.stopMethodTracing();
////////////////////
存储在SDcard根目录中,把test.trace pull到PC端,启用SDK.../tools/traceview.bat脚本,读取该文件
5.解决Eclipse"Failed to create the Java Virtual Machine"
今天在启动Eclipse,发现弹出提示框“ Failed to create the Java Virtual Machine”
解决方法如下: 找到eclipse目录下的eclipse.ini,可以看到如下内容:
-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.200.v20120522-1813
-product
com.android.ide.eclipse.adt.package.product
--launcher.XXMaxPermSize
256m
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.6
-Declipse.buildId=v21.1.0-569685
-Xms40m
-Xmx768m
将最后一行的-Xmx512m/768m改成-Xmx256m保存即可。
打开寻找初始化。虚拟机为java永久生成对象(Permanate generation)如,class对象、方法对象这些可反射(reflective)对象分配内存限制设置(原768m/512m,设置为256m)
6. 输入adb shell 时 提示error: more than one device and emulator
第一种情况:确实用多个设备或者模拟器
解决办法:(指定连接某一个设备或者模拟器)
1、获取模拟器/设备列表
|
adb devices |
2、指定device来执行adb shell
adb -s devicename shell |
例如:
adb -s emulator-5554 shell |
在多device的时候,执行adb命令一般都需要用参数-s指定device。例如卸载emulator-5554上的包com.soft.camera adb -s emulator-5554 uninstall com.soft.camera
第二种情况下:确实有一个设备或者模拟器(之所以显示有多个是因为此设备用过两次 使用命令 adb devices 会看到这个设备有两种状:offline 和 device)
解决办法:
一般办法:在命令窗口输入adb start-server 重新启动adb.exe服务
如果上述方法不可以,终极方法:打开任务栏,选择“进程”选项卡,找到adb.exe进程,结束之,重新启动就完事OK啦(或者在命令窗口输入命令adb kill-server )