https://blog.csdn.net/ouyang_peng/article/details/50370786

首先弄懂怎么设置adb wifi无线调试的功能,如下所示。

1. 手机端开启adb tcp连接端口

:/$setprop service.adb.tcp.port 5555
:/$stop adbd
:/$start adbd

其中setprop是用来设置系统属性的,这里不需要root权限,su即可。可通过adb shell设置,亦可通过手机上安装的Android terminal设置。

2. 电脑端的设置和使用

连接adb,其中phone_ipaddress和portnumber是指手机的ip和前面设置的监听端口号(如5555)

adb connect phone_ipaddress:portnumber

直接adb shell或adb -s 设备shell连接设备

如若要断开则如下:

adb disconnect phone_ipaddress:port

但是每次这样的去设置很繁琐,所以直接在设置中做一个开关就把手机端的设置做好,如下所示:

一、打开开关,并连接Wifi

二、打开开关,没有连接Wifi

三、未打开开关

这样就可以直接进行adb wifi调试了,手机端就不用每次都先用USB调试去设置修改的属性,才能激活adb wifi调试。

======================================================================================================

下面来具体说说实现的思路:

第一步:在【设置】-->【开发者选项】中做一个类似于【USB调试】的开关【Wifi调试】

第二步:【Wifi调试】开关打开就激活监听5555端口,用来进行adb wifi调试,【Wifi调试】开关关闭就不监听5555端口,这样就不能进行adb wifi调试

第三步:在第二步中打开关闭【Wifi调试】开关的时候,调用相应的接口进行设置

第四步:将第三步中要调用的接口写好

1、先在布局中加入该开关

首先找到布局文件,packages/apps/Settings/res/xml/development_prefs.xml,找到【USB调试】开关的相应代码,然后再里面加一个【Wifi调试】开关,代码如下:

  1. <SwitchPreference
  2. android:key="enable_adb"
  3. android:title="@string/enable_adb"
  4. android:summary="@string/enable_adb_summary"/>
  5. <!-- added by ouyang start -->
  6. <SwitchPreference
  7. android:key="enable_wifi_adb"
  8. android:title="@string/enable_wifi_adb"
  9. android:summary="@string/enable_wifi_adb_summary"/>
  10. - added by ouyang end -->

上面代码中,第一个代码是【USB调试】开关的代码,第二个是我加的【Wifi调试】开关的代码,然后为什么的字符串做相应的国际化操作,代码如下:

packages/apps/Settings/res/values-zh-rCN/strings.xml 中加入:

  1. <!-- added by ouyang start 2015-12-17 -->
  2. <string name="enable_wifi_adb">Wifi调试</string>
  3. <string name="enable_wifi_adb_openwifi">Wifi没连接,请连接wifi</string>
  4. <string name="enable_wifi_adb_summary">连接Wifi后启用调试模式</string>
  5. <string name="enable_wifi_adb_connected_summary">Wifi调试已打开,在电脑端你可以输入以下命令进行调试:\n
  6. adb connect <xliff:g id="ip_address">%1$s</xliff:g>:5555</string>
  7. <!-- added by ouyang end 2015-12-17 -->

packages/apps/Settings/res/values/strings.xml 中加入:

  1. <!-- added by ouyang start 2015-12-17 -->
  2. <string name="enable_wifi_adb">Wifi debugging</string>
  3. <string name="enable_wifi_adb_openwifi">Wifi is not connected,please turn wifi on and connect it</string>
  4. <string name="enable_wifi_adb_summary">Debug mode when Wifi is connected</string>
  5. <string name="enable_wifi_adb_connected_summary">adb wifi is on,from your computer run:\n
  6. adb connect <xliff:g id="ip_address">%1$s</xliff:g>:5555</string>
  7. <!-- added by ouyang end 2015-12-17 -->

2、在packages/apps/Settings/src/com/android/settings/DevelopmentSettings.java文件中,对刚才加入的【Wifi调试】开关进行相关的逻辑处理。

