關於 android 設備上 的adbd demon


今天要給一個機頂盒裝我們的產品,死活adb 不上。設置里沒有打開adb調試這項,沒輒,命令行下試試把。

參考http://hi.baidu.com/gaogaf/item/893832d6ac5b62cf1b72b472

試了下這幾個命令:

# setprop persist.service.adb.enable 1
# setprop service.adb.root 1
# setprop ctl.stop adbd
# setprop ctl.start adbd

adb 能 connect 上但是 devices 狀態是offline.

 

看看源碼里怎么干的。

參考:http://www.bangchui.org/simple/?t3280.html

在settings中,有一個控制是否允許遠程調試的選項usb debugging,當這個開關為off的時候,無法使用adb,也不能把手機當作ms-storage來使用。 java中能訪問的設定保存在/data/data/com.android.providers.settings/databases/settings.db里面。
字段名字叫做 adb_enabled。用戶操作settings來修改設定時,實際上就是改變這個字段。
android進程system server中起了一個線程在一直監視db的這個字段。
根據這個字段的值來修改system propertity,其實也就是修改linux的環境變量
persist.service.adb.enable
代碼如下

 
  1. class ServerThread extends Thread {
        private static final String TAG = "SystemServer";
        private final static boolean INCLUDE_DEMO = false;
        private static final int LOG_BOOT_PROGRESS_SYSTEM_RUN = 3010;
        private ContentResolver mContentResolver;
        private class AdbSettingsObserver extends ContentObserver {
            public AdbSettingsObserver() {
                super(null);
            }
            @Override
            public void onChange(boolean selfChange) {
                boolean enableAdb = (Settings.Secure.getInt(mContentResolver,
                    Settings.Secure.ADB_ENABLED, 0) > 0);
                // setting this secure property will start or stop adbd
               SystemProperties.set("persist.service.adb.enable", enableAdb ? "1" : "0");
            }
        }



在linux的啟動配置文件init.rc中有這樣的配置。

 
  1. # adbd is controlled by the persist.service.adb.enable system property
    service adbd /sbin/adbd
        disabled
    # adbd on at boot in emulator
    on property:ro.kernel.qemu=1
        start adbd
    on property:persist.service.adb.enable=1
        start adbd
    on property:persist.service.adb.enable=0
        stop adbd



從這里我們可以看出來其實設定adb_enabled與否其實就是在控制是否啟動adbd這個daemon。

 

 

結論:那幾條命令與源碼中效果是一樣的。

 

結果:都不好使,應該是板子的問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM