1.问题:控制台出现emulator: ERROR: the user data image is used by another emulator. aborting提示

原因:没有正确关闭模拟器

解决:在进程中结束adb.exe,重启Eclipse即可。

2.问题:出现emulator-5554 disconnected! Cancelling xxxxxx activity launch'!

解决:run里面有一个run configrations,在里面有一个选项每次运行都察掉记录 wipe out user data,选上该选项。.

3.问题:出现sdl_app: emulator-arm.exe应用程序错误。

解决:网上有说关闭杀毒软件的,但关闭重启后还是出错。删除该AVD,新建。在新建的过程中Snapshot 下选择enable项。

4.问题:操作raw目录下数据库文件找不到在SD卡创建的路径。

解决:没有添加访问权限。

android模拟器开发调试错误SDL_app:emulator.exe ,内存不能为written的解决办法

在网上找了好多方法,下面的方法比较实在,可以解决我机器上产生的问题。问题根源:配置出错,sd卡路径、大小,skin的分辨率,特别是skin分辨率没有设置好,导致问题严重。解决办法:

1、找到android模拟器安装目录:C:\Documents and Settings\Administrator\.android\avd\AVD23.avd

2、编辑config.ini文件,就是这块配置错误导致错误产生。

3、如果硬盘空间比较紧张,可以把模拟器文件放到其它盘符上:你可以在命令行下用mkcard创建一个SDCARD文件,如: mksdcard 50M D:\sdcard.img

4、下面代码可以整个覆盖原来的config文件 hw.sdCard=yes hw.lcd.density=240 skin.path=800×480 skin.name=800×480 vm.heapSize=24 sdcard.path=D:\sdcard.img hw.ramSize=512 image.sysdir.1=platforms\android-8\images\

5、OK,模拟器正常运行

Android NDK: Host 'awk' tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !

部署好cygwin,编译一下NDK自带的sample,报错:“Android NDK: Host 'awk' tool is outdated. Please define HOST_AWK to point to Gawk or Nawk ! ” 原来NDK自带了一个awk.exe,Host 'awk' tool is outdated. 已经过期。找了下解决方案,最直接的办法是到NDK的host目录 ——D:\android\android-ndk-r7\prebuilt\windows\bin\awk.exe ,把这个过期的awk.exe 删除掉,这样解析时,找不到自带的awk就去调用cygwin的默认awk解析awk文件。然后就OK了。


XML 特殊字符处理

在XML中,有一些符号作为XML 的标记符号,一些特定情况下,属性值必须带有这些特殊符号。 下面主要是讲解一些常用的特殊符号的处理

例一: 双引号的使用。

双引号作为XML 属性值的开始结束符号,因此无法在值中直接使用"". 处理方式可以分为两种。

a:属性值中没有'(单引号),那么可以用单引号'' 作为属性值的开始结束符号

<addkey="IPhone"value="apple"/> ...属性值为 ("apple").

解决: <addkey="IPhone"value=’"apple"‘/>

b:属性值中有'(单引号),也有双引号。 如...属性值为 ("'apple").

<addkey="IPhone"value="&quot;&apos;apple&quot;"/>

下表为 XML 标记使用的字符列出了五种内置实体。

实体 实体引用 含义

lt

&lt;

<(小于号)

gt

&gt;

>(大于号)

amp

&amp;

&(“and”符)

apos

&apos;

'(撇号或单引号)

quot

&quot;

"(双引号)

如果字符可能会使 XML 分析器错误地解释文档结构,请使用实体,而不要键入字符。&apos;和&quot;实体引用最常用在属性值中。

listview不能响应

如果你的自定义ListViewItem中有Button或者Checkable的子类控件的话,那么默认focus是交给了子控件,而ListView的Item能被选中的基础是它能获取Focus,也就是说我们可以通过将ListView中Item中包含的所有控件的focusable属性设置为false,这样的话ListView的Item自动获得了Focus的权限,也就可以被选中了,也就会响应onItemClickListener中的onItemClick()方法,然而将ListView的Item Layout的子控件focusable属性设置为false有点繁琐,我们可以通过对Item Layout的根控件设置其android:descendantFocusability=”blocksDescendant”即可.


通过wifi调试android程序

首先让android手机监听指定的端口:
  这一步需要使用shell,因此手机上要有终端模拟器,不过网上很多,随便找个就行了,依次敲入下列几行:

su//获取root权限setprop service.adb.tcp.port 5555//设置监听的端口,端口可以自定义,如5554,5555是默认的stop adbd//关闭adbdstart adbd//重新启动adbd

手机连接wifi并确保手机和电脑连接同一个网络,记下手机的ip地址,假设为a.b.c.d


电脑上打开命令提示符,敲入以下命令:

adb connect a.b.c.d//如果不输入端口号,默认是5555,自定义的端口号必须写明,对应第1步中自定义的端口号,例如:a.b.c.d:5554

配置成功,命令行显示:“connected to a.b.c.d”,然后就可以调试程序了,^_^。

要关闭wifi调试,也很简单,只需要把端口号设置为-1,并且重复第一步即可。



ndroid在adb shell里打开某个APP

打开浏览器:

# am start -n com.android.browser/com.android.browser.BrowserActivity

调用浏览器打开某个网站:

# am start -a android.intent.action.VIEW -d http://www.china.com

查看系统Activity的启动信息

连接MID至调试模式

开始--运行--CMD

输入:adb logcat ActivityManager:* *:S




Google Map V2 模拟器使用google play service:

Create a new emulator

  • for device choose "5.1'' WVGA (480 x 800: mdpi)"
  • for target choose "Android 4.1.2 - API level 16"
  • for "CPU/ABI" choose "ARM"
  • leave rest to defaults

