Android adb

概念

Android 调试桥 (Android Debug Bridge) 是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件:

  • 客户端:用于发送命令。客户端在开发计算机上运行。您可以通过发出 adb 命令来从命令行终端调用客户端。
  • 守护进程 (adbd):在设备上运行命令。守护进程在每个设备上作为后台进程运行。
  • 服务器:管理客户端和守护进程之间的通信。服务器在开发机器上作为后台进程运行。

adb 包含在 Android SDK 平台工具软件包中。您可以使用 SDK 管理器下载此软件包,该管理器会将其安装在/android_sdk/platform-tools/ 下。

Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件:

  • 客户端:用于发送命令。客户端在开发计算机上运行。您可以通过发出 adb 命令来从命令行终端调用客户端。
  • 守护进程 (adbd):在设备上运行命令。守护进程在每个设备上作为后台进程运行。
  • 服务器:管理客户端和守护进程之间的通信。服务器在开发机器上作为后台进程运行。

adb 包含在 Android SDK 平台工具软件包中。您可以使用 SDK 管理器下载此软件包,该管理器会将其安装在 android_sdk/platform-tools/ 下。

adb 的工作原理

当您启动某个 adb 客户端时,客户端会先检查是否有 adb 服务器进程正在运行。如果没有,它将启动服务器进程。服务器在启动后会与本地 TCP 端口 5037 绑定,并监听 adb 客户端发出的命令 - 所有 adb 客户端均通过端口 5037 与 adb 服务器通信。

然后,服务器会与所有正在运行的设备建立连接。它通过扫描 5555 到 5585 之间(该范围供前 16 个模拟器使用)的奇数号端口查找模拟器。服务器一旦发现 adb 守护进程 (adbd),便会与相应的端口建立连接。请注意,每个模拟器都使用一对按顺序排列的端口 - 用于控制台连接的偶数号端口和用于 adb 连接的奇数号端口。例如:

模拟器 1,控制台:5554
模拟器 1,adb:5555
模拟器 2,控制台:5556
模拟器 2,adb:5557
依此类推

如上所示,在端口 5555 处与 adb 连接的模拟器与控制台监听端口为 5554 的模拟器是同一个。

服务器与所有设备均建立连接后,您便可以使用 adb 命令访问这些设备。由于服务器管理与设备的连接,并处理来自多个 adb 客户端的命令,因此您可以从任意客户端(或从某个脚本)控制任意设备。

在设备上启用 adb 调试

要在通过 USB 连接的设备上使用 adb,您必须在设备的系统设置中启用 USB 调试(位于开发者选项下)。
在搭载 Android 4.2 及更高版本的设备上,“开发者选项”屏幕默认情况下处于隐藏状态。如需将其显示出来,请依次转到设置 > 关于手机,然后点按版本号七次。返回上一屏幕,在底部可以找到开发者选项。
在某些设备上,“开发者选项”屏幕所在的位置或命名方式可能有所不同。
现在,您已经可以通过 USB 连接设备。您可以通过从 android_sdk/platform-tools/ 目录执行 adb devices 来验证设备是否已连接。如果已连接,您将看到设备名称以“设备”形式列出。

通过 WLAN 连接到设备

一般情况下,adb 通过 USB 与设备进行通信,但您也可以在通过 USB 完成一些初始设置后通过 WLAN 使用 adb,如下所述。不过,如果您开发的是 Wear OS 应用,则应参阅调试 Wear OS 应用指南,其中提供了有关如何通过 WLAN 和蓝牙使用 adb 的特别说明。

  1. 将 Android 设备和 adb 主机连接到这两者都可以访问的同一 WLAN 网络。请注意,并非所有接入点都适用;您可能需要使用防火墙已正确配置为支持 adb 的接入点。
  2. 如果您要连接到 Wear OS 设备,请关闭与该设备配对的手机上的蓝牙。
  3. 使用 USB 数据线将设备连接到主机。
  4. 设置目标设备以监听端口 5555 上的 TCP/IP 连接。