首先先定义开关的几个变量,如下:

  1. //add by ouyang 2015-12-17  start
  2. private static final String ENABLE_WIFI_ADB = "enable_wifi_adb";
  3. private static final String ADB_WIFI_ENABLED_KEY = "ADB_WIFI_ENABLED";
  4. private static SwitchPreference mEnableWifiAdb;
  5. //add by ouyang 2015-12-17  end

然后再onCreate()方法中初始化【Wifi调试】开关,如下:

  1. mEnableAdb = findAndInitSwitchPref(ENABLE_ADB);
  2. //add by ouyang 2015-12-17
  3. mEnableWifiAdb = findAndInitSwitchPref(ENABLE_WIFI_ADB);

然后在onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference)方法中对【Wifi调试】开关的打开和关闭操作做逻辑处理。

  1. if (preference == mEnableAdb) {
  2. if (mEnableAdb.isChecked()) {
  3. mDialogClicked = false;
  4. if (mAdbDialog != null) dismissDialogs();
  5. mAdbDialog = new AlertDialog.Builder(getActivity()).setMessage(
  6. getActivity().getResources().getString(R.string.adb_warning_message))
  7. .setTitle(R.string.adb_warning_title)
  8. .setPositiveButton(android.R.string.yes, this)
  9. .setNegativeButton(android.R.string.no, this)
  10. .show();
  11. mAdbDialog.setOnDismissListener(this);
  12. } else {
  13. Settings.Global.putInt(getActivity().getContentResolver(),
  14. Settings.Global.ADB_ENABLED, 0);
  15. mVerifyAppsOverUsb.setEnabled(false);
  16. mVerifyAppsOverUsb.setChecked(false);
  17. /// M: ALPS01256802, The "Developer options" status is opened.
  18. onPreferenceTreeClick(null, mVerifyAppsOverUsb);
  19. updateBugreportOptions();
  20. }
  21. }
  22. //add by ouyang 2015-12-17 start
  23. else if (preference == mEnableWifiAdb) {
  24. if (mEnableWifiAdb.isChecked()) {
  25. Settings.Global.putInt(getActivity().getContentResolver(),ADB_WIFI_ENABLED_KEY, 1);
  26. android.os.SystemProperties.set("sys.connect.adb.wifi","1");
  27. WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
  28. WifiInfo wifiInfo = wifiManager.getConnectionInfo();
  29. int ipAddress = wifiInfo.getIpAddress();
  30. String ipAddressString = (ipAddress & 0xFF ) + "." +((ipAddress >> 8 ) & 0xFF) + "." +
  31. ((ipAddress >> 16 ) & 0xFF) + "." +( ipAddress >> 24 & 0xFF) ;
  32. Log.i(TAG, "ipAddress="+ipAddress);
  33. Log.i(TAG, "ipAddressString="+ipAddressString);
  34. if ("0.0.0.0".equals(ipAddressString)) {
  35. mEnableWifiAdb.setSummary(getResources().getString(R.string.enable_wifi_adb_openwifi));
  36. }else{
  37. mEnableWifiAdb.setSummary(getResources().
  38. getString(R.string.enable_wifi_adb_connected_summary,ipAddressString));
  39. }
  40. } else {
  41. Settings.Global.putInt(getActivity().getContentResolver(),ADB_WIFI_ENABLED_KEY, 0);
  42. android.os.SystemProperties.set("sys.connect.adb.wifi","0");
  43. mEnableWifiAdb.setSummary(getResources().getString(R.string.enable_wifi_adb_summary));
  44. }
  45. }
  46. //add by ouyang 2015-12-17 end

上面的代码主要是,

当【Wifi调试】开关打开的时候,保存一个原来表示该【Wifi调试】开关打开关闭的状态的值为1,然后调用接口android.os.SystemProperties.set("sys.connect.adb.wifi","1");如果wifi这个时候打开就显示相应的adb wifi命令,如ip地址为192.168.107.201的时候就显示,"Wifi调试已打开,在电脑端你可以输入以下命令进行调试:adb connect 192.168.107.201:5555";如果wifi为打开,就提示“Wifi没连接,请连接wifi”

