Android量产软件客制化

转载http://blog.csdn.net/xubin341719/article/details/8449352

关键词: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

[html]  view plain copy
  1. PRODUCT_LOCALES :zh_CN \  
  2.        en_US \  
  3.        zh_TW \  
  4.        en_GB \  
  5.        fr_FR \  
  6.        it_IT \  
  7.        cs_CZ \  
  8.        de_DE \  
  9.        da_DK \  
  10.        el_GR \  

用那个语言,把它放到早前面,就可以,如:

zh_CN:中文简体

zh_TW:中文繁体

en_US:英文(美国)

这篇文章中有对应的 语言地区Android 地区语言和简写对照表

5、更改蓝牙名称

android/external/bluetooth/bluez/src/main.c

[cpp]  view plain copy
  1. static void init_defaults(void)  
  2. {  
  3.         /* Default HCId settings */  
  4.         memset(&main_opts, 0, sizeof(main_opts));  
  5.         main_opts.mode  = MODE_CONNECTABLE;  
  6.         main_opts.name  = g_strdup("W42");//更改这里的名称  
  7.         main_opts.discovto      = DEFAULT_DISCOVERABLE_TIMEOUT;  
  8.         main_opts.remember_powered = TRUE;  
  9.         main_opts.reverse_sdp = TRUE;  
  10.         main_opts.name_resolv = TRUE;  
  11.         main_opts.link_mode = HCI_LM_ACCEPT;  
  12.         main_opts.link_policy = HCI_LP_RSWITCH | HCI_LP_SNIFF |  
  13.                                                 HCI_LP_HOLD | HCI_LP_PARK;  
  14.   
  15.         if (gethostname(main_opts.host_name, sizeof(main_opts.host_name) - 1) < 0)  
  16.                 strcpy(main_opts.host_name, "noname");  
  17. }  

6、更MTP名称

android/system/vold/Volume.cpp

[cpp]  view plain copy
  1. int Volume::formatVol() {  
  2.   
  3.     if (getState() == Volume::State_NoMedia) {  
  4.         errno = ENODEV;  
  5.         return -1;  
  6.     } else if (getState() != Volume::State_Idle) {  
  7.         errno = EBUSY;  
  8.         return -1;  
  9.     }  
  10.   
  11.     if (isMountpointMounted(getMountpoint())) {  
  12.         SLOGW("Volume is idle but appears to be mounted - fixing");  
  13.         setState(Volume::State_Mounted);  
  14.         // mCurrentlyMountedKdev = XXX  
  15.         errno = EBUSY;  
  16.         return -1;  
  17.     }  
  18.   
  19.     bool formatEntireDevice = (mPartIdx == -1);  
  20.     char devicePath[255];  
  21.     char *label = NULL;  
  22.     dev_t diskNode = getDiskDevice();  
  23.     dev_t partNode = MKDEV(MAJOR(diskNode), (formatEntireDevice ? 1 : mPartIdx));  
  24.   
  25.     setState(Volume::State_Formatting);  
  26.   
  27.     int ret = -1;  
  28.     // Only initialize the MBR if we are formatting the entire device  
  29.     if (formatEntireDevice) {  
  30.         sprintf(devicePath, "/dev/block/vold/%d:%d",  
  31.                 MAJOR(diskNode), MINOR(diskNode));  
  32.   
  33.         if (initializeMbr(devicePath)) {  
  34.             SLOGE("Failed to initialize MBR (%s)", strerror(errno));  
  35.             goto err;  
  36.         }  
  37.     }  
  38.   
  39.     sprintf(devicePath, "/dev/block/vold/%d:%d",  
  40.             MAJOR(partNode), MINOR(partNode));  
  41.   
  42.     if (mDebug) {  
  43.         SLOGI("Formatting volume %s (%s)", getLabel(), devicePath);  
  44.     }  
  45.     label="W42";//更改这个名称  
  46.     if (Fat::format(devicePath, 0, label)) {  
  47.         SLOGE("Failed to format (%s)", strerror(errno));  
  48.         goto err;  
  49.     }  
  50.   
  51.     ret = 0;  
  52.   
  53. err:  
  54.     setState(Volume::State_Idle);  
  55.     return ret;  
  56. }  

7、更改“关于平板电脑”中的信息

(1)、型号

android/device/samsung/smdk4x12/full_smdk4x12.mk

[html]  view plain copy
  1. PRODUCT_MANUFACTURER :full_smdk4x12  
  2. PRODUCT_BRAND :full_smdk4x12  
  3. PRODUCT_MODEL :W42(QuadCore)  

(2)、内核版本

这个有点不太好找,一个同事跟我说的,内核路径为:

kernel/scripts/mkcompile_h

[html]  view plain copy
  1. # Generate a temporary compile.h  
  2.   
  3. ( echo /\* This file is auto generated, version $VERSION \*/  
  4.   if [ -n "$CONFIG_FLAGS" ] ; then echo "/* $CONFIG_FLAGS */"; fi  
  5.     
  6.   echo \#define UTS_MACHINE \"$ARCH\"  
  7.   
  8.   echo \#define UTS_VERSION \"`echo $UTS_VERSION | $UTS_TRUNCATE`\"  
  9.   
  10.   echo \#define LINUX_COMPILE_BY \"`echo $LINUX_COMPILE_BY | $UTS_TRUNCATE`\"  //更改者两个echo的值  
  11.   echo \#define LINUX_COMPILE_HOST \"`echo $LINUX_COMPILE_HOST | $UTS_TRUNCATE`\"  
  12.   
  13.   echo \#define LINUX_COMPILER \"`$CC -v 2>&1 | tail -n 1`\"  
  14. > .tmpcompile  

(3)、版本号

android/out/target/product/w42/system/build.prop

[html]  view plain copy
  1. ro.build.display.id=w42.eng.tim.20121224.093047  
  2. ro.build.version.incremental=eng.tim.20121224.093047  

其实在build.prop目录中有许多,关于系统的信息,有兴趣的话可以看下。



8、更改默认时区

除的语言外,外单产品默认时区也要改动。找到相应的system.prop,加入下面语句。

android/device/samsung/smdk4x12/system.prop

[html]  view plain copy
  1. #default time zone  
  2. persist.sys.timezone=Asia/Shanghai  



9、在桌面放一图标,点击链接到一指定网址

10、把应用程序的图标默认放到桌面


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值