adb tcpip 5555
  1. 拔掉连接目标设备的 USB 数据线。
  2. 找到 Android 设备的 IP 地址。例如,对于 Nexus 设备,您可以在设置 > 关于平板电脑(或关于手机)> 状态 > IP 地址下找到 IP 地址。或者,对于 Wear OS 设备,您可以在设置 > WLAN 设置 > 高级 > IP 地址下找到 IP 地址。
  3. 通过 IP 地址连接到设备。
adb connect device_ip_address
  1. 确认主机已连接到目标设备:
$ adb devices
--------------
List of devices attached
device_ip_address 5555 device

现在,您可以开始操作了!

如果 adb 连接断开:

  1. 确保主机仍与 Android 设备连接到同一个 WLAN 网络。
  2. 通过再次执行 adb connect 步骤重新连接。
  3. 如果上述操作未解决问题,重置 adb 主机:
adb kill-server

然后,从头开始操作。

一.基本命令
1.启动adb服务
adb start-server
2.停止adb服务
adb kill-server
3.查看adb版本
adb version
-----------
Android Debug Bridge version 1.0.41
Version 29.0.5-5949299
Installed as /Users/xxx/Library/Android/sdk/platform-tools/adb
4.以root权限重启adb
adb root
5.查看连接设备
adb devices
-----------
List of devices attached
ZL5228NGMC  device

adb devices -l
--------------------
List of devices attached
ZL5228NGMF             device usb:338821120X product:deen model:motorola_one device:deen_sprout transport_id:3
6.重启设备
adb reboot
7.重启到bootloader,即刷机模式
adb reboot bootloader
8.重启到recovery,即恢复模式
adb reboot recovery
9.获取mac地址(废弃)
adb shell cat /sys/class/net/wlan0/address
10.获取CPU序列号
adb shell cat /proc/cpuinfo
---------------------------
processor   : 0
BogoMIPS    : 38.00
Features    : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part    : 0xd03
CPU revision    : 4

processor   : 1
BogoMIPS    : 38.00
Features    : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part    : 0xd03
CPU revision    : 4

processor   : 2
BogoMIPS    : 38.00
Features    : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part    : 0xd03
CPU revision    : 4

processor   : 3
BogoMIPS    : 38.00
Features    : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part    : 0xd03
CPU revision    : 4

processor   : 4
BogoMIPS    : 38.00
Features    : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part    : 0xd03
CPU revision    : 4

processor   : 5
BogoMIPS    : 38.00
Features    : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part    : 0xd03
CPU revision    : 4

processor   : 6
BogoMIPS    : 38.00
Features    : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part    : 0xd03
CPU revision    : 4

processor   : 7
BogoMIPS    : 38.00
Features    : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part    : 0xd03
CPU revision    : 4

Hardware    : Qualcomm Technologies, Inc MSM8953
Revision    : c100
Serial      : ec16b17c00000000
Device      : deen
Radio       : APAC
MSM Hardware    : MSM8953
11.查看手机分辨率
adb shell wm size
-----------------
Physical size: 720x1520

adb shell "dumpsys window|grep mUnrestrictedScreen"
---------------------------------------------------
mUnrestrictedScreen=(0,0) 720x1520
12.获取手机物理密度
adb shell wm density
--------------------
Physical density: 320
13.查看手机系统android版本
adb shell getprop ro.build.version.release
------------------------------------------
8.1.0
adb shell getprop|grep version
------------------------------
[gsm.version.baseband]: [M8953_09.03.02.03R DEEN_APACDSDS_CUST]
[gsm.version.baseband1]: [M8953_09.03.02.03R DEEN_APACDSDS_CUST]
[gsm.version.ril-impl]: [Qualcomm RIL 1.0]
[persist.radio.mcfg_version]: [null,null]
[ril.baseband.config.version]: [DEEN_APACDSDS_CUST]
[ro.build.version.all_codenames]: [REL]
[ro.build.version.base_os]: [motorola/deen/deen_sprout:8.1.0/OPK28.63-18/141f:user/release-keys]
[ro.build.version.ci]: [3]
[ro.build.version.codename]: [REL]
[ro.build.version.full]: [Blur_Version.28.201.3.deen.retail.en.US]
[ro.build.version.incremental]: [1bd2]
[ro.build.version.preview_sdk]: [0]
[ro.build.version.qcom]: [LA.UM.6.6.r1-09000-89xx.0]
[ro.build.version.release]: [8.1.0]
[ro.build.version.sdk]: [27]
[ro.build.version.security_patch]: [2018-10-01]
[ro.com.google.gmsversion]: [8.1_201806]
[ro.hw.boardversion]: [PVT]
[ro.mot.build.version.release]: [28.201]
[ro.mot.build.version.sdk_int]: [28]
[ro.property_service.version]: [2]
14.获取手机系统API版本
adb shell getprop ro.build.version.sdk
--------------------------------------
27
15.查看手机型号
adb shell getprop ro.product.model
------------------------------
motorola one

