Android系统开发 默认壁纸的定制 主题风格的开发及定制 DDMS 常用adb 命令 抓取Log
Android系統開發
??????????? Android系統本身的功能在增加和完善過程中。在系統開發中如果涉及系統API的改動,則一定要慎重,系統的API的改動可能涉及Android應用程序的不兼容。
??????????? 系統開發原則:
??????????? Android系統開發只是在不改變系統API的情況下修正系統的缺陷或增強系統的功能。可以增加接口,但絕不允許修改或刪除原始系統接口。
--
平臺擴展功能簡介
Android平臺本身已經有非常強大的功能,但面對運營商的定制,在使用同一工程針對不同定制時的兼容性仍顯不足,例如不同的運營商壁紙的定制、不同風格的定制、不同功能界面的定制等等。
??????????? 針對定制問題,我們在原始Android平臺上做了部分的功能擴充,使得在同一工程下不同的版本可以使用自定義的定制項,滿足方便快捷的定制需求。
--
平臺擴展功能簡介
默認壁紙的定制:
??????????? 原始Android平臺中默認的靜態壁紙是一張jpg圖片(default_wallpaper.jpg),存放在:
?????android\frameworks\base\core\res\res\drawable目錄中。
????? 針對不同運營商需要設置不同的壁紙,此時需要替換平臺中的圖片進行重新編譯和打包。
??????????? 同時,Android平臺中沒有定制動態壁紙的接口,也不能針對需求方便的定制動態壁紙。
--
為了方便快捷的定制壁紙,對平臺的壁紙設置方法進行了增強。
Android設置壁紙的流程如下:
??? 1. 首先檢查系統是否設置了動態壁紙,若有則將動態壁紙設為默認壁紙。此處huawei進行了增強,在配置文件中設置了動態壁紙的定制項ro.config.hw_CustomizeWallpaper,無需修改代碼只需將該項設為需要壁紙的名字即可,以實現動態壁紙的定制。
??? 2. 若未設置動態壁紙,則使用default_wallpaper靜態壁紙。
???? 此處huawei進行了增強,將定制的靜態壁紙放入了手機特定路徑下(如手機的userdata區),避免了資源的重新編譯,便于靜態壁紙的替換。
???? 注:若huawei定制的動態和靜態壁紙都未設置,則使用Android原始的default_wallpaper作為壁紙。??????????
--
?主題風格的開發及定制:
??????????? 大家在Android手機中最常見的主題風格是黑底白字風格,這是平臺中的默認主題風格,很多手機基本上維持了此UI界面,部分可能做了少量修改。
??????????? 為了豐富UI界面和支持運營商定制不同的風格界面,在平臺中開發出了一套新的huawei自定義風格。該風格可作為應用界面的切換接口,便于不同運營商定制不同風格時的主題風格切換。
--
??????????? 應用無需每次根據不同風格進行代碼的修改,只需使用該風格就可以方便的進行定制風格的切換:
???? 例如在setting應用界面兩種風格的轉換:
平臺新增資源的分離:
??????????? 問題:
??????????? 在android\frameworks\base\core\res目錄中,定義了所有framework和APK使用的資源。在編譯時生成一個framework-res.apk,里面包含了所有的資源數據,framework和應用需要使用這些資源時,只需要引用這些資源的id。這些資源分為兩類:一種是public資源,另一種是internal資源。public資源的id通過public.xml進行了固定;但internal資源的id則未固定,當我們在framework中新增資源時,這些新增資源都屬于internal資源,因此所有internal資源id可能發生變化。若APK使用了framework中的internal資源,而在APK編譯時不基于新的framework資源進行編譯,則會出現APK使用的資源錯誤。
--
? 解決方法:
??????????? 在framework里面增加一個跟res并列的目錄res-hwext,這個目錄中存放所有framework中新增的資源。這些資源的id將全部進行固定。
??????????? huawei新增的資源可以一目了然,便于資源的管理。APK可不受framework新增資源的影響獨立編譯,便于版本的制作。進一步便于在平臺升級時的資源移植。
--
DDMS
l? DDMS的全稱是Dalvik Debug Monitor Service,它為我們提供例如:為測試設備截屏,針對特定的進程查看正在運行的線程以及堆信息、Logcat、廣播狀態信息、模擬電話呼叫、接收SMS、虛擬地理坐標等等。
l? DDMS工具存放在SDK – tools/路徑下,可以直接雙擊ddms.bat運行。DDMS對Emulator和外接測試機有同等效用。如果系統檢測到它們(VM)同時運行,那么DDMS將會默認指向Emulator。
--
常用adb 命令
l? 3 應用程序包
????? (1)上傳到模擬器上的應用程序.apk,放在/data/app目錄下
????? (2)上傳到模擬器上的程序包,放在/data/data目錄下
l? 可通過adb install **.apk來進行程序的安裝
l? 卸載程序時,在/data/app下進行程序的刪除(rm **.apk)
?
l? 4 使用logcat命令抓取Log
??? adb命令輸入端可以同時打開多個,也就是說可以同時抓取多類Log。舉例說明:
??? 抓取LOG_ID_MAIN類Log,進入android-sdk的tools目錄(),輸入如下命令,
命令框顯示如下:
命令說明:
adb shell:連接adb端口
logcat:抓取Log命令
>log_main.txt:抓取的Log以文件的形式輸出,符號‘>’后為文件名,該文件保存在當
??????????????????????????前的工具目錄下
--
???? 抓取LOG_ID_RADIO類Log,進入android-sdk的tools目錄(),輸入如下命令:
??說明:
l? 如果需要抓開機過程的Log,請一定在開機過程中盡早連接手機。
l? 使用命令抓Log時,PC和手機一直處于通訊狀態,當抓取Log完成時,在cmd命令界面按‘Ctrl+c’鍵終止打印輸出。
l? 同時抓取多類Log時,請盡量使用命令行抓取,同時打開多個命令終端。
l? 打印完成后對輸出的文件進行再次打開確認,避免打印出錯。
--
l? 5 使用bugreport命令抓取Log
???????????? 有時候想看的一些信息卻不知道怎么看,有時候我們發現了一個bug,可又不好復現,或者需要很多信息,操作麻煩。這時候可以嘗試一下adb的工具bugreport,顧名思義,就是用來獲取出錯時候的信息,其中包含了各種log和系統信息,內容詳盡。
????? 使用方法:
==
總結
以上是生活随笔為你收集整理的Android系统开发 默认壁纸的定制 主题风格的开发及定制 DDMS 常用adb 命令 抓取Log的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VS code配置Ninja使用MSVC
- 下一篇: android sina oauth2.