1. 程式人生 > >MTK編譯及修改記錄

MTK編譯及修改記錄

2016年我從app開發轉到做系統開發,這是我剛做系統開發時做的筆記。

1.機器型號,機器碟符的修改位置
alps/build/tools/buildinfo.sh 編譯後會在alps/out/target/product/s88m/system/build.prop下生成。
2.藍芽名稱修改位置
alps/device/mediatek/common/custom.conf。
3.Build Number的修改位置
alps/build/tools/buildinfo.sh的echo “ro.build.display.id=$BUILD_DISPLAY_ID”
4.開機logo的修改位置
alps/vendor/mediatek/proprietary/booktable/bootloader/lk/dev/logo/wsvga/的wsvga_uboot.bmp(第一屏),wsvga_kernel.bmp(第二屏)。怎麼尋到這個位置的,根據alps/vendor/mediatek/proprietary/bootable/bootloader/lk/project/s88m.mk下的BOOT_LOGO := wsvga。
5.APN配置修改
alps/device/mediatek/common/appns-conf.xml。
6.Single-SIM(單卡)
alps/device/discovery/s102m/ProjectConfig.xml
[Triple SIM]:
CUSTOM_MODEM = mt8735_sp_lwg_tsts
GEMINI=yes
MTK_GEMINI_ENHANCEMENT=yes
MTK_DT_SUPPORT=no
MTK_SHARE_MODEM_SUPPORT=3
MTK_SHARE_MODEM_CURRENT=3
MTK_GEMINI_3SIM_SUPPORT=yes
[Dual SIM]:
CUSTOM_MODEM = mtk6735_65t_m_lwg_dsds
GEMINI=yes
MTK_GEMINI_ENHANCEMENT=yes
MTK_DT_SUPPORT=no
MTK_SHARE_MODEM_SUPPORT=2
MTK_SHARE_MODEM_CURRENT=2
MTK_GEMINI_3SIM_SUPPORT=no
[Single SIM]:
CUSTOM_MODEM = mtk6735_65t_m_lwg_dsds
GEMINI=no
MTK_GEMINI_ENHANCEMENT=no
MTK_DT_SUPPORT=no
MTK_SHARE_MODEM_SUPPORT=2
MTK_SHARE_MODEM_CURRENT=1
MTK_GEMINI_3SIM_SUPPORT=no

7.alps/device/discovery/s102m/ProjectConfig.xml/下CUSTOM_MODEM = s102_FAJUE8735_TB_M_3G18_4G13720。

8.屏修改
alps/kernel-3.18/arch/arm64/configs/s102m_debug_defconfig
alps/kernel-3.18/arch/arm64/configs/s102m_defconfig
CONFIG_CUSTOM_KERNEL_LCM修改

9.8321平臺
1.預置動畫/鈴聲
alps/vendor/mediatek/proprietary/custom/t10q/system/media
alps/vendor/mediatek/proprietary/custom/t10q/system/app/app.mk

2.gms包app增減
alps/devices/discovory/t10q/gms.mk

3.配modern
alps/device/discovery/t10q/ProjectConfig.mk

4.增刪apk
alps/device/mediatek/mt6580/device.mk

5.圖示大小
android_src\frameworks\base\core\res\res\values\Dimens.xml中有個 app_icon_size

6.預設桌布修改
8783_6.0/device/discovery/m104/overlay/frameworks/base/core/res/res/drawable-

7.簡訊預設鈴聲
在alps/device/discovery/m104/device.mk新增如下內容
PRODUCT_PROPERTY_OVERRIDES := \
ro.com.android.dateformat=MM-dd-yyyy \
ro.config.ringtone=Ring_Synth_04.ogg \
ro.config.notification_sound=SMS_1.mp3 \
ro.config.alarm_alert=Alarm_Classic.ogg

ro.config.ringtone 預設鈴聲
ro.config.notification_sound 預設提示音
ro.config.alarm_alert 預設鬧鈴

8.sound&notification下的general下的vibrate等預設開啟關閉修改
frameworks/base/media/java/com/mediatek/audioprofile/AudioProfileManager

9.settings->Display->sleep的預設休眠時間修改
framaworks/base/packages/SettingsProvider/res/values
30000

10 wifi direct預設名稱修改
frameworks/opt/net/wifi/service/java/com/android/server/wifi/p2p/WifiP2pServiceImpl.java的WifiP2pServiceImpl()方法。

11 email簽名
packages/apps/Email/provider_src/com/android/email/activity/setup/AccountSettingsUtils.java的

12device/discovery/t10q/android.hardware.telephony.gsm.xml

13音量修改
frameworks/base/media/java/android/media/AudioSystem.java
鬧鐘,來電音量修改
frameworks/base/media/java/com/mediatek/audioprofile/AudioProfileManager.java
音量的最大值設定
frameworks/base/services/core/java/com/android/server/audio/AudioService.java

14語言新增
device/discovery/m104/full_m104.mk

15 照相機的製造商,機型修改
package/apps/Gallery2/src/com/android/gallery3d/data/MediaDetails.java下的setExifData()

16去掉關機動畫
device/discovery/m104/system.prop下的去掉ro.operator.optr=CUST

17如何將帶原始碼的APK預置進系統?
1)在packages/app下面以需要預置的APK的 名字建立一個新資料夾,以預置一個名為Test的APK為例
2)將Test APK的Source code拷貝到Test資料夾下,刪除/bin和/gen目錄
3)在Test目錄下建立一個名為Android.mk的檔案,內容如下:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-subdir-java-files)

LOCAL_PACKAGE_NAME := Test
include $(BUILD_PACKAGE)
4)開啟檔案device\mediatek\common\device.mk
將Test新增到PRODUCT_PACKAGES裡面。
PRODUCT_PACKAGES += Test
5)重新build整個工程

18修改預設輸入法
DatabaseHelper.java