当【Wifi调试】开关关闭的时候,保存一个原来表示该【Wifi调试】开关打开关闭的状态的值为0,然后调用接口android.os.SystemProperties.set("sys.connect.adb.wifi","0");

ADB_WIFI_ENABLED_KEY这个状态值,在进入该Activity的时候,如果上次打开了【Wifi调试】开关,那么下次进来的时候就要显示【Wifi调试】开关是打开状态,否则是关闭状态。下面说说ADB_WIFI_ENABLED_KEY这个状态值的相关代码,如下:

在onResume()方法中,加入下面代码:

  1. //add by ouyang 2015-12-17 start
  2. IntentFilter filter = new IntentFilter();
  3. filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
  4. filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
  5. filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
  6. getActivity().registerReceiver(wifiBroadcastReceiver, filter);
  7. boolean isAdbWifiChecked = Settings.Global.getInt(getActivity().getContentResolver(),ADB_WIFI_ENABLED_KEY, 0) != 0;
  8. mEnableWifiAdb.setChecked(isAdbWifiChecked);
  9. Log.i(TAG, "isAdbWifiChecked:" + isAdbWifiChecked);
  10. //add by ouyang 2015-12-17 end

代码的意思是,进入该Activity就动态的注册一个广播,用来监听Wifi的状态改变的,然后来动态的显示Android手机获取的IP地址。然后根据ADB_WIFI_ENABLED_KEY这个状态值来显示【Wifi调试】开关的打开关闭状态。

在updateAllOptions()方法中,也要去做下处理,代码如下:

  1. /// M: CR ALPS00244115. Lock and unlock screen, the "USB debugging" is unchecked.
  2. boolean isChecked = (mAdbDialog != null && mAdbDialog.isShowing()) ? true :
  3. (Settings.Global.getInt(cr, Settings.Global.ADB_ENABLED, 0) != 0);
  4. updateSwitchPreference(mEnableAdb, isChecked);
  5. //add by ouyang 2015-12-17 start
  6. boolean isAdbWifiChecked = Settings.Global.getInt(cr,ADB_WIFI_ENABLED_KEY, 0) != 0;
  7. updateSwitchPreference(mEnableWifiAdb, isAdbWifiChecked);
  8. //add by ouyang 2015-12-17 end
  9. /// M: update usb preference again
  10. mExt.customUSBPreference(mEnableAdb);
  11. //add by ouyang 2015-12-17
  12. mExt.customUSBPreference(mEnableWifiAdb);

下面来说说上面动态注册的广播,代码如下:

  1. BroadcastReceiver wifiBroadcastReceiver = new BroadcastReceiver() {
  2. @Override
  3. public void onReceive(Context context, Intent intent) {
  4. String TAG = "wifiBroadcastReceiver";
  5. boolean isAdbWifiChecked = mEnableWifiAdb.isChecked();
  6. ConnectivityManager connectivityManager = (ConnectivityManager) context
  7. .getSystemService(Context.CONNECTIVITY_SERVICE);
  8. NetworkInfo net = connectivityManager.getActiveNetworkInfo();
  9. if (net == null) {
  10. Log.i(TAG, "No net type");
  11. if (isAdbWifiChecked) {
  12. mEnableWifiAdb.setSummary(getResources()
  13. .getString(R.string.enable_wifi_adb_openwifi));
  14. }
  15. } else {
  16. Log.i(TAG, "Net Type:" + net.getTypeName());
  17. }
  18. State wifi = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
  19. if (wifi == State.CONNECTED || wifi == State.CONNECTING) {
  20. Log.i(TAG, "wifi connected");
  21. WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
  22. WifiInfo wifiInfo = wifiManager.getConnectionInfo();
  23. int ipAddress = wifiInfo.getIpAddress();
  24. String ipAddressString = (ipAddress & 0xFF) + "." + ((ipAddress >> 8) & 0xFF) + "."
  25. + ((ipAddress >> 16) & 0xFF) + "." + (ipAddress >> 24 & 0xFF);
  26. if (isAdbWifiChecked) {
  27. mEnableWifiAdb.setSummary(
  28. getResources().getString(
  29. R.string.enable_wifi_adb_connected_summary, ipAddressString));
  30. }
  31. Log.i(TAG, getResources().getString(
  32. R.string.enable_wifi_adb_connected_summary, ipAddressString));
  33. } else if (wifi == State.DISCONNECTED || wifi == State.DISCONNECTING) {
  34. Log.i(TAG, "wifi disconnected");
  35. if (isAdbWifiChecked) {
  36. mEnableWifiAdb.setSummary(
  37. getResources().getString(R.string.enable_wifi_adb_openwifi));
  38. }
  39. Log.i(TAG, getResources().getString(
  40. R.string.enable_wifi_adb_connected_summary));
  41. }
  42. }
  43. };

