項目客製化文檔

參考文檔,有些內容須要根據具體的狀況作修改,請知悉

項目準備工做

1)提早瀏覽一下需求,確認是否有功能性需求以及一些疑難雜症。java

跟項目經理確認清楚每一條需求,不可似是而非。android

需跟項目經理確認該需求是以前的需求仍是新增需求,若是是以前的需求,須要找到以前的負責人,詢問該需求進度,如未處理,需跟項目經理說明具體狀況,並給出開發週期,看可否接受,同時諮詢一下大概的量產時間,作到心中有數。canvas

2)不定時的看看公版是否增長了新功能,客戶項目同步公版代碼。瀏覽器

更新公版代碼後須告知驅動,不然驅動調試編譯的時候可能會報錯,這樣不只浪費驅動的時間,也延誤了本身出版本的時間。bash

3)若是是GMS項目,若是確認客戶需求是否有違背GMS要求的,及時跟客戶溝通。app

4)若是需求較多,建議在晚上下班時間編一個debug的版本,次日來做爲調試使用,能節約大量的修改調試時間。less

發版本前的自測

1)每一個客戶需求須要一個一個驗證,若是是驅動的需求,要求驅動發出需求完成郵件(可以讓項目經理去確認)ide

2)版本號是否正確(含內部版本號 跟外部版本號) (試產0.01;CTA 1.01 要編eng;試量產和招商2.01;量產3.01,效果軟件最後加TEST)(若是不確認,發版本前先將版本號發給測試確認)佈局

3)跑一遍工廠模式,看一眼能不能讀到基帶版本和bandpost

4)新加的應用或者本身有改動的應用,要點進去保證不閃退,若是具體修改應用內某個頁面,也要保證該頁面不閃退

5)OTA相關包注意上傳正確,我司的爲full_項目名-target_files-xxx.zip;廣升的爲target_files-package.zip

搜索代碼

首先執行 source build/envsetup.sh

cgrep [keyword] 全部C/C++文件執行搜索操做

jgrep [keyword] 全部Java文件執行搜索操做

ggrep [keyword] 全部Gradle文件執行搜索操做

mangrep [keyword] 全部AndroidManifest.xml文件執行搜索操做

mgrep [keyword] 全部Android.mk文件執行搜索操做

sepgrep [keyword] 全部sepolicy文件執行搜索操做