private static final String defaultEnableInputMethods = “com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME:com.google.android.apps.inputmethod.hindi/.HindiInputMethodService”;
loadSecureSettings(SQLiteDatabase db)方法新增如下內容
loadSetting(stmt, Settings.Secure.ENABLED_INPUT_METHODS,defaultEnableInputMethods); //enabled

loadSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD,defaultEnableInputMethods);//預設輸入法

19 LOCAL_PRIVILEGED_MODULE := true

20.時區修改time_zones_by_country

21.單雙卡配置
[Dual SIM]:
CUSTOM_MODEM = mtk6735_65t_m_lwg_dsds
GEMINI=yes
MTK_GEMINI_ENHANCEMENT=yes
MTK_DT_SUPPORT=no
MTK_SHARE_MODEM_SUPPORT=2
MTK_SHARE_MODEM_CURRENT=2
MTK_GEMINI_3SIM_SUPPORT=no
[Single SIM]:
CUSTOM_MODEM = mtk6735_65t_m_lwg_dsds
GEMINI=no
MTK_GEMINI_ENHANCEMENT=no
MTK_DT_SUPPORT=no
MTK_SHARE_MODEM_SUPPORT=2
MTK_SHARE_MODEM_CURRENT=1
MTK_GEMINI_3SIM_SUPPORT=no

22 頻率
vendor/mediatek/proprietary/bootable/bootloader/lk/dev/lcm/JD9364_HUAZHENG/JD9364_HUAZHENG.c的params->dsi.PLL_CLOCK

kernel-3.18/drivers/misc/mediatek/lcm/JD9364_HUAZHENG/JD9364_HUAZHENG.c的params->dsi.PLL_CLOCK

23 cts測試注意事項
把failed的數改成notExcuted的數,notExcuted的數改成failed的數。
result="fail"替換為result=“notExecuted”

24屏修改位置
/vendor/mediatek/proprietary/bootable/bootloader/lk/project/m104.mk
/kernel-3.18/arch/arm64/configs/m104_defconfig
/vendor/mediatek/proprietary/bootable/bootloader/lk/dev/lcm/JD9365BC_IPS_BODA

26 音量的最大值修改
vendor/mediatek/proprietary/custom/m104/cgen/cfgdefault/audio_ver1_volume_custom_default

27 螢幕亮度的最大值修改
/frameworks/base/core/res/res/values/config.xml的config_screenBrightnessSettingMaximum

28 mtklog:##3646633##

29新建專案:./mk_project_64.sh add m107

30.system.prop檔案目錄/device/discovery/m104/system.prop

31.SD卡槽軟體遮蔽其正常功能
修改的位置
把/kernel-3.18/arch/arm64/boot/dts/mt6735.dtsi的compatible = "mediatek,mt6735-mmc註釋掉

32.USB介面軟體遮蔽其正常功能
(1)USB充電功能去掉
/kernel-3.18/drivers/misc/mediatek/usb20/mt6735/usb20.c的bool mt_usb_is_device(void)函式返回為false
(2)OTG去掉
/kernel-3.18/arch/arm64/configs/m104_defconfig的CONFIG_USB_MTK_OTG=yes的yes去掉

33.預設牆紙修改
/device/discovery/m104/overlay/frameworks/base/core/res/res/drawable-sw720dp-nodpi
/device/discovery/m104/overlay/frameworks/base/core/res/res/drawable-sw600dp-nodpi

/device/mediatek/common/overlay/tablet/frameworks/base/core/res/res/drawable-sw600dp-nodpi

34.去掉安全模式
/frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java中的detectSafeMode()方法把 mSafeMode = menuState > 0 || sState > 0 || dpadState > 0 || trackballState > 0 || volumeDownState > 0;這一行設定為 mSafeMode=false

35.system的記憶體修改
/device/mediatek/build/build/tools/ptgen/MT6735M

/device/discovery/m107/BoardConfig.mk的BOARD_MTK_SYSTEM_SIZE_KB :=

36 DDR修改
vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/m104/inc/custom_MemoryDevice.h
vendor/mediatek/proprietary/bootable/bootloader/preloader/tools/emigen/MT6735

37.git checkout -b 新分支名 老分支名(這種寫法的意思為基於老分支建立新的分支)

38.配置檔案
/kernel-3.18/arch/arm64/configs/m107_defconfig

39.電池曲線修改
/8735_6.0/kernel-3.18/arch/arm64/boot/dts/m107_bat_setting.dtsi

40.git命令使用
1)git config --global user.name “Your Name”
2)git config --global user.email “Your Email”
3)git init 用於初始化當前所在目錄的專案
4)建立.gitignore檔案,提交時會忽略該檔案裡面的專案檔案
5)git status 檢視專案狀態
6)git add .或者git add -A新增修改過的檔案
7)git commit -m "Message"提交
8)git branch檢視當前所在分支
9)git checkout切換分支
10)git branch 分支名 :在branch下新建分支
11)git checkout -b 新分支名 分支名:在分支下建立子分支,並切換到子分支。
12)git log得到commit歷史
13)git checkout 歷史序列號 檔名 :還原檔案到歷史版本
14) git reset –hard 回退到歷史版本
15)git show commit --name-only檢視某次commit修改了那些檔案
41.M版make -j8命令編譯經常卡死或者編譯報ERROR: Cannot launch Jack server錯誤的解決辦法

在命令終端輸入cat .jack

Server settings

SERVER=true
SERVER_PORT_SERVICE=8072
SERVER_PORT_ADMIN=8073
SERVER_COUNT=1
SERVER_NB_COMPILE=4
SERVER_TIMEOUT=60
SERVER_LOG=KaTeX parse error: Expected '}', got 'EOF' at end of input: {SERVER_LOG:=SERVER_DIR/jack-KaTeX parse error: Expected 'EOF', got '}' at position 24: …ORT_SERVICE.log}̲ JACK_VM_COMMA…{JACK_VM_COMMAND:=java}

Internal, do not touch

SETTING_VERSION=2

把SERVER=true 改成SERVER=false

