編輯:關於Android編程
最近在做一個手機項目,每次使用ZIP包升級都需要先拷到SD卡上,然後再從SD卡上升級。SD卡不好找,每次都要從別的手機上卸下來,升級完再裝回去,麻煩的很。既然支持內置存儲,為什麼不能從內置存儲上升級呢?貌似華為等手機都支持這個功能的。
進入recovery,看到默認是不掛載內置SD的,僅支持外部SD。首先要做的是把內置SD掛載上。
正常啟動,adb shell,df查看當前內置SD卡是怎麼掛載的。
這裡看到是一個類似 /dev/block/vold/179:1 之類的設備,顯然是被vold管理著的。根據設備號,到 /dev/block下 ls -l 一下,找到設備真正的名字,是mmcblkXpY之類的,其中XY是數字。先記下來。
打開recovery.fstab,加上一行
[plain]
/xxx vfat /dev/block/mmcblkXpY
xxx就是掛載點了,vfat是格式,後面是剛才記下來的設備名。
打開recovery.c,在main()中加入一行
[cpp]
ensune_path_mounted("/xxx");
編譯運行,在通過ADB查看,/xxx這個目錄已經被掛載上了,ls看一下,內容與正常開機時顯示一樣。
第一個問題解決了,內置SD卡可以正常掛載。下來一個問題是,如何在recovery添加菜單項和對應的功能。
查看代碼,main()最後是用prompt_and_wait()函數來等待操作,在這個函數裡,又是通過get_menu_selection()來獲得當前菜單選擇。打開default_recovery_ui.c,找到MENU_ITEMS,在其中增加一項。recovery_ui.h中增加對應的宏。回到prompt_and_wait(),仿照ITEM_APPLY_SDCARD,增加自己的處理流程。基本上都是一樣的,只是把路徑替換成了/xxx。
再編譯,運行。
這裡遇到了一個問題,運行後卡死,通過DEBUG發現是將文件從內置SD讀入內存的時候莫名其妙的崩潰了,還看不到錯誤到底是怎麼回事。於是修改了一下升級用的ZIP包,精簡掉一些APK,文件體積變小了。再使用這個較小的ZIP,成功升級。
通過以上方法修改,可以成功從內置SD升級。只是不支持大文件的問題有些蹊跷,有時間再分析吧。
這篇博客我們來介紹一下橋接模式(Bridge Pattern),它也是結構型設計模式之一。橋接,顧名思義,就是用來連接兩個部分,使得兩個部分可以互相通訊或者使用,橋接模式
下面詳細解釋這四大方式的特點第一種:文件存儲數據核心原理: Context提供了兩個方法來打開數據文件裡的文件IO流 FileInputStream openFileIn
上一節,實現了畫板的所有功能,包括設置畫筆大小,設置畫筆顏色,橡皮擦等功能,而手寫,也可以添加設置筆跡大小和顏色的功能,這節就順勢實現手寫的調整筆跡大小和調整筆跡的顏色。
紅米3S是小米在14號推出的新機,紅米3S配備金屬機身、指紋識別、八核主流配置、長續航等特點,性價比很高。隨著紅米3S開啟預約,不僅之後米粉用戶就可以用上這