【寫在前面】
網上資料梳理,侵刪煩請聯系,或有表達錯誤,歡迎指出糾正,
【參考參考】
https://www.cnblogs.com/xhf-wonder/p/7458188.html
宏控
- 宏
- 基礎概念
- 宏控命名
- SystemProperties
- 命名規則
- 使用規則
- 宏控與systemProperty取名對應
- 宏控示例
宏
基礎概念
- 是什么
在make檔案中使用,相當于功能開關,是控制代碼執行的條件, - 為何用
需要暫時去掉這個功能,一個宏控就能解決,而不是一個檔案一個檔案刪掉添加的代碼;
在不同專案配置不同的值, - 如何用
AOSP,Android Open Source Project
AOSP系統中:
①mk檔案中顯式使用的宏控;如MTK_MULTISIM_RINGTONE_SUPPORT
②代碼中起控制作用的system property,如ro.mtk_multisim_ringtone
控制的是同一個功能,
宏控一般與system property結合使用,
宏控可以用在Android.mk中,
宏控命名
①能正確反映功能含義,要求可讀性強 ,避免歧義,
鈴聲:RING/RINGTONE
解鎖/鎖屏聲音:UNLOCK_SOUND/LOCK_SOUND
來電:INCALL
撥號:DIALER
短信:SMS
彩信/資訊:MMS
音量加/減:VOLUME_UP/DOWN
輸入法:IME
滅屏:SCREEN_OFF/SCR_OFF
亮屏:TURN_ON_SCREEN
狀態欄:STATUS_BAR
近距:PROXIMITY/PSENSOR
②針對默認開啟/關閉,或者移除選單等功能,宏控命名時要體現出來
SUPPORTED
ENABLE/DISABLE
REMOVE
SHOW / HIDE_MENU
DEFAULT_VALUE(def_val)
DEFAULT_ON(def_on)
DEFAULT_OFF(def_off)
③宏控的取值除了yes/no,也可以定義為字串或數字,對應到SystemProperty的四種取值型別(int、long、boolean、string),
SystemProperties
命名規則
①name :字符長度最多31,value :字符長度最多91,
②可以使用數字、字母、中劃線”-“、下劃線”_”、點”.”
③命名時慎用點“.”,比如命名ro.bird.timeout會比ro.bird_timeout占用更多記憶體,
④bird內部SystemProperties分類:
ro.bdsys.xxx_xxx_xxx 系統功能相關的
ro.bdui.xxx_xxx_xxx UI改進相關的 ,新ui
ro.bdfun.xxx_xxx_xxx 獨立功能,例如tpwake,tpproximity,
ro.bdmisc.xxx_xxx_xxx 其他
使用規則
①如果在定義時property被多次賦值,最終起效果的是第一個,
②common.mk中定義的systemProperty最侄訓輸入到system/build.prop檔案,
③systemProperty有int、long、boolean、string四種型別,使用時需要引包android.os.SystemProperties,具體api參考檔案alps\frameworks\base\core\java\android\os\SystemProperties.java
④最好不要在回圈中使用SystemProperties.getxxx()方法,
宏控與systemProperty取名對應
①宏控和property取名一樣,
宏名一律大寫,property一律小寫,大小寫對應:
BIRD_DOOV_SOUND 對應 ro.bdfun.doov_sound
②如果宏控名字太長,改成小寫后超過31個字符,property可以適當采用縮寫:
BIRD_MUSIC_WIDGET_PREVIOUS_BUTTON 對應 ro.bdfun.music_widget_prev_btn
宏控示例
功能:近距校準
宏控:
BIRD_PROXIMITY_CALIBRATION=yes/no(表示取值有yes和no兩種)
property:ro.bdfun.psensor_calibrate=true/false
(1)在哪里定義宏控(包含但不僅限于)
開發增加宏控,一般在下列檔案①中增加(都加在該檔案,方便平臺移植):
①alps\bird\device\common.mk
ifeq ($(strip $(BIRD_PROXIMITY_CALIBRATION)),yes) 【注1】
PRODUCT_PACKAGES += libproximityjni
PRODUCT_PROPERTY_OVERRIDES += ro.bdfun.psensor_calibrate = true
endif
如果找不到檔案①,可以到origin的宏控檔案里查一下:
alps\device\mediatek\mtXXXX\device.mk
alps\device\bird[platform]\device.mk
會有這樣的參考:# bird add
include bird/device/common.mk
(2)在哪里打開宏控
在專案的mak中添加宏控:
alps\bird\make[proj][proj] .mak
BIRD_PROXIMITY_CALIBRATION=yes 【注4】
(3)快速驗證
可以將property宏控加到system/build.prop中,重啟手機快速打開功能,
adb pull system/build.prop .
adb push bulid.prop system/
adb shell chmod 644 system/build.prop
對于user軟體,可以將property宏控加到 alps\out\target\product[proj]\system\build.prop,打包system.img,重下軟體驗證,
【注1】在腳本檔案中定義宏BIRD_PROXIMITY_CALIBRATION ,同時系結與ro.bdfun.psensor_calibrate 的關系
【注2】mak檔案開宏,開發人員一般不用去上傳,由SPL管理,
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/286412.html
標籤:其他
上一篇:去哪兒開發流程