resgrep [keyword] 全部本地res/*.xml文件執行搜索操做

sgrep [keyword] 全部資源文件執行搜索操做

導航指令

首先執行 source build/envsetup.sh

croot 切換至Android根目錄

cproj 切換至當前模塊的根目錄(Android.mk目錄)

godir [filename] 跳轉到包含某個文件的目錄

CTS相關失敗項

juejin.im/post/5cf60e…

建立主板

使用腳本

source build/envsetup.sh

clone_project A B

A是base版本,B是new版本

建立新項目的步驟

1)新建一個客戶基本都在droi目錄下配置

2)根據郵件信息來參考copy那個項目,例如參考A,建B

3)copy A to B

4)修改copy出來的項目裏面的全部客戶名字

3.1,進入B文件夾;
 3.2,grep -r A *,修改全部A爲B;
 3.3,Ctrl + f 查找A,出來的文件的名字A改成B;
 3.4,打開ProjectConfig.mk;
 3.5,查看CUSTOM_MODEM=?
 3.6,查看TYD_MMI_FLASH_TYPE = ?
 3.7,查看google的gms包是不是要求的:TYD_MMI_GOOGLE_APPS_VERSION = R8
 3.8,其餘的按客戶需求修改;
複製代碼

5)若是沒有參考的,直接copy一個相同配置的項目(最好是公版的,若是沒有自行參考),去掉others文件夾

6)這樣一個客戶就基本完成,能夠提交了

建立新項目須要提交的文件

1)ProjectConfig.mk : 從device/droi/主板目錄/ProjectConfig.mk 拷貝並修改相應的宏

2)debug_defconfig/defconfig : 從kernel-3.18/arch/arm{arm64}/configs/主板名_debug_defconfig和主板名_defconfig拷貝修改文件名字並修改相關配置

3)lk.mk : 從vendor/mediatek/proprietary/bootable/bootloader/lk/project/主板名.mk拷貝修改文件名字並修改相關配置

編譯modem

參考凌春光的文檔《modem編譯流程》

配置Modem

1)根據項目的配置表,確認modem的配置

2)若是相對應配置的modem在vendor/mediatek/proprietary/modem目錄下是否存在,若是不存在則須要編譯modem,並將編譯好的modem放到vendor/mediatek/proprietary/modem目錄。

3)在ProjectConfig.mk文件中配置CUSTOM_MODEM宏: CUSTOM_MODEM = pwd3_125

配置FlASH

1)根據項目的配置表,確認flash的配置

2)根據配置在vendor/mediatek/proprietary/bootable/bootloader/preloader/freeme_flash_type目錄下找相對應的文件夾,並將名字賦給ProjectConfig.mk文件中的FREEME_FLASH_TYPE

3)online.mediatek.com/FAQ#/SW/FAQ…

版本號如何設置

《TYZN-PCBA軟件版本命名規範及項目命名規則V3.2.pdf》

連接:pan.baidu.com/s/1yypCsn_v…

MTK_CLEARMOTION_SUPPORT

添加如下兩個宏的時候可能會致使開機異常,沒法經過GMS,如鈴聲不響、開機流程異常等,須要確認清楚

MTK_CLEARMOTION_SUPPORT = yes

MTK_MIRAVISION_SETTING_SUPPORT = yes

遇到沒法解決的問題,如何提eservice給MTK?

www.jianshu.com/p/72ab3dd82…

如何兼容新的flash

www.jianshu.com/p/ab14fb772…

如何編譯分離式Flash 工廠軟件

www.jianshu.com/p/d6dfc4e77…

apn 參數修改

device/mediatek/config/apns-conf.xml

添加小區廣播

google:     MTK_ETWS_SUPPORT   
MTK:        MTK_CMAS_SUPPORT
複製代碼

OTA

ADUPS_FOTA_SUPPORT=yes
FREEME_OTA_SUPPORT = no
複製代碼

修改藍牙名稱

platform/system / bt/btif/src/btif_dm.cc

//*/xxx, time. Altered product model
    char prop_model[PROPERTY_VALUE_MAX];
    osi_property_get(PROPERTY_PRODUCT_MODEL, prop_model, "");
    osi_property_get("persist.freeme.product.model", prop_model, prop_model);
    osi_property_get("ro.build.freeme.bt.name", prop_model, prop_model);
    strncpy(btif_default_local_name, prop_model, max_len);
    /*/
    if (BTM_DEF_LOCAL_NAME[0] != '\0') {
      strncpy(btif_default_local_name, BTM_DEF_LOCAL_NAME, max_len);
    } else {
      char prop_model[PROPERTY_VALUE_MAX];
      osi_property_get(PROPERTY_PRODUCT_MODEL, prop_model, "");
      strncpy(btif_default_local_name, prop_model, max_len);
    }
    //*/
複製代碼

更新音頻參數

80平臺:

39平臺

android O版本打開人臉識別

設置-高級功能-手勢操做-智能喚醒 須要哪些手勢

修改密度

device/droi/projectxxx/device.mk

PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.sf.lcd_density=

設置瀏覽器默認主頁

Android O:

一、vendor/freeme/packages/apps/PartnerCustomizations/AndroidManifest.xml

<provider android:name=".browser.PartnerHomepageProvider"
            android:authorities="com.android.partnerbrowsercustomizations"
   +         android:exported="true" />
複製代碼

二、ProjectOption.ini