上面的代码主要是当【Wifi调试】开关打开的时候,来用动态表示Android手机的Wifi连接状态,如果wifi未连接,就提示“Wifi没连接,请连接wifi”,如果Wifi连接了,就动态的将从DHCP服务器获取的IP地址显示出来,如ip地址为192.168.107.201的时候就显示,"Wifi调试已打开,在电脑端你可以输入以下命令进行调试:adb connect 192.168.107.201:5555"

======================================================================================================

好吧,在packages/apps/Settings/,即Settings APP层面的代码写完了,下面来说说调用的两个接口怎么实现。

android.os.SystemProperties.set("sys.connect.adb.wifi", "1");

android.os.SystemProperties.set("sys.connect.adb.wifi", "0");

首先找到frameworks/base/core/java/android/os/SystemProperties.java文件,找到set(String
key, String val)方法,代码如下,发现调用了native_set(key, val)方法。

  1. /**
  2. * Set the value for the given key.
  3. * @throws IllegalArgumentException if the key exceeds 32 characters
  4. * @throws IllegalArgumentException if the value exceeds 92 characters
  5. */
  6. public static void set(String key, String val) {
  7. if (key.length() > PROP_NAME_MAX) {
  8. throw new IllegalArgumentException("key.length > " + PROP_NAME_MAX);
  9. }
  10. if (val != null && val.length() > PROP_VALUE_MAX) {
  11. throw new IllegalArgumentException("val.length > " +
  12. PROP_VALUE_MAX);
  13. }
  14. native_set(key, val);
  15. }

native_set(key, val)方法定义如下:

  1. private static native void native_set(String key, String def);

该接口类在初始化运行环境中注册对应的cpp接口android_os_SystemProperties.cpp,实际操作通过JNI调用的是cpp文件对应的接口:

frameworks/base/core/jni/AndroidRuntime.cpp

  1. namespace android {
  2. extern int register_android_os_SystemProperties(JNIEnv *env);
  3. }

frameworks/base/core/jni/android_os_SystemProperties.cpp

  1. static void SystemProperties_set(JNIEnv *env, jobject clazz,
  2. jstring keyJ, jstring valJ)
  3. {
  4. int err;
  5. const char* key;
  6. const char* val;
  7. if (keyJ == NULL) {
  8. jniThrowNullPointerException(env, "key must not be null.");
  9. return ;
  10. }
  11. key = env->GetStringUTFChars(keyJ, NULL);
  12. if (valJ == NULL) {
  13. val = "";       /* NULL pointer not allowed here */
  14. } else {
  15. val = env->GetStringUTFChars(valJ, NULL);
  16. }
  17. err = property_set(key, val);
  18. env->ReleaseStringUTFChars(keyJ, key);
  19. if (valJ != NULL) {
  20. env->ReleaseStringUTFChars(valJ, val);
  21. }
  22. if (err < 0) {
  23. ALOGE("setproperty key=%s value=%s err=%d\n", key, val, err);
  24. jniThrowException(env, "java/lang/RuntimeException",
  25. "failed to set system property");
  26. }
  27. }

好了,关于该android.os.SystemProperties.set()方法的分析,可以参考

http://blog.csdn.net/ameyume/article/details/8056492

http://www.blogjava.net/anymobile/articles/301989.html

下面直接写下面两个接口的实现

android.os.SystemProperties.set("sys.connect.adb.wifi", "1");

android.os.SystemProperties.set("sys.connect.adb.wifi", "0");

在device/lentek/lentk6735_66t_l1/E580/init.rc文件中加入下面的代码,其中E580是项目的名称。

  1. #added by ouyang start connect adb with wifi
  2. on property:sys.connect.adb.wifi=1
  3. setprop service.adb.tcp.port 5555
  4. stop adbd
  5. start adbd
  6. on property:sys.connect.adb.wifi=0
  7. setprop service.adb.tcp.port ""
  8. stop adbd
  9. start adbd
  10. #added by ouyang end connect adb with wifi

上面代码就是当调用

android.os.SystemProperties.set("sys.connect.adb.wifi", "1");和sys.connect.adb.wifiandroid.os.SystemProperties.set("sys.connect.adb.wifi", "0");接口的时候的具体实现,

即"sys.connect.adb.wifi"属性设置为1的时候,监听5555端口,

"sys.connect.adb.wifi"属性设置为0的时候,不监听任何端口

====================================================================================

好了,下面来再一次测一测该功能怎么样,重新打开wifi,重新打开【Wifi调试】开关,显示如下:

