Android培訓班(12)

來源:互聯網
上載者:User

#059 

#060      get_hardware_name();

這段代碼是擷取當前android系統啟動並執行硬體資訊,比如硬體的CPU名稱。主要從/proc/cpuinfo裡讀到相關的資訊。

 

 

#061      snprintf(tmp, sizeof(tmp), "/init.%s.rc", hardware);

#062      parse_config_file(tmp);

這段代碼是從前面擷取到的硬體名稱,然後以硬體的名稱(/init.硬體名稱.rc)來擷取相應硬體的設定檔,並且把設定檔參數載入到鏈表裡。

 

 

#063 

#064      action_for_each_trigger("early-init", action_add_queue_tail);

#065      drain_action_queue();

這段代碼是先把有early-init標識的命令提前添加到一個命令隊列,以便函數drain_action_queue一個一個命令地執行設定檔裡的函數,這樣可以在不同的設定檔裡,只要標明是最先執行的函數,就可以優先地運行。

 

#066 

#067      INFO("device init");

#068      device_fd = device_init();

這段代碼是遍曆為/sys,添加裝置事件響應,建立裝置節點。

 

 

#069 

#070      property_init();

這段代碼是進行屬性初始化。每個屬性都有一個名稱和值,它們都是字串格式。屬性被大量使用在Android系統中,用來記錄系統設定或進程之間的資訊交換。屬性是在整個系統中全域可見的。每個進程可以get/set屬性。在系統初始化時,Android將分配一個共用記憶體區來儲存的屬性,這裡主要是從/default.prop屬性檔案讀取屬性。這個有點像Windows下的註冊表的作用。

 

 

#071 

#072      // only listen for keychords if ro.debuggable is true

#073      debuggable = property_get("ro.debuggable");

#074      if (debuggable && !strcmp(debuggable, "1")) {

#075          keychord_fd = open_keychord();

#076      }

這段代碼是從屬性裡擷取調試標誌,如果是可以調試,就開啟組合按鍵輸入驅動程式。

 

 

 

#077 

#078      if (console[0]) {

#079          snprintf(tmp, sizeof(tmp), "/dev/%s", console);

#080          console_name = strdup(tmp);

#081      }

#082 

#083      fd = open(console_name, O_RDWR);

#084      if (fd >= 0)

#085          have_console = 1;

#086      close(fd);

這段代碼是判斷是否有控制台,如果沒有,就嘗試是否是可以打預設的控制台。

 

 

#087 

#088      if( load_565rle_image(INIT_IMAGE_FILE) ) {

#089      fd = open("/dev/tty0", O_WRONLY);

#090      if (fd >= 0) {

#091          const char *msg;

#092              msg = ""

#093          ""

#094          ""

#095          ""

#096          ""

#097          ""

#098          ""  // console is 40 cols x 30 lines

#099          ""

#100          ""

#101          ""

#102          ""

#103          ""

#104          ""

#105          ""

#106          "             A N D R O I D ";

#107          write(fd, msg, strlen(msg));

#108          close(fd);

#109      }

#110      }

這段代碼是先調用load_565rle_image函數來嘗試載入定製的顯示的LOGO圖片,如果不成功,就直接在螢幕上顯示字串android。通過這裡可以定製不同廠家的LOGO圖片顯示,以便在系統初始化時,進行更人性化的等待,更加漂亮個性

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.