[com.android.partnercustomizations]
config.homepage=http://www.xxxx.com
複製代碼

Android P:

ProjectOption.ini

[com.android.partnercustomizations]
config.homepage=http://www.xxxx.com
複製代碼

屏幕亮度設置

SettingsProvider/res/values/defaults.xml 中設置 def_screen_brightness

多媒體,鬧鐘,來電鈴聲,通話聲音音量調整

P0: AudioService.java 中:

AudioSystem.STREAM_VOICE_CALL
AudioSystem.STREAM_MUSIC
AudioSystem.STREAM_ALARM
AudioSystem.STREAM_RING
AudioSystem.STREAM_SYSTEM

複製代碼

桌面菜單全透明

override/packages/apps/Launcher3/quickstep/src/com/android/quickstep/views/ShelfScrimView.java			
override/packages/apps/Launcher3/res/values-v21/styles.xml				
override/packages/apps/Launcher3/src/com/android/launcher3/BaseDraggingActivity.java			
override/packages/apps/Launcher3/src/com/android/launcher3/folder/FolderPagedView.java				
override/packages/apps/Launcher3/src/com/android/launcher3/views/ScrimView.java
複製代碼

客製化桌面圖標

juejin.im/post/5cd8e3…

調節桌面佈局和hotset的距離

packages/apps/Launcher3/src/com/android/launcher3/DeviceProfile.java

默承認以旋轉桌面

def_accelerometer_rotation 設置爲 true

allow_rotation 設置爲 true

桌面壁紙縮放的問題

將提供的壁紙文件,右鍵選擇更改大小,選擇像素,根據屏幕尺寸大小修改後,將改好的壁紙放在frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.png

系統第一次啓動時沒有wallpaper_info.xml信息規定大小,就會已顯示屏分辨率長寬的最大值最爲壁紙的長和框,舉個例子:屏幕分辨率爲480*800,則生成的wallpaper_info.xml信息爲800*800,若壁紙長寬皆大於800,則會取0-480和0-800的長寬做爲默認壁紙,若壁紙爲480*800,則左右個補全160,生成爲800*800的壁紙,所以也致使壁紙產生偏移,如果長寬皆小於800,好像會設置失敗,延用以前的壁紙,這裏沒搞太懂。 那如何設置正確的默認壁紙,個人作法是將480*800的壁紙作成800*800的大小,前480*800爲默認壁紙,後320爲底色,這樣就不會被裁剪或生成偏移了。

桌面左右滑動

去掉二級菜單,只保留一級菜單,左右滑動:

http://10.20.40.21:8081/#/c/TYD/platforms/android-28/ALPS-P0-MP1-6739/project/droi_a9/+/1956/

長按桌面-桌面設置-虛擬按鍵不可見-虛擬按鍵背景爲黑色

須要將桌面的sdk設置爲當前系統的(navigation bar background color is useless under 24)

freeme相機增長美顏

freemeCamConfig.xml: CAMERA_FACE_BEAUTY_SHOW、CAMERA_FRONT_FACE_BEAUTY_SHOW設爲true

freeme相機增長背景虛化功能

freemeCamConfig.xml: CAMERA_BACKGROUND_VIRTUAL_SUPPORT設爲true

開啓觸屏提示音,短音源第一聲Speaker沒法聽到

mediatek/proprietary/hardware/audio/common/V3/aud_drv/AudioALSAHardwareResourceManager.cpp
@@ status_t AudioALSAHardwareResourceManager::startOutputDevice_l(const audio_devic
         AudioALSAANCController::getInstance()->setSpeakerEnabled(true);
 #endif
         OpenSpeakerPath(SampleRate);
+        usleep(1000*X); //添加延時X(能夠修改成100)毫秒
     }

複製代碼

添加手動寫IMEI號的指令

FreemeSpecialCharSequenceMgr.java中添加