可以看出来,此时Android手机的IP地址是192.168.107.168,因此下面在PC端测试看是否可以用adb
wifi无线调试,使用命令adb connect 192.168.107.168连接,adb disconnect
192.168.107.168断开连接,如下图所示:

  1. C:\Documents and Settings\Administrator>adb connect 192.168.107.168
  2. connected to 192.168.107.168:5555
  3. C:\Documents and Settings\Administrator>adb shell
  4. shell@lentk6735_66t_l1:/ $ ll
  5. drwxr-xr-x root     root              2015-12-21 10:15 acct
  6. drwxrwx--- system   cache             2015-12-17 19:01 cache
  7. lrwxrwxrwx root     root              1970-01-01 08:00 charger -> /sbin/healthd
  8. dr-x------ root     root              2015-12-21 10:15 config
  9. drwxr-xr-x root     root              2015-12-21 10:15 custom
  10. lrwxrwxrwx root     root              2015-12-21 10:15 d -> /sys/kernel/debug
  11. drwxrwx--x system   system            2015-12-21 10:16 data
  12. -rw-r--r-- root     root          385 1970-01-01 08:00 default.prop
  13. drwxr-xr-x root     root              2015-12-21 10:15 dev
  14. -rw-r--r-- root     root          127 1970-01-01 08:00 enableswap.sh
  15. lrwxrwxrwx root     root              2015-12-21 10:15 etc -> /system/etc
  16. -rw-r--r-- root     root         1851 1970-01-01 08:00 factory_init.project.rc
  17. -rw-r--r-- root     root        18861 1970-01-01 08:00 factory_init.rc
  18. -rw-r--r-- root     root        31413 1970-01-01 08:00 file_contexts
  19. -rw-r----- root     root         1980 1970-01-01 08:00 fstab.mt6735
  20. -rwxr-x--- root     root       543928 1970-01-01 08:00 init
  21. -rwxr-x--- root     root          605 1970-01-01 08:00 init.aee.rc
  22. -rwxr-x--- root     root         2065 1970-01-01 08:00 init.c2k.rc
  23. -rwxr-x--- root     root         1071 1970-01-01 08:00 init.environ.rc
  24. -rwxr-x--- root     root         3548 1970-01-01 08:00 init.modem.rc
  25. -rwxr-x--- root     root        45152 1970-01-01 08:00 init.mt6735.rc
  26. -rwxr-x--- root     root        32013 1970-01-01 08:00 init.mt6735.usb.rc
  27. -rwxr-x--- root     root          963 1970-01-01 08:00 init.no_ssd.rc
  28. -rwxr-x--- root     root         4411 1970-01-01 08:00 init.project.rc
  29. -rwxr-x--- root     root        22787 1970-01-01 08:00 init.rc
  30. -rwxr-x--- root     root          972 1970-01-01 08:00 init.recovery.mt6735.rc
  31. -rwxr-x--- root     root         2288 1970-01-01 08:00 init.trace.rc
  32. -rwxr-x--- root     root         3885 1970-01-01 08:00 init.usb.rc
  33. -rwxr-x--- root     root          583 1970-01-01 08:00 init.xlog.rc
  34. -rwxr-x--- root     root          301 1970-01-01 08:00 init.zygote32.rc
  35. -rwxr-x--- root     root          531 1970-01-01 08:00 init.zygote64_32.rc
  36. -rw-r--r-- root     root         1004 1970-01-01 08:00 meta_init.c2k.rc
  37. -rw-r--r-- root     root         1062 1970-01-01 08:00 meta_init.modem.rc
  38. -rw-r--r-- root     root         1655 1970-01-01 08:00 meta_init.project.rc
  39. -rw-r--r-- root     root        14464 1970-01-01 08:00 meta_init.rc
  40. drwxrwxr-x root     system            2015-12-21 10:15 mnt
  41. drwxrws--- root     system            2015-12-17 18:59 nvdata
  42. drwxrwx--x system   system            2015-12-21 10:15 persist
  43. dr-xr-xr-x root     root              1970-01-01 08:00 proc
  44. -rw-r--r-- root     root         9326 1970-01-01 08:00 property_contexts
  45. drwxrwx--- system   system            2015-12-17 18:59 protect_f
  46. drwxrwx--- system   system            2015-12-17 18:59 protect_s
  47. drwx------ root     root              2015-12-05 18:05 root
  48. drwxr-x--- root     root              1970-01-01 08:00 sbin
  49. lrwxrwxrwx root     root              2015-12-21 10:15 sdcard -> /storage/sdcard0
  50. -rw-r--r-- root     root          471 1970-01-01 08:00 seapp_contexts
  51. -rw-r--r-- root     root           80 1970-01-01 08:00 selinux_version
  52. -rw-r--r-- root     root       258377 1970-01-01 08:00 sepolicy
  53. -rw-r--r-- root     root        11419 1970-01-01 08:00 service_contexts
  54. drwxr-x--x root     sdcard_r          2015-12-21 10:15 storage
  55. dr-xr-xr-x root     root              2015-12-21 10:15 sys
  56. drwxr-xr-x root     root              1970-01-01 08:00 system
  57. -rw-r--r-- root     root         8642 1970-01-01 08:00 ueventd.rc
  58. lrwxrwxrwx root     root              2015-12-21 10:15 vendor -> /system/vendor
  59. shell@lentk6735_66t_l1:/ $ exit
  60. C:\Documents and Settings\Administrator>adb disconnect 192.168.107.168

发现可以正常的进行adb wifi 无线调试了。将【Wifi调试】开关【Wifi调试】开关关闭,再去连接的话,就会无法连接了。如下所示:

    1. C:\Documents and Settings\Administrator>adb connect 192.168.107.168
    2. unable to connect to 192.168.107.168:5555
    3. C:\Documents and Settings\Administrator>

