安卓手机怎么开启view server的服务
发布时间:2025-06-20 22:08:07 发布人:远客网络
一、安卓手机怎么开启view server的服务
To preserve security, Hierarchy Viewer can only connect to devices running a developer version of the Android system.
即:出于安全考虑,Hierarchy Viewer只能连接Android开发版手机或是模拟器(准确地说,只有ro.secure参数等于0且ro.debuggable等于1的android系统)。Hierarchy Viewer在连接手机时,手机上必须启动一个叫View Server的客户端与其进行socket通信。而在商业手机上,是无法开启View Server的,故Hierarchy Viewer是无法连接到普通的商业手机。
Android源码实现这一限制的地方在:
ANDROID源码根目录\frameworks\base\services\java\com\android\server\wm\WindowManageService.java
=====================================================================================
public boolean startViewServer(int port){
if(!checkCallingPermission(Manifest.permission.DUMP,”startViewServer”)){
=====================================================================================
检验一台手机是否开启了View Server的办法为:
adb shell service call window 3
若返回值是:Result: Parcel(00000000 00000000‘……..’)”说明View Server处于关闭状态
若返回值是:Result: Parcel(00000000 00000001‘……..’)”说明View Server处于开启状态
若是一台可以打开View Server的手机(Android开发版手机、模拟器or按照本帖步骤给系统打补丁的手机),我们可以使用以下命令打开View Server:
adb shell service call window 1 i32 4939
adb shell service call window 2 i32 4939
经过一番调查和实践,我发现其实只要是root,并且装有busybox的手机,通过修改手机上/system/framework中的某些文件,就可以开启。本文参考了,以下是具体步骤(本人基于Windows,若你是Linux的操作系统,直接看原帖吧):
前提是:你的手机已经获得ROOT权限,且有BUSYBOX
另外:请仔细阅读本帖的评论,或许你会有新的收获。
1.将商业手机通过USB连接PC,确保adb服务运行正常
2.备份手机上/system/framework/中的文件至PC。备份的时候请确保PC上保存备份文件的文件夹结构与手机中的/system/framework相同
例如:新建 ANDROID_SDK_ROOT\system\framework文件夹(本文出现的ANDROID_SDK_ROOT指你安装Android SDK的根目录)
接着在cmd中跳转至ANDROID_SDK_ROOT\platform-tools文件夹下,输入以下代码进行备份:
adb pull/system/framework ANDROID_SDK_ROOT\system\framework
3.进入adb shell,输出BOOTCLASSPATH:
1.在adb shell中echo$BOOTCLASSPATH>/sdcard/bootclasspath.txt
2.退回到windows cmd中,输入adb pull/sdcard/bootclasspath.txt
3. bootclasspath.txt将会保存在C:\Users\你的用户名文件夹下
在第十五步中将会用到这个txt中的内容。
4.下载baksmali和smali工具。这两个工具是用来反编译和编译odex文件的。
假设我将这两个jar都下载到了ANDROID SDK根目录下。
5.运行baksmali反编译\system\framework下的services.odex文件:
java-jar ANDROID_SDK_ROOT\baksmali-1.4.2.jar-a 17-x ANDROID_SDK_ROOT\system\framework\services.odex-d ANDROID_SDK_ROOT\system\framework
参数解释:
想特别说明的是“-a”后跟的数字,表示你系统的API Level(与你的系统版本有关)。系统版本和API Level的对照关系如下:
(另外,你不会连java-jar都不能运行吧?快去装jdk!)
此步成功的话,在同文件夹下(对于我,就是ANDROID_SDK_ROOT),会有个out文件夹生成
这里顺便解释一下odex文件和dex文件。
dex文件:Dex是Dalvik VM executes的全称,即Android Dalvik执行程序,并非Java的字节码而是Dalvik字节码,16进制机器指令。
odex文件:将dex文件依据具体机型而优化,形成的optimized dex文件,提高软件运行速度,减少软件运行时对RAM的占用。
smali文件:将dex文件变为可读易懂的代码形式,反编译出文件的一般格式。
6.用Eclipse打开out\com\android\server\wm\WindowManagerService.smali文件
查找.method private isSystemSecure()Z这个函数
================================================================
.method private isSystemSecure()Z
const-string v1,“ro.secure”
invoke-static{v1, v2}, Landroid/os/SystemProperties;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
invoke-virtual{v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
const-string v1,“ro.debuggable”
invoke-static{v1, v2}, Landroid/os/SystemProperties;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
invoke-virtual{v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
================================================================
在这段代码的倒数7,8行“:goto_21”和“return v0”之间加入“const/4 v0, 0×0″一行.这样,就使得v0返回的值永远为0×0,即false,这样就跳过了WindowManagerService.java里对isSystemSecure的判断。
.method private isSystemSecure()Z函数最后变为:
================================================================
.method private isSystemSecure()Z
const-string v1,“ro.secure”
invoke-static{v1, v2}, Landroid/os/SystemProperties;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
invoke-virtual{v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
const-string v1,“ro.debuggable”
invoke-static{v1, v2}, Landroid/os/SystemProperties;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
invoke-virtual{v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
=====================================================================================
java-jar smali-1.4.2.jar-o classes.dex
这时候,应该在ANDROID_SDK_ROOT文件夹中出现了classes.dex文件
假设,我也把zip.exe放进了ANDROID_SDK_ROOT文件夹
9.确认当前cmd命令行运行目录为ANDROID_SDK_ROOT,运行:
zip.exe services_hacked.jar./classes.dex
这时候在ANDROID_SDK_ROOT文件夹下,出现了打包好的services_hacked.jar
10.进入adb shell,输入su获得ROOT权限
11.接着输入mount,查看哪个分区挂载了/system,例如我的是:
接着,输入以下命令重新挂载/system,并更改/system权限(请将“/dev/block/mmcblk0p25”替换成你的/system挂载分区):
mount-o rw,remount-t yaffs2/dev/block/mmcblk0p25
chmod-R 777/system使得/system可以被我们任意修改
这一步的作用,主要是为了第17步能够将/system/framework里的services.odex替换掉。这一步若不成功,在第17步的时候可能出现权限不够,无法替换的错误(Read-Only File System)
我们也将dexopt-wrapper文件放在ANDROID_SDK_ROOT文件夹中
13.将services_hacked.jar和dexopt-wrapper复制到手机的/data/local/tmp文件夹中
adb push ANDROID_SDK_ROOT/services_hacked.jar/data/local/tmp
adb push ANDROID_SDK_ROOT/dexopt-wrapper/data/local/tmp
14.进入adb shell,输入su后,将dexopt-wrapper的权限改为777
chmod 777/data/local/tmp/dexopt-wrapper
15.在adb shell中cd到/data/local/tmp文件夹下,运行:
./dexopt-wrapper./services_hacked.jar./services_hacked.odex<本帖第三步存的地址,但是要删除其中的”:/system/framework/services.jar”>
这一步就是将第七部生成dex文件最终优化成了odex文件。
===================================================================================================
例如我的命令是:./dexopt-wrapper./services_hacked.jar./services_hacked.odex/system/framework/core.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/
framework.jar:/system/framework/framework2.jar:/system/framework/android.policy.jar:/system/
framework/apache-xml.jar:/system/framework/HTCDev.jar:/system/framework/HTCExtension.jar:/system/
framework/filterfw.jar:/system/framework/com.htc.android.bluetooth.jar:/system/framework/wimax.jar:
/system/framework/usbnet.jar:/system/framework/com.orange.authentication.simcard.jar
===================================================================================================
这样,便在/data/local/tmp文件夹中生成了我们自己的odex:services_hacked.odex
16.给我们自己生成的services_hacked.odex签名:
busybox dd if=/system/framework/services.odex of=/data/local/tmp/services_hacked.odex bs=1 count=20 skip=52 seek=52 conv=notrunc
conv=notrunc– don’t truncate the output file.
17.将/system/framework里的services.odex替换成我们自己制作的services_hacked.odex吧!
dd if=/data/local/tmp/services_hacked.odex of=/system/framework/services.odex
这一步运行后,过一小会儿(1分钟以内)手机就自动重启了!稍等片刻吧!
18.成功重启后,用以下命令打开View Server:
adb shell service call window 1 i32 4939
用以下命令查看View Server是否打开:
adb shell service call window 3
返回的值若是Result: Parcel(00000000 00000001‘……..’),那么你就起了!
二、安卓ipc机制安卓ipc
华迈云监控是成都华迈通信技术有限公司开发的的面向民用市场的视频服务应用。为用户提供视频通话、防盗报警等高科技智能生活服务,丰富人们的生活方式。具有实时视频,语音对讲,历史录像查询,报警查看,隐私保护等功能。
手机云监控,云存储,随时随地看监控。在要监控的地方安装网络摄像机,当有物体在监控范围内移动时,会自动拍照,并上传到大众监控云存储平台上。您可以用手机、电脑查看7天内拍到的照片。还可把手机作监控,用于对汽车、住宅的临时监控跟踪。
XMEye是一款监控软件,配套ipc、Dvr等前端监控设备,通过设备的序列号以云方式登录,将实时的监控画面显示的Android移动设备上并对设备进行预览操作。
AIDL(AndroidInterfaceDefineLanguage)是一种IPC通信方式,我们可以利用它来定义两个进程相互通信的接口。他是基于Service实现的一种线程间通信机制。它的本质是C/S架构的,需要一个服务器端,一个客户端。
首先我们在AndroidStudio中创建一个Andorid工程,
?随后添加一个module,作为aidl的服务端
?在aidlserver中创建aild目录,同时创建一个aidl文件
这边可以看到aidl的语法跟JAVA是一样的,声明了一个接口,里面定义了aidl服务器端暴露给客户端调用的方法。
?完成这部分操作之后还没有结束,我们需要手动编译程序,生成aidl对应的Java代码
我们创建了一个service,并在service内部声明了一个IBinder对象,它是一个匿名实现的IMyAidlInterface.Stub的实例(这部分我们后面讲),同时我们在发现IMyAidlInterface.Stub实例实现了add方法,这个方法正是我们在aidl中声明的供客户端调用的方法。
智能手环的蓝牙需要和安卓4.4以上版本的智能手机并有蓝牙4.0支持的手机。
2、或者运行ios7.0以上的苹果4S以上的手机,才能连接。
3、小米手环先要在手机上安装"小米动"APP,可以在网上搜索,也可以在微信扫描手环说明书提供的二维码找到APP后,下载并安装,并要打开手机设置中的蓝牙开关。
4、启动"小米运动"APP软件,登陆小米账户(初次需要注册),然后搜索手环,当手环上的指示灯闪动轻敲几下,即可相互绑定,完成连接。
5、以后就可以使用了,在手机上操作有提示,充电方法见说明书。
掌上看家观看端是一款能够让用户轻松打造室内监控系统的远程监控应用,只要有一台闲置的带有摄像头的电子设备,如电脑、平板、安卓、苹果作为采集端,再在手机上安装观看掌上看家,就可以轻松的看到采集端那头的视频了。欢迎各位朋友前来下载,打造属于自家的监控系统。
物联爱看是专为高清无线网络摄像机设计的一款辅助软件。使用该软件,一键快速绑定视频设备,即可手机实时查看监控画面,支持H.264视频压缩编码格式,为用户提供细腻、逼真、高清晰的图像。
如果绑定的设备发现监控区域内有异常情况,手机端即可接收提醒,让客户及时掌握监控环境的实时状态。而且,软件安装简单方便,特别适合于室内移动范围监控应用。
XMEye安卓手机客户端是一款专业的手机监控软件,本软件可以配套ipc、Dvr、Nvr、Hvr等前端监控设备,用户可以通过设备的序列号以云方式与手机客户端绑定,将实时的监控画面显示的Android移动设备上并对设备进行预览操作。
手机监控软件用于监护老人和小孩,实时监控对方位置,查看对方周围环境。实现了监护人对被监护人的远程监护辅助。
CamCam让您通过网络从远程电脑的摄像头观看实时视频,您可以远程查看自己的家、小孩和宠物,甚至办公室里的商业演示,非常方便!用iPhone、iPodtouch或iPad从任何地点查看您最关心的事物。
android进程间的通信(IPC)方式有哪些?
Android为了屏蔽进程的概念,利用不同的组件来表示进程之间的通信!组件间通信的核心机制是Intent,通过Intent可以开启一个Activity或Service,不论这个Activity或Service是属于当前应用还是其它应用的。
2、内容--路上带了些什么,区分性数据或内容性数据
1、显式--直接指定消息目的地,只适合同一进程内的不同组件之间通信
2、隐式--AndroidMainifest.xml中注册,一般用于跨进程通信
IPC机制:有了Intent这种基于消息的进程内或进程间通信模型,我们就可以通过Intent去开启一个Service,可以通过Intent跳转到另一个Activity,不论上面的Service或Activity是在当前进程还是其它进程内即不论是当前应用还是其它应用的Service或Activity,通过消息机制都可以进行通信!
三、我的世界手机版怎么联机
联机可以通过三种方式实现。第一种需要连接到同一个无线网,我们的小伙伴连接了同一个无线网进入游戏后就就可以一起玩了。第二种方法-添加服务工具,前提是需要知道服务器名称以及其他的东西。第三种方法-利用平台,有些平台可以创造一个虚拟的网络给大家处在同一个局限内。
1、对于连接了同一个无线网的-第一种方法
我们打开我世界进入,进入主页面,点击其中的设置选择,然后进入之后,打开其中的那个多人游戏并且是开放到了局域里面,如图。
2、接着我们进入游戏,然后我们的小伙伴连接了同一个无线网进入游戏之火就可以看到这个画面,然后点击进入就可以一起玩啦!
这个不需要连接无线网,但要联网,首先我们进入游戏,看到如图所示的页面,接着点击那个右上角的加号!
4、然后咱们就可以添加服务器啦,前提是咱们需要知道服务器名称以及其他的东西,仔细看图!然后点击添加服务器
有些平台是可以来给大家联机,他可以创造一个虚拟的网络给大家处在同一个局限内,比如某葫芦!