Android培訓班(12) – Android移動開發技術文章_手機開發 Android移動開發教學課程

#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圖片顯示,以便在系統初始化時,進行更人性化的等待,更加漂亮個性

發佈留言