these are the settings that are working for me. I don't know for different ones.

Start the emulator

installcom.android.vending-1.apkandcom.google.android.gms-1.apkvia ADB install command



adb shell下提示read-only file system


当使用adb shell时,向/system目录及其子目录写文件时经常提示“read-only file system”。其实产生该提示的原因很简单:/system是以ro模式挂载的,因此我们所要做的就是以读写模式(rw)重新挂载需要修改的目录(本例中为/system),具体流程如下:

1. 进入adb shell并查看当前挂在情况

命令号下输入:adb shell#mount

这时候看到当前挂载情况

rootfs on / type rootfs (rw,relatime)tmpfs on /dev type tmpfs (rw,relatime,mode=755)devpts on /dev/pts type devpts (rw,relatime,mode=600)proc on /proc type proc (rw,relatime)sysfs on /sys type sysfs (rw,relatime)none on /acct type cgroup (rw,relatime,cpuacct)tmpfs on /mnt/asec type tmpfs (rw,relatime,mode=755,gid=1000)tmpfs on /mnt/obb type tmpfs (rw,relatime,mode=755,gid=1000)none on /dev/cpuctl type cgroup (rw,relatime,cpu)/dev/block/mmcblk0p25 on /system type ext4 (ro,relatime,barrier=1,data=ordered)/dev/block/mmcblk0p26 on /data type ext4 (rw,nosuid,nodev,noatime,barrier=1,data=ordered,noauto_da_alloc)/dev/block/mmcblk0p27 on /cache type ext4 (rw,nosuid,nodev,noatime,barrier=1,data=ordered)/dev/block/mmcblk0p28 on /devlog type ext4 (rw,nosuid,nodev,noatime,barrier=1,data=ordered)/data/d on /data/d type debugfs (rw,relatime)/sys/kernel/debug on /sys/kernel/debug type debugfs (rw,relatime)/dev/block/vold/179:65 on /mnt/sdcard type vfat (rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0602,dmask=0602,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)/dev/block/vold/179:65 on /mnt/secure/asec type vfat (rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0602,dmask=0602,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)tmpfs on /mnt/sdcard/.android_secure type tmpfs (ro,relatime,size=0k,mode=000)

我们感兴趣的是

dev/block/mmcblk0p25 on /system type ext4 (ro,relatime,barrier=1,data=ordered)可以看到system是以只读权限挂载的

2. 重新挂载需要修改权限的目录

#mount -o remount -o rw /system

具体的可以看下mount的参数。

3. 查看修改后的结果




1. 手机要有root权限

2. 下载tcpdump http://www.strazzere.com/android/tcpdump

3.adb push c:\wherever_you_put\tcpdump/data/local/tcpdump

4.adb shell chmod 6755 /data/local/tcpdump

5, adb shell, su获得root权限

6, cd /data/local

7, ./tcpdump -i any -p -s 0 -w /sdcard/capture.pcap

命令参数:

# "-i any": listen on any network interface

  # "-p": disable promiscuous mode (doesn't work anyway)

  # "-s 0": capture the entire packet

  # "-w": write packets to a file (rather than printing to stdout)

  ... do whatever you want to capture, then ^C to stop it ...

8, adb pull /sdcard/capture.pcap d:/

9, 在电脑上用wireshark打开capture.pcap即可分析log

Execute the following if you would like to watch packets go by rather than capturing them to a file (-n skips DNS lookups. -s 0 captures the entire packet rather than just the header):

adbshelltcpdump-n-s0

Typical tcpdump options apply. For example, if you want to see HTTP traffic:

只监听http

adbshelltcpdump-X-n-s0port80

根据以上的信息,写一个bat去执行(tcpdump文件必须在当前目录里)。

开始tcpdump

adb push tcpdump /data/local/tcpdump adb shell chmod 6755 /data/local/tcpdump adb shell rm -r /sdcard/capture.pcap adb shell /data/local/tcpdump -i any -p -s 0 -w /sdcard/capture.pcap pause

下载tcpdump文件到电脑

adb pull /sdcard/capture.pcap capture.pcap

问题:有些机器root后通过adb shell 后,默认不是root用户,需要输入 su才能切换到root,这样在执行批处理会有问题,解决方法如下

adb shell "su -c 'sleep 1'" adb start-server

adb push tcpdump /data/local/tcpdump

因没有root权限导致的问题

adb shell su -c "/data/local/tmp/tcpdump -i any -p -s 0 -w /sdcard/netCapture.pcap"


更多相关文章

  1. Android(安卓)studio:报错String index out of range: -1
  2. Android系统中调试动态链接库.so文件的步骤
  3. Android(安卓)JUnit单元测试基础实例
  4. android中保存Bitmap图片到指定文件夹中的方法
  5. Android(安卓)Studio Gradle 重命名输出App或者Library的文件名
  6. Android之getSharedPreferences与getDefaultSharedPreferences的
  7. 完全解决!android studio更新 check for updates失败的问题
  8. DownloadManager 文件下载
  9. Android项目打包开启proguard的混淆优化带来的问题

随机推荐

  1. MAC下编译arm架构的tcpdump
  2. android占位符使用
  3. Android Studio GitHub 提交项目代码
  4. 通过修改hosts文件成功更新Android sdk .
  5. android默认焦点设置的方法
  6. Android中Alarm的机制
  7. 第一行代码 Android读书笔记(一)
  8. Now in Android:02 - 欢迎使用 Android St
  9. android动态加载Jar/dex--原创
  10. Android使用NinePatch图片实现大小可变的