adb shell getprop|grep product
------------------------------
[ro.boot.hab.product]: [deen]
[ro.build.product]: [deen_sprout]
[ro.mot.build.oem.product]: [deen]
[ro.mot.build.product.increment]: [201]
[ro.product.board]: [msm8953]
[ro.product.brand]: [motorola]
[ro.product.cpu.abi]: [arm64-v8a]
[ro.product.cpu.abilist]: [arm64-v8a,armeabi-v7a,armeabi]
[ro.product.cpu.abilist32]: [armeabi-v7a,armeabi]
[ro.product.cpu.abilist64]: [arm64-v8a]
[ro.product.device]: [deen_sprout]
[ro.product.display]: [motorola one]
[ro.product.first_api_level]: [27]
[ro.product.locale]: [en-US]
[ro.product.manufacturer]: [motorola]
[ro.product.model]: [motorola one]
[ro.product.name]: [deen]
[ro.vendor.product.brand]: [motorola]
[ro.vendor.product.device]: [deen_sprout]
[ro.vendor.product.manufacturer]: [motorola]
[ro.vendor.product.model]: [motorola one]
[ro.vendor.product.name]: [deen_retail]
16.获取手机支持的CPU架构
adb shell getprop ro.product.cpu.abi
----------------------------------------
arm64-v8a

adb shell getprop ro.product.cpu.abilist
----------------------------------------
arm64-v8a,armeabi-v7a,armeabi

adb shell getprop ro.product.cpu.abilist32
------------------------------------------
armeabi-v7a,armeabi

adb shell getprop ro.product.cpu.abilist64
------------------------------------------
arm64-v8a
17.获取手机厂商名称
adb shell getprop ro.product.brand
--------------------------------------
motorola
18.获取序列号
adb get-serialno
----------------
ZL5228NGMC
19.获取设备id(android id)
adb shell settings get secure android_id
----------------------------------------
945c35f45e0e2ab1
20.获取手机存储信息
adb shell df
------------
Filesystem            1K-blocks     Used Available Use% Mounted on
/dev/root               2499580  1957736    525460  79% /
tmpfs                   1816724      904   1815820   1% /dev
/dev/block/dm-1          499888   417452     72116  86% /vendor
tmpfs                   1816724        0   1816724   0% /mnt
/dev/block/mmcblk0p20     96688    72884     21756  78% /firmware
/dev/block/mmcblk0p24     12016     7044      4648  61% /dsp
/dev/block/mmcblk0p31      7252     7244         0 100% /vendor/fsg
/dev/block/dm-2          186348      280    182200   1% /oem
/dev/block/mmcblk0p32     28144      608     26884   3% /persist
/dev/block/dm-3        53811180 32947380  20509516  62% /data
/data/media            53811180 32947380  20509516  62% /storage/emulated
二.应用操作相关
1.安装应用
adb install a.apk
adb -d install -r a.apk
adb -d DEVICE_ID install -r a.apk

注意:如果您在多个设备可用时发出命令但未指定目标设备,则 adb 会生成错误。

