androidnetcfg
① Android下怎么通过应用程序同时开启wifi和3G
编程时候发现当打开WIFI网络的时候系统默认就会把3G网络给关闭,估计是出于省电的原因才如此做的,但目前我需要同时使用这两个网络接口,经过一番研究找到了方法,故写成日志记录下来。
1、android网络机制。
wifi的开启关闭首先由应用程序触发的事件开始(比如用户点击开启图标),然后传入framework层,framework层启动wpa_supplicant,同时建立socket连接与wpa_supplicant进行通信,包括对wpa_supplicant的控制与得到wpa_supplicant的回传结果。若连接上了一个无线网络,则调用dhcp服务申请ip地址(或者使用预先设置好的ip,不过大部分情况下是dhcp的)。若这一切正常则断开3g网络连接并关闭3g接口。
因此从这个角度分析,若要同时启动3g和wifi则必须绕过framework层,手动完成上述所有操作。
因此我找到的方法是在3g网络不断的情况下,手动启动wifi网络,连接指定ap并申请ip。
2、操作步骤。
(1) 准备工作
因为牵扯到底层操作,所以root必不可少,在root的情况下进入adb shell,若adb daemon没有root使用adb root命令进而使adb shell获得root权限。
原则上使用android里的终端软件也是可以的,但我没有测试。
(2)加载wifi驱动。
不加载驱动在netcfg里面根本看不到wlan0网卡,因此首先要加载驱动。
一般情况下,驱动放在/system/lib/moles下,我的驱动模块是wlan.ko。
insmod /system/lib/moles/wlan.ko。
接着删除默认路由表项
ip route del default via 172.18.206.76 dev rmnet_usb0
重新添加指向wifi的默认路由表
ip route add default via 192.168.1.140 dev wlan0
② 怎么把电脑的网络共享到手机上使用
我在网上找到了一种解决方案
USB 反向共享 不需要 Root权限 和 ADB命令,适用 Android(所有版本)和Windows 10
以下内容是用Chrome翻译出的译文,文字都翻译成中文,但图片内容还是英文。
本指南允许您通过可为手机充电的通用USB电缆与Android设备共享Windows 10PC的Internet连接。如果您不能或不想在智能手机上使用WIFI并且您不想消耗数据计划中的流量,则此功能非常有用。限制手机无线连接使用的一个很好的理由是电磁污染会影响您的身体。但这是另一个故事。本指南的重点是,您的手机不需要植根。然后,我重复一遍,所有工作都没有生根宝贵的智能手机。不幸的是,这涉及到某些应用程序(但不是最重要的)至少需要虚拟使用数据连接,因为您无法安装Xposed模块来解决这些应用程序的愚蠢限制。但这是较小的邪恶。此外,本指南还适用于Lollipop以上的Android版本。本指南仅需要内置的Android usb网络共享功能和Windows 10 PC,因此它适用于所有Android版本,甚至无需在Windows上安装ADB(Android Debug Bridge)。它使用适用于Android和Windows的免费开源“openvpn”程序。唯一的限制是它一次只适用于单个Android设备。
步骤
从这里或从下面下载“openvpn for Windows”。双击刚刚下载的文件以开始安装并确认Windows安全消息。
OpenVPN-Windows32bit
OpenVPN-Windows64bit
确保在安装过程中选择了所有组件。
注1:本教程假设USB网络共享模式下智能手机的IP地址为192.168.42.129,应该是这样。通过在PlayStore的“android terminal”应用程序中键入“netcfg”来检查这一点,并最终在上面相应地更改它,以及“Remote NDIS”接口的192.168.42.128地址。
注意2:如果在智能手机(或平板电脑)重新启动“远程NDIS”网络名称更改后,再次按照我们的说明将新的网络名称设置为“专用网络”,否则它将不再起作用。
注3:稍作修改后,本指南也适用于低于10的Windows版本。
③ 我怎样才能连接与亚行至Android通过TCP
手动处理 从您的设备,如果它是植根 根据对XDA开发后,您可以启用adb通过WiFi从装置su
setprop service.adb.tcp.port 5555
stop adbd
start adbd
并且您可以禁用它,并返回亚行与监听USBsetprop service.adb.tcp.port -1
stop adbd
start adbd
从电脑,如果你有USB连接已经 这是更容易切换无线网络,如果你已经有了USB访问。从该行已在设备通过USB接口,连接问题adb tcpip 5555
adb connect 192.168.0.101:5555
一定要更换192.168.0.101与实际分配给您的设备的IP地址。 告诉亚行后台程序返回到监听通过USBadb usb
应用自动化进程 也有在谷歌播放的自动执行此过程的几个应用程序 CodeGo.net,快速搜索建议adbWireless,支持WiFiadb和adb的WiFi。所有这些都需要root权限,但adbWireless需要更少的权限。
2. 这是非常简单的。 首先确保你的手机是植根。 从市场上下载一个终端仿真器(有很多是free的)。 请确保您的Android连接到您的无线网络,并获得无线IP地址。 打开终端程序并键入:su
setprop service.adb.tcp.port 5555
stop adbd
start adbd
现在去(假设你视窗)在桌面上创建一个快捷方式为“cmd.exe的”(不含引号)。 右键单击CMD快捷方式并选择"Run as Administrator"改变你的android-sdk-windows\tools folder类型:adb connect ***wifi.ip.address***:5555
(example: adb connect 192.168.0.105:5555)
亚行现在应该说你已连接。 注意:如果你太快给它可能会失败。所以,如果你说这是行不通的尝试至少2 5秒钟的时间间隔。
3. 我知道这是旧的,但我想补充我的2美分- 我需要得到两个USB和TCPIP工作的adb(不要问),所以我做了以下(使用方向其他人张贴的XDA开发) 运用adb shell:su
#set the port number for adbd
setprop service.adb.tcp.port 5555
#run the adbd daemon *again* instead of doing stop/start, so there
#are 2 instances of adbd running.
adbd &
#set the port back to USB, so the next time adb is started it's
#on USB again.
setprop service.adb.tcp.port -1
exit
4. 正如布赖恩说: 根据对XDA开发后,您可以启用adb通过WiFi从装置 对应setProp service.adb.tcp.port 5555 停止adbd 启动adbd 并且您可以禁用它,并返回亚行与监听USB 对应setProp service.adb.tcp.port-1 停止adbd 启动adbd 如果你有USB连接已经,它是更容易切换无线网络。从该行已在设备通过USB接口,连接问题 亚行TCPIP 5555 ADB连接192.168.0.101:5555 告诉亚行后台程序返回到监听通过USB 也有在Android Market上的几个应用程序能自动完成这些过程。 它works.You只需要访问Android shell,然后输入 另外一个(容易)解决方案是目前市场上:adbWireless,它会自动设置您的手机。 根是必须的!为...
5. 从adb --helpconnect <host>:<port> - connect to a device via TCP/IP
顺便说那行选项。 你应该尝试将手机连接到你的无线网络,然后得到它的IP从您的路由器,它不会工作,对 端口是5554
6. 您保存的adb路径到您的Windows路径 在Android激活调试模式 连接到PC 提示(有管理员右)类型:adb的TCPIP 5555 断开平板电脑,或从电脑智能手机 提示符下键入:ADB连接IPADDRESS(IP地址为您的平板电脑或智能手机的DHCP / IP地址,您可以通过无线网络找到->电流 现在,提示你应该看到类似的结果:连接到xxx.xxx.xxx.xxx:5555
7.adb tcpip 5555
奇怪,但是这只是工作,如果我有USB电缆连接,然后我就可以拔掉,并为它去与一切ADB。 而返回时,adb usb
只会工作连接。 没关系,如果我发出setprop service.adb.tcp.port 5555
或setprop service.adb.tcp.port -1
然后停止和启动adbd,我仍然需要电缆或这是行不通的。 所以,如果我的亚行不工作,我敢打赌,我将无法使亚行通过WiFi两种。
8. 你可以ssh本地端口转发。但它仍然涉及电缆。 您的USB连接(主机)与一个sshd运行。 在远程(游客)个人电脑开始能够portforwarding /隧道的ssh客户端端。 例如:砰砰-L 5037:本地主机:5037 这种结构给我的设备连接到虚拟机。 到是不够稳定(在调试过程中) SSH隧道工程为自由和更可靠。
9. 我不知道如何连接的设备,而在所有的任何一个USB连接,但如果你能,也许在您连接它可以通过发出切换adbd到TCP模式adb tcpip <port>
从终端,从任何PC上通过连接到您的设备通过WiFi:adb connect <ip>:<port>
也许也有可能从该装置上的终端切换到TCP模式。
10. 我觉得其他的答案就简单得多了adbWireless: 只需在手机上安装一个应用程序切换调试通过wifi,安装一个Eclipse插件,你就大功告成了。
11. 要连接您的TCP端口 请确保您的系统和设备连接到网络 1。打开控制台的cmd.exe 2,型号ADB TCPIP 5555 3。至系统->选项-> USB调试unchek它TCPIP连接 4.type ADB连接192.168.1.2这是您的设备ip地址 5。连接到192.168.1.2 如果你错误:未找到设备 连接设备到系统然后按照 为扎根设备 对应setProp service.adb.tcp.port 5555 停止adbd 启动adbd
12. 在我的系统是这样的: 我在我的linux shell中的Android设备,一个简单的“使用ifconfig”没有我的IP地址。我只好类型: 用ifconfig eth0 -或- 加上netcfg 让我的IP地址。 (我知道是eth0的配置,我看到它在我的dmesg)然后我做了: 对应setProp service.adb.tcp.port-1 停止adbd 启动adbd 然后在我的Win7盒(一个运行Eclipse 3.7.1)。我打开提示 \\ Android的SDK \\平台工具> 没有以管理员身份运行。然后我做了一个 ADB连接12.345.678.90 我从来没有把一个端口。如果我做了 亚行TCPIP 5555 它说,它无法找到该设备,然后没有出现在我的“亚行的设备”列表中。即这只是工作,如果我不这样做上面。 我可以做一个“亚壳”与我的Android设备。但我的Android设备不现在出现在我的运行->运行配置-> Target选项卡。在另一方面,如果我把目标选项卡设置为自动。后来,当我通过运行我的应用程序运行->运行它并运行我的Android设备上,即使我的Android设备甚至没有列为我的目标之一。
13. 要使用TCP和USB模式之间切换只需你可以将它添加到/init.rc:on property:service.adb.tcp.port=*
restart adbd
on property:service.adb.tcp.enable=1
setprop service.adb.tcp.port 5555
on property:service.adb.tcp.enable=0
setprop service.adb.tcp.port -1
现在你财产service.adb.tcp.enable启用或禁用侦听端口5555。运行netstat以检查它是否在听。正如你可以看到它也会触发,如果你想改变service.adb.tcp.port手动。
14. 使用adbwireless应用程序,使手机,亚行从Windows机器连接到它对话。在手机上的应用程序adbwireless告诉你如何连接到它,给人的IP地址和一切。 要少得多有趣的选择是通过USB进行连接,告诉亚行通过TCPIP 5555手机TCPIP,然后断开USB,ADB连接。这是更难通过这种方式,你必须找出手机的IP地址,你自己(adbwireless告诉你的IP),你必须通过USB进行连接,你必须运行adb的TCPIP(adbwireless需要的是照顾过)。 所以:在手机上安装adbwireless。使用它。这是可能的,我这样做经常在Linux和Windows上。
15. 我放在一起自动启用和通过TCP连接adb,通过USB连接的设备的批处理文件。有了它,你不必把在IP手动。@echo off
setlocal
REM Use a default env variable to find adb if possible
if NOT "%AndroidSDK%" == "" set PATH=%PATH%;%AndroidSDK%\platform-tools
REM If off is first parameter then we turn off the tcp connection.
if "%1%" == "off" goto off
REM Set vars
set port=%1
set int=%2
if "%port%" == "" set port=5557
if "%int%" == "" set int=wlan0
REM Enable TCP
adb -d wait-for-device tcpip %port%
REM Get IP Address from device
set shellCmd="ip addr show %int% | grep 'inet [0-9]{1,3}(\.[0-9]{1,3}){3}' -oE | grep '[0-9]{1,3}(\.[0-9]{1,3}){3}' -oE"
for /f %%i in ('adb wait-for-device shell %shellCmd%') do set IP=%%i
REM Connect ADB to device
adb connect %IP%:%port%
goto end
:fail
echo adbWifi [port] [interface]
echo adbWifi off
goto end
:off
adb wait-for-device usb
④ Android模拟器太慢怎么办
用virtualbox新建虚拟机的时候,我一开始选择的是other,安装过程正常,启动没成功;于是重新建立虚拟机,选择linux和linux2.6,正常;
一开始想给虚拟机分配1G内存,但是virtualBox警告说会使PC变慢,于是我分了700多M;
网上说网络设置要选择bridged adapter,可是我的模拟器还是无法使用网络,比如用浏览器上网失败,不知为何?
安装完android之后,有时候虚拟机无法正常启动,有时候桌面上有一块黑的,重启一下就可以了;
一开始鼠标点不中android桌面,选择虚拟机窗口的设置:控制->禁止自动独占鼠标;鼠标从模拟器移除来的时候,按一下右边的Ctrl即可;
此时eclipse还找不到虚拟机,先查看android的ip地址,在android界面下按Alt+F1,很奇怪我的机器是Alt+F2,进入命令行,敲:netcfg,我的android地址是176.168.1.106,然后设置eclipse:window->preference->Android-> DDMS->Use ADBHOST打勾,value设置为刚才看到的ip地址;然后打开eclipse的DDMS界面,在左边device标签找到一个向下按钮,点击打开菜单,找到reset adb,点击,eclipse就找到虚拟机了;
选择我的android工程,点击run,程序在android模拟器中启动了,速度比android官方模拟器要快,占用电脑内存也少很多,很好;
一段时间不动,android进入锁屏,当我想开锁的时候,点不中,此时按一下Esc就可以了;