.build("*#*#1122#*#*", "com.freeme.intent.action.IMEI_SETTING", "alternative.imei_setting") // Imei setting

去掉設置中的投射(cast)功能

vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/SettingsActivity.java

        somethingChanged = setTileEnabled(changedList, new ComponentName(packageName,
                        Settings.WifiDisplaySettingsActivity.class.getName()),
                false, isAdmin)
                || somethingChanged;
複製代碼

關機電池動畫位置

vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo/
vendor/mediatek/proprietary/external/libshowlogo/cust_display.h
複製代碼

修改谷歌文件夾裏app名字顏色

修改下拉狀態欄透明度

vendor/mediatek/proprietary/packages/apps/SystemUI/res/color/qs_background_dark.xml
複製代碼

修改狀態欄圖標位置

vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java
vendor/mediatek/proprietary/packages/apps/SystemUI/res/layout/status_bar.xml
vendor/mediatek/proprietary/packages/apps/SystemUI/res/layout/keyguard_status_bar.xml(鎖屏時不顯示)
複製代碼

工廠模式硬件信息增長fingerprint

private final String getHwInfos() {
        .....
        String fingerprint = android.os.SystemProperties.get("ro.hardware.fingerprint", "null");
        if (fingerprint != "null") {
            infos.append("[ fingerprint ]:\n" + fingerprint + "\n");
        }
        return infos.toString();
    }
複製代碼

內置apk

juejin.im/post/5cd411…

一、apk不含so文件 將APK放入文件夾內,更名爲:yourModuleName.apk(mk文件中的yourModuleName)。Android.mk文件與apk文件同級。

Android.mk內容以下:

LOCAL_MODULE_TAGS  是指定在什麼版下才會編譯這個Android.mk
user: 指該模塊只在user版本下才編譯
eng: 指該模塊只在eng版本下才編譯
tests: 指該模塊只在tests版本下才編譯
optional:指該模塊在全部版本下都編譯
LOCAL_MODULE_SUFFIX 是指文件後綴.apk
LOCAL_CERTIFICATE指apk的簽名,能夠有:testkey、media、platform、shared,若是文件已經簽過名,則使用PRESIGNED。
LOCAL_MODULE_PATH 指你要安裝的apk的路徑。
$(TARGET_OUT)/priv-app這個路徑下,apk不可卸載。
$(TARGET_OUT_DATA_APPS)這個路徑下apk卸載後再也不恢復
$(TARGET_OUT)/vendor/operator/app這個路徑下apk卸載後恢復出廠設置能夠恢復apk
複製代碼

Android P(9.0) userdebug版本執行adb remount

android P版本後google啓用avb(Android Verified Boot)2.0,verified boot and DM-verity默認啓用策略發生了變化

* Android P + kernel-4.4 or kernel-3.18
- download preloader with verified boot disabled which location is the same as scatter file //preloader_<PROJECT>_SBOOT_DIS.bin
- adb root
- adb disable-verity
- adb reboot
- adb root
- adb remount

* Android P + kernel-4.9 or after 
- download preloader with verified boot disabled which location is the same as scatter file. //preloader_<PROJECT>_SBOOT_DIS.bin
- boot to Home Screen
- go to setting -> system -> Developer options -> OEM unlocking
- adb reboot bootloader
- fastboot flashing unlock
- press volume up key
- fastboot reboot
- adb root
- adb disable-verity
- adb reboot
- adb root
- adb remount
 
複製代碼

將鎖屏方式默認爲None

SettingsProvider/res/values/defaults.xml

def_lockscreen_disabled 設置爲true

更新開關機動畫

參考FAQ10590製做開關機動畫壓縮文件。

注意點:製做好動畫後,選中folder1文件夾、folder2文件夾和desc.txt,郵件壓縮,壓縮文件格式.zip,壓縮方式選擇存儲。 切忌多一層bootanimation文件夾。