2.卸载应用
adb uninstall -k com.adb.test
adb shell pm uninstall --user 0 com.adb.test
3.获取应用信息
adb shell dumpsys package com.adb.test
4.查看应用安装路径
adb shell pm path com.adb.test
------------------------------
package:/data/app/com.adb.test-pzQ7XcpLM0vpKpfMvkosVg==/base.apk
5.查看应用版本信息
adb shell dumpsys package {your package name} | grep version
------------------------------------------------------------
versionCode=28 minSdk=21 targetSdk=28
versionName=0.7.0
6.获取当前Activity
adb shell dumpsys activity activities
-------------------------------------
com.google.android.apps.photos/.home.HomeActivity
6.启动应用
adb shell am start com.adb.test/.MainActivity
7.关闭应用
adb shell am force-stop com.adb.test
8.删除应用所有数据
adb shell pm clear com.adb.test
9.查看所有应用包名
adb shell pm list package
10.查看单个应用最大内存
adb shell getprop|grep heapgrowthlimit
--------------------------------------
[dalvik.vm.heapgrowthlimit]: [192m]
11,查看某个应用内存占用
adb shell dumpsys meminfo com.adb.test
--------------------------------------
Applications Memory Usage (in Kilobytes):
Uptime: 294830498 Realtime: 321900291

** MEMINFO in pid 9906 [com.adb.test] **
                   Pss  Private  Private  SwapPss     Heap     Heap     Heap
                 Total    Dirty    Clean    Dirty     Size    Alloc     Free
                ------   ------   ------   ------   ------   ------   ------
  Native Heap    43168    43152        0    15384   108544    79642    28901
  Dalvik Heap     3684     3524      112       23     6505     3253     3252
 Dalvik Other     3984     3984        0      104                           
        Stack     1756     1756        0      444                           
       Ashmem       12        0        0        0                           
      Gfx dev    18716    18716        0        0                           
    Other dev       46        0        8        0                           
     .so mmap    11309     4060     6280      250                           
    .apk mmap        1        0        0        0                           
    .ttf mmap       32        0        0        0                           
    .dex mmap     2727        0      728        4                           
    .oat mmap      355        0       76        0                           
    .art mmap     4320     3952       32      507                           
   Other mmap      155        8      144        0                           
   EGL mtrack    13320    13320        0        0                           
      Unknown     7276     7276        0     1683                           
        TOTAL   129260    99748     7380    18399   115049    82895    32153
 
 App Summary
                       Pss(KB)
                        ------
           Java Heap:     7508
         Native Heap:    43152
                Code:    11144
               Stack:     1756
            Graphics:    32036
       Private Other:    11532
              System:    22132
 
               TOTAL:   129260       TOTAL SWAP PSS:    18399
 
 Objects
               Views:       74         ViewRootImpl:        2
         AppContexts:        2           Activities:        1
              Assets:        2        AssetManagers:        3
       Local Binders:       28        Proxy Binders:       32
       Parcel memory:       15         Parcel count:       60
    Death Recipients:        1      OpenSSL Sockets:        2
            WebViews:        0
 
 SQL
         MEMORY_USED:        0
  PAGECACHE_OVERFLOW:       55          MALLOC_SIZE:        0
 
 DATABASES
      pgsz     dbsz   Lookaside(b)          cache  Dbname
         4       44             33        18/25/3  
/data/user/0/com.adb.test/databases/pri_wxop_tencent_analysis.db
         4       44            109       47/74/20 
 /data/user/0/com.adb.test/databases/wxop_tencent_analysis.db
         4       28             45      
1329/22/2  /data/data/com.adb.test/database/pushinfo.db

三.文件操作相关
1.拷贝文件/目录到设备
adb push <local>...<remote>
2.从设备拷贝文件/目录,-a参数保留了文件的时间戳和模式
adb pull [-a] <remote>...<local>
3.查看设备log,和studio和eclipse的logcat相同,可通过参数控制输出的日志
adb logcat  -s 过滤指定参数log  -v time 保留日志时间  >> 追加写  > 覆盖写

