[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机上,使用方法如下

  1. 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作用一样。使用方法

  1. 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 )

原文地址:https://www.cnblogs.com/webapplee/p/3771714.html