關鍵詞:android 4.0默認語言藍牙名稱MTP名稱默認時區關於平板電腦
內核版本號
平臺信息:
內核:linux2.6/linux3.0
系統:android/android4.0
平臺:S5PV310(samsungexynos4210)
作者:xubin341719(歡迎轉載,請註明作者)
1、開關機logo;
2、用戶模式、工程模式;
3、更改默認語言;
5、更改藍牙名稱;
6、更MTP名稱;
7、更改“關於平板電腦”中的信息;
8、更改默認時區;
………………
以三星平臺爲基礎,如果是其它平臺,只做參考。
下面只是一些做訂單時候經常要改動的地方,沒什麼技術含量,不過我覺得這一部分也比較重要,研發出來的東西,賣出去換回錢,纔是到我們最大的回報。這一部分會持續更新,指不定一個“極品”的客戶要更改什麼不靠譜的東西,記錄下來,節省大家的時間,知道在那個地方改就行了。
1、開關機logo
現在好多公司就是個皮包公司,自己不做研發,在外面買,開機畫面要做成他們特有的,所以這一點在工作中用的也是比較多的。中國的產品,那叫“氾濫”呀。
這篇文章中對logo有詳細描述:android logo:內核、android開機動畫
2、用戶模式、工程模式
產品出去的時候,要用用戶模式,這時串口終端是不能操作的,只能顯示。三星平臺有一個問題就是,在工程模式下,如果系統有點卡,會有一個紅色的邊框出現,這個問題我們老大叫它“BUG”,這個沒法跟他去理論,總之不應該出現的東西都是BUG,那就轉換成user模式,把這個問題解了。
這篇文章中有關於usr eng的描述:android 4.0 編譯模式 eng -- > user 時遇到的問題
3、更改默認語言
做產品服務要周道,不能出到別的國家的東西,一開機會是中文的,那就有點不太友好了,英文好多地方可以接受,可是現在中文還是沒有那麼廣泛應用的。其實android默認是En的,我們內單的就是改過來的。下面看我們怎麼把默認的英文改成中文,爲沒過“CET4”的同學服務。
android/device/samsung/smdk4x12/full_smdk4x12.mk
- PRODUCT_LOCALES :=zh_CN \
- en_US \
- zh_TW \
- en_GB \
- fr_FR \
- it_IT \
- cs_CZ \
- de_DE \
- da_DK \
- el_GR \
PRODUCT_LOCALES := zh_CN \
en_US \
zh_TW \
en_GB \
fr_FR \
it_IT \
cs_CZ \
de_DE \
da_DK \
el_GR \
用那個語言,把它放到早前面,就可以,如:
zh_CN:中文簡體
zh_TW:中文繁體
en_US:英文(美國)
這篇文章中有對應的 語言地區Android 地區語言和簡寫對照表
5、更改藍牙名稱
android/external/bluetooth/bluez/src/main.c
- static void init_defaults(void)
- {
- /* Default HCId settings */
- memset(&main_opts, 0, sizeof(main_opts));
- main_opts.mode = MODE_CONNECTABLE;
- main_opts.name = g_strdup("W42");//更改這裏的名稱
- main_opts.discovto = DEFAULT_DISCOVERABLE_TIMEOUT;
- main_opts.remember_powered = TRUE;
- main_opts.reverse_sdp = TRUE;
- main_opts.name_resolv = TRUE;
- main_opts.link_mode = HCI_LM_ACCEPT;
- main_opts.link_policy = HCI_LP_RSWITCH | HCI_LP_SNIFF |
- HCI_LP_HOLD | HCI_LP_PARK;
- if (gethostname(main_opts.host_name,sizeof(main_opts.host_name) - 1) < 0)
- strcpy(main_opts.host_name, "noname");
- }
static void init_defaults(void)
{
/* Default HCId settings */
memset(&main_opts, 0, sizeof(main_opts));
main_opts.mode = MODE_CONNECTABLE;
main_opts.name = g_strdup("W42");//更改這裏的名稱
main_opts.discovto = DEFAULT_DISCOVERABLE_TIMEOUT;
main_opts.remember_powered = TRUE;
main_opts.reverse_sdp = TRUE;
main_opts.name_resolv = TRUE;
main_opts.link_mode = HCI_LM_ACCEPT;
main_opts.link_policy = HCI_LP_RSWITCH | HCI_LP_SNIFF |
HCI_LP_HOLD | HCI_LP_PARK;
if (gethostname(main_opts.host_name, sizeof(main_opts.host_name) - 1) < 0)
strcpy(main_opts.host_name, "noname");
}
6、更MTP名稱
android/system/vold/Volume.cpp
- int Volume::formatVol() {
- if (getState() == Volume::State_NoMedia) {
- errno = ENODEV;
- return -1;
- } else if (getState() != Volume::State_Idle) {
- errno = EBUSY;
- return -1;
- }
- if (isMountpointMounted(getMountpoint())) {
- SLOGW("Volume is idle but appears to be mounted - fixing");
- setState(Volume::State_Mounted);
- // mCurrentlyMountedKdev = XXX
- errno = EBUSY;
- return -1;
- }
- bool formatEntireDevice = (mPartIdx == -1);
- char devicePath[255];
- char *label = NULL;
- dev_t diskNode = getDiskDevice();
- dev_t partNode = MKDEV(MAJOR(diskNode), (formatEntireDevice ? 1 : mPartIdx));
- setState(Volume::State_Formatting);
- int ret = -1;
- // Only initialize the MBR if we are formatting the entire device
- if (formatEntireDevice) {
- sprintf(devicePath, "/dev/block/vold/%d:%d",
- MAJOR(diskNode), MINOR(diskNode));
- if (initializeMbr(devicePath)) {
- SLOGE("Failed to initialize MBR (%s)", strerror(errno));
- goto err;
- }
- }
- sprintf(devicePath, "/dev/block/vold/%d:%d",
- MAJOR(partNode), MINOR(partNode));
- if (mDebug) {
- SLOGI("Formatting volume %s (%s)", getLabel(), devicePath);
- }
- label="W42";//更改這個名稱
- if (Fat::format(devicePath, 0, label)) {
- SLOGE("Failed to format (%s)", strerror(errno));
- goto err;
- }
- ret = 0;
- err:
- setState(Volume::State_Idle);
- return ret;
- }
int Volume::formatVol() {
if (getState() == Volume::State_NoMedia) {
errno = ENODEV;
return -1;
} else if (getState() != Volume::State_Idle) {
errno = EBUSY;
return -1;
}
if (isMountpointMounted(getMountpoint())) {
SLOGW("Volume is idle but appears to be mounted - fixing");
setState(Volume::State_Mounted);
// mCurrentlyMountedKdev = XXX
errno = EBUSY;
return -1;
}
bool formatEntireDevice = (mPartIdx == -1);
char devicePath[255];
char *label = NULL;
dev_t diskNode = getDiskDevice();
dev_t partNode = MKDEV(MAJOR(diskNode), (formatEntireDevice ? 1 : mPartIdx));
setState(Volume::State_Formatting);
int ret = -1;
// Only initialize the MBR if we are formatting the entire device
if (formatEntireDevice) {
sprintf(devicePath, "/dev/block/vold/%d:%d",
MAJOR(diskNode), MINOR(diskNode));
if (initializeMbr(devicePath)) {
SLOGE("Failed to initialize MBR (%s)", strerror(errno));
goto err;
}
}
sprintf(devicePath, "/dev/block/vold/%d:%d",
MAJOR(partNode), MINOR(partNode));
if (mDebug) {
SLOGI("Formatting volume %s (%s)", getLabel(), devicePath);
}
label="W42";//更改這個名稱
if (Fat::format(devicePath, 0, label)) {
SLOGE("Failed to format (%s)", strerror(errno));
goto err;
}
ret = 0;
err:
setState(Volume::State_Idle);
return ret;
}
7、更改“關於平板電腦”中的信息
(1)、型號
android/device/samsung/smdk4x12/full_smdk4x12.mk
- PRODUCT_MANUFACTURER :=full_smdk4x12
- PRODUCT_BRAND := full_smdk4x12
- PRODUCT_MODEL := W42(QuadCore)
PRODUCT_MANUFACTURER := full_smdk4x12
PRODUCT_BRAND := full_smdk4x12
PRODUCT_MODEL := W42(QuadCore)
(2)、內核版本
這個有點不太好找,一個同事跟我說的,內核路徑爲:
kernel/scripts/mkcompile_h
- # Generate a temporary compile.h
- ( echo /\* This file is auto generated, version $VERSION \*/
- if [ -n "$CONFIG_FLAGS" ] ; then echo "/* $CONFIG_FLAGS */"; fi
- echo \#define UTS_MACHINE \"$ARCH\"
- echo \#define UTS_VERSION \"`echo $UTS_VERSION | $UTS_TRUNCATE`\"
- echo \#define LINUX_COMPILE_BY \"`echo $LINUX_COMPILE_BY | $UTS_TRUNCATE`\" //更改者兩個echo的值
- echo \#define LINUX_COMPILE_HOST \"`echo $LINUX_COMPILE_HOST | $UTS_TRUNCATE`\"
- echo \#define LINUX_COMPILER \"`$CC -v 2>&1 | tail -n 1`\"
- ) > .tmpcompile
# Generate a temporary compile.h
( echo /\* This file is auto generated, version $VERSION \*/
if [ -n "$CONFIG_FLAGS" ] ; then echo "/* $CONFIG_FLAGS */"; fi
echo \#define UTS_MACHINE \"$ARCH\"
echo \#define UTS_VERSION \"`echo $UTS_VERSION | $UTS_TRUNCATE`\"
echo \#define LINUX_COMPILE_BY \"`echo $LINUX_COMPILE_BY | $UTS_TRUNCATE`\" //更改者兩個echo的值
echo \#define LINUX_COMPILE_HOST \"`echo $LINUX_COMPILE_HOST | $UTS_TRUNCATE`\"
echo \#define LINUX_COMPILER \"`$CC -v 2>&1 | tail -n 1`\"
) > .tmpcompile
(3)、版本號
android/out/target/product/w42/system/build.prop
- ro.build.display.id=w42.eng.tim.20121224.093047
- ro.build.version.incremental=eng.tim.20121224.093047
ro.build.display.id=w42.eng.tim.20121224.093047
ro.build.version.incremental=eng.tim.20121224.093047
其實在build.prop目錄中有許多,關於系統的信息,有興趣的話可以看下。
8、更改默認時區
除的語言外,外單產品默認時區也要改動。找到相應的system.prop,加入下面語句。
android/device/samsung/smdk4x12/system.prop
- #default time zone
- persist.sys.timezone=Asia/Shanghai
#default time zone
persist.sys.timezone=Asia/Shanghai
9、在桌面放一圖標,點擊鏈接到一指定網址
10、把應用程序的圖標默認放到桌面