下面的命令含义为:打印出log信息中的时间并且包含关键字“Test” 的所有log以覆盖写的方式保存到test文件

adb logcat -v time -s Test > test.txt
4.列出目录下的文件和文件夹,可选参数-al可查看文件和文件夹的详细信息
adb shell ls [-al]
5.进入文件夹
adb shell cd <folder>
6.查看文件
adb shell cat <filename>
7.重命名文件
adb shell rename path/oldfilename path/newfilename
8.删除文件/文件夹
adb shell rm path/filename  -r 可选参数用于删除文件夹及下面的所有文件 eg:adb shell rm -r <folder>
9.移动文件
adb shell mv path/filename newpath/filename
10.拷贝文件
adb shell cp file newpath/file1
11.创建目录
adb shell mkdir path/folder
12.拷贝PC文件到sdcard
adb shell push /Users/xxx/Desktop/test.txt /sdcard/0
----------------------------------------------------
/Users/xxx/Desktop/test?...e pushed. 0.0 MB/s (669 bytes in 0.058s)
13.拷贝sdcard中文件到PC
adb pull /sdcard/0/test.txt /Users/xxx/Desktop/test/
------------------------------------------------
/sdcard/0/test.txt: 1 file pulled. 0.2 MB/s (669 bytes in 0.003s)
14、设置文件最高读写权限
adb shell chmod 777 filename

adb帮助

adb help
--------
Android Debug Bridge version 1.0.41
Version 29.0.5-5949299
Installed as /Users/xxx/Library/Android/sdk/platform-tools/adb

global options:
 -a         listen on all network interfaces, not just localhost
 -d         use USB device (error if multiple devices connected)
 -e         use TCP/IP device (error if multiple TCP/IP devices available)
 -s SERIAL  use device with given serial (overrides $ANDROID_SERIAL)
 -t ID      use device with given transport id
 -H         name of adb server host [default=localhost]
 -P         port of adb server [default=5037]
 -L SOCKET  listen on given socket for adb server [default=tcp:localhost:5037]

general commands:
 devices [-l]             list connected devices (-l for long output)
 help                     show this help message
 version                  show version num

networking:
 connect HOST[:PORT]      connect to a device via TCP/IP
 disconnect [[HOST]:PORT] disconnect from given TCP/IP device, or all
 forward --list           list all forward socket connections
 forward [--no-rebind] LOCAL REMOTE
     forward socket connection using:
       tcp:<port> (<local> may be "tcp:0" to pick any open port)
       localabstract:<unix domain socket name>
       localreserved:<unix domain socket name>
       localfilesystem:<unix domain socket name>
       dev:<character device name>
       jdwp:<process pid> (remote only)
 forward --remove LOCAL   remove specific forward socket connection
 forward --remove-all     remove all forward socket connections
 ppp TTY [PARAMETER...]   run PPP over USB
 reverse --list           list all reverse socket connections from device
 reverse [--no-rebind] REMOTE LOCAL
     reverse socket connection using:
       tcp:<port> (<remote> may be "tcp:0" to pick any open port)
       localabstract:<unix domain socket name>
       localreserved:<unix domain socket name>
       localfilesystem:<unix domain socket name>
 reverse --remove REMOTE  remove specific reverse socket connection
 reverse --remove-all     remove all reverse socket connections from device

file transfer:
 push [--sync] LOCAL... REMOTE
     copy local files/directories to device
     --sync: only push files that are newer on the host than the device
 pull [-a] REMOTE... LOCAL
     copy files/dirs from device
     -a: preserve file timestamp and mode
 sync [all|data|odm|oem|product|system|system_ext|vendor]
     sync a local build from $ANDROID_PRODUCT_OUT to the device (default all)
     -l: list files that would be copied, but don't copy them

shell:
 shell [-e ESCAPE] [-n] [-Tt] [-x] [COMMAND...]
     run remote shell command (interactive shell if no command given)
     -e: choose escape character, or "none"; default '~'
     -n: don't read from stdin
     -T: disable PTY allocation
     -t: force PTY allocation
     -x: disable remote exit codes and stdout/stderr separation
 emu COMMAND              run emulator console command