42.編譯突然莫名奇妙出現錯誤make: *** [out/target/common/obj/APPS/Phone_intermediates/classes-full-debug.jar] error 41
只需輸入以下的命令即可:
$ make clobber (刪除所有配置所編譯輸出的結果檔案)
$ make

43.重力感應方向修改
kernel-3.18/arch/arm64/boot/dts/m104.dts

44.攝像頭的顏色調整
kernel3.18/drivers/misc/mediatek/imgsensor/src/mt6735/camera_project/m107/gc2355_mipi_raw_1lane/gc2355mipi_Sensor.c中修改字元SENSOR_OUTPUT_FORMAT_RAW_Gb中”Gb“可改為”G“,”R“,“Gr”

45.攝像頭方向調整sensor 安裝角度
vendor/mediatek/proprietary/custom/mt6735/hal/D1/imgsensor_metadata/gc2355_mipi_raw/config_static_metadata.sensor.gc2355mipiraw.h

vendor/mediatek/proprietary/custom/mt6735/hal/D1/imgsensor_metadata/gc2355_mipi_raw/config_static_metadata.project.camera.gc2355mipiraw.h

vendor/mediatek/proprietary/custom/m107/hal/imgsensor_metadata/common/config_static_metadata_common.h
vendor/mediatek/proprietary/custom/mt6735/hal/D1/imgsensor_metadata/common/config_static_metadata_common.h

46.TP校正
kernel3.18/drivers/misc/mediatek/mach/mt6735/m107/touchpanel/GT9XXTB_hotknot/tpd_custom_gt9xx.h

47.攝像頭方向180度調整
後攝修改:
kernel3.18/drivers/misc/mediatek/imgsensor/src/mt6735/camera_project/m107/hm5040_mipi_raw/hm5040mipiraw_Sensor.h

write_cmos_sensor(0x0101,0x03);//flip+mirror
.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_Gb

前攝修改:
kernel3.18/drivers/misc/mediatek/imgsensor/src/mt6735/camera_project/m107/gc2355_mipi_raw_1lane/gc2355mipi_Sensor.c

write_cmos_sensor(0x17,0x17);//14

48.LCM的rotation修改
MTK_LCM_PHYSICAL_ROTATION
vendor/mediatek/proprietary/bootable/bootloader/lk/project/m107.mk
kernel-3.18/arch/arm64/configs/m107_defconfig
device/discovery/m107/ProjectConfig.mk

49.設定jdk環境變數
sudo gedit ~/.profile
sudo gedit ~/.bashrc
手動切換jdk
sudo update-alternatives --config java

50.修改喇叭左右聲道串音的問題
vendor/mediatek/proprietary/custom/m107/hal/audioflinger/audio/Audio_Customization_Common.h的#define ENABLE_STEREO_SPEAKER

51.查詢亮度值
cd /sys/class/leds/lcd-backlight/brightness

52.刪out下的logo
out/target/product/m104/obj/BOOTLOADER_OBJ/build-m104/dev/logo
out/target/product/m104/logo.bin

53.工廠模式 ##34685##
54.mtklog:##3646633##

55.報錯Unfortunately,the process android.process.acore has stopped
把out下的UserDictionaryProvider.apk刪掉重編譯

56.下載的所有應用預設儲存到sd卡
修改/frameworks/base/data/etc/platform.xml 新增WRITE_EXTERNAL_STORAGE media_rw

57.android 4.2 camera驅動新增
新增 mediatek\custom\common\kernel\imgsensor
新增mediatek\custom\common\kernel\imgsensor/src/kd_sensorlist.h
新增mediatek\custom\common\kernel\imgsensor/inc/kd_imgsensor.h
新增 mediatek\custom\common\hal\imgsensor
新增mediatek\custom\common\hal\imgsensor/src/sensorlist.cpp
新增mediatek/config/s301_nand_hvga/ProjectConfig.mk
新增mediatek/custom/s301_nand_hvga/kernel/camera/camera/kd_camera_hw.c
如果前後攝camera相同,設定cameraid需要在mediatek/custom/common/kernel/imgsensor/gc032b_yuv/gc032byuv_Sensor.c的UINT32 GC032BGetSensorID(UINT32 *sensorID)的sensorID=((GC032B_read_cmos_sensor(0xf0)<< 8)|GC032B_read_cmos_sensor(0xf1))後+1;

58.禁止所有apk安裝
frameworks/base/services/core/java/com/android/server/pm/PackageManagerServie.java的copyApk註釋掉
或者註釋掉installPackageAsUser();

59.SystemUI的通知列表修改
ActivatableNotificationView.java
ExpandableNotificationRow.java

60.禁止下拉狀態列滑動
修改StatusbarWindowView.java的onInterceptTouchEvent() return intercept修改為return true

一、Ubuntu下Android編譯環境搭建
ubuntu 經典桌面
sudo apt-get install gnome-session-fallback

右鍵終端
sudo apt-get install nautilus-open-terminal

root登陸
轉載於:http://blog.csdn.net/yimiyangguang1314/article/details/7534911
ubuntu12.04預設是不允許root登入的,在登入視窗只能看到普通使用者和訪客登入。以普通身份登陸Ubuntu後我們需要做一些修改,
普通使用者登入後,修改系統配置檔案需要切換到超級使用者模式,在終端窗口裡面輸入: sudo -s.然後輸入普通使用者登陸的密碼,回車即可進入 root使用者許可權模式.
然後執行: gedit /etc/lightdm/lightdm.conf. 修改配置檔案
[SeatDefaults]
allow-guest=false
autologin-user=root
autologin-user-timeout=0
autologin-session=lightdm-autologin
user-session=ubuntu
greeter-session=unity-greeter

然後我們啟動root帳號:
sudo passwd root
根據提示輸入roott帳號密碼。

重啟ubuntu,不需要手動輸入root使用者名稱密碼,系統會自動進入root使用者。

補充:gedit /etc/lightdm/lightdm.conf
user-session=ubuntu —> user-session=gnome-classic

修改後,系統將預設登入到gnome classic介面,如果不需要特效則是gnome-fallback,對應登入視窗的選項gnome classic(no effects)

1.更新源

sudo apt-get update

  1. 安裝必要的軟體環境

sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.8-dev build-essential zip curl libncurses5-dev zlib1g-dev ibsdl1.2-dev libc6-dev-i386 g+±multilib lib32z1-dev lib32ncurses5-dev libx11-dev libxml2-utils git-core gnupg libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev lib32z-dev libgl1-mesa-dev g+±multilib mingw32 tofrodos liblzo2-dev uuid-dev lib32readline-gplv2-dev gcc-4.4 g+±4.4 make xsltproc wine
gawk

rm /usr/bin/gcc

ln -s /usr/bin/gcc-4.4 /usr/bin/gcc

rm /usr/bin/g++

ln -s /usr/bin/g+±4.4 /usr/bin/g++

  1. 安裝 sun-java6-jdk

在 tools 下找到 jdk-6u18-linux-i586.bin 檔案; 開啟終端,到想要安裝的目錄下運

$ ./jdk-6u18-linux-i586.bin(執行時注意 jdk-6u18-linux-i586.bin 的實際路徑)
進行安裝 ;

  1. 設定環境變數

$ vim ~/.profile

在.profile 檔案的最後新增或新增變數,如下:

JAVA_HOME=/home/infotm/infodroid_release/jdk1.6.0_18

JRE_HOME=$JAVA_HOME/jre

export ANDROID_JAVA_HOME=$JAVA_HOME

export CLASSPATH=.:JAVAHOME/lib:JAVA_HOME/lib:JRE_HOME/lib:$CLASSPATH

export JAVA_PATH=JAVAHOME/bin:JAVA_HOME/bin:JRE_HOME/bin

export PATH=PATH:PATH:JAVA_PATH

藍色字元的部分是 JDK6 安裝所在目錄;儲存後,同步更新即可;

$source ~/.profile

另外一些必要的使用工具要安裝,如Beyond Compare、minicom等

二、MTK平臺常用編譯命令

1、列出所有有效的專案

./makeMtk listp 或./mk listp

2、清除和編譯整個專案

./makeMtk <porject_name> new 或 ./mk <project_name> n #編譯完一次後可不帶專案名,專案名紀錄在makeMtk.ini檔案中

3、清除相關編譯檔案

./makeMtk <porject_name> clean 或 ./mk <project_name> c

4、重新編譯整個專案

./makeMtk <project_name> remake 或 ./mk <project_name> r

5、編譯單獨的模組

./makeMtk <porject_name> remake(new) preloader 或 ./mk r(n) pl

./makeMtk <porject_name> remake(new) uboot 或 ./mk r(n) ub

./makeMtk <porject_name> remake(new) kernel 或 ./mk r(n) k

./makeMtk <porject_name> remake(new) android 或 ./mk r(n) dr

6、當修改kernel相關程式碼時,要使用此命令

./mk n® kernel ./mk bootimage

7.編譯ota包

./mk otapackage

以上命令加引數-opt=TARGET_BUILD_VARIANT=user為編譯release版本,不加為debug版本,釋放給客戶的軟體必須加此引數。加 -t引數可以將編譯時的資訊全部列印在終端中。同時釋放客戶的軟體要編譯ota包。

具體引數可使用命令 ./mk -h 檢視。

三、常用硬體配置更改
第一步:改mediatek/config/pro/address.xml

1.觸控式螢幕配置

mediatek/config/$(pro)/ProjectConfig.mk

CUSTOM_KERNEL_TOUCHPANEL=GSL2682 SSD253X #zt622x #GT928

後面為相容的TP型號,此項一般不用改,除非增加TP型號

2.攝像頭配置

mediatek/config/$(pro)/ProjectConfig.mk

以下所配置的名稱必須和程式碼目錄名相同,
kernel程式碼目錄為mediatek/custom/common/kernel/imgsensor
hal程式碼目錄為mediatek/custom/common/hal/imgsensor
其相關引數配置一般在相關專案下的對應目錄,如mediatek/custom/d88/hal/imgsensor

此巨集為hal層camera程式碼配置,要配置的攝像頭程式碼都要寫上
CUSTOM_HAL_IMGSENSOR=gc2235_mipi_raw gc0339_mipi_raw

此巨集為hal層後置備用攝像頭配置,如果不做相容可以為空
CUSTOM_HAL_MAIN_BACKUP_IMGSENSOR=

此巨集為hal層後置攝像頭配置,雙攝時必須配置
CUSTOM_HAL_MAIN_IMGSENSOR=gc2235_mipi_raw

此巨集為hal層前置備用攝像頭配置,如果不做相容可以為空
CUSTOM_HAL_SUB_BACKUP_IMGSENSOR=

此巨集為hal層前置攝像頭配置,雙攝時必須配置
CUSTOM_HAL_SUB_IMGSENSOR=gc0339_mipi_raw

此巨集為kernel層camera程式碼配置,要配置的攝像頭程式碼都要寫上
CUSTOM_KERNEL_IMGSENSOR=gc2235_mipi_raw gc0339_mipi_raw

此巨集為kernel層後置備用攝像頭配置,如果不做相容可以為空
CUSTOM_KERNEL_MAIN_BACKUP_IMGSENSOR=

此巨集為kernel層後置攝像頭配置,雙攝時必須配置
CUSTOM_KERNEL_MAIN_IMGSENSOR=gc2235_mipi_raw

此巨集為kernel層前置備用攝像頭配置,如果不做相容可以為空
CUSTOM_KERNEL_SUB_BACKUP_IMGSENSOR=

此巨集為kernel層前置攝像頭配置,雙攝時必須配置
CUSTOM_KERNEL_SUB_IMGSENSOR=gc0339_mipi_raw

3.Modem配置

mediatek/config/$(pro)/ProjectConfig.mk

Modem目錄在custom/common/modem

此巨集配置的modem名稱必須和custom/common/modem下的某一modem目錄名稱相同
CUSTOM_MODEM=discovery82_tb_jb5_hspa

現在我們的機器一般做的都是2G全頻段,即850、900、1900、2100,但3G頻段需要根據客戶需求來選擇。
D85D為:
band1:2100 band2:1900 band5:850 band8:900
D85為(D85只支援兩個頻段):
discovery89_tb_jb2_md1_hspa 900_2100
mt6589_md1_hspa_band156 850_2100

注意:Modem配置必須正確

4.DDR配置

mediatek/$(pro)/preloader/inc/custom_MemoryDevice.h

現有機型一般作1G或512M的DDR,軟體配置如下,將需要的開啟,不需要的註釋掉

//1GB DDR3

#define BOARD_ID MT8382_EVB_P2

#define CS_PART_NUMBER[0] COMMON_DDR3_1024MB

//512MB DDR3

//#define BOARD_ID MT8382_EVB_P3

//#define CS_PART_NUMBER[0] COMMON_DDR3_512MB

L1
alps/bootable/bootloader/preloader/custom/$(pro)/inc/custom_MemoryDevice.h根據需要修改

注意:DDR配置必須正確

四、客製化部分更改

1.更改機器型號為XXX

mediatek/config/$(pro)/ProjectConfig.mk中更改一行PRODUCT_MODEL = XXX

更改版本號
mediatek/config/$(pro)/ProjectConfig.mk中更改一行
MTK_BUILD_VERNO = XXX

更改自定義版本號
mediatek/config/KaTeX parse error: Expected group after '_' at position 52: …UILD_VERNO=D85D_̲(shell date +%Y%m%d)

2更改碟符為XXX

打過碟符補丁後,在mediatek/config/$(pro)/system.prop中增加一行
ro.partition.label=XXX

3.更改藍芽名為XXX

拷貝mediatek/config/common/custom.conf到相應專案mediatek/config/$(pro)/下更改專案下的custom.conf中bluetooth.HostName = XXX

4.更改預設語言

如改為繁體中文,查詢語言列表,找到zh_TW 中文 (臺灣)
在mediatek/config/$(pro)/system.prop中增加
persist.sys.language=zh
persist.sys.country=TW

5.更改預設時區

如改為上海,在mediatek/config/$(pro)/system.prop中增加persist.sys.timezone=Asia/Shanghai

6.更改預設開機logo

因為在projectConfig.mk中,BOOT_LOGO=xga,所以可以將mediatek/custom/common/lk/logo/xga拷貝到相應專案下
mediatek/custom/$(pro)/lk/logo/xga,替換第1張logo:xga_uboot.bmp,第2張logo:xga_kernel.bmp,

7.更改預設輸入法

在mediatek/config/$(pro)/ProjectConfig.mk中更改DEFAULT_INPUT_METHOD=類名.服務名,如DEFAULT_INPUT_METHOD=com.sohu.inputmethod.sogou.SogouIME

L版本
請在InputMethodManagerService.java 的resetDefaultImeLocked()方法中新增下面code:
if (mCurMethodId != null
&& !InputMethodUtils.isSystemIme(mMethodMap.get(mCurMethodId))) {
return;
}

InputMethodInfo defIm = null;
//+++++++++++++++++++++++++++
if (mMethodList.size() > 0) {
for (InputMethodInfo imi : mMethodList) {
final String imiId = imi.getId();
if(“com.jb.emoji.gokeyboard/com.jb.gokeyboard.GoKeyboard”.equals(imiId)){//其中的輸入法名稱需要抓log搜尋關鍵字enabled_input_methods
defIm = imi;
}
}
}
//+++++++++++++++++++++++++++
for (InputMethodInfo imi : mMethodList) {
if (defIm == null) {

8.新增APK

不可解除安裝APK,直接放到vendor/mediatek/(pro)/artifacts/out/target/product/(pro)/artifacts/out/target/product/(pro)/system/app下,但是此預置方式APK將不可升級,因為此種方式APK將重新被簽名,導致升級時簽名錯誤,所以現改為Android.mk方式預置。若要提庫,則放到上一級目錄的lib目錄下。
可解除安裝APK放到vendor/mediatek/(pro)/artifacts/out/target/product/(pro)/artifacts/out/target/product/(pro)/system/vendor/operate/app下

注意:檔名中不能有空格

Search apk的名字是quicksearch

9.overlay路徑

mediatek/custom/$(pro)/resource_overlay/generic/可overlay frameworks和packages中res的xml檔案

10.更改瀏覽器預設主頁(可overlay)

packages/apps/Browser/res/values/mtk_strings.xml中更改name=“homepage_base_site_navigation” 對應項的值

L版本:
/packages/apps/Browser/res/values/strings.xml 修改http://www.mtn.co.za

11.加入瀏覽器書籤(可overlay)

a.將預覽圖片thumb_XXX.png和圖示favicon_XXX.ico拷貝到packages/apps/Browser/res/raw/目錄下。

b.修改packages/apps/Browser/res/values/bookmarks_icons.xml中的值bookmark_preloads,在後面加上前一步加入的預覽圖片和圖示的名字。

c.修改packages/apps/Browser/res/values/strings.xml中的值bookmarks,在最後加如對應的名稱和網址

12.設定預設桌布(可overlay)

將設為預設桌布的jpg格式的圖片替換以下圖片(根據螢幕解析度) frameworks/base/core/res/res/drawable-sw***dp-nodpi/default_wallpaper.jpg
d85的***為720.d85d的***為768.

13.加入預設桌布庫(可overlay)

a.將桌布圖片拷貝到packages/apps/Laucher2/res/drawable-sw***dp-nodpi/
還另需一張小的預覽圖片也放到同一目錄下

b.在packages/apps/Laucher2/res/values-sw***dp/wallpapers.xml中最後的桌布後加入新增的桌布名
(d95)在packages/apps/Laucher2/res/values-sw***dp-nodpi/wallpapers.xml中最後的桌布後加入新增的桌布名
14.設定預設動態桌布(可overlay)

a.在packages/wallpapers/XXX/res/drawable-***/中找到相應的預覽圖來確定XXX

b.在上一步確定的XXX資料夾下,AndroidManifest.xml中確定動態桌布的 包名.服務名

c.更改framworks/base/core/res/res/values/config.xml中
包名/.服務名

以上所需要的 包名/.服務名 可以找臺debug版機器,將桌布設定為相應動態桌布後,通過ADB在機器檔案系統路徑 /data/system/users/0/wallpaper_info.xml檢視

15.去掉GPS功能

a. 在 mediatek/config/$(pro)/ProjectConfig.mk 更改如下兩項為no

MTK_AGPS_APP=no

MTK_GPS_SUPPORT=no

MTK_YGPS_APP=no

b. 在 mediatek/config/$(pro)/autoconfig/kconfig/project 中新增

CONFIG_MTK_GPS=n CONFIG_GPS=n

16.更改分割槽大小

修改 mediatek/build/tools/ptgen/MTXXXX/partition_table.xls中emmc user選項卡對應分割槽大小

17.為攝像頭增加插值,如ov5647 500W插值到800W

a.mediatek/custom/mt6589/hal/imgsensor/ov5647_raw/config.ftbl.ov5647_raw.h中

FTABLE_CONFIG_AS_TYPE_OF_DEFAULT_VALUES(
KEY_AS_(MtkCameraParameters::KEY_PICTURE_SIZE),
SCENE_AS_DEFAULT_SCENE(
ITEM_AS_DEFAULT_(“2560x1920”),
ITEM_AS_VALUES_(
“320x240”, “640x480”, “1024x768”, “1280x960”,
“1600x1200”, “2048x1536”, “2560x1920”,
)
),
)

在陣列後面增加一個800W的解析度 “3264x2448”

b.packages/apps/Camera/res/values/strings.xml中增加一行8M pixels和packages/apps/Camera/res/values/mtk_strings.xml中刪除8M pixels,否則插值中會有重複

注意:上步中strings.xml和mtk_strings.xml可overlay,不同攝像標頭檔案存放路徑可能不同,如gc0308在mediatek/custom/common/hal/imgsensor/gc0308_yuv,可將檔案靠到專案相關路徑下,如mediatek/custom/($pro)/hal/imgsensor/gc0308_yuv

18.預置視訊,音樂,圖片等媒體檔案

打入預置媒體補丁,在vendor/mediatek/(pro)/artifacts/out/target/product/(pro)/artifacts/out/target/product/(pro)/system下建立mediauser目錄,將要預置的媒體資源放在此目錄中

19.開機動畫,關機動畫(連續的png圖片)

a.製作bootanimation.zip:新建資料夾part0 part 1 檔案desc.txt,part0放第一階段動畫,part1放第二階段的動畫。desc.txt 內容如下
768 1024 30

	p 1 0 part0

	p 0 0 part1

P 標誌符
1 迴圈次數
0 階段切換間隔時間
part0 對應目錄名
用命令zip -r -0 bootanimation.zip part0 part1 desc.txt,壓縮成 bootanimation.zip

b.將bootanimation.zip放入
vendor/mediatek/(pro)/artifacts/out/target/product/(pro)/artifacts/out/target/product/(pro)/system/media/
關機動畫製作和開機動畫一樣,只是壓縮包的名字改為shutanimation.zip,並且在system.prop中加入ro.operator.optr=CUST

20.開機音樂,關機音樂

開機音樂改名為bootaudio.mp3,關機音樂改名為shutaudio.mp3放入vendor/mediatek/(pro)/artifacts/out/target/product/(pro)/artifacts/out/target/product/(pro)/system/media/

注意:其他格式的音訊檔案要轉為mp3格式

21.Email增加預設郵箱,不用設定收發伺服器

如增加outlook郵箱,在packages/apps/Email/res/xml/providers.xml增加

    	<incoming uri="pop3+ssl+://pop3.live.com"  username="$email" />

     <outgoing uri="smtp+tls+://smtp.live.com" username="$email" />

22.更改桌面圖示排列位置

packages/apps/Launcher2/res/xml-sw600dp/default_workspace.xml

目錄要跟據解析度選擇
如1024x600 選擇 xml-sw600dp,1024x768 選擇 xml-sw720dp
23.預設勾選USB除錯

在build/core/main.mk中更改ro.debuggable=1

24.快速開機

frameworks/base/packages/SettingProvider/res/values/mtk_defaults.xml中

<bool name="def_ipo_setting" translatable="false">false</bool>

25.預設關閉資料連線

mediatek/config/$(pro)/ProjectConfig.mk下的MTK_DEFAULT_DATA_OFF = no這個值來控制的
有MTK_DEFAULT_DATA_OFF=yes即預設關閉

26.時間12小時制和24小時制

a. 修改檔案frameworks/base/packages/SettingsProvider/res/values/defaults.xml
增加程式碼
24
紅色標記表示24小時制,也可以改為12(12小時制)

b. 修改檔案frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
找到函式loadSystemSettings (),在函式中增加以下語句:
loadStringSetting(stmt, Settings.System.TIME_12_24, R.string.time_12_24);

27.未知來源

frameworks/base/packages/SettingsProvider/res/values/defaults.xml
false
要預設勾選將false改為true

28.屏保時間

frameworks/base/packages/SettingsProvider/res/values/defaults.xml
60000

29.自動旋轉螢幕

frameworks/base/packages/SettingsProvider/res/values/defaults.xml
true

30.預設背光亮度

frameworks/base/packages/SettingsProvider/res/values/defaults.xml
102

31.預設wifi

frameworks/base/packages/SettingsProvider/res/values/defaults.xml
false

32.預設藍芽

frameworks/base/packages/SettingsProvider/res/values/defaults.xml
false

33.APN

frameworks/opt/telephony/src/java/com/android/internal/telephony/RIL.java

mediatek/frameworks/base/telephony/etc/apns-conf.xml

mediatek/frameworks/base/res/res/values-th/string.xml

mediatek/frameworks/base/res/res/values/string.xml

mediatek/frameworks/base/res/res/values/public.x
ml

33.平板改為手機

build/target/product/$(pro).mk中PRODUCT_CHARACTERISTICS := tablet改為PRODUCT_CHARACTERISTICS := default

34.攝像頭旋轉方向

mediatek/custom/common/hal/imgsensor/src/cfg_setting_imgsensor.cpp中更改getSensorOrientation()中的值

35.旋轉gsensor方向

mediatek/custom/(pro)/kernel/accelerometer/(pro)/kernel/accelerometer/(相應gsensor)/cust_acc.c中
static struct acc_hw cust_acc_hw = {

.i2c_num = 3,

.direction = 3,

.power_id = MT65XX_POWER_NONE,  /*!< LDO is not used */

.power_vol= VOL_DEFAULT,        /*!< LDO is not used */

.firlen = 0, //old value 16                /*!< don't enable low pass fileter */

};

更改 direction的值,範圍0 – 7

36.預設USB連線為MPT

/mediatek/config/discovery89_tb_jb2/ProjectConfig.mk

MTK_MASS_STORAGE=yes
改為
MTK_MASS_STORAGE=no

37.刪除 視訊播放器APK

/mediatek/config/discovery89_tb_jb2/ProjectConfig.mk

MTK_VIDEOPLAYER_APP=no
MTK_VIDEOWIDGET_APP=no
MTK_VIDEO_FAVORITES_WIDGET_APP=no

38.預置桌面資料夾

請參考如下程式碼修改default_workspace.xml檔案;
<folder
launcher:icon="@drawable/portal_ring_inner_holo"
launcher:screen=“0”
launcher:title="@string/folder_name_format" //資料夾名字可自定義
launcher:x=“0”
launcher:y=“0” >
<favorite //應用快捷方式,只需包名類名即可
launcher:packageName=“com.android.settings”
launcher:className=“com.android.settings.Settings” />

39.如何編譯單雙卡版本

參照補丁

40.D85D如何編譯Gsensor 或 Gsensor+Msensor軟體

如果是G+M:

CUSTOM_KERNEL_ACCELEROMETER=mc3xxx #mc32x0

CUSTOM_KERNEL_MAGNETOMETER=mc64xx

如果是G:D85D預設的
CUSTOM_KERNEL_ACCELEROMETER=mc32x0 #mc3xxx
CUSTOM_KERNEL_MAGNETOMETER= #mc64xx

41.如何刪除系統自帶的鈴聲中的某些特定鈴聲;如何將一個鈴聲設定為預設鈴聲

[SOLUTION]
1.新增、刪除系統自帶的鈴聲
==》找到frameworks/base/data/sounds/audioPackage2.mk
把你需要的檔案路徑寫在:system/media/audio/ringtones/路徑
例如,新增一首鈴聲Buyecheng.mp3
在AudioPackage2.mk檔案的
PRODUCT_COPY_FILES+=/
$(LOCAL_PATH)/ringtones/Buyecheng.mp3:system/media/audio/ringtones/Buyecheng.mp3
然後把Buyecheng.mp3檔案放置在frameworks/base/data/sounds/ringtones/Buyecheng.mp3
刪除反之。

2.系統預設的來電鈴聲
==》build/target/product/core.mk
ro.config.ringtone=Buyecheng.mp3
預設鈴聲是統一在build/target/product/core.mk檔案中設定,其中ro.config.notification_sound表示通知的預設鈴聲,ro.config.ringtone表示語音來電和視訊來電的鈴聲,若希望語音來電和視訊來電分開設定,請參考FAQ08273 [Audio Profile]如何設定視訊來電鈴的預設鈴聲:
PRODUCT_PROPERTY_OVERRIDES:=/
ro.config.notification_sound=Proxima.ogg/
ro.config.alarm_alert=Alarm_Classic.ogg/
ro.config.ringtone=Backroad.ogg

42.隱藏無線輸入裝置。

wireless 在mediatek/packages/apps/bluetooth/profiles/hid/AndriodManfest.xml註釋掉 <categoryandroid:name=“android.intent.category.LAUNCHER” />
wireless 在mediatek/packages/apps/build/AndriodManfest.xml註釋掉

43.刪除apk視窗小部件(如何關閉yahoo 天氣的視窗小部件)

[SOLUTION]
1.請確認下面目錄下是否有weather的apk:
vendor/mediatek/xxx/artifacts/out/target/product/xxx/system/app/
MtkWeatherWidget.apk
MtkWeatherProvider.apk
MtkWeatherSetting.apk
如果有,請刪除3個apk,後面的步驟可以省略,原因是vendor 下面out目錄中的apk會預設編譯到。

如果步驟1中不存在apk,請修改下面的內容
mediatek/config/xxx/ProjectConfig.mk 檔案
MTK_WEATHER_WIDGET_APP=yes修改為no
MTK_WEATHER_PROVIDER_APP=yes修改為no

再確認下build/target/product/common.mk檔案
PRODUCT_PACKAGES+=MtkWeatherWidget //刪除此定義,確保不會新增這個packages

例如刪除search.在build/target/product/common.mk中刪除QuickSearchBox/
但是要做一個備份

44.刪除設定嚮導

mediatek/config/xxx/ProjectConfig.mk中把MTK_OOBE_APP= yes改為no

45.刪除第三方apk

刪除vendor/mediatek/pro/artifacts/out/target/product/pro/system/vendor/operator/app/$(name).apk

46.刪除發掘自帶的apk

註釋掉build/target/projuct/$(pro).mk中對應的apk

47.修改UA引數

How to modify Browser UA profile URL for JB.MP, JB2.MP, JB3.MP

[SOLUTION]
UA position:
mediatek/config/xxx/custom.conf

Modification:
Add your UA profile URL into the filed “browser.UAProfileURL” or modify the existed one.

Example:
browser.UAProfileURL = xxxxxx

48.更改預設聲音大小

frameworks/base/media/java/android/media/AudioManager.java

public static final int[] DEFAULT_STREAM_VOLUME = new int[] {

    4,  // STREAM_VOICE_CALL
		0~6
    15,  // STREAM_SYSTEM
		0~15
    8,  // STREAM_RING
			0~15
    8, // STREAM_MUSIC
			0~15
    8,  // STREAM_ALARM
			0~15
    8,  // STREAM_NOTIFICATION
	0~15
    7,  // STREAM_BLUETOOTH_SCO
	0~15
    15,  // STREAM_SYSTEM_ENFORCED
0~15
    11, // STREAM_DTMF
			0~15
    11,  // STREAM_TTS
			0~15
    8,  // STREAM_FM
			0~15
    8  // STREAM_MATV
			0~15
};

49.更改翻譯

一般更改package和framework下的各語言目錄下的string.xml和mtk_string.xml檔案,視具體情況而定

50.更改預設字型大小

frameworks/base/core/java/android/content/res/Configuration.java
public void setToDefaults() {
fontScale = 1; //0.9小 1.0普通 1.1大 1.15超大

}

字型大小定義在
package/apps/Settings/res/values/arrays.xml

    <item>0.9</item>

    <item>1.0</item>

    <item>1.1</item>

    <item>1.15</item>

</string-array>

51.更改無線顯示在對方機器的名稱

frameworks/base/wifi/java/android/net/wifi/p2p/WifiP2pService.java
private String getPersistedDeviceName() {

if (deviceName == null) {

return “Android_” + id.substring(0,4); //此句改為return “xxxx”
}
return deviceName;
}

52.更改setting->audio預設屬性

mediatek/frameworks/base/media/audio/java/com/mediatek/audioprofile/AudioProfileManager.java

            /** Default values of vibration for different audio profiles. */
            final boolean DEFAULT_VIBRATION_GENERAL = false;
            final boolean DEFAULT_VIBRATION_SILENT = false;
            final boolean DEFAULT_VIBRATION_MEETING = true;
            final boolean DEFAULT_VIBRATION_OUTDOOR = true;

            /**
             * Default values that indicate whether the audible DTMF tone should be
             * played by the dialer when dialing.
             */
            final boolean DEFAULT_DTMFTONE_GENERAL = true;
            final boolean DEFAULT_DTMFTONE_SILENT = false;
            final boolean DEFAULT_DTMFTONE_MEETING = false;
            final boolean DEFAULT_DTMFTONE_OUTDOOR = true;

            /**
             * Default values of sound effect(Key clicks, lid open/close...) for
             * different audio profiles.
             */
            final boolean DEFAULT_SOUNDEFFECT_GENERAL = false;
            final boolean DEFAULT_SOUNDEFFECT_SILENT = false;
            final boolean DEFAULT_SOUNDEFFECT_MEETING = false;
            final boolean DEFAULT_SOUNDEFFECT_OUTDOOR = false;
            
            /** Default values that indicate whether the lock screen sound are enabled. */
            final boolean DEFAULT_LOCK_SCREEN_GENERAL = true;
            final boolean DEFAULT_LOCK_SCREEN_SILENT = false;
            final boolean DEFAULT_LOCK_SCREEN_MEETING = false;
            final boolean DEFAULT_LOCK_SCREEN_OUTDOOR = true;

            /** Default values that indicate whether the haptic feedback are enabled. */
            final boolean DEFAULT_HAPTIC_FEEDBACK_GENERAL = true;
            final boolean DEFAULT_HAPTIC_FEEDBACK_SILENT = false;
            final boolean DEFAULT_HAPTIC_FEEDBACK_MEETING = false;
            final boolean DEFAULT_HAPTIC_FEEDBACK_OUTDOOR = true;

視情況修改

53.更改語音控制預設語言

mediatek/frameworks/base/voicecommand/cfg/voicelanguage.xml
<DefaultLanguage ID=“簡體中文” //更改為所需語言
現MTK只支援簡體中文、繁體中文、English,做國外客戶軟體全部預設為English

54.增加郵件簽名
packages/apps/Email/emailcommon/src/com/android/emailcommon/provider/Account.java

public Account() {
    mBaseUri = CONTENT_URI;
    // other defaults (policy)
    mRingtoneUri = "content://settings/system/notification_sound";
    mSyncInterval = -1;
    mSyncLookback = -1;
    mFlags = FLAGS_NOTIFY_NEW_MAIL;
    mCompatibilityUuid = UUID.randomUUID().toString();
   //在此處增加mSignature = "xxxx"; //send signature
}

55.USB相關名稱修改
參考MTK online FAQ USB名稱修改系列

56.修改device
首先需要做備份。在rootdir/build/tools/buildinfo.shecho&quot;ro.product.device=&quot;57.rootdir/build/tools/buildinfo.sh下更改 echo &quot;ro.product.device=***&quot; 57.更改多媒體音量最大值 在rootdir/custom/$pro/cgen/inc中修改audio_ver1_volume_custom_default.h中的#define VER1_AUD_VOLUME_MEDIA /

32,48,64,80,96,112,128,144,160,176,192,208,224,240,255,/

10,20,32,48,64,80,96,112,128,144,160,176,192,208,224,/

100,110,120,130,140,150,160,170,180,190,200,210,220,230,240,/

32,48,64,80,96,112,128,144,160,176,192,208,224,240,255

安卓支援的語言
languages_full.mk

projectconfig.mk是mtk的apk
common.mk是安卓的apk

58/修改亮度圖示的半亮度值:在$rootdir/frameworks/base/core/res/res/values/config.xml中修改config_screenBrightnessSettingDefault

60/關機的reboot改為restart
$rootdir/frameworks/base/core/res/res/values/strings.xml修改
Reboot

PTP就是product model