添加wifi adb的更多相关文章

  1. 添加网络ADB的方法(含以太网和无线)

    将下面代码添加至packages/apps/Settings/src/com/android/settings/DevelopmentSettings.java 结合之前的添加wifi adb的博客 ...

  2. 如何手动添加 WIFI 网络步骤

    电脑手动添加WiFi网络步骤: 1.右键控制面板 2.进入控制面板 3.进入网络和Internet,点击设置新的连接或网络 4.点击手动连接到无线网络 5.输入网络SSID及秘钥 若需要自动连接请勾选 ...

  3. Android系统移植与调试之------->如何添加一个adb wifi无线调试的功能【开发者选项】-【Wifi调试】

    首先弄懂怎么设置adb wifi无线调试的功能,如下所示. 1. 手机端开启adb tcp连接端口 :/$setprop service.adb.tcp.port :/$stop adbd :/$st ...

  4. RK3288 添加WiFi&BT模块AP6212

    CPU:RK3288 系统:Android 5.1 注:系统中自带的模块没有AP6212,相近的只有AP6210,设置为AP6210,直接添加固件也可以正常使用. 此文是手动添加AP6212的例程. ...

  5. wifi adb 调试手机

    首先手机,PC都连上WIFI, 如果可以用USB操作,在PC端,输入ping 手机的ip 地址,看看是否成功, 在PC端输入下面命令adb tcpip 5555adb connect 192.168. ...

  6. Mac 下面,添加android adb命令(一般环境变量的添加方法)

    1. 在 用户目录下   ~/.bash_profile vim  ~/.bash_profile 2.加入我们需要添加的环境变量,这里是 添加 android   platform-tools 和 ...

  7. wifi adb 的常用命令

    Android 网络调试 adb tcpip 开启方法 2013年05月14日 10:01:03 阅读数:20529 1.连接USB数据线,打开usb调试,使用windows的“运行”命令行方式:(此 ...

  8. adb 设置安卓连接wifi

    一. 修改wpa_supplicant.conf文件 1.1. 获得root权限 adb root 1.2. 将wpa_supplicant.conf拷贝到你的电脑 adb pull /data/mi ...

  9. android 通过WiFi进行adb调试

    第一种方式: 1.把Android SDK的下的 platform-tools 目录 加入到系统的path变量中 打开cmd命令行 输入adb 显示如下图则为设置成功 2.打开手机 下载一个叫WiFi ...

随机推荐

  1. Mysql的随机抽取

    方法一 SELECT * FROM SHARE ORDER BY RAND( ) LIMIT 1; 在MYSQL的官方手册,里面针对RAND()的提示大概意思就是,在ORDER BY从句里面不能使用R ...

  2. nginx: [emerg] mkdir() "/var/temp/nginx/client" failed (2: No such file or directory)

    报错信息 [root@bogon sbin]# ./nginx nginx: [emerg] mkdir() : No such file or directory) 解决方法 [root@bogon ...

  3. js原生语法实现表格操作

    HTML页面: <!doctype html> <html lang="en"> <head> <meta charset="U ...

  4. mysql mysqld.sock文件丢失问题

    修改mysql 编码为utf8时 在/etc/mysql/目录下 在 [client] 添加 default-character-set=utf8 [mysqld]添加 default-charact ...

  5. 织梦文章里面的图片alt和title属性,用文章标题自动替换

    把{dede:field.body/}改成{dede:field.body runphp=yes}global $dsql,$id,$aid;$myid = isset($id) ? $id : $a ...

  6. (转)拉姆达表达式(Lambda Expressions) =>写法的涵义

      lambdaclass编译器 让我们先看一个简单的拉姆达表达式: x=>x/2 这个表达式的意思是:x为参数,对x进行相应的操作后的结果作为返回值. 通过这个拉姆达表达式,我们可以看到: 这 ...

  7. PAT 1042 字符统计(20)(思路)

    1042 字符统计(20)(20 分) 请编写程序,找出一段给定文字中出现最频繁的那个英文字母. 输入格式: 输入在一行中给出一个长度不超过1000的字符串.字符串由ASCII码表中任意可见字符及空格 ...

  8. iOS.Crash.Case-[__NSArrayM objectForKeyedSubscript:]

    1. [__NSArrayM objectForKeyedSubscript:]: unrecognized selector sent to instance - source code and s ...

  9. target runtime apache v6.0 not defined解决

    在加载别人的一个项目时,会报该错误,需要先在buildpath中remove v6的版本,再点击add library,选择server runtime,如果eclipse配置过Tomcat,可以选择 ...

  10. map reduce 用法 str处理lower() capitalize()

    -- s=' l={':9}[s[0]] print(l) 取出dic里面key的元素 def normalize(name): tempn=name.lower().capitalize() ret ...