app installation (see also `adb shell cmd package help`):
 install [-lrtsdg] [--instant] PACKAGE
     push a single package to the device and install it
 install-multiple [-lrtsdpg] [--instant] PACKAGE...
     push multiple APKs to the device for a single package and install them
 install-multi-package [-lrtsdpg] [--instant] PACKAGE...
     push one or more packages to the device and install them atomically
     -r: replace existing application
     -t: allow test packages
     -d: allow version code downgrade (debuggable packages only)
     -p: partial application install (install-multiple only)
     -g: grant all runtime permissions
     --abi ABI: override platform's default ABI
     --instant: cause the app to be installed as an ephemeral install app
     --no-streaming: always push APK to device and invoke Package Manager as separate steps
     --streaming: force streaming APK directly into Package Manager
     --fastdeploy: use fast deploy
     --no-fastdeploy: prevent use of fast deploy
     --force-agent: force update of deployment agent when using fast deploy
     --date-check-agent: update deployment agent when local version is newer and using fast deploy
     --version-check-agent: update deployment agent when local version has different version code and using fast deploy
     --local-agent: locate agent files from local source build (instead of SDK location)
     (See also `adb shell pm help` for more options.)
 uninstall [-k] PACKAGE
     remove this app package from the device
     '-k': keep the data and cache directories

debugging:
 bugreport [PATH]
     write bugreport to given PATH [default=bugreport.zip];
     if PATH is a directory, the bug report is saved in that directory.
     devices that don't support zipped bug reports output to stdout.
 jdwp                     list pids of processes hosting a JDWP transport
 logcat                   show device log (logcat --help for more)

security:
 disable-verity           disable dm-verity checking on userdebug builds
 enable-verity            re-enable dm-verity checking on userdebug builds
 keygen FILE
     generate adb public/private key; private key stored in FILE,

scripting:
 wait-for[-TRANSPORT]-STATE
     wait for device to be in the given state
     STATE: device, recovery, rescue, sideload, bootloader, or disconnect
     TRANSPORT: usb, local, or any [default=any]
 get-state                print offline | bootloader | device
 get-serialno             print <serial-number>
 get-devpath              print <device-path>
 remount [-R]
      remount partitions read-write. if a reboot is required, -R will
      will automatically reboot the device.
 reboot [bootloader|recovery|sideload|sideload-auto-reboot]
     reboot the device; defaults to booting system image but
     supports bootloader and recovery too. sideload reboots
     into recovery and automatically starts sideload mode,
     sideload-auto-reboot is the same but reboots after sideloading.
 sideload OTAPACKAGE      sideload the given full OTA package
 root                     restart adbd with root permissions
 unroot                   restart adbd without root permissions
 usb                      restart adbd listening on USB
 tcpip PORT               restart adbd listening on TCP on PORT

internal debugging:
 start-server             ensure that there is a server running
 kill-server              kill the server if it is running
 reconnect                kick connection from host side to force reconnect
 reconnect device         kick connection from device side to force reconnect
 reconnect offline        reset offline/unauthorized devices to force reconnect

environment variables:
 $ADB_TRACE
     comma-separated list of debug info to log:
     all,adb,sockets,packets,rwx,usb,sync,sysdeps,transport,jdwp
 $ADB_VENDOR_KEYS         colon-separated list of keys (files or directories)
 $ANDROID_SERIAL          serial number to connect to (see -s)
 $ANDROID_LOG_TAGS        tags to be used by logcat (see logcat --help)
 $ADB_LOCAL_TRANSPORT_MAX_PORT max emulator scan port (default 5585, 16 emus)

参考:https://developer.android.google.cn/studio/command-line/adb

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,612评论 5 471
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,345评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,625评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,022评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,974评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,227评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,688评论 3 392
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,358评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,490评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,402评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,446评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,126评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,721评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,802评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,013评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,504评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,080评论 2 341