製做好的壓縮文件放在droi下對應的工程目錄下。

關閉特定的Log

有時客戶會要求關閉特定的log,大可能是底層的log,具體方法以下:

一、首先根據客戶提供的信息,確認關閉的log tag,好比MtkOmxMVAMgr/Acodec/MtkCam

二、在代碼中搜索相關內容 cgrep "LOG_TAG \"ACodec\"",可是有的log是在so庫中的,沒法關閉,好比MtkOmxMVAMgr

三、打開相關文件,將相關內容註釋便可 // #define LOG_TAG "ACodec"

User版本的root權限

juejin.im/post/5cd249…

如何配置全球通和非全球通客戶

modem的AP端配置

www.jianshu.com/p/de7327037…

緊急聯繫人功能

設置緊急聯繫人,而且能夠經過長按音量+和音量-來撥打緊急聯繫人號碼

http://10.20.40.21:8081/#/c/TYD/platforms/android-28/ALPS-P0-MP1-6739/project/droi_pd3d/+/1508/

新項目沒法登錄Google account

www.jianshu.com/p/943939173…

源碼編譯錯誤問題定位

能夠在log中查找如下幾個關鍵字:

ERROR:FAILED:String ERROR

調整桌面圖標的行之間距離

applist layout:

packages/apps/Launcher3/src/com/android/launcher3/DeviceProfile.java

updateIconSize(float scale, Resources res, DisplayMetrics dm):

//*/update applist layout
    allAppsCellHeightPx = allAppsIconSizePx + allAppsIconDrawablePaddingPx
        + Utilities.calculateTextHeight(allAppsIconTextSizePx)
        + allAppsIconDrawablePaddingPx * 3;
/*/
    allAppsCellHeightPx = getCellSize().y;
//*/
複製代碼

workspace layout:

packages/apps/Launcher3/src/com/android/launcher3/DeviceProfile.java

updateWorkspacePadding():
    //*/ZY.zhanglin,20190301. update workspace layout
    int paddingBottom = hotseatBarSizePx ;
    /*/
    int paddingBottom = hotseatBarSizePx + verticalDragHandleSizePx;
    //*/


複製代碼

google 文件夾圖標有毛邊

Launcher3/src/com/android/launcher3/folder/PreviewBackground.java   
    將半徑增大4:

    private void drawCircle(Canvas canvas,float deltaRadius) {
        float radius = getScaledRadius();
        canvas.drawCircle(radius + getOffsetX(), radius + getOffsetY(),
                (radius - deltaRadius) + 4, mPaint);
    }

複製代碼

第三方應用白名單

juejin.im/post/5d106b…

android9.0滅屏收到短信喚醒亮屏

juejin.im/post/5d106b…

自定義PTT鍵

juejin.im/post/5d106b…

MTK FMRadio 修改工做頻率範圍的方法

juejin.im/post/5d106b…

修改時區

www.jianshu.com/p/03b6c8c34…

FOTA差分包製做流程相關

www.jianshu.com/p/d24648a87…

近斯任務界面的的文字有很嚴重的鋸齒

packages/apps/Launcher3/quickstep/src/com/android/quickstep/views/RecentsView.java

RecentsView():

+ mEmptyMessagePaint.setAntiAlias(true);
複製代碼

O1版原本短信時點亮屏幕

juejin.im/post/5d26a7…

mtk的Music在歌曲列表,AGO版本,音樂-藝術家/專輯界面選擇歌曲點擊刪除閃退100%,歌曲/播放列表界面點擊刪除無權限沒法刪除,也沒法設置用做手機鈴聲

沒有獲取到寫權限,可參考 http://10.20.40.21:8081/#/c/TYD/platforms/android-27/ALPS-MP2-O1-6580/platform/vendor/+/10176/

圓點通知不顯示

須要設置:長按桌面-Home settings- Notification dots-打開

待更新

相關文章
相關標籤/搜索